《软件工程与实践》 |(一)软件工程基础概述 知识梳理

 

系列索引: 《软件工程与实践》第三版 软件工程课程知识梳理


 

本章目录:

系列索引: 《软件工程与实践》第三版 软件工程课程知识梳理

本章目录:

本章重难点: 

 1.1  软件工程的发展

1.1.1 软件危机概述

1.1.2  软件工程的发展过程

  1.2 软件及软件工程概述

1.2.1 软件的概念特点和分类

1.2.2  软件工程的概念、特点和目标

1.2.3  软件工程学及其内容和方法

1.2.4  软件过程及实际开发过程

1.2.5  软件工程基本原理及原则

1.3 软件生存周期及任务

1.3.1  软件生存周期的有关概念

1.3.2  软件生存周期的阶段划分

1.3.3 软件生存周期各阶段的任务

1.4 常用软件开发模型

1.4.1 瀑布模型概述

1.4.2 快速原型模型概述

1.4.3 增量模型概述

1.4.4 螺旋模型概述

1.4.5 喷泉模型概述

1.4.6 基于面向对象的模型

1.4.7 软件开发模型的选定

  1.5 本章小结

 


 

 

本章重难点: 

● 了解软件工程的发展和软件危机  

● 掌握软件工程的概念、内容和原理  

● 熟悉软件生存周期及阶段任务  

● 掌握常用的软件开发模型  

● 掌握软件开发准备及Visio2017应用实验

 

 

 1.1  软件工程的发展

1.1.1 软件危机概述

软件危机(Software crisis)是指20世纪60年代计算机软件在研发、运行、维护和管理过程中,出现的一系列严重问题的现象。

软件危机直接导致软件工程的产生。

=

出现软件危机最主要的两个因素就是 开发成本难控制和开发计划难落实

 

 

1.1.2  软件工程的发展过程

软件技术的发展 经历了程序设计阶段、程序系统阶段、软件工程阶段和创新完善软件工程4个阶段

 软件工程发展  经历4个重要阶段:

  1.传统软件工程       传统软件工程是指软件工程产生的初期,也称为第一代软件工程。

  2.对象工程        对象工程也称为第二代软件工程。20世纪80年代中到90年代,以Smalltalk为代表的面向对象的程序设计语言相继推出,使面向对象的方法与技术得到快速发展。

  3.过程工程        过程工程也称为第三代软件工程。随着网络等高新技术的出现及信息技术的广泛应用,软件规模和复杂度不断增大,开发时间相应持续增长,开发人员的增加,致使软件工程开发和管理的难度不断增强。

  4.构件工程         构件工程也称为第四代软件工程.90年代起,基于构件(Component)的开发方法取得重要进展,软件系统的开发可利用已有的可复用构件组装完成,而无需从头开始构建,可提高效率和质量、降低成本。

 

计算机辅助软件工程简称CASE(Computer Aided Software ngineering)将工具和代码生成器进行集成,为很多软件系统提供了可靠的解决方案;

 

  1.2 软件及软件工程概述

1.2.1 软件的概念特点和分类

软件=程序 + 数据 + 文档 + 服务

数据则是使程序正常处理信息的数据结构及信息表示;文档(Document)是与程序开发、维护和使用有关的技术资料。服务主要指对各种软件用户的服务,包括提供软件产品使用说明书、推销服务及售后技术支持等

软件分为系统软件、支撑软件(开发环境)和应用软件等。其中应用软件常称为信息系统主要是指具体的应用系统。

 

软件的主要特点

(1) 智能性。软件是人类智能劳动的产物、代替和延伸。

(2) 抽象性。软件属于逻辑实体,无形性和智能性致使软件难以认识和理解。

(3) 人工方式。软件的开发、维护及设置管理等方面目前尚未完全脱离手工方式。

(4) 复杂性和系统性。逻辑处理和数据结构及构成等相对复杂

(5) 泛域性。软件应用很广泛,在信息化中可服务于各种领域、行业和层面。

(6) 复制性。软件成本相对比较昂贵,软件是人类创造性的可复制的特殊产品。

(7) 非损及更新性。软件不存在物理性磨损和老化问题,但可以退化需要更新升级。

 

软件的分类

(1) 按照软件功能划分-系统软件、支撑软件、应用软件

(2) 按照软件规模划分 (微型、小型、中型、大型、超大型5种)

(3)按照软件工作方式划分-实时处理软件、分时软件、交互式软件、批处理软件

