软件设计与编码_第1页
软件设计与编码_第2页
软件设计与编码_第3页
软件设计与编码_第4页
软件设计与编码_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章

软件设计与编码

3.1软件设计阶段的任务与目标

软件微材阶段的值务与目标

软件设计是对实现软件的结构、系统的数据、系统

组件之间的接口以及所用算法的描述。

软件设计是软件开发的关键步骤,直接影响软件的

质量。

在软件需求分析阶段已经完全弄清楚了软件的各种

需求,较好地解决了所开发的软件“做什么”的问题,

并已在软件需求说明书和数据要求说明书中详尽和充分

地阐明了这些需求以后,下一步就要着手实现软件的需

求,即软件设计阶段要解决“怎么做”的问题。

<返回

微奸过福的一般模型

设计产品

返回

03.1.1软件设计在开发阶段中的重要性

3/7软件微必左界或阶段中的童要促

软件设计阶段要解决“如何做”的问题。这显然是整个软

件开发过程的核心问题,所有的开发工作都将根据设计的方案

进行。系统的总体结构在该阶段决定,因此软件的总体设计决

定了系统的质量。

系统结构设计定义软件系统的整体结构,是软件开发的核

心步骤。在设计步骤中,建立软件主要成份之间的关系。

过程设计则是把结构成份转换成软件的过程性描述。

在编码步骤中,根据这种过程性描述,生成源程序代码,

然后通过测试,最终得到完整有效的软件。

系统结构

开发阶段信息流

返回

03.1.2软件设计阶段的任务

5/2软件核计阶段的值务

