第三章 软件工程基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.
程序系统阶段,约为60至70年代
出现“软件作坊”、产品软件;“个体化”开发方法。
3.
软件工程阶段,约为70年代以后
软件开发成为一门新兴的工程学科——软件工程。
2、软件危机与软件工程
所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到
的一系列严重问题。软件危机可以归结为成本、质量、生产率等问 题。 软件工程源自软件危机。 软件工程是应用于计算机软件的定义、开发和维护的一整套方 法、工具、文档、实践标准和工序。 即将软件产品看作是一个工程产品来处理。中心思想:把软件 当作一种工业产品,要求“采用工程化的原理和方法对软件进行计 划、开发和维护”。这样做的目的,不仅是为了实现按预期的进度 和经费完成软件生产计划,也是为了提高软件的生产率和可靠性。
软件工程 — 一种层次化技术
工具 方法 过程
软件工程三个要素:方法、工具、过程
软件工程过程包含4种基本活动: (1)P(Plan)——软件规格说明。规定软件的 功能及其运行时的限制。 (2)D(Do)——软件开发。产生满足规格说明的 软件。 (3)C(Check)——软件确认。确认软件能够满 足用户提出的要求。 (4)A(Action)——软件演进。为满足客户的 变更要求,软件必须在使用的过程中演进。

数据词典精确地、严格地定义了每一个与系统相关的数据元素,并 以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、 输出、存储成分和中间计算有共同的理解。

数据字典的作用是对数据流图中出现的被命名的图形元素的 确切解释
2· 词条描述
在数据词典的每一个词条中应包含以下信息: ① 名称:数据对象或控制项、数据存储或外部实体的名字。 ② 别名或编号。 ③ 分类:数据对象?加工?数据流?数据文件?外部实体?控制项 (事件∕状态)? ④ 描述:描述内容或数据结构等。 ⑤ 何处使用:使用该词条(数据或控制项)的加工。
4、软件工程的目标和与原则
(1)软件工程目标:在给定成本、进度的前提下,开发出 具有有效性、可靠性、可理解性、可维护性、可重用性、 可适应性、可移植性、可追踪性和可互操作性且满足用 户需求的产品。 (2)软件工程需要达到的基本目标应是:付出较低的开发 成本;达到要求的软件功能;取得较好的软件性能;开 发的软件易于移植;需要较低的维护费用;能按时完成 开发,及时交付使用。
2. 软件设计
1)总体设计:主要任务是建立 软件的总体结构,画出有模块组 成的软件结构图或层次图。又称 结构设计。
据 数 加 工 过程设计
对 规 实 数 体 象 据 格 关 描 流 说 系 数据词典 述 图 明 图 状态转换图 控 制 规 格说 明
接口设计 体系结构设计 数据设计
2)详细设计:针对单个模块的 设计,目的是确定模块内部的过 程结构。要求为每一个模块提供 一个模块过程性描述。详细说明 实现该功能的算法和数据结构, 又称算法设计。

特点:


需求分析方法 (1)结构化需求分析方法(重点) (A) 面向数据流的结构化分析方法 B) 面向数据结构的Jackson方法 C) 面向数据结构的结构化数据系统开发方法 (2)面向对象的分析方法。
需求分析一般分为需求获取、需求分析、编写需求规格 说明书和需求评审四个步骤进行。
结构化方法包括配套的结构化分析方法、结构 化设计方法和结构化编程方法。核心和基础是结构 化程序设计理论。


结构化设计方法是基于模块化、自顶向下细化、结构化程 序设计等程序设计技术基础上发展起来的。
2、总体设计(概要设计)和详细设计
(1)总体设计(概要设计) 软件概要设计的基本任务是: 1)设计软件系统结构; 2)数据结构及数据库设计; 3)编写概要设计文档; 4)概要设计文档评审。 常用的软件结构设计工具是结构图,也称程序结 构图。 经常使用的结构图有四种模块类型:传入模块、 传出模块、变换模块和协调模块。

这是在软件项目计划阶段应该做的事情,包括四个方面的研究:

经济可行性 :进行成本∕效益分析。从经济角度判断系统开发是否 “合算”。

技术可行性 :进行技术风险评价。从开发者的技术实力、以往工作
基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条 件下成功的可能性。 法律可行性 :确定系统开发可能导致的任何侵权、妨碍和责任。 方案的选择 :评价系统或产品开发的几个可能的候选方案。最后给 出结论意见。

