「BUAA SE 个人作业-3」提问回顾与个人总结

项目内容
这个作业属于哪个课程2023年北航敏捷软件工程
这个作业的要求在哪里个人作业-提问回顾与个人总结
我在这个课程的目标是学习并掌握现代软件工程的开发模式和流程,锻炼个人能力及团队协作能力
这个作业在哪个具体方面帮助我实现目标回顾一学期的软件工程课程,总结所学与收获。

阅读提问回顾

阅读提问博客链接


问题一:在定位功能的象限时,是否有一套普适性的定位方法?

书中只是提出四个象限的划分概念,但是并没有给出一种能够判断某个功能所在象限的具体方法。如果当团队对某个功能产生了误判,是否会影响其他功能的开发?如果对某个杀手功能产生了误判,比如市场上已经有软件能够实现这个功能,我们是否还有必要为之努力?

 

在定位功能的象限时,确实没有一套普适性的定位方法。每个产品都有其独特的特点和市场需求,因此需要根据具体情况进行分析和判断。但是显然,当团队对某个功能产生了误判之时,会影响整个团队在某个工作上的重要性和紧迫性的判断。

但是仍然有一些方法和技巧可以帮助团队更好地定位功能象限。如需要了解用户的需求和痛点,在实际的团队开发过程中,可以通过市场调研,用户反馈和用户行为分析等方式,可以更好地了解用户的需求和痛点。

我在MOSS团队的实际开发过程中,我们先通过和导员的交流拟出了一份活动的基本功能需求,并通过用户反馈文档来及时更改我们的功能,及时更新功能的定位。在Alpha阶段,我们并没有实现通知功能,但是从用户的反馈问卷来看,大部分同学还是需要一个功能来跟踪自己的issue是否被辅导师回答,因此我们在Beta阶段将其从辅助需求纳入到必要需求。

问题二:如何通过科学合理的方法,在某一个团队中选择出一个项目经理?

书中只是介绍了项目经理的作用以及所需要具备的能力,但是没有说明如何科学合理地在一个团队中选择项目经理。

比如在我们的课程中,团队应该需要一个项目经理来统筹整个项目的进行。而项目经理所需要的能力有的是不容易量化评判的。这种情况下,我们怎么进行比较选择?

我很庆幸MOSS团队在最初就有一个具有领导能力的PM。这让我们在这方面完全不需要过多的考虑。虽然没有实践,但是通过课上和课下的学习也大致了解了项目经理的选择。

首先,需要了解项目经理的工作职责和目标:在选择一个项目经理之前,需要明确项目经理的工作职责和目标。其次,决策人需要比较准确地评估候选人的能力,如果决策人不了解候选人,那么面试是非常重要的。通过面试,才能知道其经验、技能、领导能力和沟通能力等方面的情况,这些信息对于评估候选人是否适合项目经理职位非常重要。

通过科学合理的方法选择一个合适的项目经理,可以帮助项目更好地实现其目标并获得成功。

问题三:是否能通过科学合理的方法构造出一个典型用户集合,并针对特定的项目覆盖几乎所有的未来可能的用户?

在软件工程课程中,开发出来的项目不一定是长期发布并且长期运行并维护的。那么与之相关的典型用户的设定应该如何考虑?或者说,如何针对各种不同的项目来定义相关的典型用户?而如果欠缺考虑,则很有可能会导致系统的问题。例如:实现没有考虑黑客的危害,导致没做密码密文处理,从而导致密码泄露的大事件(如本书中提到的csdn的密码泄露)。因此,实现定义一个覆盖率较为完善的用户集。

定义典型用户集合是一个需要考虑很多因素的过程,包括用户需求、产品特性、市场趋势等等。在实践中,通常无法完全预测未来用户的需求,因此构建一个覆盖所有未来可能用户的典型用户集合是不现实的。但是我们可以尽可能地覆盖大多数用户。

首先是正常功能使用的用户,对于我们MOSS团队开发的ShieAsk平台,我们需要收集三种用户的数据和行为,分别是学生、辅导师、管理员。我们主要通过在线收集用户反馈文档来了解用户的需求和行为,这些数据可以帮助我们更好地了解用户,从而定义用户集。

其次是黑客用户,对于我们MOSS团队开发的ShieAsk平台,我们主要在安全性方面做较多的准备和测试。在前端,防止了js注入攻击;在后端,实现了jwt权限认证机制。

问题四:在软件工程中,如何合理高效地在某一流程中选择某种图形建模方式辅助表达?或者更进一步,某一流程是否有必要选择图形建模方式进行表达,有无其他替代方式?

在当下,有很多种图形建模方式,而何时何地采用何种建模方式就是一个难题了。

选择适当的图形建模方式取决于多种因素,包括数据类型、数据结构和数据关系、用户需求、建模复杂度、时间和资源限制等。

我们团队在功能设计时采用了图形建模的方式来表达较为复杂的功能。如图所示,issue的状态转移较为复杂,仅仅靠自然语言是较难说明清晰,因此我们采用流程图的方式来辅助表达。

 

同时,关于用户的使用流程设置也有相应的流程图。下图为功能设计时学生提问issue的流程图。

 