(4)按照软件服务对象的范围划分-项目软件、产品软件。

(5)按照软件运行的终端设备划分。分为服务器软件、计算机软件、手机软件、机器人软件和其他嵌入设备(电子化设备)软件。

 

1.2.2  软件工程的概念、特点和目标

软件工程(Software Engineering)是软件开发、运行、维护和引退的系统方法

软件工程 = 工程原理 + 技术方法 + 管理技术

 

软件工程学科的主要特点实践性和发展性,其问题来源并应用于实践最终目的高效高质量低成本 地研发软件产品

                         具体特点多学科  多目标  多阶段

                         基本特点: 系统性,工程性,综合性,学科交叉性

 软件工程的目的是  在规定的时间和开发经费内,开发出满足用户需求的、高质量的软件产品

               其目标是  实现软件研发与维护的优质高效和自动化

 

 

1.2.3  软件工程学及其内容和方法

主要内容包括  软件开发技术软件工程管理两个方面

 软件工程方法学是研发、管理与维护软件的系统方法,具有方法、工具和过程三个要素,也称软件工程三要素

 

软件工程方法

 常用软件工程方法主要分为7种类型

(1)面向功能方法。也称为结构化方法,主要采用结构化技术,包括结构化分析、结构化设计和结构化编程实现,按照软件的开发过程、结构和顺序完成开发任务。

(2)面向数据方法。从目标系统输入、输出数据的结构,导出程序框架结构,再补充其他细节,得到完整的程序结构图。此方法也可与其他方法结合,用于模块的详细设计和数据处理等。对输入输出数据结构明确的中小型系统很有效,如商用文件表格处理等。

(3)面向对象方法(Object-Oriented Method,OOM)将对象作为数据和对数据的操作相结合的软件构件,用对象分解取代了传统方法的功能分解。基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体(事物)进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。

OOM以对象作为最基本的元素,将所有对象都划分为类,是分析和解决问题的核心。OOM要素是对象、类、继承以及消息通信。                概括为:              面向对象 = 对象 + 类 + 继承 + 消息通信

OOM由 OOA(面向对象的分析)、OOD(面向对象设计)和OOP(面向对象的程序设计 / 实现)三部分组成。

(4)面向问题方法(PAM).也称问题分析法。其基本思想是:以输入输出数据结构指导系统的问题分解,经过系统分析逐步综合。

 (5)面向方面的开发方法.(Aspect-Oriented Programming, AOP)是面向对象系统的扩展,在现有的AOP实现技术中,可通过创建Aspect库或者专用Aspect语言实现面向方面的编程。

(6)基于构件的开发方法.基于构件的开发(Component-Based Development, CBD)或基于构件的软件工程(Component-Based Software Engineering, CBSE)方法是软件开发新范型
                                                                                                                 软件复用方式 =分析 + 结构 + 设计 + 程序 

(7)可视化方法

总结:  七大方法分别为: 功能,数据,对象,问题,方面,构件,可视化

 

软件研发工具

软件工具通常由工具(主体)、工具接口和工具用户接口三部分构成。

软件工具软件开发方法密切相关,是软件开发的两大支柱

 

软件开发环境

 软件开发环境(Software Development Environment)也称为软件工程环境。“软件开发环境是相关的一组软件工具集合,支持一定的软件开发方法或按照一定的软件开发模型组织而成”。是包括方法、工具和管理等多种技术的综合系统。其设计目标是简化软件开发过程,提高软件开发质量和效率。

 

软件工程管理概述

 软件工程管理的主要内容包括: (1)组织人员。 (2)计划管理。 (3)费用管理。 (4)软件配置管理。

 

1.2.4  软件过程及实际开发过程

软件过程(software process)ISO9000定义为:“输入转化为输出的一组彼此相关的资源和活动”。

软件实际开发过程是最重要的软件过程,主要包括  项目启动、需求调研分析、设计(概要设计及详细设计)、编码(实现)、测试、部署、测试和结束等过程。

 

 

1.2.5  软件工程基本原理及原则

软件工程的基本原理

 

软件工程的基本原则

   (1) 选取适宜的开发模型。    (2) 采用合适的设计方法。    (3) 提供高质量的工程支撑。    (4) 重视软件工程的管理。  

 

 

1.3 软件生存周期及任务

1.3.1  软件生存周期的有关概念

软件生存周期(Software life cycle)是从开始研发软件软件停止使用的整个过程。也称为软件生命周期或软件生存期

