一、学期初,实验一中的任务4,大家拟定了5个准备从课程学习中找到答案的问题,通过一个学期的学习,相信大家已经有了答案,请根据自己的学习实践回答自己当初提的问题,并提出一个新的问题。
1.在第二章技术个人技术和流程中,对于单元测试,什么是单元测试,以及单元测试要怎么做。
答:单元测试是一个方法层面上的测试,也是最细粒度的测试。用于测试一个类的每一个方法都已经满足了方法的功能要求。在开发中,对于自己开发的模块,只有在通过单元测试之后,才能提交到 SVN 库 或者 Git 库。
在代码编写完成后的单元测试工作主要分为两个步骤人工静态检查和动态执行跟踪。
人工静态检查是测试的第一步,这个阶段工作主要是保证代码算法的逻辑正确性(尽量通过人工检查发现代码的逻辑错误)、清晰性、规范性、一致性、算法高效性。并尽可能的发现程序中没有发现的错误。
第二步是通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误。经验表明,使用人工静态检查法能够有效的发现30%到70%的逻辑设计和编码错误。但是代码中仍会有大量的隐性错误无法通过视觉检查发现,必须通过跟踪调试法细心分析才能够捕捉到。所以,动态跟踪调试方法也成了单元测试的重点与难点。
2. 什么是软件危机,为什么产生软件危机?。
答:软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
产生软件危机的原因主要有两个方面:
(1)与软件本身的特点有关。软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件;软件样品即是产品,试制过程也就是生产过程;软件不会因使用时间过长而“老化”或“用坏”;软件具有可运行的行为特性,在写出程序代码并在计算机上试运行之前,软件开发过偶成的进展情况较难衡量,软件质量也较难评价,因此管理和控制软件开发过程十分困难;软件质量不是根据大量制造的相同实体的质量来度量,而是与每一个组成部分的不同实体的质量紧密相关,因此,在运行时所出现的软件错误几乎都是在开发时期就存在而一直未被发现的,改正这类错误通常意味着改正或修改原来的设计,这就在客观上使得软件维护远比硬件维护困难;软件是一种信息产品,具有可延展性,与通用性强的硬件相比,软件更具有多样化的特点,更加接近人们的应用问题。
(2)来自于软件开发人员的弱点。其一,软件产品是人的思维结果,因此软件生产水平最终在相当程度上取决于软件人员的教育、训练和经验的积累;其二,对于大型软件往往需要许多人开发合作,甚至要求软件开发人员深入应用领域的问题研究,这样就需要在用户与软件人员之间以及软件开发人员之间相互通讯,在此过程中难免发生理解的差异,从而导致后续错误的设计或实现,而要消除这些误解和错误往往需要付出巨大的代价;其三,由于计算机技术和应用发展迅速,知识更新加快,软件开发人员经常处在变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益扩大的应用领域问题研究;软件开发人员所进行的每一项软件开发几乎都必须调整自身的知识结构以适应新的问题求解的需要,而这种调整是人所固有的学习行为,难以用工具来代替。
3. 没有项目经验,基础又打的不好,该如何提升自己的能力。
答:(1)多请教他人。在做项目的过程中,难免会遇到自己不擅长的地方。这时,多向过来人请教方法思路,多听听前辈的经验教训,多与组内成员沟通想法,及时发现自己的不足之处,学习他人解决问题的技巧,会使能力大幅度提升。
(2)多总结反思。每一次项目结束之后,回顾项目中自己遇到的问题,总结解决问题的思路,自己在哪方面还存在欠缺,哪方面得到了提升,哪些是优势所在。不断的反思总结,会使你的经验成倍的增加,使能力得到质的提升。
能力的提升不在于投机取巧、也非一朝一夕的事,而在于每天8个小时的实践、一点一滴的努力与积累。
4. 什么是敏捷的开发模式。
答:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
5、软件开发的流程、目标?
答: 三个阶段,八个时期:
软件开发流程:需求分析、概要设计、详细设计、软件编码、软件测试、软件交付、软件维护。
软件开发的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难
二、课程的实践总结和带来的提升
1、统计你在软工课程实践中,完成了多少行的代码;
完成了大约四千多行代码。
2、软工实践的各次作业分别花了多少时间?累计花了多少个小时在软工实践上?平均每周花多少个小时?(做一个列表)
软工作业 |
花费时间 |
平均每周花费时间 |
实验一 软件工程准备 |
5 |
7 |
实验二 软件工程个人项目 |
5 |
7 |
实验三 软件工程结对项目 |
8 |
7 |
实验四 基于原型的软件需求获取 |
6 |
7 |
实验五 软件研发团队组建 |
5 |
7 |
实验六 团队项目评审与团队项目选题报告 |
7 |
7 |
实验七 团队作业3—团队项目的原型设计与开发 |
8 |
7 |
实验八 团队作业4—基于原型的团队项目需求调研与分析 |
9 |
7 |
实验九 团队作业5—团队项目需求改进与系统设计 |
8 |
7 |
实验十 团队作业6—团队项目系统设计改进与详细设计 |
9 |
7 |
实验十一 团队作业7—团队项目设计完善&编码测试 |
9 |
7 |
实验十二 实验十二 团队作业8—团队项目用户验收评审 |
7 |
7 |
3、哪一次作业让你印象最深刻?为什么?
印象最深的是团队结对项目。因为可以跟同学们一起做项目以及互相交流,做项目效率提高了很多。
4、学习和使用的新软件;
visio
5、学习和使用的新工具;
process on、墨刀、mockplus、石墨文档
6、学习和掌握的新语言、新平台;
GitHub、博客园、中国大学MOOC
7、学习和掌握的新方法;
快速原型方法、白盒测试与黑盒测试、面向对象设计方法
8、其他方面的提升。
编程能力、文档撰写能力、团队协作的能力都有了很大的提升。
三、你认为目前的课程有哪些问题,你有什么更好的建议:
1.你认为本门课程需要在哪里进行改进,具体措施有哪些,包括:时间进度安排,项目难度等均可;
翻转课堂是之前我没有接触过的所以采用这种形式是比较新颖的,也会比较感兴趣,效果也是不错。可以让学生自己的思考范围更加广泛一点。不过我觉得实验时间有点紧,项目难度合理。
2.你认为助教/老师哪里做的不足,哪里限制太多等;
助教/老师在这一学期给我们的学习提供了很多帮助,并且认真负责任。
3.你认为每次项目的评分标准存在哪些问题,你认为的合理评分准则是怎样的(个人/结对/团队算三个);
评分标准合理。
4.在结对项目中你是否真正体会到了结对的好处,是否真正严格进行了结对编程,双方的工作量是否相同;
在结对项目中我真正体会到了结对的好处,真正严格的进行了结对编程,双方的工作量是不一样的。
5.你的团队项目是否成功,如果重来一次你是否还会选择这个团队,为什么成功/失败;
我的团队项目是成功的,如果重来一次我还是会选择这个团队,因为每个团队的成功都离不开成员积极的完成任务和努力,以及成员之间融洽的氛围。
6.总结一下你们团队在做项目时大家的时间安排情况。
每个成员在不同的时期有不同的分工,根据任务的难易程度进行明确的分工。对于自己分到的任务会根据自己的时间去合理的安排,遇到问题会在群里讨论。
7.对下一届软工课实践教学的建议,或者对于开学初的你,对于大一的你,对于开学初的老师,你有什么想建议和告知的呢?对于后来人的期许。
既来之则安之,要想站在闪光点怎能不付出,好好学习才是王道。付出,不一定会有回报;没有付出,就一定不会有回报。
四、你还有什么想说的话
非常感谢代老师对我们的耐心指导以及代老师和助教的认真负责和辛苦付出。