《构建之法》 个人总结
《构建之法》 个人总结
这个作业属于哪个课程 | 系统分析与设计 |
作业要求 | 作业要求 |
作业目标 | 对项目及课程进行总结回顾 |
开题博客链接 | 第一次作业 |
(一)开课疑问的解答
问题1.在第三章《软件工程的成长》中
3.3中关于专和精的讨论。有人说一个人就可以快速成长一名全栈工程师,这让我想起街头卖艺的单人乐队,他们什么都会一些,可以很快的演奏一些曲子。与之对立的,是只研习某一乐器的乐手,你愿意花钱听哪种演奏呢?
我对这个讨论也感到疑惑:因为我认为在懂更多技术的人会有两方面优势,一是在团队开发中如果能了解更多方面的技能,那将减少技术人员的沟通成本。其二,了解更多技能也会在未来也有更多的选择机会。但如果专攻一门技术,意味着会将更多时间放在一个方向上,但与人沟通成本较高,知识面狭窄,所以怎样调节专与广的平衡依然比较迷惑。
答:不管在电视里,生活中,还是书籍中,我们总会看到各种各样的成功人的案例,他们都是各方面的精英,刚开始认为他们只专注与自己的领域,但后面却发现他
们“身兼数职”,就一个简单的人民教师来说,国家对其要求,不仅要不断的去提高自己的专业知识,给学生去传授,还要去学习心理学,教育学等知识去了解,发现学生。
所以,结合构建之法加我的个人观点,我觉得,作为一名工程师,我们首先要定位自己的领域,然后去专攻,去精学,其次,再去了解相关,以便对于一个小的
项目来说,自己可以知道项目的前后,独立开发,但对于一个大的项目来说,我们只需要完成自己的领域就可以了。
问题2.在第四章《两人合作》中
在4.7的讨论中有提到,“人和人不一样,......MBTI类型,讨论不同性格类型对合作有多大的影响,在合作的各个阶段应如何应对?”也就是说团队成员的性格可能会影响团队合作项目的质量,我也认为性格不同的人在做事风格和对待问题的态度都有较大的区别,那么是否应在成立团队前做MBTI测试从而更好的组合成一个团队
答:通过课堂学习和百度,我任务在人际关系中,和不同MBTI类型的人打交道若对其性格有一定了解,那么在工作上会减少许多冲突,团队合作的效率也能大大提高,因此在成立团队时可以对成员进行MBTI测试是有利于团队成员之间的了解和合作的。
问题3.在第五章《团队和流程》中
在阅读5.2时,认识到很多经典的“软件过程模型”,比如“瀑布模型”、“统一流程 ”、老师上课也讲了增量模型等,但这些开发流程中都使用到了开发文档,也就是都是用文档驱动,很考验文档的表达能力,我认为这在软件开发的过程中显的比较繁琐,是否有一些更优的解决办法,或其他的没那么侧重文档的软件工程模型呢?
答:通过课堂的学习和项目实践中,我了解到开发文档在一个项目的开发过程中的作用暂时是无可替代的,无论是需求分析还是软件设计都需要一个直观且易看懂的载体供开发人员或客户进行交流沟通或是制定规约,而文档则是一个非常合适的载体,因此在几种软件开发模型中,软件开发文档依然存在且不可或缺,即便是敏捷开发,也只是削弱了文档的部分功能,但依然无法替代。
问题4.在第十章《典型用户和场景》中
在10.3.3中提到工程师的设计师如何体现下列原则的:程序模块对应运行环境、相关模块、输入输出参数有什么假设?这些假设验证过么?这在上次暑假的做项目的时候我就在考虑这个问题,当对输入输出参数的假设与真实数据有误差的时候该怎么调整?加入调整代码或许就要动很多的代码。如何有效避免假设数据与正式运行的数据不相容问题。
答:通过老师的讲解并结合项目实践,我认为程序的运行环境和输入输出参数等应当是在需求文档或设计文档中就规范好的,对参数的假设需要一定的经验,因此一般是经验丰富的专业人员参与项目的需求分析和设计过程,以保障输入输入参数的准确性,同时在测试阶段也应依据文档设计测试用例,测试不通过的代码的返工量取决于软件模块之间的耦合度。
问题5.在第十三章《软件测试》中
在13.3.2讨论测试用例这里,书上说道一个软件有很多可能的输入和环境参数,我们没有能力穷举所有的可能,也没有必要。这里只介绍了等价类划分,边界值分析,决策表、因果表和功能图方法等方法,只提到了部分方法并没有说明怎样才算是符合有效测试用例这个标准。
答:结合老师所讲和项目时间,我认为好的测试用例,必须具备一下三个特征:
1.整体完备性:“好的”测试用例一定是一个完备的整体,是有效用例组合的集合,能够完成全覆盖测试需求。
2.等价类划分的准确性:指的是对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。
3.等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别。
能做到以上三点,就可以肯定测试是充分且完备的,即做到了完整的测试需求覆盖。
(二)经过这学期的学习,你掌握到了哪些以前没有的技能,你是如何掌握的。
在课堂上,我了解了什么是软件工程及软件开发的工程流程。了解了瀑布模型、原型模型、增量模型等几大主要的软件过程模型,同时老师也是侧重于讲解了敏捷开发模型,之后结合项目实践,在软件的开发流程中结合老师上课讲授的知识点,从需求分析到软件实际再到代码实施和软件测试横向的体会的开发流程。同时小组采用了敏捷开发模型,确定出项目经理,产品经理对项目进行管理,合理安排软件开发计划严格把控项目进度,让项目质量得到保障。在实践中我掌握了使用git控制软件版本,使用easyapi对后端接口进行设计分工,使用墨刀进行原型设计,在github上寻找开源技术等。
(三)体会和总结
通过该课程的学习,我们对一个软件项目的开发流程有了更清晰的了解,再结合项目实践受益良多。在开发工具上,接触了开发文档、版本管理工具、原型开发工具,接口管理工具等一系列开发工具。在编写完需求文档,设计文档等开发文档后,结合项目推进,深知在前期文档编写不明确会导致功能点不明确项目无法推进在等问题。在版本管理上我们使用git对项目进行管理,这也是首次使用工具管理软件版本为我们的软件开发节省了大量的时间。在项目开发过程中我们也遇到许多问题,在项目初期,我们的分工还算合理,前后端分离,功能划分多比较理想,因此项目的整体推进的进度还算比较满意,但中期的时候在功能点没有集中,团队成员间的沟通减少,导致项目推动很慢,很长时间都没有新的模块更新,项目越到后期,越觉得前期的准备不足,在设计方面做得不是很好,这些都是前期在设计和分工的时候花费时间过少导致的遗留问题。在实际进行团队项目的时候发现人数越多,在设计和沟通上的难度就变得很大,特别是我们的水平并不是很高的情况下,每个人都有自己的想法导致集合模块的时候出现很多问题。值得高兴的是,随着时间推移,成员之间的默契度在不断提高,很多问题都可以沟通解决。总的来说虽然过程中稍有瑕疵,但我对项目开发流程以及涉及的常用开发工具有了一定的了解,为未来在软件开发行业的工作奠下基础。