个人作业——高级软件工程实践总结作业
一、请回望第一次作业,你对于高级软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 在整个课程的学习过程中,设计模式的学习完全超出了我个人对课程的期待,课程中老师很细致的为我们讲解了多类设计模式,并且通过课后对每个设计模式的训练,让我加深了对设计模式的理解和应用。设计模式是未来从事软件开发工作中必不可少的需要掌握的知识。这一块,我感觉是这个课程给我的惊喜,也是本科软件工程课程中所缺失的。
- 实践开发环节也达到了最初的期待,在这个过程中,不仅增强了我团队协作的意识,而且规范了整个的开发过程,从选题报告到需求分析,再从整个系统的编码,测试,使得我对整个软件开发的过程有了更加深入的理解和体验。
- 唯一存在不足的是我们的系统还存在很多设计不合理的地方,因此并没有投入真正的使用。这也说明了我们还存在着许多的不足,还需要继续深入的研究软件工程这一课程。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
- 1、统计一下,你在这门高级软件工程实践中,完成了多少行的代码;
一万行左右。 - 2、高级软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 花费时间 | 作业 | 花费时间 |
---|---|---|---|
高级软件工程第一次作业(准备) | 2h | 测试随笔 | 5h |
团队展示(团队) | 3h | 事后诸葛亮(团队) | 7h |
项目选题报告(团队) | 6h | Beta冲刺预备 | 7h |
项目需求分析(团队) | 5h | Beta冲刺Day1 | 5h |
项目Alpha冲刺Day1 | 12h | Beta冲刺Day2 | 8h |
项目Alpha冲刺Day2 | 10h | Beta冲刺Day3 | 6h |
项目Alpha冲刺Day3 | 7h | Beta冲刺Day4 | 6h |
项目Alpha冲刺Day4 | 9h | Beta冲刺Day5 | 6h |
项目Alpha冲刺Day5 | 10h | Beta冲刺Day6 | 9h |
项目Alpha冲刺Day6 | 8h | Beta冲刺Day7 | 10h |
项目Alpha冲刺Day7 | 9h | Beta冲刺总结随笔 | 6h |
项目Alpha冲刺Day8 | 7h | 用户使用调查报告 | 3h |
项目Alpha冲刺Day9 | 8h | 高级软件工程实践总结 | 5h |
项目Alpha冲刺Day10 | 5h | 第一次作业 | 1h |
项目Alpha冲刺Day11 | 6h | 第二次作业 | 6h |
项目Alpha冲刺Day12 | 10h | 第三次作业 | 7h |
Alpha冲刺总结随笔 | 5h | 第四次作业 | 8h |
第五次作业 | 8h |
- 3、哪一次作业让你印象最深刻?为什么?
印象最深刻的一次就是写Beta总结冲刺的时候,那时候我们团队的项目已经成型并且经过了多次的测试和完善,项目已经较为成熟。写这篇博客的感想的时候,回想起我们团队的整个开发过程,感触良多,从刚开始的大家因为课程的关系而组成了一个团队,拍了第一张团队的照片,到Alpha冲刺阶段每天聚在一起进行头脑风暴,有焦虑的时候,有碰撞的时候,但更多的是看着项目一步步的完成的欣喜的时候。大家一起开发,一路走来很不容易,但幸好项目很完美的划上了句点。
- 4、累计花了多少个小时在高级软工实践上?平均每周花多少个小时?
累计花了203个小时在高级软工实践上,平均每周花67个小时。
- 5、学习和使用的新软件
Mysql数据库、开发工具:Myeclipse、服务器:Tomcat、原型开发工具:Axure RP
- 6、学习和使用的新工具
使用Github进行版本控制,使用PowerDesigner绘画UML图。Rational Rose绘画用例图,顺序图,活动图等。
- 7、学习和掌握的新语言、新平台
我们的项目前端采用的语言是HTML+CSS+JavaScript。后台采用的语言是Java.项目使用SSH三大框架进行架构。
- 8、学习和掌握的新方法
前端学习了新的框架:Bootstrap
后台学习了新的框架:Struts+Spring+Hibernate
还学习了设计模式,并使用了5个设计模式(工厂模式,状态模式,代理模式,观察者模式,策略模式)在我们的项目中。
- 9、其他方面的提升。
团队协作能力方面;对所使用的编程语言更加熟悉;编码规范也有很大的提升。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 项目开发开始的需求分析很重要。需求分析可以使得开发和测试更能够了解整个系统的需求,把一些技术难点和可能遇到的难点问题提出来,尽早解决,并且达到一致,便于以后的开发和测试。个人认为,需求分析中的用例这一环环节很重要,好的用例文本,能为后期的开发提供很好的参照,不至于后期的开发偏离期初预想的轨道。但是随着开发的推进,需求也会发生变更,需要及时的更新相应的文档。比如我们系统开发过程中,起初对活动的流程控制并没有做特别详细的说明,导致了后期开发时,大家的想法不同,对活动流程的控制很混乱,最后我们对每个活动流程又进行了重新的讨论,编写了详尽的用例文本。大家都很据新的用例文本进行开发,最后完善了活动的流程控制。
- 项目开发时代码的规范性很重要。我们团队开发过程中,有自己的制定的一套代码规范,比如变量名的命名规范,函数命名规范,对每一个函数都需要注释其功能等,在团队开发过程中,大家都遵循这样的规范,在遇到需要使用他们开发的模块功能时,我们都能够很快精准的定位到他人写的代码,增加了我们团队的效率。
- 团队沟通很重要。由于我们团队每个人的个性都很不一样,所以在每次讨论时,大家都会积极的说出自己的想法,正是因为这样思想的碰撞,为我们系统开发,需求确定提供了很多的灵感。
###三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?
对下一届的建议:或许刚开始听老师布置整个系统开发的作业时,你们会感到非常的彷徨,无措,甚至还会有些崩溃,认为自己根本没有办法完成这项艰巨的任务。但是正因为这个作业,你和你的小伙伴们有了一个全新的体验,你们将会组成一个团队,一起面对每一次作业,每一次开发,虽然过程很艰难,需要学习的东西也很多,但是只要你们努力,在项目结束的那天你们会发现,你们真的收获了很多。在不知不觉中,你已经成为了能够独当一面的全栈开发程序员了,你的代码能力和编码的速度都会得到很大的提升。不仅如此,你还会收获一大群可爱的队友们,那些你们一起努力编码熬夜的日子,会成为你们大学生活中难忘的一段回忆。加油,学弟学妹们。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 团队发展分为四个阶段:萌芽阶段、磨合阶段、规范阶段、创造阶段。我认为我们的团队经过了前面三个阶段。
- 萌芽阶段是我们团队刚刚组建的阶段,那时大家彼此都不是很熟悉,对彼此所掌握的编程能力和技巧也不是很了解。在组完队后,我们团队马上确定了开发工具和项目所要使用的开发技术,然后团队的每个成员对自己欠缺的技能进行补充。
- 磨合阶段是我们团队刚开始进入开发的时候,在需求分析时,大家对系统的功能进行了详细的讨论,会出现意见的不同,但经过我们团队的讨论,终于完美的确定了系统的所有功能细节。
- 规范阶段是我们团队在确定需求之后,大家一起制定了编码的规范和接口,分配好各自开发的模块进行协同开发,并使用了Github进行版本控制。
- 团队没有进入创造阶段。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
- 我们软件虽然没有发布至外网,但我们开放了局域网的网址,供我们使用同一校园网的同学使用,并征集了他们的建议和意见。
- 我们的整个项目过程,有项目规划,项目需求,项目设计,项目实现,项目发布,项目维护。
选题报告:https://www.cnblogs.com/youberight/p/9900706.html
需求分析:https://www.cnblogs.com/youberight/p/9941637.html
原型设计、代码实现、用户测试:https://www.cnblogs.com/youberight/p/10033785.html https://www.cnblogs.com/youberight/p/10091200.html
六、个性发挥,包括图文、照片和创意等
写代码是一种艺术,甚于蒙娜丽莎的微笑