提问回顾与个人总结

提问回顾与个人总结

项目 内容
这个作业属于哪个课程 2021春季软件工程(罗杰 任健)
这个作业的要求在哪里 提问回顾与个人总结
我在这个课程的目标是 学习软件开发技术,培养团队协作能力
这个作业在哪个具体方面帮助我实现目标 回顾一学期以来的学习,解决当时的疑惑,对整个学期的体会做一总结

提问回顾

问题所在博客:2021软工--个人阅读作业2。部分问题我认为现在的想法与当时的解读

问题1:class与struct的比较中,如果只是数据的封装,用struct即可?

class是对现实中某类实物的抽象。只是数据的封装确实只用struct即可,但是在实际的开发过程中,单纯的数据结构不多见,数据是为更高层次的系统服务的,数据是信息的承载手段,因此大多数数据是有抽象的意义的,用class更能正确抽象现实信息。

问题2:根据康威定律,团队在开发不同需求的软件的时候,或者说企业偏向于开发某一种特定需求的软件的时候,是否会采用不同的团队结构使得开发的效率得到最大化?

这里的康威定律应当指的是康威第一定律,即

Communication dictates the design
组织沟通方式会通过系统设计表达出来

我认为这一定律与“绝大多数创作都逃脱不了创作者所处时代的局限性”这种说法有异曲同工之妙,通过小组项目的开发也对该定律有了一些实际的理解。但是从定律中不难看到“组织沟通方式”为因,“系统设计”为果。而团队成员越多,团队内部组织沟通的系统就会越规范(不然沟通效率太低),想要修改甚至重新设计整个组织沟通方式成本很大,因此我认为即使理论上可以采用不同的团队结构使得开发效率得到最大化,在实际生产中,不同的公司可能会有自己公司独特的组织模式,但是这种模式不会经常随开发项目的不同而发生改变。

问题3:好的用户体验当然是所有人都想要的,如果它和产品的质量有冲突,怎么办?牺牲质量去追求用户体验么,用户能接受吗?

本学期内有一次软件案例分析的作业,我体验了两款笔记软件。其中一款功能强大,但是有些让人眼花缭乱;另外一款功能单一,简洁方便。从我最直观的印象中不难分析,不同用户的需求是不同的,而且用户体验是一个相对主观的事情。但是,软件质量的不足在很大程度上是能通过好的用户体验来掩盖的,换句话说,大多数用户更在乎自己的体验,而忽略软件本身的质量问题,虽然这在开发者看来可能有些舍本逐末。当用户体验与产品质量产生冲突时,通过调查问卷的形式去了解目标用户的真实需求也是一种不错的手段。

问题4:“探索式”的测试应当主要放在软件开发和测试的什么阶段能取得最大效益?还是说对于软件开发的每个阶段都进行一定的探索式测试?

这个问题目前我还是没有什么想法。在本学期的学习过程中,我对于“测试驱动开发”的体会也没有加深,主要是因为小组项目的测试主要还是单元测试,而且基本都是在冲刺阶段结束,软件实现完成之后才进行的测试,因此对于测试这一方面的理解还不够,“探索式”的测试更是没有体会到。

问题5:成功的公司都必须具备“追逐利润”的价值观吗?

“利润”与“利益”是两个不同的概念。开公司不是做慈善,肯定是有利可图公司才能正常经营下去。但是这里的“利”应当是利益而非利润。社会上不乏大公司大品牌的年报中显示为亏损,甚至连亏几年的也有,但是这也不影响它们的成功。创业者必须要有一双“千里眼”,长远的利益远比利润要重要。

知识点总结

需求阶段

使用NABCD法进行需求分析,能够更全面、更量化地分析用户的需求以及软件的针对目标;在需求分析时可以采用调查问卷等多种方式收集用户需求,而非自己干巴巴地想(尤其在自己不是目标用户的情况下)。

设计阶段

设计阶段需要集思广益。功能设计不只是考虑需要实现哪些功能,还需要考虑如何合理分割,使得分工以及整体架构更加合理。此外PM需要将每个小组成员的任务分成一个个小任务,并定义清晰的完成标准。

实现阶段

在实现阶段小组成员之间需要进行大量的交流,以保证彼此之间的工作能够正常衔接。因此每两日例会是非常有必要的,小组成员之间可以通过例会及时了解项目进度、目前存在的问题,及时调整自己的进度。此外,合理使用git工具管理仓库也能方便成员之间的交流。

测试阶段

在测试阶段,后端需要进行单元测试,可以利用CI/CD等自动测试工具,这样每次改动后都能及时判断是否产生了新的问题(我们小组因为时间等原因最后未能成功自动测试,是一大遗憾);前端需要进行全面的功能测试、设备适配测试以及压力测试等。

发布阶段

发布阶段重点主要在宣发上。对于我们小组的项目来说,可以利用包括但不限于朋友圈、视频、H5页面、博客等多种手段进行宣传。尽量通过不同的渠道进行宣传,这样可以让宣传更快地散布到不同人群中。

维护阶段

在维护阶段,首先是要注重用户的反馈,通过反馈得到的意见进行下一版本的修改方案;其次对于我们小组的项目来说,主要数据都是通过爬取而获得,因此需要对数据进行持续地更新并密切关注数据源是否正确更新。

个人总结

博客作业(个人项目)

2021软工个人阅读作业1通过许多个人如何看待在北航计算机学院的学习以及自己对于计算机行业的想法,让我重新正视自己的想法,对过去进行总结,并对未来进行畅想;2021软工--个人阅读作业2通过通读《构建之法》,了解软件开发的整体流程,通过提问题的方式问中学,为之后的团队项目实践提供了参考;软工案例分析之笔记软件则是我首次从用户角度以及开发者角度同时调研、对比两款同类型的软件,在找问题的同时也提醒了自己应当怎样做。同时对市场的调研也同样锻炼了我进行需求分析的能力。

结对编程

主要的收获与感想在再探,结对编程! (下)中,现在回头来看,我最大的收获应当是逐渐敢于发表自己的意见,和队友之间坦诚交流,这也帮助了我在后续团队项目中能够进一步地发挥自己的作用。

团队项目

相较于结对编程,团队项目是6个人一组的项目,在组织、交流各方面需要花费的精力更大。比起团队项目最终的成果,我认为经历是更重要的。在经历了需求分析、设计、冲刺实现、测试、发布等一系列过程以及beta版本的迭代后,我对软件开发的流程有了切实的体会。我在团队中担任后端数据库相关的工作,工作量不算大,主要精力都放在对于数据的处理上(我们的项目里有大量的疫情、接种等相关数据)。虽然不难,但也是无可替代的一个角色。开发过程也并非一帆风顺,alpha阶段因为我五一去外面旅游却忘记带电脑充电线而进度拖后,因为设计相关的问题也和其他成员争吵过,但总的来说还是一段愉快的经历。

以上是感想,下面说说收获吧。首先是体验了较为完整的软件开发流程,对git管理工具的使用也更得心应手了;其次是学习了python中flask框架下数据库相关的各种操作;最后,在例会中能逐渐表达自己的想法,提供意见。

posted @ 2021-06-30 16:17  MadokaHomura  阅读(84)  评论(4编辑  收藏  举报