可以将一个软件的生存周期划分为市场调研、立项、需求分析、规划、概要设计、详细设计、编测程序、单元测试、集成测试、运行、维护这几个过程,前一过程的终点就是后一过程的起点。

完成阶段性工作的标志称为里程碑(Milestone),某些重要的里程碑又称为基线(Baseline)。

 

1.3.2  软件生存周期的阶段划分

软件生存周期 阶段划分的原则主要包括:      

(1)各阶段的任务相对独立。便于分阶段计划、逐步完成。      

(2)同一阶段的工作任务性质尽量相同。有利于软件开发和组织管理,明确开发人员的分工与职责,以便协同工作、保证质量。

 

1.3.3 软件生存周期各阶段的任务

软件生存周期组成包括软件策划、软件开发和运行维护三个时期。

软件生存周期分为7个阶段

 

  1.4 常用软件开发模型

1.4.1 瀑布模型概述

 瀑布模型开发适用于 软件需求明确,开发技术成熟,工程管理较严格 的场合下使用

 瀑布模型(Waterfall model)将生存期的 计划时期、开发时期和运行时期,又细分为若干个阶段:

计划时期 可分为问题定义、可行性研究、需求分析3个阶段

开发时期 分为概要设计、详细设计、软件实现、软件测试等阶段

运行时期 则需要不断进行运行维护,需要不断修改错误、排除故障,或以用户需求、运行环境改变进行改更调整。

图中的实线箭头表示开发流程,每个阶段顺序进行,有时会返工;虚线箭头表示维护工作的流程,根据不同情况返回到不同的阶段进行维护。

 

瀑布模型开发软件特点

(1)开发过程的顺序性。        

瀑布模型开发适用于 软件需求明确,开发技术成熟,工程管理较严格 的场合下使用

(2)统筹兼顾不过早编程。        

(3)严格要求保证质量。

瀑布模型缺陷 是将 充满回溯且相互重叠的软件开发 过程硬性地分为多个阶段,随着开发软件规模的增加, 造成的危害大增。为了描述软件开发过程中可能回溯 对瀑布模型进行了改进,开发各阶段可能循环重复。 

 

1.4.2 快速原型模型概述

快速原型模型最适合于可以先尽快构建成一个原型的应用系统

 

1.4.3 增量模型概述

适用于软件需求不明确、设计方案有一定风险的软件项目

利用增量模型开发的软件被作为一系列的增量构件进行设计、实现、集成和测试,每个构件具有一定功能,并最终能组合成一个具有完整功能软件的模块

 同瀑布模型之间的本质区别为

瀑布模型属于整体开发模型,规定在开始下一阶段工作之前,必须完成前一阶段的所有细节

而增量模型属于非整体开发模型可推迟某些阶段或所有阶段中细节,较早地研发出软件。

 

增量模型的缺陷

 

1.4.4 螺旋模型概述

 螺旋模型将 瀑布模型和快速原型模型 结合,强调了其他模型所忽视的风险分析,适合于大型复杂系统

开发过程划分为 制定计划、风险分析、实施工程和客户评估四类活动。

  螺旋模型沿着螺线进行多次迭代,其迭代过程如图所示。

 

螺旋模型的缺陷

不支持软件重用和多项开发活动集成

 

1.4.5 喷泉模型概述

适合于利用面向对象技术的软件开发项目

克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。可使开发过程具有迭代性和无间隙性

 

喷泉模型是以面向对象的开发方法为基础,以用户需求为源泉,具有以下7个特点:

 

1.4.6 基于面向对象的模型

 面向对象技术强调了类的创建与封装构件重用就是其重要技术之一。基于面向对象的模型,综合了面向对象和原型方法及重用技术

 

1.4.7 软件开发模型的选定

开发模型与开发方法及工具的关系

  应用软件的开发过程主要包括:  生存周期的系统规划、需求分析、软件设计、实现四个阶段。

  软件的开发方法多种多样,结构化方法面向对象的方法是常用的最基本的开发方法

 软件的开发模型(生存周期过程模型)与开发方法、开发工具之间的 关系如图:

 

软件开发模型选取

 最常用的是瀑布模型和原型模型,在具体选择模型时需要综合考虑以下6点:

 

软件开发模型的修定

开发模型的选定并非直接照抄照搬、一成不变,有时还需要根据实际开发目标要求进行裁剪、修改、确定和综合运用。

 

 

  1.5 本章小结

 

 

  • 16
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

12 26 25

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值