项目 | 内容 |
任课教师博客主页链接 | https://www.cnblogs.com/nwnu-daizh/ |
作业要求链接地址 | https://www.cnblogs.com/nwnu-daizh/p/11093584.html |
作业学习目标 | 掌握软件项目评审会流程;反思总结课程学习内容 |
任务2:经历了一个学期的软件工程学习和项目实践,请每位同学完成一篇个人学习总结博客,内容要求如下:
一、结合本学期课程学习内容,对比《实验一 软件工程准备》的任务5你所提的问题(提问博客链接:https://www.cnblogs.com/chenjing1/p/10477331.html),尝试对提出问题进行解答,并阐明是如何通过学习/实践/讨论弄清楚的;学习中是否产生了新的问题?如有,请提出。
问题一:在通读了《现代软件工程——构建之法》这本书以后,我才懂得这门课在整个软件开发过程中的重要性,继而我想到的第一个问题是:软件工程现在所面临的最主要的问题是什么?
答:软件工程现在所面临的主要问题有三点:
(1)多样性的挑战:必须开发出新技术,制作可靠的软件,从而足以灵活应对这种多样性;
(2)交付上的挑战:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间;
(3)信任的挑战:研究能说明软件可信的技术。
问题二:在《现代软件工程——构建之法》这本书的第十三章“软件测试”中提到了软件测试的分类和各种软件测试的方法,而软件开发需要经过如下流程:需求调研分析——概要设计——详细设计——编码——软件测试——软件交付准备——验收。可以看出整个过程的各个部分均很重要,所以在整个软件开发的过程中,进行软件测试的目的是什么?
答:在整个软件开发的过程中,进行软件测试的目的是:
(1)第一是确认软件的质量。其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事情;
(2)第二是提供信息。比如提供给开发人员或程序经理的回馈信息,为风险评估所准备的信息;
(3)第三,软件测试的目的是保证整个软件开发过程是高质量的。
问题三:在开发软件的过程中,或多或少会遇到各种各样的问题,有些bug可以修复,但有些不可修复。在整个进度中,所开发的软件的缺陷不可修复的几个原因?
答:在软件开发过程中,所开发的软件的缺陷不可修复的原因是在进度中没有安排足够的时间,或不是软件缺陷,或修复风险太不值得修复,以及软件缺陷没有正确报修。
二、总结自己在项目的可行性分析/需求分析/软件设计/实现/测试/项目验收/中学到了哪些“知识点”。
1.可行性分析阶段:在这个阶段,我知道了要想写好一个可行性分析报告不是那么容易的,它也分为好几个步骤:
(1)需要陈述一下项目概况;
(2)简单描述一下项目的背景及目前发展情况;
(3)明确写出当今市场环境;
(4)陈述项目的规模及成立所需条件;
(5)接着就是组织实施方案;
(6)分析一下融资与效益对比;
(7)最后就是结论与建议。需求分析阶段:在这个阶段中,我掌握了三种需求分析的方法;学会了需求建模;并且学会了如何编写需求文档。
软件设计阶段:在这个阶段中,我了解了软件设计必须从《软件需求规格说明书》出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。还掌握了一些原型设计工具,比如说Mockplus和墨刀两大类工具。
实现阶段:这个阶段最困难,当然学到的知识也越多,首先重新学习了SQL Server2014数据库,对建表又有了一定的认识;其次学习并大致会运用VS这个软件;最后是学习了一门新的语言:C#,因为之前没有学习这门语言,所以在整个过程中会比较困难,好在通过小组学习及查阅资料,基本的错误我们都可以得以解决。
测试阶段:在这个阶段,我学习并掌握了黑盒测试技术及白盒测试技术,并首次知道了Alpha冲刺和Beta测试,并对他们进行学习。
项目验收阶段:在最后的验收阶段,我学会了编写验收意见表,以及要从哪几个方面检查验收方的项目。
三、结合个人项目/结对编程/团队项目的个人经历,谈谈心得。
个人项目:因为本人是刚开始接触《软件工程》这门课,所以在刚开始学习这门课的时候,还不太了解这门课是学习什么内容,在大致翻阅了《现代软件工程——构建之法》和《软件工程导论》这两本书之后才对软件工程有了一定的了解。在个人项目的编码阶段,由于自己编程能力比较弱,导致个人项目完成的比较困难,还是在同学的帮助下才顺利完成的。
结对编程:我也是在学习了《软件工程》这门课才知道结对编程的重要性,在这个过程中,我和我的结对成员都收获了不少,她从我身上学到了很多,当然我也从她身上学到了不少,结对项目有了两个人的共同努力才会得以顺利完成。
团队项目:以前也做过团队项目,所以在这个整个开发过程中,我觉得最重要的就是积极参与各自团队项目,必须要有团队意识,各司其职,组长安排的任务必须努力完成,而不是置身事外。在整个过程由于我们组员都是转专业过来的,所以都是通过一些途径学习了C#这门语言,其中真的也是付出了极大的努力,但是每一次的博客作业及项目最后的顺利完成使我们最大的安慰,希望以后继续努力。
四、总结这门课程的实践总结和给你带来的提升,包括以下内容:
(1)统计在软件工程实践中,你完成了多少行的代码;
在本次软件工程的实践中,我完成了大概一千到两千行代码。(2)你在软件工程实践的各次作业分别花了多少时间?(做一个列表)
任务 | 耗时/h |
实验一 软件工程准备 | 4 |
实验二 软件工程个人项目 | 12 |
实验三 作业互评与改进 | 2 |
实验四 软件工程结对项目 | 20 |
实验五 团队作业1:软件研发团队组建 | 6 |
实验六 团队作业2:团队项目选题 | 5 |
实验七 团队作业3:团队项目原型设计与开发 | 24 |
实验八 团队作业4:基于原型的团队项目需求调研与分析 | 40 |
实验九 团队作业5—团队项目需求改进与系统设计 | 28 |
实验十 团队作业6:团队项目系统设计改进与详细设计 | 60 |
实验十一 团队作业7:团队项目设计完善&编码 | 120 |
实验十二 团队作业8:软件测试与Alpha冲刺 | 12 |
实验十三 团队作业9:BETA冲刺与团队项目验收 | 10 |
(3)哪一次作业让你印象最深刻?为什么?
给我影响最深刻的有以下几个实验:
第一是“实验七 团队作业3:团队项目原型设计与开发”和“实验十一 团队作业7:团队项目设计完善&编码”,因为在此实验中,我们组成员都没有接触过原型设计工具和C#这门语言,所以我们大家都是从头开始学习,付出了很多精力和时间,大家在整个过程中互相协作,积极完成组长安排的任务,通过大家不懈的努力,我们组的项目最终才会顺利完成。
第二是“实验八 团队作业4:基于原型的团队项目需求调研与分析”,因为在这个过程中,刚开始我们组是通过调查问卷的方式调研的,可后来代老师这个调研方式优点欠缺,我们又通过询问一些有关仓库管理人员才将这个实验完成。(4)累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
在一学期的软件工程实践上,我累计花费了大约一个月的时间,平均每周大概花费一天到两天的时间。(5)你学习和掌握的新语言、新平台;
学习和掌握的新语言、新平台:博客、GitHub、Visio2013、Mockplus、墨刀、SQL Server2014、Visual Studio等。(6)填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法;
软件开发工具、项目管理工具 | 软件开发方法 | 软件建模方法 |
GitHub、SQL Server2014、Visual Studio | 原型化方法、结构化方法、面向对象的开发方法 | 面向对象的建模方法 |
- (7)其他方面的收获或提升:这个人项目、结对编程以及团队项目工程中,我不仅学习了许多的新知识及新技术,最主要的是明白了一个道理——人多力量大,虽然这这个过程过,我们组员的编程能力有限,但是大家都会积极学习,所以只要相互协作,才能将任务完成的更加出色。
五、你认为目前的课程存在哪些问题,你有什么更好的建议。
我觉得在一学期软件工程的学习中,我收获了很多,首先代老师带我们了解了博客以及GitHub这些新知识;其次代老师教学过程非常认真负责,且上课方式新颖,善于运用多媒体,采用“雨课堂”的教学方法,尽可能调动同学们在课堂上的积极性,最后我必须得感谢一下我们的助教,在整个过程中,助教们认真负责,每一次的实验都会认真且积极地批阅并且给我们一些建议,在最后的项目验收阶段也付出了时间及精力,也是相当辛苦的。但是在整个过程过,我觉得课后作业还是比较多,导致大部分时间都用在了软件工程这门课上,这让考研及考证的同学没有过多的时间复习,希望改进一下。