3)软件计划 i 任务 分析和估算 分析 功能的界限(应包括哪些,不含哪些功能) 估算 开发的资源、费用、进度等进行定量估计 ii 资源 人力资源:技术人员:分析设计人员、编码测试人员、管理人员 软件资源:支持软件、应用软件 硬件资源:开发系统的硬件设备、新系统的硬件设备 描述资源(具体规格),资源的起始时间和终止时间 iii 进度安排 限时进度安排——用户 自定义进度安排——公司 4)需求分析: 弄清用户对软件系统的全部需求并用需求说明书的形式准确地表达 出来。当采用结构化分析方法时,需求说明通常由数据流图、数据字典 和加工说明等一整套文档组成。
3、软件生命周期
软件生命周期:软件产品从提出、实现、 使用维护到停止使用退役的过程。 软件生命周期三个阶段: 软件定义 软件开发 运行维护
可行性研究 初步项目计划 需求分析 定义 阶段
软件生命周期的主要活动阶段 如下图:
概要设计
详细设计 实现 测试 使用 维护 退役 维护 阶段 开发 阶段
内容
软件工程环境 软件管理
软件工程管理
软件工程经济学
以经济学的观点研究开发过程中的经 济效益。成本估算、效益分析的方 法和技术
6、软件开发工具与软件开发环境
(1)软件开发工具 软件开发工具的完善和发展将促使软件开发方法的进步和 完善,促进软件开发的高速度和高质量。软件开发工具 的发展是从单项工具的开发逐步向集成工具发展的,软 件开发工具为软件工程方法提供了自动的或半自动的软 件支撑环境。 (2)软件开发环境 软件开发环境(或称软件工程环境)是全面支持软件开发 全过程的软件工具的集合。 计算机辅助软件工程(CASE,Computer Aided Software Engineering)将各种软件工具、开发机器和 一个存放开发过程信息的中心数据库组合起来,形成软 件工程环境。它将极大降低软件开发的技术难度并保证 软件开发的质量。
需求分析的任务

任务:需求分析的任务就是导出目标系统的逻辑模型,解决“做 什么”的问题。


软件需求分析的目标是深入描述软件的功能和性能,确定软件设计 的约束和软件同其它系统元素的接口细节,定义软件的其它有效性 需求。 需求分析阶段研究的对象是软件项目的用户要求。一方面,必须全 面理解用户的各项要求,但又不能全盘接受所有的要求,另一方面, 要准确地表达被接受的用户要求。只有经过确切描述的软件需求才 能成为软件设计的基础。 准确性和一致性。是连接计划时期和开发时期的桥梁,也是软件设 计的依据。 清晰性和没有二义性。 直观、易读和易于修改。
加工规格 说明
数据 词典
数 据 流图
控制规格 说明
结构化分析方法SA

核心是数据词典,它描述了所有的在目标系统中使用 的和生成的数据对象。 围绕着这个核心的有三种图:



实体—关系图(ERD)描述数据对象及数据对象之间的关系; 数据流图(DFD)描述数据在系统中如何被传送或变换,以及描 述如何对数据流进行变换的功能(子功能); 状态—迁移图(STD)描述系统对外部事件如何响应,如何动作。
需求分析主要解决“做什么”的问题,而软件 设计主要解决“怎么做”的问题。 软件设计主要内容包括: 软件结构设计、数据设计、接口设计、过程设 计。(按技术观点划分)
软件设计分两步完成,即概要设计和详细设 计。(按工程管理角度划分)
1、软件设计的基础 软件设计的基本原理包括:抽象、模块化、信息 隐蔽和模块独立化。 模块的耦合性和内聚性是衡量软件的模块独立性 的两个定性指标。 内聚性:是一个模块内部各个元素间彼此结合的 紧密程度的度量。
耦合性:是模块间互相连接的紧密程度的度量。 一个设计良好的软件系统应具有高内聚、低耦合 的特征。
结构化设计方法

从系统设计的角度出发,软件设计方法可以分为三大类。

第一类是根据系统的数据流进行设计,称为面向数据流的设计或 者过程驱动的设计,以结构化设计方法为代表。

