软工导论知识框架(一)软件工程学概述

本贴为B站大连工业大学老师的网课笔记,教材为张海藩第6版,适用于考研和期末复习。


软工导论知识框架(一)软件工程学概述_第1张图片

 导图比较拥挤,看不清可以单独保存或者放大页面。

一.软件:

软件指的是计算机程序、文档运行程序必须的数据、方法与规则。

方法指的是软件开发所用到的方法,规则是开发软件时所遵循的规则。

程序在文档中说明,在规则中实现。

简化定义:程序+数据+文档

二.软件分类:

A.基于功能划分

1.系统软件:

计算机硬件紧密配合使计算机各个部件与相关软件及数据协调、高效工作的软件。 如操作系统、编译程序等。

2.支撑软件:

协助用户开发软件的工具性软件。如各种集成开发环境IDE

3.应用软件:

(1)商业数据处理软件 :商业数据处理软件 管理信息系统(MIS) 企业资源计划(ERP)

(2)工程与科学计算软件 :CAD/CAM(计算机辅助设计/制造) 仿真模拟、天气预报。

(3)智能产品嵌入软件 :驻留在智能产品内存,控制产品工作的 软件。 数码相机、GPS等

  (4) 人工智能软件:利用非数值算法去解决复杂问题的软件。 专家系统、模式识别软件、人工神经网络软件(具有某个领域专家的知识和经验,代替某个领域的专家来解决一系列问题)

  (5) 个人计算机软件:文字处理系统、电子表格、游戏娱乐软件。

B.基于规模划分

软工导论知识框架(一)软件工程学概述_第2张图片

软工导论知识框架(一)软件工程学概述_第3张图片

 三.软件发展阶段(软件工程本质上是因为软件危机诞生的学科 ):

软工导论知识框架(一)软件工程学概述_第4张图片

1.程序设计阶段:软件生产个体化 ,规模小,编写者和使用者同一个人软件是设计者头脑中隐含过程 ,除程序清单外,无文档材料保存。

2.程序系统阶段:产品软件由专门软件开发组织开发——软件作坊,市面上流传诸多质量不高的软件。软件开发组织,沿用早期个体化软件开发方法。

软件危机:软件维护工作耗费大量资源软件工程 ,软件作坊有时甚至没有精力去开发新软件。

1968年,北大西洋公约组织计算机科学家讨论软件危机,提出软件工程。(之所以称为作坊,在于描述其做工不精)

3.软件工程:软件危机得到缓解,打破软件生产个体化特征,工程化的设计原则、方法和标准新的挑战,出现微处理器和个人计算机、分布式处理系统 局域网、广域网、宽带数字通讯(并没有结束软件危机)

4.第四阶段:软件架构发生变化

(1)集中主机环境 :致命弱点在于无法实现数据共享

(2)客户机/服务器(二层) :应用程序放在客户端,数据存储放在服务器端——弱点在于客户端压力大,承担所有应用程序的工作

(3)客户机/服务器(三层) :数据存储仍然在数据库服务器端,而应用程序分为了人机交互和业务处理两大部分人机交互放在客户端,而业务处理则在应用服务器端。该种软件架构方法和我们常说的"前端——后端——数据库"的理解类似,是一种流行的架构方式。(也和常说的C/S架构一致)

