实验十四 团队项目评审&课程学习总结
项目 | 内容 |
这个作业属于哪个课程 | 任课教师博客主页链接 |
这个作业的要求在哪里 | 作业链接地址 |
作业学习目标 |
(1)掌握软件项目评审会流程 (2)反思总结课程学习内容 |
一.对实验一问题回答
(1)在构建之法P63页提到的软件概要设计和软件详细设计有什么区别?
答:概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
概要设计阶段通常得到软件结构图
详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等。
(2)书上P96页提到一个完整软件开发流程需要哪些步骤?
答:软件开发一般分为五个阶段:
1.问题的定义及规划
此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析
在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计
此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。
4.程序编码
此阶段是将软件设计的结果转化为计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范。以保证程序的可读性、易维护性。提高程序的运行效率。
5.软件测试
在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试方法主要有白盒测试和黑盒测试。
(3)书上P223页提到软件的设计与实现包括哪几个步骤?
答:第一步,一个对软件的全局观点。系统通过逐步求精使得设计陈述逐渐接近源代码。这里有两个基本步骤,第一步是初步设计(Preliminary design) ,关注于如何将需求转换成数据和软件框架。
第二步是 详细设计(Detail design),关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计这一清晰的行为来结合起来。界面设计(Interface design) 建立程序布局和人机交互机制。贯穿设计过程的质量由一系列的正式技术评定(formal technical reviews)或设计排演(design walkthroughs)来评价。
二.知识点总结
-
- 可行性分析:可行性分析的过程分为三个步骤:首先需要进一步澄清问题,然后导出系统的逻辑模型,最后得出系统实现方案。可行性主要分为操作可行性、经济可行性、技术可行性及法律可行性,采用NABCD方法对系统进行初步分析,为将逻辑模型转化为物理模型,我们还学习了数据流图。
- 需求分析:需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答“系统必须最什么”这个问题。在需求分析阶段结束之前需要编写需求规格说明书,以书面形式准确的描述软件需求,在需求分析过程中,应用mockplus建立了软件原型。
- 软件设计:软件设计主要是软件概要设计和详细设计。在概要设计时主要是根据需求分析阶段的成果将系统进行功能结构的划分。首先需要进行系统设计,从数据流图出发设想完成系统功能的若干合理的物理方案,然后和用户选定一个最佳方案,然后进行软件结构的设计,确定软件有哪些模块组成以及这些模块的之间的动态调用关系。可以用层析方框图来描述习题的总体结构,在面向对象的设计中也可以采用类图,用例图,活动图,顺序图等来描述。在软件详细设计阶段主要是确定怎么具体地实现用户需要的软件。结合具体的开发模式细化每个模块的算法流程,数据结构,和接口设计。在面向对象设计中,主要是完善类图,精化类的属性和操作,详细定义类中服务参数和具体实现逻辑,依据软件开发环境调整类的层次关系和关联关系,定义软件数据库表结构等
- 实现:主要包括编码何测试部分。编码主要是把软件设计的结果翻译成用某种高级语言书写的程序,因此,程序的质量主要取决设计的质量,但是高级语言对选择,特别是书写程序的风格,也对程序的质量有很大的影响。测试主要是发现程序中的错误,主要测试方法有白盒测试和黑盒测试。
- 验收:项目验收主要是我们对自己项目成果的一个交付,在验收时开发方也要有好的沟通能力,尽量向客户展示自己的成果,让验收方满意。
三.心得体会
- 转眼间一学期就结束了,通过这学期的学习,我受益匪浅。记得刚上这门课的时候,老师布置了第一个任务就是申请自己的个人博客,提出自己通过通读构建之法遇到的问题,当时我们花费了很多时间在编辑博客上面,再到后来每次的博客撰写的流畅,其实这也是一种收获。再到后来的项目需求分析的编写,利用mockplus制作项目原型设计、项目的编码及测试,每一次的作业我都参与了其中,所以多多少少都有一些收获。通过一学期的学习,我最大的收获是亲身经历了一个完整的项目的诞生的过程,通过一系列的说明书的设计,我大概了解了编写需求分析说明书、系统详细设计说明书、编码规范说明书的规范等等说明书的规范。学习了一些工具的使用,比如利用mockplus进行项目的原型设计,采用轻量级的Visio建模工具进行项目的建模。
- 在我们进行结对编程和团队项目的过程中,我最大的收获是明白了拿到一个项目时需要先对它进行分解,再对每个小模块进行详细划分和设计,这样做的好处就是目标明确、思路清晰、一个小模块出错不会影响其他模块,方便修改。再者,团队合理分工也很重要,这会使得效率提升很多,但在做的过程中也需要小组成员的共同协作,共同探讨与研究。如果每次的任务大家都去参与,每个人去承担一点任务,这样作业做起来也容易很多,还有一个问题就是在项目设计的过程中小组成员要团结协作,遇到意见不统一时大家要及时沟通,努力去听取别人中肯的意见,不能一意孤行。
四.总结
-
- 1.统计在软件工程实践中,你完成了多少行的代码。
大约3500多行代码。 -
2.你在软件工程实践的各次作业分别花了多少时间?
实验 用时(h) 实验一 软件工程准备 5 实验二 软件工程个人项目 15 实验三 作业互评与改进 7 实验四 软件工程结对项目 16 实验五 软件研发团队组建 7 实验六 团队项目选题 5 实验七 团队项目原型设计与开发 15 实验八 基于原型的团队项目需求调研与分析 15 实验九 团队项目需求改进与系统设计 15 实验十 团队项目系统改进与详细设计 15 实验十一 团队项目设计完善与编码 20 实验十二 软件测试与Alpha冲刺 20 实验十三 Beta冲刺与团队项目验收 20 - 3.哪一次作业让你印象最深刻?为什么?
我印象最深刻的一次作业是实验十 团队作业6:团队项目系统设计改进与详细设计,我在编写代码的时候,遇到了很多困难,比如添加酒店缴费功能时需要弹出一个窗口填写相关信息,我在编写代码的时候,窗口总是无法跳出,不显示。之后,通过询问学姐,解决了这个问题。还有之后的数据库链接,由于电脑的环境配置不合适,借用了同学的电脑进行调试。这次作业,让我深深的意识到请求别人帮助的重要性。
- 1.统计在软件工程实践中,你完成了多少行的代码。
-
- 4.累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
本学期总共在软件工程实践上用时150h,平均每周用时9h。 - 5.你学习和掌握的新语言、新平台。
语言:Java Web、Java
平台:博客园、GitHub、中国大学MOOC - 6.其他方面的收获或提升
通过本学期的学习我在编程能力、文档撰写能力、任务规划能力、团队协作的能力,自我学习能力等都有了进一步的提高,更多的是学会了在团队合作中和其他成员之间的交流和沟通以及遇到问题时自我解决的能力。 -
7.填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法
- 4.累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
软件开发工具、项目管理工具 | 软件开发方法 | 软件建模方法 |
---|---|---|
Visio,墨刀、mockplus,GitHub,leangoo | 原型方法、面向对象方法 | UML建模、结构化建模 |
五.课程意见
在时间进度安排方面很符合课程的进度,除了详细设计那一阶段时间有些仓促,毕竟大家以前接触的项目比较少,要是真的对起手来会有点吃力,希望可以增加一周时间。同时助教工作态度很好,会很细心的发现我们的错误,并提示我们及时改正。