[一、软件设计的任务

从工程管理的角度来看,软件设计分两步完成;分为

总体设计(概要设计)和详细设计两个阶段。其工作流程

如图所示。

首先做概要设计,将软件需求转化为数据结构和软件

的系统结构。然后是详细设计,即过程设计。通过对结构

表示进行细化,得到软件详细的数据结构和算法。

软件设计工作流程

<返回

3.1.2软件设计阶段的任务

.因此,软件设计阶段的任务可分为三部分:

1、划分模块,确定软件结构

开发方法不同,确定软件结构的方法也不同。例如SD法,

是从分层的DFD图导出初始的结构图,再对初始的结构图进

行改进,获得最终的结构图。

一般包括确定系统的软件结构,分解模块,确定系统

的模块层次关系。

2、确定系统的数据结构

数据结构的建立对于信息系统而言尤为重要。要确定

数据的类型,组织、存取方式,相关程度及处理方式等。

3、设计用户界面

作为人机接口的用户界面起着越来越重要的作用,它直

接影响到软件的寿命。

<返回

3.1.2软件设计阶段的任务

二、软件设计的目标

在设计阶段应达到的目标是:

提高可靠性;提高可维护性;提高可理解性;提高效率。

衡量该目标的准则:

1、软件实体有明显的层次结构,利于软件元素间控制。

2、软件实体应该是模块化的,模块具有独立功能。

3、软件实体与环境的界面清晰。

4、设计规格说明清晰、简洁、完整和无二义性。

软件设计的目标

常用的设计方法有:SD法、Jackson法、HIP0法、Parnas法、

Warnier法等。

3.2软件结构与软件结构图

3.2软件秸构与软件秸构画

1软件结构是软件模块之间关系的表示,它决定了整个系

统的结构,也确定了系统的质量。模块之间的关系可有多

种,但都可以归结为一种层次关系。

软件结构图是总体设计阶段的主要描述工具,它描述了

构成系统的基本元素——模块及模块之间的调用关系,模

块之间的数据传递关系。

本节讨论如何进行软件结构的设计,设计的准则以及为

了提高软件系统的质量,如何对软件结构进行改进的技

术。

<返回

3.2.1软件结构的基本概念

软件秸构的基存朝念

软件结构表示软件系统的构成,是软件模块间关系的表

示,下图则为软件结构示意图。下面先介绍几个相关的的概

念。

一模块(Module)

模块是程序对象有名字的集

合。例如,过程、函数、子程

序、宏等,是构成软件系统结

构的基本元素。

二、模块化

模块化就是将系统划分为若干个模块,每个模块完成一

个子功能。模块化的目的是将系统“分而治之”,模块化能

够降低问题的复杂性,使软件结构清晰,易阅读、易理解,

易于测试和调试,因而也有助于提高软件的可靠性。

<返回

3.2.1软件结构的基本概念

模块化降低软件复杂度的简单证明

令:C(X)表示问题X的复杂度函数;

E(X)解决问题X所需工作量的复

杂度函数;

若:有问题PLP2;

C(Pl)>C(P2);

显然:E(Pl)>E(P2)

由经验:C(P1+P2)>C(Pl)+C(P2)

于是:E(P1+P2)>E(Pl)+E(P2)

将问题(P1+P2)划分为两个问题P1和P2模块化与软件成本的关系

后,其工作量和复杂度都降低。

并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。

显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。

右上图描述了模块化与软件成本的关系。

<返回

3.2.1软件结构的基本概念

软件的层次结构

软件结构图表示软件的系统结构,它是软件模块间关系的表

示,软件之间的各种关系,均可表示为层次结构。如图所示。

有关指标:

⑴深度:表示软件结构中

从顶层模块到最底层模块

的层数。

⑵宽度:表示控制的总分

布。

⑶扇出数:指一个模块直

接控制下属的模块个数。

⑷扇人数:指一个模块的

直接上属模块个数。

一个好的软件结构的形态准则是:顶部宽度小,中部宽

度大,底郢宽度次之;在结构顶部有较高的扇出数,在底部

有较高的扇人数。

<返回

3.2.2软件的树状结构和网状结构

M22教件的树收秸构和网状给构

由模块连接而得到的软件结构最普通的形式就是树状结

构和网状结构。

在树状结构中,位于最上层的根部是顶层模块,它是程

序的主模块。与其联系的有若干下属模块,各下属模块还可

以进一步引出更下一层的下属模块,如图所示的树状结构。

树状结构的特点是:

整个结构只有一

个顶层模块,而对于

任何一个下属模块来

说,它只有一个上级

模块,而且同一层模

块之间不发生关系。

<返回

03.2.2软件的树状结构和网状结构

①(b)

网状结构

在网状结构中,任何两个模块间都可以有双向的关系,不分层

次。任何两个模块都是平等的,没有从属关系。

比较两种结构的特点:对于不加限制的网状结构,由于模块间

相互关系的任意性,使得整个结构十分复杂,处理起来势必引起许

多麻烦,这与原来划分模块为便于处理的意图相矛盾。所以在软件

开发的实践中,人们通常采用树状结构,而不采用网状结构。

<返回

3.2.3软件结构图(SC图)

软件中构囹(SC囹)

结构图(StructureChart,简称SC图)是精确表达软件

结构的图形表示方法,它以特定的符号表示模块、模块间的

调用关系和模块间信息的传递。结构图的主要构成有:

⑴模块(Module):

⑵调用:

⑶数据:鬲J息

控制信息模块调用图

返回

3.2.3软件结构图(SC图)

例:画出打印报告的软件结构图

调用次序为上层调用下层;同层按照数据传递关系确

定;一般从左到右执行。

执行过程即按照数据流向进行O

返回

3.3模块的独立性

3.3模块的独贪喝

上一节讨论了关于软件结构与软件结构图的概念,本

节进一步讨论影响软件系统质量的另一个关键问题,模

块的独立性问题。

模块化方法已经为所有工程领域所接受。模块化的

主要优点是,模块化设计降低了软件系统的复杂性,使

得系统容易修改,同时使得系统各个部分可以并行开

发,从而提高了软件的生产率。

提高模块质量在于提高模块独立性。模块的独立性

用耦合性和内聚性来衡量。

<返回

3.3.1模块独立性

MM7核块独会(moduleindependence)

“模块”,又称“构件”,一般指用一个名字可调用的一

段程序。它一般具有如下三个基本属性:

⑴功能即指该模块实现什么功能,做什么事情。必须注意:

模块功能,应是该模块本身的功能加上它所调用的所有子模块

的功能。

⑵逻辑即描述模块内部怎么做。

⑶状态即该模块使用时的环境和条件。

所谓模块的独立性,是指软件系统中每个模块只涉及软件

要求的具体的子功能,而和软件系统中其他模块的接口是简单

的。即功能专一,模块之间无过多的相互作用的模块。

这种类型的模块可以并行开发,模块独立性越强,开发越

容易。独立性强的模块,还能减少错误的影响,使模块容易组

合、修改及测试。

<返回

3.3.1模块独立性

MM7模块独走(moduleindependence)

模块独立性的度量标准是两个定性准则:

耦合性用于描述模块之间联系的紧密程度。

内聚性用于描述模块内部联系的紧密程度。

模块独立性比较强的模块应该是具有高内聚性和的低耦

合度。

<返回

03.3.2耦合性

3.5,2耦合H(Coupling)

耦合性是指软件结构中模块相互连接的紧密程度,是模

块间相互连接性的度量。模块分解的一个目标是使块间联系

尽可能小,块间联系的大小可从三个方面衡量:

t作用

卜昆合

①方式一块间联系方式有“直接引用”或

“用过程语句调用”。+控制

②作用—块间传送的共用信息(参数)类

型,可为“数据型”、“控制型”或“混合型

(数据/控制型)。少

③数量一块间传送的共用信息的数量。乏/调用调用

数据

<返回

3.3.2耦合性

耦合性的几种类型

内容耦含一公共耦合控制耦合

复合耦合数据耦合

耦合性高

1>内容耦合(contentcoupling)

G一个模块直接访问另一模块的内部数据。

F!一个模块不通过正常入口转到另一模块的内部。

G一个模块有多个入口。

B两个模块有部分代码重迭。

I

进入另一模块内部分代码重迭多重入口

返回

3.3.3内聚性

3.3.3内聚*tii(cohesion)

内聚性表示一个模块内部各种数据和各种处理之间联

系的紧密程度,它是从功能的角度来度量模块间的联系o

显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。

块内联系的类型分为六类:

返回

3.3.4信息隐蔽

334传息想融

由parnas方法提倡的信息隐蔽如下:

每个模块的实现细节对于其他模块来说是隐蔽的。也就是

说,模块中所包含的信息(数据和过程)不允许其他不需要这

些信息的模块使用。

该原则有利于提高模块的内聚性。由于一个软件系统在整

个软件生存期内要经过多次修改,在划分模块时要采取措施,

使得大多数过程和数据对软件的其他部分是隐蔽的。这样,在

将来修改软件时,可将偶然引入错误所造成的影响限制在一个

局部范围之内,不致波及到软件的其他部分。

<返回

3.4结构化设计(SD)法

3.4秸相把世奸(SV)方收

结构化设计方法(StructuredDesign,SD)是结

构化开发方法的核心,与SA法、SD法密切联系,主要完成

软件系统的总体结构设计。

<返回

3.4.1结构化设计方法概述

三、SD法的设计步骤

由于软件具有两类特征:

软件(层次性:反映软件整体的性质(结构图)

・过程性:反映局部的性质(框图)

SD法也分为总体设计和详细设计两个阶段:

1、总体设计

解决系统的模块结构,即分解模块,确定系统模块的层次结

构。

任务:

①划分模块

②确定模块功能

③确定模块间调用关系

④确定模块间界面

文档:模块结构图及其模块功能说明。

2、详细设计

对模块图中每个模块的过程进行描述,常用的描述的方式有:

伪代码,

流程图,N—S图,PAD图等。<返回

3.4.1结构化设计方法概述

SA法总体设计的步骤是:

(1)从DFD图导出初始的模块结构图。

⑵按照SD法设计总则,改进模块结构图。

四、SD法的设计总则

根据软件结构的准则,模块化准则,软件独立性准则

得到结构化设计的总则是:

“降低块间联系,提高块内联系”

<返回

3.4.2数据流图的分类与典型的系统结构

3.4.2破据流囹的今类鸟典型的系疮殆构

一、DFD图的分类

。中心变换型(transformcenter)一变换分析

其特点是:DFD图可以明显分为“输入-处理-输出”三部分。

口事务处理型(transaction)—事务分析

这类数据流图可看成是对一个数据经过某种加工后,按加

工的结果选择一个输出数据流继续执行的处理。

检输入1主加工

)物

返回

3.4.2数据流图的分类与典型的系统结构

二、典型的系统结构

⑴变换型系统结构图

通过变换分析技术,将中心变换型的DFD图转换而得的SC

图,称为变换型系统结构图。

⑵事务型系统结构图

通过事务分析技术,将事务处理型的DFD图转换为的SC图,

称为事务型的系统结构图。

<返回

03.4.3变换分析技术

343变换台折技术

①确定主加工及逻辑输入/输出

主加工一描述了系统的主要功能、特征。其特点是:输入/输出数

据流较多,往往主加工不止一个。

逻辑输入/输出一是指输入/输出主加工的数据流。

输入流一是把物理输入转换为逻辑输入的数据流。

输出流一是将逻辑输出转换为物理输出的数据流。

②进行一级分解,设计上层模块

为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时

为每个主加工设计一个处理模块。

A流转换流流F、

变换分析技术

返回

3.4.3变换分析技术

③进行二级分解,设计中下层模块

这一步的工作是自顶向下,逐步细化,为第一层的每一个输入模块、

输出模块、处理模块设计它们的从属模块,设计下层模块的顺序一般从设

计输入模块的下层开始。

④进一步细化

变换分析技术

返回

3.4.4“事务分析”技术

54“事务台祈技术

①确定流界;首先从数据流图中找出事务流、事务处理中心和事

务路径。

②进行一级分析,设计上层模块;对事务中心应设计“事物控制

模块;对事物流应设计“接受事物”模块;对事务路径,应设计

“发送控制”模块。

③进行二级分解,设计中下层模块;接受分支,用类似于转换处理

型数据流图中对输入数据流的方法设计中下层。对于发送分支,在

发送控制模块下为每条事务路径设计一个事务处理模块,这一层称

为事务层。

海一应

事物流I事务中心I事务处理

原始的数据流图

事务分析技术返回

3.4.5应用举例

345实例:皴行要款丈件管理(MFUP)

每个贷款用户在贷款文件中占有一个记录,记录结构如表3・1。

序号内容长度(字节)数据类型可否修改

1账号5数字否

2户名30数字字母可一

3地址30数字字母可

4省10字母可

5市15字母可

6邮政编码6数字可

7电话8数字可

8类型1字母否

9信贷员号5数字nJ-

10最近一次业务日期6数字否

11最近一次付息日期6数字否

12余额8数字否

13业务总量8数字否

14限额6数字否

表3-1<返回

3.4.5应用举例

分析:

1.贷款文件的记录格式(如表3-1)

2.修改记录(卡片)格式

要求对贷款文件进行修改,修改信息由卡片输入,卡片上的修改信息格

式如下:

1-5位6-9位10位起

III

账号空xX修改值1*XX修改值2*….**

(序号)

其中*为分界符,**为结束符

贷款文件的DFD图,是一种混合的DFD图。

输入为:卡片和旧记录。

输出为:新记录和报告。

4、将DFD图转换为模块结构图。

<返回

3.4.5应用举例

需求分析结果一DFD图

簿颔、

何顺序要修改

Z的记录/

旧记录查

.」

不修改已修改

主加工的记录的记录

记/

答案录

编辑卡片加工分解

主加工是??

修改贷款文件的DFD图

返回

3.4.5应用举例

将DFD图转换为模块结构图k片顺序卡片

修改信息

转换后的模块图如图所示。

顺序记录要修改哆

旧记录的元齐改

贷款文件不修改写f已修改

的记录记k的记录

管理系统录

已修改

新记录

记打印

报告

编辑

录M

卡“编辑卡片”应继

读旧检查续向下分解,是典

顺序

记录片

/'型的“事务处理”

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论