问题五:如何有效地进行效能测试?

我目前担任某一门课程的助教,主要负责系统的后端。而该课程面向的是200多人左右的学生用户,需要考虑他们的提交对课程网站的评测服务的影响。而我目前不了解效能测试,也不知道如何进行效能测试。

同时,各个互联网公司都有自己的一套效能测试的流程与方法。我们作为小团队,是否能够参考他们的做法完成自己的测试?

在本学期的团队实践过程中,我了解到效能测试的一些流程与方法。首先是我们要确定测试目标,在开始效能测试之前,需要明确测试的目标和场景,例如测试并发请求处理速度、响应时间、资源利用率等。其次我们要制定测试计划,制定详细的测试计划,包括测试环境搭建、测试用例设计、测试数据准备、测试结果分析等。之后我们要选择合适的测试工具,例如 JMeter、LoadRunner 等,这些工具可以模拟多种负载情况,并提供详细的测试结果分析。

我们团队在针对接口进行压力测试时,使用了JMeter。JMeter是使用Java语言编写的开源负载测试工具,可以模拟多种负载类型,例如并发用户数、请求率,进而测试Web应用程序的性能和可靠性,找出系统瓶颈和性能瓶颈,并了解应用程序在高负载情况下的行为。


知识点总结

需求

NABCD需求分析是一种用于确定软件需求的方法。在开发初期的需求分析中,我们团队针对这五个方面(Need,Approach,Benifit,Competitors,Delivery)分别进行考虑,拟出了一份提纲, 并与辅导员(甲方)进行了线下的会议交流。最终十分高效地完成了初期的需求分析,并且考虑得更为全面。如Competitors方面,我们专门分析了QQ频道、discord平台等论坛。综合考虑,使得我们对杀手功能的定位更加准确,如一对一issue提问。

设计

设计的时候可能需要了解的高内聚低耦合等面向对象思想。其主要在设计阶段,在团队作业的《功能规格说明书》和《技术规格说明书》中体现。我们后端在设计阶段即准备使用Django设计后端,利用其提供的ORM(Object Relational Mapping)框架以及模型控制器分离的模式等进行开发。同时,使用Django REST framework(DRF)插件快速开发RESTful样式的接口。这些均体现了面向对象程序设计的思想。

实现

对DRF框架和搜索引擎的知识了解,对项目代码管理(git)的进一步认识。在实现阶段的团队开发过程中,代码管理是很重要的一环。十分感谢课程组提供的代码管理示范,我们在实际操作过程中也遵守着其规范有条不紊地进行着。这让我们每一个人的工作都能够十分有效率地结合在一起。

测试

单元测试的重要性。在实践中,我更加了解到单元测试对项目鲁棒性和功能性的重要性。并且开始习惯在编写代码时进行单元测试的编写(下一个目标是TDD开发)。

发布

项目部署和推广。实践中,由于有稳定的甲方,因此我们在宣发方面其实不用太多纠结。我们需要注意用户反馈,及时进行修复和回复,同时也需要注重产品的宣传,注重文案的润色,以及提供一定的用户激励。

维护

项目运行情况的实时监测。我们使用Docker容器技术进行部署,以及有着及时的后端评测记录日志,从而尽可能展示事故发生时的现场。同时,我们也采用开发-生产环境隔离的形式。开发环境中配置更详细的log信息,能够在开发测试的时候及时定位到bug所在。也因此,在用户反馈的时候,我们不会更改生产环境,而是在开发环境进行修改和测试,不影响生产环境的正常使用。这使得开发测试十分便捷和有效。


个人心得体会

结对编程经历

结对编程的过程中,我们互帮互助,可以得到能力上的互补。同时,也能够提高项目代码和产品质量,讨论出来的架构更好,有效地减少bug。并且,在编程中,相互讨论可能更有效地解决问题。但是,结对编程可能因为生活习惯等不同会导致工作麻烦,甚至构成矛盾。而且,两个人的编程水平不同可能会导致结对效果比分兵作战效率更低。

总的来说,我和结对队友(Blore)在项目开始之前就已经对对方的了解已经比较深入,在结对编程过程中更是加深了互相的了解,更加加深了彼此的认识,成为了更要好的朋友。(感谢结对?)

团队项目经历

《软件工程》这门课的团队实践是我第一次真正参与到中型项目的合作开发中,算是在本科学习过程中第一次真正意义上的团队开发。通过这次实践,我不仅学习到了Django框架的用法,更重要的是认识到了团队多人合作的重要性。在团队中,每个人都有自己的特长和职责,只有将这些特长和职责有机地结合起来,才能实现项目的高效完成。

同时,敏捷开发的过程中总是充满了意外,只有整个团队针对用户的反馈灵活地调整现有任务安排才能够使项目更具有生命力和活力。在这里十分感谢我们的PM,他一直在第一战线作战,与用户交流沟通,收集反馈问卷,同时也和甲方交流沟通,为整个项目一直倾注着自己的努力,有着许多活跃用户不断提供着使用的反馈,最终使我们的项目也因此能够一直不断更新迭代,做得越来越好。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值