项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2016级计算机科学与工程学院软件工程(西北师范大学) |
这个作业的要求在哪里 | 实验十四 团队项目评审&课程学习总结 |
作业学习目标 | 1.掌握软件项目评审会议流程; 2.对本学期所有知识进行回顾和梳理; 3.通过所学知识对之前所存在的疑惑进行再次思考并尝试解答。 |
一、实验一问题回答
1、实验一博客链接
2、问题回答
- Q1:在阅读到《构建之法》第26页时出现了一个名词叫做“回归测试”,通过认真阅读,我了解到所谓“回归”是指“回归到以前不正常的状态”,那么单元测试与回归测试的区别是什么呢?我有些不太理解。
Q1的理解:
在学完软件工程这门课并通过实验亲自体验之后我对该问题的看法就是:
单元测试: 是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
回归测试: 回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。回归测试的目的是证明当你修订一个漏洞或增加新功能的时候没有破坏已有程序。应用软件的回归测试,需要执行数百到数千单元和集成测试用例并需要有效地管理测试结果。若没有可行的流程来执行回归测试,那将是一件非常困难且耗时的工作。
单元测试与回归测试的不同值出就在于单元测试是将软件划分成小的测试单元后进行测试,而回归测试则是将软件之前所暴露出来的错误修改之后再进行测试以确保没有新的错误出现。 - Q2:在阅读到《构建之法》第97-101页时,我对这几种软件团队的模式理解的不是很透彻,而这些团队模式分别是通过怎样的团队变化形成的呢?
Q2的理解:
在本次团队合作的过程中,我对团队的变化过程有了一定的理解和掌握,团队模式之所以会不同,是因为每个团队内部分工不同导致的,有的团队分工明确、各司其职,而有的团队则主要由有能力的人来挑大梁,导致部分团队成员压力太大,而部分成员则无所事事,感受不到团队的氛围。
而在我认为,要想让自己的团队具备理想的团队模式则需要做好以下几点:- 有明确的职能分工,对目标、产品定位有统一的理解;
- 要有明确且详细的计划,和阶段性需要完成的任务,并且定期做出反馈和总结;
- 团队负责人,要督促或者调节各成员之间完成的情况和团队整体的状态;
- 注重知识的学习,对成熟的技术的掌握,和数据的大量收集;
- 要有团队氛围或者团队精神,成员之间要有相互磨合、交流的过程;
- Q3:如果选择成为一名软件工程师,我应该拥有怎样的工作能力和职业素养呢?
Q3的理解:
通过对软件工程这门课程的学习以及实验课上对软件开发的体验之后,我觉得作为一名软件工程师,首先应该具备扎实的软件工程的知识以及其他计算机专业知识;其次应该具备较好的语言表达能力和沟通能力,以及较强的团队协作能力和团队意识;最后,需要具备良好和健康的心理素质。 - 可行性分析:可行性分析主要是对技术可行性、经济可行性、市场可行性三个方面进行分析,以确定软件的开发是否需要进一步开展,避免造成经济、时间等不必要的损失。
- 需求分析:需求分析主要是对目标系统提出完整、准确、清晰、具体的要求以明确系统必须做什么。
- 概要设计:概要设计主要是设计并选取最优实现方案,对系统功能进行分解后设计出软件结构和数据库以及测试计划。
- 详细设计:详细设计主要是对系统进行详细具体的设计和说明,方便开发人员在后期的开发,决定了最终程序代码的质量。
- 实现:编码和测试统称为实现,因为在编程的过程中要不断进行测试,以确保软件的正常开发和软件的质量。
- 运行和维护:软件在进行内部测试和运行测试之后即可投入使用,然后在使用的过程中对软件进行维护以确保软件具有一个相当长的使用寿命。
- 在学习软件工程之初,我们在数据库这门课中开发过一个小软件,在那次开发中,我们对于各种文档,只能照猫画虎,按照网上给的模板撰写,也不清楚是怎么来的,由于没有基础而开发的软件代码量又比较多,所以在开发的过程中,能明显的感觉到很吃力。这学期老师要求继续以小组合作的方式来开发一款软件,在边学习软件开发的方法边把理论知识与实际操作相结合的过程中,我对软件工程开始有了浅薄的认识。我觉得收获最大的就是知道了概要设计与详细设计的区别,知道了文档需要怎么撰写,为什么这么撰写,以及为什么要撰写。当然,也改变了我对软件开发固有的想法,软件开发的过程不仅仅是编码和测试,设计部分是更为重要的,一个软件若是有好的设计,则开发起来会相对容易一些,编程时也会更加明确,即使开发的软件再大。
- 在个人的能力和素质上,我觉得收获最多的是有了更强的团队意识,在整个的团队开发过程中,我觉得我们小组的分工还算明确,也没出现部分成员挑大梁的现象,所以在不论是在开发还是在写文档或博客时都没有压力太大或无所事事的现象。同时,我待人也更有宽容心了,在开发的过程中,我们有过很多次的思想上的碰撞,有时候也会因此而吵得不可开交,但最后在进行激烈的讨论之后,我们会各取所长,找到思想上的平衡点。当然,在开发的过程中,也让我们对彼此有了更深入的了解
二、知识点总结
软件开发的过程主要包括可行性分析、需求分析、概要设计、详细设计、实现、运行和维护七大步骤:三、心得
四、总结和提升
1.统计在软件工程实践中,你完成了多少行的代码。
5千余行
2.你在软件工程实践的各次作业分别花了多少时间?
实验 | 用时(min) |
---|---|
实验一 软件工程准备 | 120 |
实验二 软件工程个人项目 | 250 |
实验三 作业互评与改进 | 90 |
实验四 软件工程结对项目 | 290 |
实验五 软件研发团队组建 | 70 |
实验六 团队项目选题 | 75 |
实验七 团队项目原型设计与开发 | 100 |
实验八 基于原型的团队项目需求调研与分析 | 180 |
实验九 团队项目需求改进与系统设计 | 250 |
实验十 团队项目系统改进与详细设计 | 300 |
实验十一 团队项目设计完善与编码 | 150 |
实验十二 软件测试与Alpha冲刺 | 430 |
实验十三 Beta冲刺与团队项目验收 | 450 |
3.哪一次作业让你印象最深刻?为什么?
4.累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
本学期总共在软件工程实践上用时46h,平均每周用时2.5h。
5.你学习和掌握的新语言、新平台。
语言:Java Web、Java
平台:博客园、GitHub、中国大学MOOC
6.填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法
软件开发工具、项目管理工具 | 软件开发方法 | 软件建模方法 |
---|---|---|
process on、墨刀、石墨文档、mockplus | 原型方法、面向对象方法 | 面对对象建模、结构化建模 |
答:编程能力、文档撰写能力、逻辑分析能力,任务规划能力、团队协作的能力等通过本学期的个人项目、结对项目、团队项目都有了很大的提升。看待问题更加长远和具体,语言表达能力和沟通能力得到提升,具备更健康的心理素质。
五、课程意见
在实践这部分,我觉得老师做的挺好的,可以让我们通过实践消化掉理论知识,避免了软件工程这门课本身的枯燥性。我觉得老师的授课方式非常新颖,使用了翻转课堂的教学方式,但是,新的教学方式不一定适合我们吧,就我个人而言,我觉得我们的课堂效率不高。