高级软件工程学习总结

awefweq 2022-07-10 22:58:09

学习收获与感想

非常荣幸能够选上孟宁老师的高级软件工程,老师从工欲善其事必先利其器,工程化编程实战,从需求分析到软件设计,软件科学基础概论,软件危机和软件过程,这五个部分详细的讲解了软件工程这门课程。通过学习,我理解了什么是软件工程,以及软件工程的思想在软件开发的过程中起到的关键作用,受益匪浅。下面我从软件开发过程中的模型谈谈我对软件工程的理解。

软件开发过程中的重要模型

1 瀑布模型

1.1 定义

瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。

1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是被广泛采用的软件开发模型。

 

1.2 核心思想

瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

 

1.3 模型优缺点

瀑布模型有以下优点

(1)为项目提供了按阶段划分的检查点。

(2)当前一阶段完成后,您只需要去关注后续阶段。

(3)可在迭代模型中应用瀑布模型。

增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试

(4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

瀑布模型有以下缺点

(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

(3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

(4)瀑布模型的突出缺点是不适应用户需求的变化。

 

2 V模型

2.1 定义

RAD(Rapid Application Development,快速应用开发)模型是软件开发过程中的一个重要模型,由于其模型构图形似字母V,所以又称软件测试的V模型。  V模型是一种软件生存期模型,由Paul Rook在1980年率先提出的,在1990年出现在英国国家计算中心的出版物中,旨在提高软件开发的效率和有效性,是我们熟知的瀑布模型的一种改进,瀑布模型(Waterfall Model)将软件生命周期划分为计划、分析、设计、构建、测试和维护六个阶段,且规定了它们自上而下、相互衔接的固定次序,由于早期的错误可能要等到开发后期的测试阶段才能发现,所以带来严重的后果。 v-model就是在这点改进了瀑布模型,在软件开发的生存期,开发活动和测试活动几乎同时的开始,这两个并行的动态的过程就会极大的较少bug和error出现的几率。
 

V模型的流程与步骤如图所示:

 

2.2 阶段步骤

V模型大体可以划分为以下几个不同的阶段步骤:客户需求分析、软件需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。

客户需求分析

即首先明确客户对于产品的需求,软件所具备的功能。这一点上比较关键的是分析师和客户沟通时的理解能力与交互性。要求分析师能准确的把客户所需要达到的功能,实现方式,等表述出来,给出分析结果,写出需求规格说明书。

软件需求分析

主要根据客户需求分析出软件方面的需求,即需要软件需要的功能,软件需要适应的硬件功能。该部分关键的是做到需求的剥离,以保证软件功能需求覆盖客户需求且不涵盖硬件或其他方面的需求,以方便软件工程师的进一步开发。

概要设计

主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务。

详细设计

对概要设计中表述的各模块进行深入分析,对各模块组合进行分析等,这一阶段要求达到伪代码级别,已经把程序的具体实现的功能,现象等描述出来。其中需要包含数据库设计说明。

软件编码

按照详细设计好的模块功能表,编程人员编写出实际的代码。

单元测试

按照设定好的最小测试单元进行按单元测试,主要是测试程序代码,为的是确保各单元模块被正确的编译,单元的具体划分按不同的单位与不同的软件有不同,比如有具体到模块的测试,也有具体到类,函数的测试等。

集成测试

经过了单元测试后,将各单元组合成完整的体系,主要测试各模块间组合后的功能实现情况,以及模块接口连接的成功与否,数据传递的正确性等,其主要目的是检查软件单位之间的接口是否正确。根据集成测试计划,一边将模块或其他软件单位组合成系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。

系统测试

经过了单元测试和集成测试以后,我们要把软件系统搭建起来,按照软件规格说明书中所要求,测试软件其性能功能等是否和用户需求相符合,在系统中运行是否存在漏洞等。

验收测试

主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到预期的效果。

2.3 缺陷及解决

V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。

解决的思路是,当一个软件开发的时候,研发人员和测试人员需要同时工作,测试在软件做需求分析的同时就会有测试用例的跟踪,这样,可以尽快找出程序错误和需求偏离,从而更高效的提高程序质量,最大可能的减少成本,同时满足用户的实际软件需求。

2.4 适用范围

V模式是一种传统软件开发模型,一般适用于一些传统信息系统应用的开发,而一些高性能高风险的系统、互联网软件,或一个系统难以被具体模块化的时候,就比较难做成V模式所需的各种构件,需要更强调迭代的开发模型或者敏捷开发模型。

 

学习软件开发过程模型之后我对软件工程的理解

首先,软件工程是一项人们为了缓解软件危机的技术,在软件开发界,流传着“没有银弹”的说法,即软件概念结构(conceptual structure)的复杂性,无法达成软件概念的完整性和一致性,无法从根本上解决软件危机带来的困境。但是在软件工程专家们的不断探索中,各种软件开发过程模型不断被提出来,这些不断改进,不断适应时代的开发过程模型可以说虽然无法从根本上解决软件危机带来的困境, 但至少对缓解软件危机起到了重要作用。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。正确的选择合适的软件开发过程模型是非常重要的,优秀的软件开发过程模型很好的体现了软件工程的思想。

 

参考资料

代码中的软件工程

作者:475

...全文
143 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农孟宁 2022-07-12
  • 打赏
  • 举报
回复

这个总结和我们课程内容相关性有点弱啊

SoftwareTeacher 2022-07-11
  • 打赏
  • 举报
回复 1

1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,


Royce 在最初的提议中,建议软件团队把流程走两遍,这样可以快速把反馈传递回顶部的过程。 不过后来大家似乎都忘记了这个建议。

567

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