(4)浏览器/服务器:与前者同理,只不过不需要安装客户端软件。(即为通常说的B/S架构模式

(5)新技术 :专家系统、人工智能、神经网络、并行计算 网格技术、高信度计算、云计算

注意:软件工程在软件发展的第二个阶段产生

 四.软件危机:

(1)开发成本和进度估计不准、延迟交付、取消项目

(2)用户对已交付软件不满意,开发人员对用户信息交流不充分,产品不符合用户需求

软工导论知识框架(一)软件工程学概述_第5张图片

(一个典型错误理解:开发语言不符合或者功能无法实现等错误,并不是软件危机,这只是个体所出现的一系列问题,并非整个行业面对的困难

(3)软件产品质量靠不住 软件产品保证技术(审查、复审、测试)未坚持不懈应用软件开发全过程——维护花费大量精力,无法继续开发软件

(4)软件可维护性差,开发时未考虑,很多错误难以改正

(5)软件没有适当文档资料,文档资料应在软件开发过程中产生,保证最新

五.软件工程:

定义:把系统化、规范化、可度量的途径应用于软件开发、运行和维护过程中,研究其实现途径。

1.软件工程技术:软件开发方法学 软件开发过程 软件工具和软件工程环境

2.软件工程管理:软件管理学 软件经济学 软件心理学

六.软件生存周期:

1.定义:软件从产生、发展到成熟、直至衰亡为止

2.泛类划分:软件定义,软件开发 ,软件维护。

3.国标《计算机软件开发规范》:

  • 可行性研究与计划
  • 需求分析
  • 总体设计
  • 详细设计
  • 实现(编码和单元测试)
  • 集成测试
  • 确认测试
  • 使用和维护

4.可行性研究与计划

关键任务: 解决问题是什么?有行得通解决方法?粗略计划

问题定义报告: 问题性质、工程目标、工程规模。

可行性研究报告: 经济、技术、社会(操作)可行性。

项目开发计划: 粗略

(两个文档:问题定义报告,可行性研究报告

5.需求分析(What):

关键任务:目标系统必须作什么?

可行性研究的需求分析是粗略、不准确;需求分析是完整、准确、清晰、具体。 (具体描述用户的全部需求)

需求规格说明书:目标系统需求。(最核心的文档,记载了以后软件需要实现什么样的功能)

6.总体设计(How):

关键任务: 怎样实现目标系统? 根据需求设计方案;分析推荐最佳方案;设计软件结构等。

总体设计说明书: 记录总体设计结果

7.详细设计:

关键任务: 该怎样具体实现系统? 设计每个模块的算法和数据结构。

详细设计说明书: 用适当表达工具表达算法和数据结构。

8.实现(编码和单元测试):

关键任务: 选择语言、工具翻译详细设计结果、测试模块。 (单元测试往往就是模块测试

实现阶段文档: 程序清单、单元测试报告。

9.集成测试:

关键任务: 将经过单元测试模块组装起来进行测试, 通过测试使软件达到预定要求。

单元测试有时测不出来的问题,会在集成测试中暴露,比如某些接口

测试报告: 测试计划、测试方案、测试结果。

10.确认测试(验收测试):

关键任务: 由用户按需求规格说明书规定进行测试。

测试报告: 测试计划、测试方案、测试结果。

11.使用与维护

关键任务: 通过必要维护活动使系统持久满足用户要求。

维护类型:

  • 改正性维护:软件运行过程中发现错误,进行维护。
  • 适应性维护:软件运行软硬件环境变化,进行的维护。
  • 完善性维护:用户要求改进或扩充软件,进行的维护。
  • 预防性维护:为将来的维护作准备。

实际从事软件开发工作时,软件规模、类型、开发环境及技术方法等因素会影响到阶段划分,及各阶段的执行顺序,形成不同生存周期模型,又称过程模型。(各种阶段可以改变)

七.软件过程模型(又称为软件生存周期模型)

1.瀑布模型:使用最早应用最广,在之前软件开发模型处于比较混乱的状态

软工导论知识框架(一)软件工程学概述_第6张图片

  • 阶段具有顺序性和依赖性:前一阶段结束后一阶段开始,前一个阶段输出文档,后一个阶段输入文档。
  • 推迟实现观点:瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。(尽量让编码的过程靠后)
  • 质量保证观点:瀑布模型每阶段坚持两个重要做法: 一是每阶段都必须完成完整、准确的文档。软件开发时人员间通信、运行时期维护的重要依据。 二是每阶段结束前对文档评审。

瀑布模型是非常重视文档书写的一种模型,每个阶段必须有非常准确的文档。

而弱点在于,发现上一个阶段又问题时,无法回溯修改错误——因此,常见的瀑布模型均带有反馈环

优点在于,提高软件质量,降低维护成本,缓解软件危机。

缺点在于,模型缺乏灵活性,无法解决需求不明确问题。用户不经过实践提出完整准确需求不切实际。此外,用户也无法以很快的速度想出全部的需求 

2.快速原型模型:快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品。(雏形法,用尽量少的时间)软工导论知识框架(一)软件工程学概述_第7张图片

优点: 确定需求上优于瀑布模型(通过原型与用户交互)——适用于需求并不明确的软件模型; 提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用; 有的软件原型可以成为最终产品的一部分。

缺点: 快速建立的系统结构加连续修改可能导致产品质量低下;原型系统的内部结构可能不好

 3.增量模型(并行开发) :开发软件时将软件产品作一系列增量构件设计、编码、集成和测试——不同于前两者,而是分批向用户提交产品

软工导论知识框架(一)软件工程学概述_第8张图片

优点: 较短时间向用户提交可完成有用工作产品; 用户有充裕时间学习适应产品;软件结构必须开放,方便向现有产品加入新构件(缺点在于难以实现开放)。 

4.风险更大的增量模型(更大程度上提高并行度):

前述增量模型在实现构件前完成总体的需求分析、规格说明和概要设计,相对来说风险较小。而风险更大增量模型是,确定用户需求后,各构件集并行构建。(需求分析结束后即开始并行)

软工导论知识框架(一)软件工程学概述_第9张图片

虽然大幅提高了软件开发的效率,但是最后的集成难度将增大——仅适合工期非常着急的情况

5.螺旋模型:加入风险分析,常指导大型软件项目

风险:超期、超预算、行业竞争等

笛卡尔坐标四象限表达四方面活动:

制定计划:确定目标、选定方案、设定约束条件。

风险分析:评估方案,识别和消除风险。

实施工程:软件开发

客户评估:评价开发工作,计划下一阶段工作。

沿螺线自内向外每旋转一圈开发出更完善新版本。

 

软工导论知识框架(一)软件工程学概述_第10张图片

(从内到外,逐渐扩大螺线圈)

直到无法通过风险分析这一过程,才把现有的软件产品发布出去。

优点: 大型软件开发项目有较好的风险控制

缺点: 需要风险评估的经验——否则后果非常严重;契约开发通常需要事先指定过程模型和发布产品;普及不如前述模型,周期很长

6.喷泉模型: 面向对象生命周期模型,体现迭代和无缝特性。

迭代: 求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统。

无缝: 分析、设计、编码各阶段间不存在明显边界。 (不像结构化的方法~)

软工导论知识框架(一)软件工程学概述_第11张图片

圆环代表无边界,向下的箭头代表求精。

优点: 无缝,可同步开发,提高开发效率,节省开发时间, 适应面向对象软件

缺点: 可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大。

 7.Rational统一过程: 由Rational软件公司推出的一种软件过程,该过程强调以迭代和渐增方式开发软件。 Rational统一过程是一个二维生命周期模型。(比较热门)

软工导论知识框架(一)软件工程学概述_第12张图片

四个阶段周而复始,从而构建出一个较为完善的软件系统来~(每个阶段逐渐细化

Rational统一过程有9个核心工作流,包括6个核心过程工作流(前6个)3个核心支持工作流(后3个)

Rational统一过程有4个连续阶段,每个阶段有明确目标,通过一次或多次迭代完成。

Rational统一过程优点: 不断的版本发布成为一种团队日常工作的真正驱动力; 将发现问题、制定方案和解决过程集成到下一次迭代; 迭代开发,降低风险; 更好地安排产品开发的辅助过程。(该公司推出了UML过程语言)

 8.微软过程——生产实践中诞生:

软工导论知识框架(一)软件工程学概述_第13张图片

微软过程的特点就是在每个阶段设置各自的里程碑

类似于螺旋模型~:

  • 规划阶段 开展市场调查研究,结合公司战略形成产品的远景目标。
  • 设计阶段 根据产品远景目标,完成软件功能规格说明和总体设计, 确定产品开发的主要进度。
  • 开发阶段 完成产品中所有构件的开发工作。
  • 稳定阶段 实行全面的内部和外部测试,最终形成可发布的RTM版本
  • 发布阶段 确认产品质量符合发布标准后,发布产品及相关消息

 软工导论知识框架(一)软件工程学概述_第14张图片

递进式的开发策略:解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期,好处在于可以及时解决问题。

占领市场方面,该过程有助于先开发出小产品,再进一步推进,不断完善功能。

 

你可能感兴趣的:(软件工程导论总结,软件工程)