购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 结构化生命周期方法

考核说明: 本节主要介绍软件的结构化方法开发过程,生命周期各个阶段的开发方法。其中生命周期各个阶段的开发方法是重点。

2.2.1 结构化方法概述

结构化方法将软件生命周期分为计划期、开发期、运行期3个时期,每个时期又分若干阶段。

1.计划期

计划期的主要任务是分析新系统应设定的目标和分析用户的基本需求,按设定目标的要求进行问题定义,并分析开发该系统的可行性。用户与分析人员的交互和配合是这一时期的重要特征和要求。

(1)问题定义。确定软件系统的主要功能。分析人员在与用户讨论的基础上提出软件系统目标、范围与功能说明。

(2)可行性研究。对问题定义阶段所确定的问题实现的可能性和必要性进行研究,并讨论问题的解决办法,对各种可能方案做出必要的成本/效益分析,分析人员据此提出可行性分析报告,作为使用部门是否继续进行该项工程的依据。

(3)需求分析。确定用户对软件系统的功能性和非功能性的全部需求,并以需求规格说明书的形式表达。

2.开发期

开发期包括分析、设计和程序设计两类任务。其中分析、设计包括、总体设计和详细设计两个阶段,程序设计包括编码和测试两个阶段。

(1)总体设计。建立软件系统的总体结构,子系统划分,并提出软件结构图。

(2)详细设计。确定软件结构图中每个模块的内部过程和结构。

(3)编码。按照选定软件的程序语言,将模块的过程性描述翻译成程序。

(4)测试。发现并排除上述各阶段所产生的各种错误。

3.运行期

运行期主要的任务是软件维护。

2.2.2 软件需求分析

1.需求分析的任务

软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

2.需求分析常用的工具
1)数据流程图

在数据流程图中,一般只包括4种基本的图形符号,即圆框、方框、箭头和直线。

(1)圆框:变换/加工。每个圆框代表从输入到输出的数据流中的一个加工,在框中注明加工的名称。

(2)方框:外部实体。代表数据源和数据池。数据源是指数据起源的地方,数据池是数据最终的目的地。

(3)箭头:数据流。代表数据的路径和流向。数据流由一组固定成分的数据组成,通常每个数据流必须有一个合适的名字。为数据流命名时,可以从其组成成分或含义的角度来考虑,尽量取易于理解的合理的名字。

(4)直线:数据存储。指待加工的数据存放场所,可以是一个数据记录,也可以是一组数据文件,可以用名词短语来命名。

数据流程图从数据和数据所经过的加工这两个相互补充的方面来表达一个数据处理系统。它从数据的角度描述了它们作为输入(广义的)经受某个或若干个加工,或者合并,或者分解,或者存储,最后成为输出(广义的)的整个过程。数据流程图的优点是直观、容易理解、容易发现其中的错误,用户和软件人员都易于接受这种方式。

2)数据字典

数据字典是对数据定义的信息集合。数据流程图和数据字典共同构成系统的逻辑模型。没有数据流程图,则数据字典难以发挥作用,没有数据字典,数据流程图就不严格。

数据字典中有4种类型的条目:数据流、数据存储、数据项和加工。

(1)数据流。数据流给出某个数据流的定义,通常是列出该数据流的各组成数据项。有些数据流的组成比较复杂,可以采用自顶向下分解的方法将它表示成更低层次的组合,一直分解到每个与项目有关的人都清楚其准确含义时为止。

(2)数据存储。数据存储给出某个文件的定义,文件的定义通常也是列出其记录的组成数据项。此外,文件条目还可以指出文件的组织方式,如按序号递增次序排列等。

(3)数据项。数据项给出某个数据单项的定义,通常为数据项的值类型、允许的取值范围等,如学生编号=1~20000。

(4)加工。加工是对数据流程图中每一个不能再分解的基本加工的精确说明,而对数据流程图中的其他非基本加工则不必说明。说明中应精确地描述用户要求某个加工做什么,包括加工的激发条件、加工逻辑、优先级、执行频率和出错处理等,其中最基本的部分是加工逻辑。

