实验十四 团队项目评审&课程学习总结
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 软件工程 |
这个作业的要求在哪里 | 实验十四 | 作业学习目标 | 1)掌握软件编码实现的工程要求 2) 反思总结课程学习内容 |
任务一:点击查看
任务二:
Q1:结合本学期课程学习内容,对比 《实验一 软件工程准备》 的任务5你所提的问题(提问博客链接),尝试对提出问题进行解答,并阐明是如何通过学习/实践/讨论弄清楚的;学习中是否产生了新的问题?如有,请提出。
1.软件测试分为几个阶段?目的是什么?
按照开发阶段划分,软件测试可分为单元测试、集成测试,系统测试和验收测试。
单元测试:针对每个单元的测试, 以确保每个模块能正常工作为目标。
集成测试:对已测试过的模块进行组装,进行集成测试。目的在于检验与软件设计相关的程序结构问题。
确认测试:是检验所开发的软件能否满足所有功能和性能需求的最后手段。有的划分方法中,也将确认测试合并入系统测试中。
系统测试:检验软件产品能否与系统的其他部分(比如,硬件、数据库及操作人员)协调工作。
验收测试:检验软件产品质量的最后一道工序。主要突出用户的作用,同时软件开发人员也应有一定程度的参与。
验收测试可以分成Alpha测试和Beta测试,Alpha测试是由用户在开发环境下完成的测试,Beta测试是由用户在用户环境下完成的测试。
2.书中P52页提到,“”软件工程师不宜过早的优化,不能过于积极的解决所有依赖性问题”,在平日里写代码时,遇到问题及时解决在最后才不会花费太多精力和代价在代码的改进和优化上,小的工>程代码尚且如此,在大一点的软件工程项目中后期岂不是要付出更大代价?
优化是没有止境的,放眼望去,任何一个软件都有其可优化的余地,不可能一次性做到最好,相反一直纠结于局部的优化只会耽误整体的进度,甚至会越陷越深,因此我们在做软件时可以先放眼>全局,只对于局部只先解决基本的问题,完成整体后再逐步求精不失为良策。
3.P27页提出"100%的代码覆盖率并不等同于100%的正确性!",那怎么才可以达到100%的正确性?
通过学习,我明白了为什么"100%的代码覆盖率并不等同于100%的正确性!",100%的代码覆盖率对程序员来说不是什么难事,但需要做到100d%的正确性就很难了,测试是无穷尽的,就像我们在>完成项目的时候,单元测试基本没有完全达到过100%,我觉得有时候也没有必要完全达到100%的代码覆盖,因为有些代码区域的覆盖代价得不偿失。
新的问题:
即使我们经过了足够的测试,还是不能保证在实际运行中不会出错,尤其是当开发面向对象的网站或者软件时候,因为使用对象的多样性会遇到很多问题 。那么在维护阶段出现bug有没有比打补丁更规范适用的方法?
Q2:总结自己在项目的可行性分析/需求分析/软件设计/实现/测试/项目验收/中学到了哪些“知识点”。
1.可行性分析:
可行性分析的基本目的就是用最小的代价在近可能短的时间内确定问题是否能够解决。
通过学习之后,我个人觉得可行性分析是一个项目的关键所在,因为再好的一个项目,如果在做出来之后没有可用性,那就没有它的价值和意义所在了。所以在立项之前,代老师对我们所有的团队进行了一个全面的分析和建议、意见之后,我们的项目才进行实施。
2.需求分析:需求分析的任务不是确定系统怎样完成它的工作,而仅仅确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
在这一阶段,老师没讲之前,我认为需求分析就是根据自己的想法结合用户的想法进行简单的分析一下就可以了,但是经过老师的讲解之后,我发现并非是这样的。
- 在这一阶段我主要学到了
- 用NABCD进行需求分析
- 书写标准的《软件需求规格说明书》
3.软件设计:在没接触软件工程之前,我认为设计阶段跟实现阶段是一样的,在学过之后发现还是有很大的差别的。
软件设计阶段的任务还不是具体地编写程序,而是设计出程序的“蓝图”,以后程序员将根据这个“蓝图”写出实际的程序代码。
4.实现:实现就是具体的编码阶段了,因为之前并非本专业,所以在编码阶段能力较弱,不过,通过此次项目,让我在代码编写阶段有了很大的进步,同时,我也学习到了,在功能实现时不能一味>的去编写代码,还要去考虑各方面的因素,如:代码规范、冗余等等。
5.测试:测试阶段基本跟想象的一致,有一点不同的是我以为得测试是随心所欲,相测试哪块,测试哪块,但规范的测试是分模块,分方法测试。
6.项目验收:项目验收阶段就是对前面所有付出的一个呈现、展示。
总之:不管是在软件工程课程中还是在项目中都学到了很多:
- 改变了我对软件工程肤浅的理解
- 解决了我在通读软件工程之前的疑惑
- 最主要的还是深刻的理解了软件工程
Q3:结合个人项目/结对编程/团队项目的个人经历,谈谈心得。
- 转眼间就到了期末,回想这学期参加软件项目的过程, 从开始的组队寻找课题到撰写项目开题报告,到设置问卷调查确定项目用户需求, 确定实验项目、实施方案与寻找创新点; 并制定详细的研究方案和步骤;对项目进行相关调查和研究;到最后确定项目的可行性,一步步走来,其中的经验与成长也只有经历过的人才会分享和拥有。这是一次难得经历,一次让我得到锻炼得到成长的经历。在这几个月中,组员间相互学习,这对于我们每一个来说无疑是最值得珍藏的,这种为同一目标共同奋斗的团结氛围特别让人有归宿感。也特别感谢老师和助教长期以来的指导和帮助!
- 通过这次项目开发,使我深刻体会到了软件工程的巨大作用,从最初的软件设想到现在的项目实现经过了很长的时间,我们小组精诚合作完成了项目,每个过程我们都对所做的部分进行了详细的分析,从最初的软件设想到现在的编码实现经历了漫长的过程,这其中我们花了很长的时间来做设计和建模,这个过程看似不重要,但确为软件最终的成功奠定了基础,没有前期的工作后面编码将出现很大的问题。还有古人云,磨刀不误砍柴工。前期的知识储备、文献储备、材料准备、方法准备能够避免手忙脚乱,充分的预实验可以使我们充满信心。一步一个脚印,在最后的综合实验中,我们更是受益匪浅。完整的做出了学生信息管理,虽然功能不是太完善。但是这是整个团队一起努力的结晶。
Q4:总结这门课程的实践总结和给你带来的提升,包括以下内容:
1.统计在软件工程实践中,你完成了多少行的代码
完成了大约3000行代码
2. 软工实践的各次作业分别花了多少时间?累计花了多少个小时在软工实践上?平均每周花多少个小时?(做一个列表)
软工作业 | 花费时间(h) | 累计花费时间(h) | 平均每周花费时间(h) |
---|---|---|---|
实验一 软件工程准备 | 9 | 109 | 9 |
实验二 软件工程个人项目 | 8 | ||
实验三 软件工程结对项目 | 10 | ||
实验四 基于原型的软件需求获取 | 9 | ||
实验五 软件研发团队组建 | 5 | ||
实验六 团队项目评审与团队项目选题报告 | 9 | ||
实验七 团队作业3—团队项目的原型设计与开发 | 9 | ||
实验八 团队作业4—基于原型的团队项目需求调研与分析 | 10 | ||
实验九 团队作业5—团队项目需求改进与系统设计 | 12 | ||
实验十 团队作业6—团队项目系统设计改进与详细设计 | 9 | ||
实验十一 团队作业7—团队项目设计完善&编码测试 | 10 | ||
实验十二 团队作业8—团队项目用户验收评审 | 9 |
3.哪一次作业让你印象最深刻?为什么?
让我印象最深刻的一次作业是:实验四软件工程结对项目,在这次项目中,首先,是技术的不足和熟悉程度的不够;其次,是时间的不够;让我在这次项目中付出很多,最终还是没有达到自己想要的效果,不过,在这次的结对项目中还是收获很多,所以,我非常珍惜和怀恋这次的项目合作。
4.你学习和掌握的新语言、新平台?
本学期主要掌握的新平台有博客园、github,新语言有JAVA。
5.填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法
软件建模方法 | 软件开发方法 | 软件开发工具、项目管理工具 |
---|---|---|
MySql,Sublime、eclipse | 原型化方法,面向对象开发方法 | 面向对象分析模型方法 |
6.你认为目前的课程存在哪些问题,你有什么更好的建议。
可能是因为自己基础比较薄弱,所以整个一学期下来感觉作业量有点大,但收获还是很多。关于课程老师已经讲得很清楚了,剩下的就是自己各方面的问题了,比如:技术上的不足、经验的缺乏等等,我后期会努力跟近学习的。