1. The course content of the semester, Contrasts "Experimental Software Engineering to prepare a" task 5 you mentioned (given questions blog link), to try to answer questions and clarify how the discussion by learning / practice / make clear; whether learning creates new problems? If so, please ask.
- 问题1:在构建之法书本第17页中提出了这样两个问题,“软件工程为什么要发布一些不完美的软件?为什么不等到软件完美后再发布?”而后书中提到,软件工程就是要在时间、成本等多种约束条件下决定一个软件在什么时候“足够好”,可以发布。那么我有了疑问,当软件的质量和软件的预计时间与成本有了极大的冲突时,一个优秀的软件开发团队应该更倾向于哪一方?
解答 :一个优秀的软件开发团队,不会出现预计时间、成本与软件质量之间的冲突,因为优秀的开发团队会在需求调研过程中将得到很完整的用户需求,之后按照用户需求和自己团队的能力进行时间、成本的估计也就是可行性分析,这样就不会发生问题中这种冲突。
- 问题2:在构建之法中第135页也就是第七章实战中的软件工程中有这样一个标题:保持敏捷,预期和适应变化。这里向我们表明,软件工程是时刻在变化的,所以在软件开发的过程中我们要时刻跟进用户的需求,这里就要用到“敏捷流程”。敏捷流程是应对快速变化的需求的一种开发方式,可以使开发团队应对经常变化的需求。在现如今技术快速的发展背景下,是不是代表形式化的开发方法(有极高的可靠性和质量)已经跟不上软件需求变化的脚步了?那我们是不是应该放弃以往的形式化开发方法?
解答 :经过一学期的学习,我发觉敏捷流程是一种很强大的开发方法,但不代表着以往形式化的开发方法就应该被放弃,虽然如今技术发展的很快速,但是当软件需求出现变化不是很大,不需要团队进行时时刻刻的变化时候,这种形式化的开发方法可以极高的提升冉软件的质量,所以我们不应该放弃这种方法。
- 问题3:在构建之法书中第十二章提到了用户体验,这一章节强调了用户体验的重要性,软件服务是紧贴着用户的选择。书中提到了很多软件被长期使用之后,软件会越发难用。当一个软件在交付给用户以后,用户经过长期使用,对软件产生了厌倦,使得用户丢弃了软件,那么在这种情况下,是用户还是软件开发团队的错误使得软件被弃用呢?
解答 :在这种情况下,用户可以跟开发团队进行交流,让开发团队在后期进行软件的优化和维护。问题中提到用户经过长时间使用后对软件产生厌倦,那么说明在软件交付时,软件是符合用户的要求的,而长期使用后,厌倦了软件,这种时候应该去和开发团队交流,而不是去抛弃软件,所以两者都有错误。
2. summed up his analysis of the feasibility of the project / needs analysis / software design / implementation / testing / project acceptance / learned what "knowledge."
- 可行性分析
1.数据流图(DFD)的使用;
2.任务分解技术;
3.NABCD方法的使用。
- 需求分析
与用户交流获取需求的方法:
1.访谈;
2.调查问卷;
3.原型需求分析。
- 软件设计
1.层次图和结构图的使用;
2.软件结构设计中遵循发模块独立原理。
- 实现
java web的学习。
- 测试
1.白盒测试技术、黑盒测试技术;
2.Alpha测试和Beta测试。
- 项目验收
掌握了软件项目评审流程。
3. The combination of individual project / twinning individual program / project team experience, to talk about the experience.
个人项目到结对编程再到团队项目,这个过程让我真正认识到了什么是团队。从刚开始的个人项目,一个人做着一个小项目,很小很小的那种,只是这样也有着很多错误,到后来的结对编程,发觉结对编程可以极快的加速编程速度,而且错误也变的很少了,这个项目后,已经感觉到了一个人力量的薄弱。再到后来,开始了团队项目,它让我找到了做真正项目的感觉,也明白了为什么好的软件都是由软件团队制作而成,因为一个人的力量是有限的,而众人的力量是无限的。
4. Summary of Practice on the course and upgrade to bring you, including the following:
(1): statistical software engineering practice, how many lines of code you have completed the
约2000行代码。
(2): You were how much time each homework software engineering practices? (Make a list)
Experimental Software Engineering to prepare a |
60 |
Software engineering experiment two individual events |
180 |
Improvement of the peer review with three operations |
60 |
Experiment 4 software engineering twinning projects |
270 |
Experiment 5 software R & D team building |
60 |
Experiments six team project topics |
50 |
Experiment 7 team prototyping and development project |
90 |
Experimental research and analysis needs eight prototype-based team projects |
150 |
Experimental nine team project needs improvement and system design |
180 |
Experimental ten project team to improve the system and detailed design |
270 |
Well-designed experimental eleven project team and coding |
180 |
If a software testing and test Alpha sprint |
450 |
Beta test thirteen team sprint and project acceptance |
450 |
(3): Which one job to make you the most? why?
最让我印象深刻的一次作业就是团队作业7:团队项目设计完善&编码,这次是软件真正开始编写的时候,因为我们的编码能力有限,在这个过程中发生了很多问题,差点导致项目不能正常提交,我们团队,花费了很多时间去解决它。所以这是我印象最深刻的一次作业。
(4): the cumulative number of hours spent on the practice of software engineering? The average number of hours per week spent?
共累计54小时用在软件工程实践上,平均每周用时3小时。
(5): You learn and master a new language, a new platform;
语言:Java web
平台:GitHub、博客园
(6): complete the form below, summarizes a semester of study, software engineering development tools, development methods and modeling methods you learn or use;
Visio, blade, mockplus, GitHub |
Prototype method, an object-oriented approach, structured approach |
UML modeling, object-oriented modeling |
(7): other gains or upgrade.
在整个软件工程课程的学习过程中,我的博客撰写能力、基于java语言以及数据库sql语言的程序编写能力都有了很大的提升,而且,经过多次团队作业,我的团队协作能力也有了极大的提升。
5. What problems do you think the current curriculum, do you have any better suggestions.
我认为软件工程就是一门需要手动、脑动的课程,老师布置的作业可以很好的帮助我们。唯一的缺点可能就是时间的问题,因为大三学生的任务还是很繁重的,软件工程的作业是每周一次,为了保质保量,必然会花费很多的时间,所以,我希望老师可以增加一些时间给每一个项目,让学生可以更好的完成它。