加工描述方法:通常可以用结构化语言、判定表和判定树这3种半形式化的方法编写加工说明。

3.需求分析的方法和步骤
1)需求分析的方法

需求分析方法通常分为4步:

(1)理解当前的现实环境。

(2)将当前系统的具体模型抽象为当前逻辑模型。

(3)分析新系统与当前系统逻辑上的差别。

(4)确定新系统的人—机交互界面和一些补充考虑的细节问题。

2)需求分析的步骤

(1)理解。理解软件系统的目标与范围的说明和软件计划中所述的软件系统的目标、软件的作用范围,理解用户环境并与用户达到一致的理解。

(2)分析。分析软件作用范围内的功能、性能要求,接口说明是否明确,约束条件是否恰当,可实现性如何。

(3)决策。根据软件项目的规模、特征、性质等因素和类似软件开发的历史经验,决定采取哪种需求分析方法。

(4)实现。按照选定的需求分析方法来进行需求分析,并写出软件规格说明。

(5)复审。复审是确认需求分析阶段工作完成的一步。

4.软件需求说明书

软件需求说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。

1)软件需求说明书的内容

软件需求说明书是作为需求分析的一部分而制定的可交付文档。说明书把在软件计划中确定的软件范围展开,制定出完整的信息描述、详细的功能说明、恰当的检验标准及其他与要求相关的数据。

2)开发初步的用户手册

在确定了人机交互作用的软件要求后,应准备一份初步的用户手册。

3)软件需求说明书的主要作用

(1)作为用户和软件人员之间的共同文件,为双方相互了解提供基础。

(2)反映出用户问题的结构,可以作为软件人员进行设计和编码的基础。

(3)作为验收的依据,即作为选取测试用例和进行形式验证的依据。

5.结构化分析方法的特点

结构化分析方法采用数据流程图为即将开发的软件系统描述一个可见的易读的模型,便于系统的审查和评价。结构分析方法简单清晰,易于操作,所以很受用户和分析人员的欢迎。但是结构化分析方法也有一些缺点。

2.2.3 软件系统设计

软件系统设计是结构化生命周期方法的组成部分,结构化设计是以软件需求分析阶段所产生的文档为基础,自顶向下、逐步求精和模块化的过程。系统设计一般分为总体设计和详细设计两个阶段。

1.总体设计
1)总体设计的任务和步骤

总体设计过程通常由两个主要阶段组成:系统设计,即确定系统的具体实现方案;结构设计,即确定软件结构。

2)软件的结构、过程和模块

(1)软件结构。软件结构是软件模块间关系的表示,软件模块之间的关系可以有多种。

(2)软件过程。软件过程是用以描述每个模块的操作细节,同时也包括一个模块对下一层模块控制的操作细节。

(3)软件模块。模块是数据说明、可执行语句等程序元素的集合,它是指单独命名的,可通过名字来访问的过程、函数、子程序或宏调用。

(4)模块独立性。模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。

(5)模块独立性的度量。模块独立性是由内聚性和耦合性两个指标来度量。内聚性是度量一个模块功能强度的一个相对指标;耦合性则用来度量模块之间的相互联系的程度。

(6)模块的类型。系统中的各模块在纳入时间、激活机制的方式等方面可以不相同。

3)设计准则

(1)提高模块独立性。

(2)模块规模适度。

(3)深度、宽度、扇出和扇入适当。

(4)要使模块的作用范围保持在该模块的控制范围内。

(5)应减少模块接口的复杂性和冗余度,并改善一致性。

(6)设计成单入口、单出口的模块,避免病态连接。

(7)模块的功能可预测。

(8)组装软件根据设计的约束和移植的需要。

4)设计中用到的图形工具

① 层次图

层次图可以表示模块间调用与控制关系的层次结构。层次图中的矩形框代表一个模块,方框间的连线表示调用关系。

② HIPO图

HIPO图是美国IBM公司提出的“层次图加输入/处理/输出图”的英文缩写。它对层次图中的每个方框(除最顶层外)都加了编号,编号规则与数据流程图的编号规则相同。与层次图中的每个方框相对应,都有一张IPO图来描述相应方框所代表的处理的过程。

