实验十四 团队项目评审&课程学习总结
项目 | 内容 |
该作业所属课程 | 任课教师博主主页链接 |
作业要求 | 实验十四 团队项目评审&课程学习总结 |
课程学习目标 | 反思总结课程学习内容 |
任务一:各项目组在团队项目Github仓库中提交甲方填写验收意见的验收意见表
团队Github链接地址: https://github.com/struggle17/projecttable
任务二:个人学习总结
1.结合本学期课程学习内容,对比《实验一 软件工程准备》的任务5你所提的问题(给出提问博客链接),尝试对提出问题进行解答,并阐明是如何通过学习/实践/讨论弄清楚的;学习中是否产生了新的问题?如有,请提出。
博客链接:通读《构建之法》之后的问题
-
问题一:所谓软件危机是指在计算机软件的开发和维护的过程中所遇到的一系列严重问题;软件工程是指导计算机软件开发和维护的一门工程科学。但在实际中我们应该怎样用软件工程消除软件危机?软件工程的诞生是否从根本上消除了软件危机,为什么?
- 解答:软件危机的产生原因一方面与软件本身的特点有关,另一方面是与已有的软件开发、维护的方法不正确有密切关系。解决软件危机既要有技术措施(方法和工具),又要有必要的组织管理措施,即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。软件工程是从技术和管理两个方面来研究如何更好地开发和维护计算机软件,从源头上消除软件危机。
软件工程的诞生只能大大减少软件开发成本并提高软件质量,不能从根本上消除软件危机。
- 解答:软件危机的产生原因一方面与软件本身的特点有关,另一方面是与已有的软件开发、维护的方法不正确有密切关系。解决软件危机既要有技术措施(方法和工具),又要有必要的组织管理措施,即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。软件工程是从技术和管理两个方面来研究如何更好地开发和维护计算机软件,从源头上消除软件危机。
-
问题二:在构建之法的第五章第二小节中有讲到了软件的团队模式,有主治医师模式 ,明星模式,社区模式,业余剧团模式等等,怎样理解这些模式?
- 解答:
(1)主治医师模式:一人为主,其他人为此人服务。
(2)明星模式:主治医师模式到达极致,一人的光芒掩盖所有人。
(3)社区模式:每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。
(4)业余剧团模式:在不同项目中每个人扮演着不同的角色,可能随着项目的改变,自己的角色也会发生变化。
(5)秘密团队模式:一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。
(6)特工团队模式:有一些有特殊技能的专业人士组成的团队。
(7)交响乐团模式:人员工具齐全,准备充足的团队。
(8)爵士乐模式:相对自由,有风险,人少且不靠谱。
(9)功能团队模式:具备不同能力的同事们平等协作,共同完成一个功能。
(10)官僚模式:层层领导的团队模式
- 解答:
-
问题三:在构建的过程中会遇到各种各样的问题,在我们遇到这些问题时我们应该从哪些方面分析构建失败的原因?为什么要进行重构?
- 构建失败的可能原因:
1.在没有实质的数据和分析的情况下,就接受一个强制的日程安排或完成日期/里程碑日期;
2.添加过多的人员以实现不切实际的日程压缩;
3.未能考虑和调整需求的增长或变化并据此对计划和预算预期进行必要的调整;
4.忽略事实和统计数据的情绪化或”全凭直觉的“利益干系人谈判; - 1.重构改进软件设计,如果没有重构,程序的设计会逐渐腐败变质,重构很像是在整理代码,你所做的就是让所有东西回到应该的位置上;2.重构使软件更容易理解;3.重构提高编程速度,良好的设计是快速开发的根本,事实上,拥有良好设计才可能做到快速开发。
- 构建失败的可能原因:
2.总结自己在项目的可行性分析/需求分析/软件设计/实现/测试/项目验收/中学到了哪些“知识点”
- 可行性分析:其目的是能否用最小的代价在尽可能短的时间内确定问题是否能够解决,可行性研究最根本的任务是对以后的行动方针提出建议。从技术可行性、经济可行性和操作可行性三个方面分析项目的可行性;采用NABCD方法进行项目初步分析。
- 需求分析:需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答“系统做什么”这个问题;获取需求分析的方法例如利用问卷调查法获取项目的需求;利用原型开发工具mockplus进行原型设计;设计项目的数据流图——建立功能模型的基础;E-R图等,需求分析过程建立的三种模型:数据模型、功能模型和行为模型。
- 实现:通常把编码和测试统称为实现,编码就是把软件设计结果翻译成某种程序设计语言书写的程序,编码是对设计的进一步具体化,因此,程序的质量主要取决于软件设计的质量;进行项目编码前进行项目需求分析、概要设计、详细设计、编写编码规范说明书等是非常重要的。
- 测试:软件测试是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审,本项目在最后进行了黑盒测试,采其方法有等价类划分法、边界值分析法等。
- 验收:项目验收主要是我们对自己项目成果的一个交付,在验收时开发方也要有好的沟通能力,尽量向客户展示自己的成果,让验收方满意。
3.结合个人项目/结对编程/团队项目的个人经历,谈谈心得。
- 转眼间一学期就结束了,通过这学期的学习,我受益匪浅。记得刚上这门课的时候,老师布置了第一个任务就是申请自己的个人博客,提出自己通过通读构建之法遇到的问题,当时我们花费了很多时间在编辑博客上面,再到后来每次的博客撰写的流畅,其实这也是一种收获。再到后来的项目需求分析的编写,利用mockplus制作项目原型设计、项目的编码及测试,每一次的作业我都参与了其中,所以多多少少都有一些收获。通过一学期的学习,我最大的收获是亲身经历了一个完整的项目的诞生的过程,通过一系列的说明书的设计,我大概了解了编写需求分析说明书、系统详细设计说明书、编码规范说明书的规范等等说明书的规范。学习了一些工具的使用,比如利用mockplus进行项目的原型设计,采用轻量级的Visio建模工具进行项目的建模。
- 在我们进行结对编程和团队项目的过程中,我最大的收获是明白了拿到一个项目时需要先对它进行分解,再对每个小模块进行详细划分和设计,这样做的好处就是目标明确、思路清晰、一个小模块出错不会影响其他模块,方便修改。再者,团队合理分工也很重要,这会使得效率提升很多,但在做的过程中也需要小组成员的共同协作,共同探讨与研究。如果每次的任务大家都去参与,每个人去承担一点任务,这样作业做起来也容易很多,还有一个问题就是在项目设计的过程中小组成员要团结协作,遇到意见不统一时大家要及时沟通,努力去听取别人中肯的意见,不能一意孤行。
4.总结这门课程的实践总结和给你带来的提升
- 统计在软件工程实践中,你完成了多少行的代码;
在整个项目中我主要进行项目的前端设计,所以大概3500多行代码吧 - 你在软件工程实践的各次作业分别花了多少时间?
任务 | 花费时间(h) |
实验 一 软件工程准备 | 4h |
实验 二 软件工程个人项目 | 8h |
实验 三 作业互评与改进 | 3h |
实验 四 软件工程结对项目 | 8h |
实验 五 软件工程准备 | 5h |
实验 六 团队项目选题 | 3h |
实验 七 团队项目原型设计与开发 | 6h |
实验 八 基于原型的团队项目需求调研与分析 | 5h |
实验 九 团队项目需求改进与系统设计 | 4h |
实验 十 团队项目系统设计与详细设计 | 4h |
实验 十一 团队项目设计完善&编码 | 30h |
实验 十二 软件测试与Alpha冲刺 | 8h |
实验 十三 Beta冲刺与团队项目验收 | 6h |
实验 十四 团队项目评审&课程学习总结 | 5h |
-
哪一次作业让你印象最深刻?为什么?
我记得给我印象最深刻的就是利用vivio工具进行UML建模的那次作业,因为是第一次接触该建模工具,所以我在建模初期,先学习了该建模工具的画法,后来根据我们的项目需要设计出我们的E-R图、活动图、类图、用例图等等,再到最后在该软件中将图形画出来。我还记得我们小组在第一次建模中缺少了最基本的类图,后来根据老师的提示,修正并添加了相应的图。通过那次的作业,我不但学习了一个建模工具,还通过该工具亲自画出了我们的项目建模图,这也是将理论和实践相结合的一次比较印象深刻的体验吧。 -
累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
大概前前后后花费了130个小时在软件工程实践上。平均每周花10个小时 -
你学习和掌握的新语言、新平台?
学习了利用Java语言进行软件开发,利用mockplus进行项目的原型设计,用Visio建模、在Github中托管代码、学会了博客中完成每次的任务 -
填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法?
软件开发工具、管理工具 | 软件开发方法 | 软件建模方法 |
Myeclipse | 原型开发、面向对象方法、结构化方法 | 面向对象建模 |
- 其他方面的收获或提升?
对于软件工程,我最为深刻的认识就是项目的编码工作在整个项目中并不是最为重要的。在软件开发尤其是团队开发时,非编程的工作常起到十分重要的作用。在团队开发时,我们团队花费了很多的时间在调研、讨论、沟通、设计等等工作上,而这些工作则是为开发工作打下基础。在本学期的学习中我还有一个很大的收获就是团队意识增强了,因为在项目开发中团队合作是很重要的,甚至项目的成功与否和团队每一位成员都有很大的关系。
5.你认为目前的课程存在哪些问题,你有什么更好的建议。
- 在这一学期中,虽然会因为每次的博客作业而烦恼,但是我也得到了相应的收获,学习到了很多新知识。我也深切感受到老师为了照顾我们的基础,特地为我们设计了本学期的课程,老师对我们也很负责。我有一个自己的小建议是第十章面向对象分析中课本是以ATM系统为例子讲的,我觉得老师可以换成我们更为熟悉的学生信息管理系统等简单的系统就更好了。