软工:提问回顾与个人总结

文章探讨了软件工程实践中的一些关键点,包括在极低使用概率下功能的必要性,团队中领导者的角色,结对编程中利用优势的重要性,以及适合软工课程的开发流程。作者强调了需求分析、团队合作、项目管理和质量保证在软件开发中的重要性,并分享了个人在结对编程和团队项目中的经验和教训。
摘要由CSDN通过智能技术生成
项目内容
这个作业属于哪个课程课程社区
这个作业的要求在哪里作业要求
提问作业链接开学提问作业
我在这个课程的目标是体验规范软件开发流程,积累团队合作经验,同时积累项目经验,提高自身竞争力
这个作业在哪个具体方面帮助我实现目标回顾、总结、反思

1.尝试对自己曾经提出的问题进行解答

问题一:如果使用概率为百万分之一的需求并不涉及安全,仅仅是一个日常使用的小功能,例如在民用飞机上看电影,开发者还有必要做且不厌其烦地告诉用户如何使用吗

  • 书本 P7

    如果一架民用飞机上有需求,用户使用它的概率是百万分之一 ,你还要做这个功能么?你会选择:

    1. 根本不考虑

    2. 如果没时间实现这个功能, 就算了

    3. 做了, 但是不用告诉用户

    4. 做了, 而且不厌其烦地告诉用户如何使用

在使用概率为百万分之一的需求时,如果不涉及安全问题且只是一个日常使用的小功能,我认为开发者可能不需要详细地告诉用户如何使用,这是因为百万分之一的概率意味着该功能在绝大多数情况下都会不会使用。

在软工实际的开发中,对于一些使用频率过于低且意义有限的功能,我们一般会直接删去此功能。但对于一些富有意义的低频使用功能,即使是一个小功能,我认为开发者仍然应该提供一些基本的说明和指导,以避免用户难以操作。我们可以通过简短的提示、鼠标悬停文本、帮助按钮或者简单的用户界面设计来实现。

问题二:软工团队是否需要一个领导者,还是通过众人群策群力

  • 书本 P51

    大多数工程师都在团队的环境中工作,怎么样才是一个合格,甚至优秀的队员呢?前面提到了PSP(Personal Software Process),和它对应的有团队的软件流程TSP(Team Software Process),TSP对团队成员也有要求:

    ......

在我们的软工实践中,由林子杰同学担任PM,他为我们软工项目的完成起到了至关重要的贡献。

在具体的技术使用和项目方向上,我们是通过小组讨论来确认方向,此时的PM是作为一个小组成员来参与讨论的

但在报告的撰写的任务进度的安排与控制上,PM起到了至关重要的作用,使我们的项目得以成功推进。

所以根据我本学期的实践经历,我认为一个成功的软工团队非常需要一个领导者。

问题三:结对编程中,是否有必要活用每个人的优势区间

  • 书本 P87

    结对编程的过程也是一个互相督促的过程,每个人的一举一动都在别人的视线之内,所有的想法都要受到对方的评价。这种督促的压力,使得程序员更认真地工作。结对编程“迫使”程序员必须频繁地交流,而且要提高自己的技术能力,以免被别人小看。

我认为在结对编程中,充分利用每个人的优势是非常重要的。

在我们的结对开发中,我的队友因为具有较为丰富的算法经验,所以在涉及复杂算法的时候,一般都是由他担任“驾驶员”负责编写代码,而我作为“观察者”负责审查代码和提出建议。而当涉及与美观相关的前端GUI设计时,就由我担任“驾驶员”负责编写代码,而他作为“观察者”提出建议。

综上所述,我认为结对编程应该充分活用每个人的优势。通过合作,利用每个人的技能和经验,可以提高代码质量、加速问题解决并促进团队的成长和发展。

问题四:在开发流程方面,对于软工课程,哪种流程更加合适

  • 书本 P101

    我们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫作“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。

实际上,我们在具体开发的时候,并没有完全按照书上的各种开发流程来完成软件工程开发工作。

我们主要是按照课程组提供的软工实践指导进行开发流程控制的,或许这可以称为北航软工流程。

根据我此次实践的经验,开发流程最重要的是合理且简洁,太复杂的开发流程对于一个七人小团队还是十分的冗余。