IPO图是输入/处理/输出图的简称。它在左边的框中列出了有关的输入数据,在中间的框中列出主要的处理,在右边的框中列出产生的输出数据,处理框中列出的处理的次序暗示了执行次序。但是用这些基本符号还不足以精确描述执行处理的详细情况。在IPO图中的各个框之间还用箭头清楚地指出数据通信的情况。

③ 结构图

结构图和层次图类似,也是描述软件结构的图形工具。图中一个方框代表一个模块,框内注明模块的功能和名字,用箭头表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。

5)面向数据流的设计方法

在需求分析阶段,主要是分析信息在系统中加工和流动的情况。面向数据流的设计方法定义了一些不同的映射方法,利用这些映射方法可以把数据流程图变换成软件结构。

① 变换流与事务流。变换流是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。

当信息沿输入通路到达一个处理,这个处理根据输入数据的类型从若干个动作序列中选择出一个来执行,这类数据流归为特殊的一类,称为事务流。在一个事务流中,事务中心接收数据,分析每个事务以确定它的类型,根据事务类型选取一条活动通路。

② 面向数据流方法的设计过程。

a.精化数据流程图。

b.区分是事务流还是变换流。对于事务流,区分事务中心和数据接收通路,将它映射事务结构。对于变换流,区分输出和输入分支,并将其映射成变换结构。

c.根据设计准则精化软件结构。

d.导出接口描述和全程数据结构。

e.复查。

f.进入详细设计。

③ 变换分析。

将变换流映射成变换结构称为变换分析,步骤如下:

a.确定数据流程图是否具有变换性,一个系统中所有的信息流都可以认为是变换流,但是,当遇到明显的事务特性的信息流时,建议采用事务分析方法进行设计。

b.确定输入流和输出流的边界,孤立出变换中心。

c.进行第1级分解,将变换流映射成软件结构,其中输入信息处理模块协调对所有输入数据的接收。变换中心控制模块管理对内部形式数据的所有操作。输出信息处理控制模块协调输出信息的产生过程。

d.按事务流的映射方式对各个子流进行逐级分解,直至分解到基本功能。

e.对每个模块写一个简要说明,内容包括该模块的接口描述,模块内部的信息及过程描述(包括主要判定及任务等)。

f.利用软件结构的设计原则对软件结构进一步转化。

6)设计文档及复审

在完成模块分解后,总体设计需交付的总体设计说明书。

2.详细设计

详细设计阶段是软件设计的第二步,在总体设计阶段,已经确定了软件系统的总体结构,给出了系统中各个组成模块的功能和模块间的接口。这一步工作,就是要在上述结果的基础上,考虑如何实现定义的软件系统,直到对系统中的每个模块给出足够详细的过程描述。

1)详细设计的任务

详细设计的任务,是为软件结构图中的每一个模块确定所采用的算法和数据结构,用某种选定的表达工具给出清晰的描述。详细设计阶段将产生详细设计说明书。

2)详细设计用到的工具

描述程序处理过程的工具称为详细设计工具。这些工具应该能支持对详细设计无二义性的描述,其中包括控制流程、处理功能、数据组织及其他方面的实现细节,从而在编码阶段就能把所描述的详细处理过程直接翻译成程序代码。

① 程序流程图

程序流程图是一种传统的、应用广泛的,且有争议的软件设计表示工具。它用方框表示一个处理步骤,菱形代表一个逻辑条件,箭头表示控制流。

程序流程图的主要缺点如下:

a.程序流程图从本质上不支持逐步求精,它诱使程序员过早地考虑程序的控制流程,不去考虑程序的全局结构。

b.程序流程图中用箭头代表控制流,使得程序员不受任何约束,可以完全不顾结构化设计的原则,随意转移控制。

c.程序流程图不易表示数据结构。

d.程序流程图的每个符号对应于源程序的一行代码,对于提高大型系统的可理解性作用甚微。

注意: 直到20世纪70年代中期,程序流程图一直是软件设计的主要工具。它的主要优点是控制流程的描绘很直观,便于初学者掌握。由于程序流程图历史悠久,为人们所熟悉,尽管它有种种缺点,许多人建议停止使用,但仍有很多人在使用它。

