提问回顾与我的总结

提问回顾与我的总结

通过了一学期的软件工程的学习, 我对于软件的开发和协做流程有了新的认识, 所以写下这篇博客来回顾一学期的学习。html

项目 内容
这个做业属于那个课程 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2020_LJ
这个做业的要求在哪里 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2020_LJ/homework/10822
我在这个课程的目标是 清晰职业发展规划, 学习领先的软件开发方法
这个做业在哪一个具体方面帮我实现目标 回顾了以前学到的知识点, 对将来有更清晰的认识。
做业正文 以下

1. 对之前问题的回答

  • 回归测试前端

    在之前的博客中, 回归测试问题 , 我曾问过这样的问题python

    我有一点疑问, 新的版本的软件可能在新加的部分有缺陷, 也多是由于破坏了之前的功能, 或者是两者连接起来出了问题, 而要检测这样的bug须要跑全部的测试, 这样是否会有很大的时间成本开销? 是否有好的方式可以把新增的代码单独测试? 以及用更通用的测试去验证流程的正确性?mysql

    以前不是很理解回归测试的做用, 通过了几轮软件工程的开发, 我对于回归测试的重要性有了新的理解。 在咱们的软件开发中, 有一次后端由于添加了新的接口, 致使了老接口的权限出了问题, 花了很长时间才修复了bug, 从那以后, 咱们很注重回归测试的流程, 添加新功能的同时保证了旧功能的正确性。git

  • 敏捷开发github

    在之前的博客中, 敏捷开发, 我曾问过这样的问题面试

    请问在敏捷开发中, 什么样的设计模式和软件架构可以适应敏捷开发的流程? 在招聘中, 如何判断一个成员是否可以胜任敏捷开发的工做?算法

    通过了一学期的软件工程的学习和实习, 我对该问题有了更深刻的理解。 在实际的软件工程中, 若是想要进行敏捷开发, 必定要注重软件架构的设计, 不然每次开完stand up meeting, 新添加功能的时候会很困难。 在设计软件的时候, 要把模块的功能尽可能细化, 千万不要把全部内容堆叠到一个函数内, 不然很难修改, 实现高内聚低耦合的架构更时候软件开发。 在招聘中, 若是想要判断一个成员是否可以胜任敏捷开发工做, 首先要确保该成员有扎实的数据结构和算法知识, 以后能够采用渐进式的面试方式, 不断添加功能看该成员可否在短期内设计好框架, 实现新功能。sql

2. 产生的新问题

在学习中, 我也产生了一些新的问题。数据库

好比

  • 如何针对特定的团队, 制定软件开发流程
  • 在软件开发的过程当中, 如何更好地解决成员之间的代码开发冲突

3. 软件工程中学到的知识点

  1. 需求

    学习了NABCD分析, 在讨论中寻找用户的需求, 针对痛点设计软件。

  2. 设计

    设计主要分为两方面, 功能设计和技术规格设计。 功能设计须要绘制原型图, 对整个软件操做的流程有一个大概的认识, 列出软件的交互逻辑。 技术规格须要对软件使用的编程语言和编程框架进行约定, 指定可行的方案和优化方向。

  3. 实现

    学习django后端开发, 经过python来实现一套Restful接口, 实现先后端分离的设计

  4. 测试

    coverage自动化测试工具, 回归测试, 代码覆盖率。 在每次代码提交复审前先进行回归测试

  5. 发布

    发布的时候须要收集用户的反馈, 进行推广。

  6. 维护

    根据用户反馈修复bug, 指定下一阶段的sprint目标, 维护mysql数据库。

4. 理解和心得

4.1 我的项目

我的项目是实现一个交点求解的程序, 这个项目主要是让人熟悉一些我的软件的开发流程, 拿到任务后进行软件的架构设计, 查资料思考算法, 最后实现, 测试, 性能分析, 用github提交。 总体来看, 这个项目并非很难, 可是让新接触软件工程的同窗对我的流程有了基本的认识。

4.2 结对项目

结对编程项目是颇有趣的体验, 这个项目能让人学会如何进项小范围的, 两我的的软件开发合做, 为以后的团队项目搭好基础。 这个项目用到了模块的封装, 编程动态库, 以及使用MFC开发GUI, 两我的一块儿一我的当领航员, 一我的当驾驶员, 能够互相找bug和代码中的问题, 提高编程水平。 此次项目我我的的体会是, 虽然结对编程可以互相帮助, 可是这种开发方式是比较低效的, 一我的的工做两我的同时作的成本很高, 在真实的软件开发中不太实用。

4.3 团队项目

团队项目带给个人是一次比较完整的软件工程体验, 从讨论选题, 分析不一样用户的需求, 再到设计, 技术的选择, django实现, 单元测试, 发布, 维护, 一我的见从雏形到成熟的总体流程是比较完整的。 咱们采用了github来管理代码, 用看板, issue, 燃尽图的方式来控制进度, alpha阶段主要的任务是把软件搭起来, 可以使用, beta阶段进行了一系列的优化。 我负责的部分是django rest后端api的开发, 须要给前端一套restful的api, 管理用户的数据。 我以为在团队项目中, 团队总体须要有一个完善的开发流程, 好比在stand up meeting讨论要sprint的目标, 指定目标后把任务分给我的, 提issue, 而后各自写各自的代码, 提PR, 代码复审, 测试, 关issue, 对接。 若是全部团队拥有很高的软件开发素质而且遵循这套流程的话, 那么团队的开发是很高效的。 团队项目是须要多人合做来完成的, 所以团队流程这件事情给我留下的印象比较深。最后, 总结下敏捷开发的方式, 这学期也在校外实习, 公司用的也是敏捷开发的流程, 和咱们的敏捷开发的流程仍是有些不一样的, 公司的stand up meeting没有那么频繁, 通常都是和本身组内的人进行沟通, 并且需求的文档和写代码前的设计文档是比较完备的, 所以也不须要太多的后续沟通。 同时, 我我的感受公司的CICD和代码复审要比咱们我的的团队成熟, 有更多年经验的工程师来给个人代码架构和性能提意见, 我以为在开发中这一点是很重要的, 必定要有有经验的人去带, 要不很容易陷入低效代码重复编写的循环。

相关文章
相关标签/搜索