[I.3] 个人作业:结课总结

项目 内容
这个作业属于哪个课程 2025北航软件工程
这个作业的要求在哪里 [I.3] 个人作业:结课总结
我在这个课程的目标是 深入学习软件工程,掌握其核心思想,增强自身团队合作能力,学会敏捷开发
这个作业在哪个具体方面帮助我实现目标 总结课程中学到的知识并将其应用到今后的软件开发实践中去

先前博客
[I.1] 个人作业:阅读和提问

问题回顾与思考

现如今已经有十分成熟的IDE或者工具用来查看代码运行时的情况,为什么软件还是不可见的呢?

在实际的工程实践当中,我发现,及时有编程软件的帮助,我们实际上还是无法看到软件实际的运行状况,我们每次相当于只看到软件的一个切面,从而打探到软件的实际运行情况。我们在设计软件的时候,常常用到封装机制,我们作为上层使用下层的服务的时候,不关心具体的细节,而实际上也没有办法得知。如今的复杂软件如分布式微服务系统往往由数百万行代码和上千个组件构成,运行时状态并非单一因素决定,这就导致了软件的不可见性。

什么时候项目的大小用代码行数衡量,而什么时候用功能点来表示呢?功能点具体指什么?

在当时的思考过程中,我已经有了一部分答案,但是对于功能点的使用范围还是不太清楚。现在在实际的开发过程中,我发现,功能点对于项目的开发是有用处的,对于用户来说也是有好处的。开发者利用功能点这个指标确认完成了项目的多少,用户也可以对功能点有一个清楚的认识。那么当然,功能点越多,项目往往越大。

在实际的学习和工作的过程中,我们是应该更注重于精还是专,需要在某一特定领域深入钻研还是在多个领域都有较高的技能水平

对于我来说,这个问题或许没有一个确定的答案,对于不同的人来说也有不同的答案。对于一个科学家来说,应该是越精越好,因为这样才能在某一领域有所成就,而对于企业的 管理者,或者说是项目的PM来说,应该通一点会更好,这样能够在不同的领域都有所了解,能够更好管理。目前对于我们来说,可能还是在某一特定领域深入钻研更好,这样能够构建起我们自己的优势。

剩下的20%的任务是什么?能不能降低花在这种任务的时间?

在课程刚刚开始还没有开发的时候,我把这个事情想得简单了。书上说的是20%的任务可能需要80%的时间。这20%的任务实际上是不可预测的,是一开始难以在计划阶段做好准备的。在实际开发的时候,会遇到很多意想不到的问题,主要就是出在测试上面,虽然难以避免,但是还是应该一开始就尽量提高质量。

“一定的”专业能力具体是需要多少的专业能力,哪方面的专业能力?

这里是说PM需要具有多少技术能力。在我们的开发过程中,大家的技术水平都很高,所以PM也是由技术水平很高的同学来担任,就不存在这个问题。实际上,理论上说,即使完全没有技术背景的人,只要团队技术支持完善,或项目本身更偏向业务、市场、运营等非技术领域,也可以胜任PM的职责。然而,拥有技术背景是一个显著的加分项。它能让PM更好地理解技术挑战和潜在风险,做出更明智的决策,有效平衡技术可行性、成本与时间,并因此赢得开发团队的信任,最终更精准地将业务需求转化为可实现的功能。

那么对于以上的疑惑,我基本有了自己的想法,只是对于第三个和第五个问题还是没有确定的答案,因为这样的问题都是见仁见智的问题。

知识点总结

需求阶段

在这个阶段,我们一起做了用户调研,这在我们之前的学习过程中是比较少的,我们开始倾听用户的意见,用户的声音,为了力求第一步就能有一个好的开始,我们在这个过程中付出了很大的努力。通过这一系列实践,我们不仅学会了识别用户的痛点和潜在需求,更重要的是,掌握了将这些零散信息转化为明确项目需求的能力,为后续的设计与开发奠定了坚实的基础。

设计阶段

我们综合运用了多种工具和方法来构建系统的蓝图。我们熟练使用了原型设计工具,快速勾勒出产品界面的初步形态,便于团队内部讨论和与用户进行反馈迭代。通过这些实践,我深刻理解了如何将一个复杂的系统有效拆解为职责清晰、耦合度低且内聚性高的独立模块。

实现阶段

在团队协同的实现阶段,我们高度重视代码质量和开发效率。为此,我们团队内部制定并严格遵循了一套统一的编码规范,包括详细的命名风格约定和清晰的注释要求,这确保了所有成员编写的代码都保持一致性和高可读性。通过Git的分支管理功能,团队成员能够并行开发不同的功能模块,并高效地进行代码合并。

测试阶段

在此阶段,我们系统地学习了单元测试的编写方法,这使我们能够在最小的功能单元层面就对代码进行验证,及时发现并修复潜在错误。我们使用了CI/CD,这种前置的、自动化的测试策略,极大地保障了软件的稳定性和可靠性,帮助我们在代码集成前就能有效地控制风险。

发布阶段

在这个环节中,我们系统地学习并掌握了将开发完成的软件进行打包,并部署到测试环境或最终生产环境的整套流程。这包括理解不同部署环境的配置差异,以及如何确保部署过程的顺畅与安全。我们清晰地理解了一个软件产品从最初的代码编写,经过一系列自动化流程,最终成功上线并面向用户提供服务的完整生命周期。

维护阶段

我掌握了使用专业的日志分析工具,通过对这些日志数据的解析,来全面了解系统的运行状况,并快速诊断问题的根源。我们还初步了解了如何设置异常报警系统和性能监控机制,这意味着当系统出现关键错误或性能瓶颈时,能够及时向相关人员发出预警,从而使我们能够主动介入,在问题影响用户体验之前进行干预和修复,确保系统的持续稳定运行和良好性能。

心得体会

结对编程

结对编程是我第一次听说的一个概念,在这个过程中,我也打开了思路,和我的搭档学习了很多知识。我发现了交流的重要性。有时候我们对于一个问题有不同的看法,这时候我们就需要达成一致,这对我的表达是一个锻炼,除此之外,我们也确实做出来了一个像模像样的东西,这使我成就感非凡。

团队项目

团队项目对我来说是一个提升巨大的项目,我在这个项目里面学到了很多新东西,是第一次真正把理论的东西付诸实践。或许多年以后,我们都能回忆起现在一起为了一个共同的目标努力奋斗的时光。功利地讲,这也是可以放在简历里面的一个项目,很多东西都是和我们以后真正的工作是相通的。当然,从这门课的角度出发, 这样的经历让我们对于软件工程有了更加深刻的理解。

posted @ 2025-06-26 23:41  starz1027  阅读(11)  评论(0)    收藏  举报