一、学期初,实验一中的任务四,大家拟定了5个准备从课程学习中找到答案的问题,通过一个学期的学习,相信大家已经有了答案,请根据自己的学习实践回答自己当初提的问题,并提出一个新的问题。
问题一:什么是BUG?
Bug的定义可以很广泛,在软件使用过程中所出现的任何一个可疑问题,或者导致软件不能符合设计要求或满足消费者需要的问题都可以是Bug,即使这个Bug在实践中是可行的。可以说,没有任何一个产品没有Bug,也永远不可能找出并修复所有的Bug。在修复了旧的Bug的同时,往往又会产生新的Bug。
问题二:何为软件工程?
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
问题三: 如何做好软件需求分析?
软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
需求分析阶段的任务:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求和将来可能提出的要求。
与用户沟通获取需求的方法:现场观察、问卷调查、访谈、会议研讨、原型评估和场景分析。
问题四:如何做好软件测试?
1.按是否查看程序内部结构分为:
①黑盒测试(Black Box Testing):
黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。简单来说,这种测试只关心输入和输出的结果,并不考虑程序的源代码。黑盒测试分为功能测试和性能测试:
1)功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。包括逻辑功能测试、界面测试、易用性测试和兼容性测试。
2)性能测试(performance testing),软件的性能主要有时间性能和空间性能两种。其中,时间性能主要指软件的一个具体事务的响应时间,而空间性能主要指软件运行时所消耗的系统资源。
②白盒测试(White Box Testing):
白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。与黑盒测试相反,这种测试就要研究程序里面的源代码和程序结构。
2.按是否运行程序分为:
①静态测试(static testing):
静态测试指测试不运行的部分,只是静态地检查程序代码、界面或文档可能存在的错误的过程。例如测试产品说明书,对此进行检查和审阅.。
②动态测试(dynamic testing):
动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。具体操作就是输入相应的测试数据,检查输出结果和预期结果是否相符的过程。
3.按阶段分为:
①单元测试(Unit Testing):
单元测试是最微小规模的测试,测试的是某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。
②集成测试(Integration Testing):
集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。
③系统测试(System Testing):
系统测试是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
⑤回归测试(Regression testing):
回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。
4.其他类型测试:
①冒烟测试(smoke testing):
随机测试是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
问题五:如何做一个合格的项目经理?
通过本学期的结对编程以及后来的团队作业,我对做一个合格的项目经理有了一些自己的看法。项目经理的职责是工作的计划和组织、管理项目的日常活动和为客户提供项目的交付件。做一个合格的项目经理必须学会如何定义、计划和监控项目工作。你必须按照预算进行工作、预测项目进度并决定可供利用的资源。学会如何识别客户需求,如何编制项目计划,并会项目管理的工具方法和技术:甘特图、网络图、计划控制、经济价值分析。
新问题:如果团队中有队员的工作已经拖累了整个团队的进程,如何委婉有效的提醒他?
二、完成课程的实践总结和给你带来的提升,包括以下内容:
1.统计你在软工课程实践中,完成了多少行的代码;
通过一学期的实践,在个人作业、结对作业以及团队作业的完成中共完成了10000多行的代码。
2.软工实践的各次作业分别花了多少时间?累计花了多少个小时在软工实践上?平均每周花多少个小时?(做一个列表)
作业内容及次数 |
花费时间 |
平均每周花费时间 |
实验一 软件工程准备 |
4 |
6 |
实验二 软件工程个人项目 |
5 |
|
实验三 软件工程结对项目 |
5 |
|
实验四 基于原型的软件需求获取 |
4 |
|
实验五 软件研发团队组建 |
5 |
|
实验六 团队项目评审与团队项目选题报告 |
3 |
|
实验七 团队作业3—团队项目的原型设计与开发 |
5 |
|
实验八 团队作业4—基于原型的团队项目需求调研与分析 |
15 |
|
实验九 团队作业5—团队项目需求改进与系统设计 |
5 |
|
实验十 团队作业6—团队项目系统设计改进与详细设计 |
8 |
|
实验十一 团队作业7—团队项目设计完善&编码测试 |
10 |
|
实验十二 实验十二 团队作业8—团队项目用户验收评审 |
3 |
3.哪一次作业让你印象最深刻?为什么?
说起来还是第一次的作业(读构建之法后的五个深思)让我印象最深刻,因为是第一次以翻转课堂的方式上课,对之后的学习也抱着新奇探究的心情,这种让我兴奋又激动的上课方式让我对一学期的学习充满信心与希望。
4.学习和使用的新软件、新工具;
- 团队协作工具,Scrum工具,敏捷工具,项目管理工具——leangoo;
- 在线作图工具的聚合平台,可以在线画流程图、思维导图、UI原型图、UML、网络拓扑图、组织结构图等等——ProcessOn;
- 强大易用的原型设计与协同工具——墨刀;
- 一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目——Git。
5.学习和掌握的新语言、新平台;
在项目的开发过程中,我学习到了JavaWeb这门新的语言,而且还实践了本学期学习的数据库相关知识。
使用了新的平台——博客园,在博客园上完成提交自己的作业,与其他同学进行线上讨论,遇到不会的问题还可以求助园友,博采众长。这样一个开放的学习空间令人愉悦。
6.学习和掌握的新方法;
在软件需求分析阶段掌握了如何与用户进行沟通、获取用户需求的方法。软件需求分析方法虽然有很多种,但并不是每种都用才是最好的方法,而是根据实际情况选择合适自己项目的方法才是最好的方法。所以我们在进行软件需求分析时选择了原型设计与调查问卷相结合的方法。
掌握了撰写需求规格说明书的能力,开始重视文档的格式,还将所学习的OFFICE相关知识运用其中。
了解了软件测试中的单元测试、白盒测试以及黑盒测试的方法和具体原理。
7.其他方面的提升。
其他方面的提升就是心理方面的成长,在起初遇到一个软件开发的问题时担心自己做不出来,手忙脚乱的先开始编码,最后再一直改改改。在学习了这门课程之后,拿到一个项目我不会像以前一样就开始进行编码,而是首先开始进行需求分析,按照软件开发流程,一步一步充实项目。
三、你认为目前的课程有哪些问题,你有什么更好的建议:
1.你认为本门课程需要在哪里进行改进,具体措施有哪些,包括:时间进度安排,项目难度等均可;
在时间进度安排方面很符合课程的进度,除了对具体编码测试那一阶段只用一个星期的话,时间安排有些紧张,让人感觉有些吃力。
如果能把具体编码测试阶段的工作安排到两个星期的话,我认为项目会完善的更好。
2.你认为助教/老师哪里做的不足,哪里限制太多等;
助教老师兢兢业业每次批阅作业、对评分的总结统计很好。在开始的几次作业中,有一位助教老师对他所批阅的同学的作业要求很严格,态度很严肃,但是后来我也了解到助教老师平时对自己也是要求严格,看到一些不满意的作业难免会不由自主的纠正,也是能理解的。所以,助教团队实在挑不出不足。
3.你认为每次项目的评分标准存在哪些问题,你认为的合理评分准则是怎样的(个人/结对/团队算三个)
我记得有一次的作业工作量太大,时间又短,所以我们和老师进行了讨论,将我们遇到的困难说给了老师,老师马上就想出了解决办法,加入了选做和必做的项目。这样既满足了对作业的基本要求,又照顾到了想要做一些提升的同学,两全其美。所以我认为合理的评分标准是在公平的前提下,加入一些灵活的元素,使得每个人的成绩都与自己的努力相关。
4.在结对项目中你是否真正体会到了结对的好处,是否真正严格进行了结对编程,双方的工作量是否相同;
我真正体会到了结对的好处,每个人擅长的点是不一样的,结对可以博采众长,充分发挥自己的优点,在队友身上学到自己欠缺的东西,是一个互相进步,共同发展的过程。双方的工作量大致是一样的。
5.你的团队项目是否成功,如果重来一次你是否还会选择这个团队,为什么成功/失败;
我的团队项目还是比较成功的,如果重来一次我还会选择这个团队。在团队作业的完成过程中我们互帮互助,遇到问题大家一起讨论解决,谏言献策。这本身就成功了一半。在最后的验收结果中,我们的项目按照预期的结果完成了,所以说我的团队项目是成功的。
6.总结一下你们团队在做项目时大家的时间安排情况。
在做团队项目时大家都还有着其他同样重要的课程,我们都是在课余时间找自习室,由于自习室不能大声喧哗会影响其他同学的学习,我们都是默默地进行项目的工作,主要是在线上建立了QQ群进行讨论和交流,当然还有眼神的交流。如果无法一起聚在自习室,也可以在各自的宿舍完成各自分配的任务,只要保证线上交流即可。
7.对下一届软工课实践教学的建议,或者对于开学初的你,对于大一的你,对于开学初的老师,你有什么想建议和告知的呢?对于后来人的期许。
要抱着期待与希望去学这门课,不要存着侥幸和糊弄,甚至是排斥的心态去面对这门课。要知道生命中的每一件事都有它发生的意义。生活是一面镜子,你的态度,好的、坏的,它都会还给你。
四、你还有什么想说得话
一学期的生活和学习已经结束了,真的是越到后面越快,时间真的在飞。但我们还是在努力前行这就够了。真诚的感谢这一学期以来代老师、邹欣老师以及助教老师为我们的付出和教诲。