② 方框图

为了避免流程图在描述程序逻辑时的随意性与灵活性,1973年I.Nossi和B.Shnelderman提出了用方框图来代替传统的程序流程图,引起了人们重视,人们也把这种图称为N-S图。方框图中仅含4种基本的控制结构,即顺序结构、条件结构、循环结构、选择结构。

在方框图中,每个处理步骤都是用一个盒子来表示,这些处理步骤可以是语句或语句序列,在需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制,只要整张图可以在一张纸上容纳下就行。

注意: 在用方框图作为详细设计的描述手段时,常需要用两个盒子:数据盒和过程盒。

③ PAD

PAD是问题分析图(Problem Analysis Diagram)的英文缩写。它是继流程图和方框图之后,由日本的二村良彦等人在1979提出的又一种主要用于描述软件详细设计的图形表示工具。

与方框图一样,PAD也只能描述结构化程序允许使用的几种基本结构。PAD图的一个独特之处在于,以PAD为基础,遵循一个机械的规则就能方便地编写出程序,这个规则称为走树(Tree walk)。

④ 伪码

伪码(Pseudo-code)又称程序设计语言(PDL),它是一种非形式化的比较灵活的语言,实际上PDL语言是对伪码的一种补充。它借助于某些高级程序语言的控制结构和一些自然语言的嵌套。一般说来,伪码的语法规则分成外语法和内语法。外语法应当符合一般程序设计语言常用的程序语句的语法规则;而内语法是没有定义的,它可以用自然语言的一些简洁的句子、短语和通用的数学符号来描述程序应该执行的功能。

3.软件设计规格说明

软件设计规格说明是软件设计的最终成果,它用于两个方面,即作为编码人员书写源程序的依据和作为测试阶段及维护阶段的一个指南。

软件设计规格说明的编写可以分为两个阶段。在总体设计阶段应集中于软件结构的描述,详细设计阶段应集中描述每个软件元素的细节。

4.设计的复审

对于软件设计来说,考虑周到、计划周密的复审像其技术设计方法本身一样重要。目前存在着两种不同的设计复审方法。

(1)正规复审:制作好幻灯片,邀请听众按计划好的议事日程进行正式复审。

(2)非正规复审:只召集少数设计人员和有关用户参加,讨论设计问题。

复审的标准包括:可追溯性、风险、实用性、可维护性、接口、技术清晰度、选择方案、限制和其他问题。

2.2.4 程序设计

1.程序设计阶段的任务

编码阶段的任务是为每个模块编写程序,即将详细设计的结果转换成用某种程序语言的源程序,编译程序再将这些源程序变成依赖于具体机器的目标代码。

2.结构化设计概述

结构化程序设计是由 E.W.Dijikstra 在1965年提出的,他认为应该从高级语言中取消GOTO语句,程序的质量与程序中所包括的GOTO语句的数量成反比。随后,有人证明了只用3种基本的控制结构就能实现任何单入口、单出口的程序。这3种基本的控制结构就是顺序、选择和循环。实际上,用顺序结构和循环结构完全可以实现选择结构,因而在理论上最基本的控制结构只有顺序结构和循环结构两种。

结构化设计方法的基本要求是,在详细设计阶段,为了确保模块逻辑清晰,就应该要求所有的模块只使用单入口、单出口及顺序、选择和循环3种基本控制结构。这样,不论一个程序包含多少个模块,每个模块包含多少个基本的控制结构,整个程序仍能保持一条清晰的线索。

结构化设计的缺点是,目标程序所需要的存储容量和运行时间都有一些增加。如果只允许使用顺序、选择和循环这3种基本控制结构,则称为经典的结构程序设计。如果除了上述3种基本控制结构之外,还允许使用多分支的选择结构和下部判断循环条件的循环结构,则称为扩展的结构程序设计。如果再允许使用从循环中退出的结构,则称为修正的结构程序设计。

3.程序设计语言的选择

高级语言通常分为以下3类。

1)基本语言

基本语言包括Fortran、BASlC、ALGOL、COBOL等,其特点是用途广泛,具有大量的软件库,已为许多人熟悉和接受。