而当开发遇到一些具体问题,开发流程往往难以提供帮助,还是需要靠小组讨论来解决问题;而具体工作的分配也更加依赖PM的安排。

问题五:如何衡量PM的工作成果,在软工课程中,PM应该承担多少编码任务

  • 书本 P185

    一个团队项目要在一段时间内完成诸多任务,满足用户的需求,实现团队的目标,同时还希望项目能维持良好的技术架构,以便持续开发,千头万绪,从哪里入手?一队人马站在项目的“需求”前,就像愚公和家人站在王屋山前一样,他们可能都在想:这座山到底要花多少时间才能搬走呢?这时候我们需要一个角色站出来领导大家,把看似巨大无从下手的项目逐步分解为可以操作的工作。PM是责无旁贷的领导者。

这次实践中,我们小组全体成员都对我们组的PM非常满意,所以我认为衡量PM的工作成果的最好方法就是小组成员的评价。

在此次软工实践中,我们的PM在alpha阶段的主要任务是项目的管理与网站的部署;而在Beta阶段,我们的PM在最后两周也参与了我们网站前端样式的调整。所以我认为在团队工作量较大时,PM应该承担部分较为独立的编码任务以帮助团队加快开发速度。

2.是否原来的问题还不明白?是否产生了新的问题?如果有,请提出。

对原来的问题有了更加深入的理解;目前没有产生新问题。

3.在项目的需求/设计/实现/测试/发布/维护阶段(6个阶段)中都学到了什么“知识点”

需求阶段:学会了需求分析方法和技巧,如用户需求调研和访谈技巧,需求规范化和建模等;而需求的验证往往可以通过原型设计、用户反馈和验收测试等方法实现。

设计阶段:复习了软件设计原则和模式,如单一职责原则、开闭原则、工厂模式、观察者模式等。学习了架构设计和模块化设计的方法,如分层架构、模块划分和接口设计等。而在数据库设计方面,我学会了如何利用实体关系图可视化设计流程。

实现阶段:团队开发时需要遵守提交流程,要对自己交付的代码负责,同时要注意git版本控制;使用开发框架时应该充分学习并利用配套的一系列工具包,避免重复造轮子。

测试阶段:在助教的帮助下学会了一系列软件测试方法,如单元测试、压力测试、安全性测试等。在测试时利用自动化测试工具和框架,如JUnit,可以大大简化测试过程中的一系列重复操作。

发布阶段:面向目标用户(我们小组的项目BuaaMapForum基本面向北航在校学生)持续、见缝插针地通过社媒宣发

维护阶段:部分网站用户可能有违反论坛规范的行为,或者发起了一系列需要管理员审核的申请,我们团队成员根据分工定期上线处理这些任务,而不是撒手不管。

4.结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得

通过个人项目、结对编程和团队项目的经历,我对软件工程有了以下理解和心得:

  • 需求是关键:清晰、明确的需求是软件开发成功的基石。在项目开始之前,必须仔细分析、理解和规范需求。与利益相关者积极沟通,确保需求的准确性和完整性,避免后期的问题和变更。

  • 迭代与反馈:软件开发是一个迭代的过程。通过及时的反馈和持续的改进,可以不断优化和完善软件。及早发布原型、进行用户测试,以便及时发现问题并进行迭代开发。

  • 合作与沟通:软件开发很少是一个人的事情,而是团队的合作。良好的团队合作和高效的沟通是成功的关键。通过结对编程和团队项目,我学会了与他人合作、分享知识和协调任务,以实现共同的目标。

  • 质量与测试:软件质量是至关重要的。合理的测试策略和流程可以帮助发现和修复缺陷,确保软件的稳定性和可靠性。我学到了不同层次和类型的测试,如单元测试与集成测试。

  • 项目管理:良好的项目管理可以提高开发效率和质量。合理的计划和资源分配、风险管理和变更控制是项目成功的关键要素。我通过团队项目学到了项目管理的基本原则和技巧。

技术收获:本学期的软工课程最大的收获不是代码能力上的,而是完整的合作项目经验上的。通过这学期的训练,我现在对版本管理、协作开发、设计、CI/CD、测试等都有了一定的了解。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值