第二类是根据系统的数据结构进行设计,称为面向数据结构的设 计或者数据驱动的设计,以LCP(程序逻辑构造)方法、 Jackson系统开发方法和数据结构化系统开发(DSSD)方法为代 表。 第三类是根据数据、类和对象进行设计即面向对象的设计。
3· 内容描述 在数据词典的编制中,分析员最常用的描述内容或数据结构的符 号如表2.1所示。

4· 加工:




加工规格说明用来说明DFD中的数据加工的加工细节。 加工规格说明描述了数据加工的输入,实现加工的算法以及 产生的输出。 加工规格说明指明了加工(功能)的约束和限制,与加工相 关的性能要求,以及影响加工的实现方式的设计约束。 注意,写加工规格说明的主要目的是要表达“做什么”,而 不是“怎样做”。 应描述数据加工实现加工的策略而不是实现加工的细节。

ERD用于数据建模,DFD用于功能建模,STD用于行 为建模。
一)数据流图(DFD):软件系统逻辑模型的一种图形 表示
1.特点:直观 2.数据流图的基本符号
二)数据字典
1· 定义:

分析模型中包含了对数据对象、功能和控制的表示。 在每一种表示中,数据对象和控制项都扮演一定的角色。为表示每
个数据对象和控制项的特性,建立了数据词典。
结构化分析方法(SA):
结构化分析方法是结构化程序设计理论在软件需求
分析阶段的应用。
结构化分析方法的实质:着眼于数据流,自顶向 下,逐层分解,建立系统的处理流程,以数据流图和 数据字典为主要工具,建立系统的逻辑模型。
结构化分析方法SA
结构化分析的常用工具:

数据对象描 述
实体— 关系图


(1)数据流图; (2)数据字典; (3)判定树; (4)判定表。
全国计算机等级考试
公共基础知识
主讲人:刘槐德
软件工程基础
一 软件危机与软件工程
1、软件的相关概念 计算机软件是包括程序、数据及相关文档的完 整集合。 软件的特点包括: 软件是一种逻辑实体; 具有抽象性; 软件的生产与硬件不同,它没有明显的制作
过程;
软件在运行、使用期间不存在磨损、老化问
题;
软件的开发、运行对计算机系统具有依赖性,
受计算机系统的限制,这导致了软件移植的问
题; 软件复杂性高,成本昂贵; Hale Waihona Puke Baidu软件开发涉及诸多的社会因素。 软件分类: 软件按功能分为应用软件、系统软件、支撑软 件(或工具软件)。
软件发展的趋势
1.
程序设计阶段,约为50至60年代
硬件通用,软件专用;程序规模小,编写者和使 用者为同一人(同组人)。
(3)软件工程原则:抽象、信息隐蔽、模块化、局部化、 确定性、一致性、完备性和可验证性。
5 软件工程的内容
基于瀑布模型的结构化生命周期方法
软件开发方法学
软件开发技术 软件工具
基于动态需求的快速原型法
基于结构的面向对象的软件开发方法
用来开发软件的软件 支持软件开发的环境,软件工具及其 相互间关系的总和 人力管理、进度安排、质量保证、资 源管理

目前用于写加工规格说明的工具有结构化语言、判定 表和判定树。
三)加工规格化说明工具
a.结构化语言: 自然语言加上结构化形式化的语言。是一种介于自然语言和程序 设计语言之间的语言。 b.判定树 是判定表的图形表示。 c.判定表 采用表格化的形式,适于表达含有复杂判断的加工逻辑。 d.加工说明卡片 加工说明可以像字典条目一样记载在卡片上

结构化生命周期方法
1. 计划时期
主要任务: 是分析用户需求、新系统的主要目标、开发系统的可行性 1)问题定义


任务:确定软件系统的功能和要解决的问题(软件系统的目标和范围说明)
特点:时间较短 经济可行性:技术可行性:法律可行性:运行可行性:方案可行性 最终提交:
n
2)可行性研究:

可行性分析报告(软件开发阶段的第一个文档)
(1)总体设计(概要设计)
程序结构图的基本图符: 模块用一个矩形表示,箭头表示模块间的调用关 系。在结构图中还可以用带注释的箭头表示模 块调用过程中来回传递的信息。还可用带实心 圆的箭头表示传递的是控制信息,空心圆箭心 表示传递的是数据信息。
相关文档
最新文档