2)结构化程序语言

结构化程序语言包括PL/1、Pascai、C和Ada语言,它们几乎都是从ALGOL派生出来的。结构化程序设计语言的特点是具有非常强的过程功能和数据结构功能,以支持结构化的逻辑构造。

3)专用语言

专用语言是为特定的应用而专门设计的语言,通常具有自己特殊的语法形式,面向特定的问题,输入数据结构和词汇表与该问题的相应范围密切相关。

为了一个特定的设计课题选用一种程序设计语言时,必须既要考虑工程特性又要考虑心理特性。选择语言的方法是:从所要解决的课题出发确定对语言的要求,并同时确定这些要求的相对重要性。既然一种语言不可能同时满足多个要求,那么就应该分别对各个要求进行衡量,比较各种可用语言的适用程度。

评价可用语言时应该考虑以下几个方面:

(1)一般的应用领域。

(2)算法及运算的复杂性。

(3)数据结构的复杂性。

(4)软件运行的环境。

(5)性能。

(6)对该语言的熟悉程度。

4.编写程序的风格

提高程序的可读性和易维护性的关键是使程序结构简单清晰。程序员在编程时应保持良好的程序设计风格。

真题链接

【试题2-2】 软件系统需求分析阶段的一些工作需要按步骤进行,其中最后进行的是_____。(2010年9月)

A.理解软件系统的目标

B.确定需求分析方法

C.分析系统的功能要求

D.编写软件规格说明

答案: D

解析: 需求分析工作大体上可以按照如下步骤进行:(1)理解。理解软件系统的目标与范围的说明和软件计划中所述的软件系统的目标、软件的作用范围,理解用户环境并与用户达成一致的理解;(2)分析。分析软件作用范围中的功能、性能要求;(3)决策。根据软件项目的规模、特征、性质等因素,决定采取哪种需求分析方法;(4)实现。按照选定的需求分析方法来进行需求分析,并编写软件规格说明;(5)复审。

【试题2-3】 数据流程图是需求分析的常用工具,其基本图形符号有_____。(2011年3月)

A.2个

B.3个

C.4个

D.5个

答案: C

解析: 在数据流程图中,一般只包括4种基本的图形符号:圆框表示变换/加工;方框表示外部实体;箭头代表数据流;直线表示数据存储。

【试题2-4】 结构化方法简单清晰、易于操作,以下不属于结构化方法特点的是_____。(2011年3月)

A.需要编写大量文档

B.表现人机界面能力强

C.需要早期冻结需求

D.强调分析数据流

答案: B

解析: 结构化分析方法采用图形描述方式,用数据流程图为即将开发的系统描述了一个可见的模型,也为相同的审查和评价提供了有力的条件;它是一种预先定义需求的方法,基本前提是必须能够在早期就冻结用户的需求,该方法文档的编写工作量极大,随着开发工作的进行,这些文档需要及时更新。结构化分析方法不利于开发人机界面。

【试题2-5】 软件需求说明书是需求分析阶段的最后成果,不属于其主要作用的是_____。(2010年3月)

A.确定系统开发可行否的依据

B.反映用户的问题

C.使用户和软件人员加强了解

D.软件验收的依据

答案: A

解析: 软件需求说明书的主要作用:作为用户和软件人员之间的共同文件,为双方相互了解提供基础;反映出用户问题的结构,可以作为软件人员进行设计和编码的基础;作为验收的依据,即作为选取测试用例和进行形式验证的依据。

【试题2-6】 软件系统设计一般分为总体设计和详细设计两个阶段,属于详细设计任务的是_____。(2010年3月)

A.确定模块的算法

B.确定模块间的接口

C.划分模块和子系统

D.评价模块划分的质量

答案: A

解析: 详细设计的任务,是为软件结构图中的每一个模块确定所采用的算法和数据结构,用某种选定的表达工具给出清晰的描述。 szt7/FBL0uvsM0MRy/Rq/SeSg+8HZrHMBg8nRuIlsnMqYmFHJiyz1t5CMvbpW+me

点击中间区域
呼出菜单
上一章
目录
下一章
×