《(软件分析与设计基础 )》由会员分享,可在线阅读,更多相关《(软件分析与设计基础 )(143页珍藏版)》请在金锄头文库上搜索。
1、第二章 软件分析与设计基础,本章包含的内容:1)面向过程分析与设计2)面向对象分析与设计3)数据库建模与设计 本章重点:1)掌握面向过程分析与设计的思想与方法;2)熟练掌握面向对象分析与设计的思想与方法;3)熟练掌握数据库设计的思想与方法。,经验和教训表明: 1)软件开发需要遵循软件工程方法论的指导,软件分析与设计质量决定软件产品的质量 2)合理的软件分析与设计建立在对软件需求正确理解的基础上,对软件需求的深入理解是软件开发工作获得成功的前提和关键 3)要开发出好的软件产品,首先必须知道用户的需求,并在充分了解用户需求的基础上,对用户的业务需求建模,并进行相应的分析与设计,才能生产出真正符合用
2、户要求且生命周期长的软件产品。,2.1面向过程分析与设计,传统的软件工程方法:结构化分析(Structrued Analysis, SA)结构化设计(Structrued Design, SD)。,2.1面向过程分析与设计,2.1.1结构化分析结构化分析是20世纪70年代后期提出的,是一种基于功能分解的需求分析方法,适用于分析大型数据处理系统。与结构化设计(SD)一起联合使用,能较好地实现一个软件系统的研制。它是一种面向数据流,自顶向下、逐步求精进行需求分析的方法。 它通常用数据流图表达需求,以数据字典表示数据的逻辑定义。,2.1面向过程分析与设计,SA方法的特点: 核心思想是自顶向下、逐步求
3、精 基本手段是分解和抽象所谓分解就是把大问题分割成若干小问题,把复杂度降低到人们可以掌握的程度,然后分别解决。所谓抽象就是把细节略去,先考虑最本质的东西。 使用数据流图、数据字典等规范化工具描述需求。,2.1面向过程分析与设计,使用SA方法进行软件需求分析的步骤: (1)建立当前系统的具体模型分析当前系统和现实环境,描述当前系统的工作方式,客观地反映现实世界的实际情况。 (2)抽象出当前系统的逻辑模型就是在理解当前系统“怎么做”的基础上,抽取出“做什么”的本质,从当前系统的具体模型抽象出当前系统的逻辑模型。,2.1面向过程分析与设计,(3)建立目标系统的逻辑模型所谓目标系统是指将要开发的由计算
4、机处理的系统。方法如下:在数据流图上把目标系统与当前系统在逻辑上不同的部分找出来,这部分就是要改变的部分。将要改变部分抽象为一个加工,再进行逐步分解,最后就可获得目标系统的逻辑模型。,2.1面向过程分析与设计,1. 数据流图数据流是数据在系统内的传输途径,数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的变换过程。数据流图是结构化系统分析的主要工具,它去掉了具体的组织机构、工作场所、物质流等,仅反映信息和数据存储、流动、使用以及加工的情况。,2.1面向过程分析与设计, 数据流图的基本元素包括数据流、加工、数据存取文件、输入数据的源点和输出数据的汇点4类。常采用如图2-1所示的
5、图形符号:,图2-1 数据流图基本图形符号,2.1面向过程分析与设计,绘制数据流图时,应先找出系统的数据源点与汇点及对应的输入数据流与输出数据流,然后从输入数据流(即系统的源点)出发,按照系统的逻辑需要,逐步画出系列逻辑加工,直到所需的输出数据流(即系统的汇点)。,2.1面向过程分析与设计,数据流在传递过程中,需要一些加工处理。常见的加工关系及对应的图形符号如图2-2所示。,图2-2 数据流图加工关系,2.1面向过程分析与设计,数据流图应用举例:,2.1面向过程分析与设计, 分层数据流图较复杂的实际问题中,仅用一个数据流图很难表达数据处理过程和数据加工情况,需要采用“先全局后局部,先整体后细节
6、,先抽象后具体”的逐步求精原则,按照问题的层次结构逐步分解。首先确定顶层数据流图,把整个数据处理过程抽象为一个加工,它的输人数据和输出数据实际上反映了系统与外界环境的接口,这就是顶层数据流图。然后在上一层数据流图的基础上进一步细化,直到数据流图的加工不能再分解为止。,2.1面向过程分析与设计,2.1面向过程分析与设计, 画数据流图的步骤和原则画数据流图的基本步骤是自外向内,自顶向下,逐层细化,完善求精,并且需要遵循以下基本原则: 顶层数据流图上的数据流必须封闭在外部实体之间。 每个加工至少有一个输入数据流和一个输出数据流。 在数据流图中,需按层给加工进行编号。编号应表明该加工处在哪一层,以及与
7、上下层的父图与子图的对应关系。 任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致,即父图与子图的平衡。 图上每个元素都必须有名字,加工的名字应当表明做什么事情。,2.1面向过程分析与设计,数据流图画法举例:(培训中心管理系统数据流图),2.1面向过程分析与设计,2.1面向过程分析与设计,2.1面向过程分析与设计,2.1面向过程分析与设计,2. 数据字典数据字典是各类数据描述的集合。它通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。通常包括数据项、数据结构、数据流、数据存储、处理过程和外部实体等6个部分。,2.1面向过程分析与设计, 数据项数据项
8、是数据的最小组成单位,若干个数据项可以组成一个数据结构。对数据项的描述通常包括以下内容。数据项描述数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,2.1面向过程分析与设计, 数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成(嵌套数据结构),或由若干个数据项和数据结构混合组成。对数据结构的描述通常包括以下内容。数据结构数据结构名,含义说明,组成:数据项或数据结构,2.1面向过程分析与设计, 数据流数据流是数据结构在系统内的传输路径。对数据流的描述通常包括以下内容。数据流描述数据流名,说明,数据流来
9、源,数据流去向,组成:数据结构,平均流量,高峰期流量 数据存储数据存储是数据结构停留或保存的地方。数据存储的描述通常包括以下内容。数据存储数据存储名,说明,编号,流入的数据流,流出的数据流,组成:数据结构,数据量,存取方式,2.1面向过程分析与设计, 处理过程处理过程应描述处理逻辑的功能,详细地描述其输入输出的数据流以及这些数据的基本转换路径和策略说明性信息,对处理过程的描述通常包括以下内容。处理过程处理过程名,编号,说明,输入:数据流,输出:数据流,处理:简要说明,2.1面向过程分析与设计, 外部实体外部实体是系统的“人-机”界面,系统的数据流由外部实体流入,经过加工处理之后,向外部实体流出
10、。外部实体的描述如下。外部实体=外部实体的名称,编号,输入:数据流,输出:数据流,2.1面向过程分析与设计,3. 实例-学籍管理分析学籍管理涉及的内容比较多,业务逻辑也较复杂。在不失一般性的基础上,本实例简化了学籍管理的业务逻辑. (1)需求描述 工作内容:建立学生的学籍汇总每学期学生的学分学生每门课程的的考试成绩学生的平均成绩汇总各分数段的人数各种查询,2.1面向过程分析与设计,涉及人员: 管理人员 班主任 任课教师 学生 系统初步:系统性质:MIS软件。系统使用者:管理人员、班主任、教师、学生等。系统运行环境:网络运行。,2.1面向过程分析与设计,表2-1 学籍管理主要功能表,2.1面向过
11、程分析与设计,(2)分析设计顶层数据流图管理人员、教师、班主任、学生等是数据输入的源点和数据输出的汇点。学生基本信息、教师信息、课程信息、教学计划、考试成绩等是数据存储文件。,图2-4 学籍管理顶层数据流图,2.1面向过程分析与设计,(3)逐步细化数据流图根据表2-1中列出的学籍管理的主要功能,将学籍管理加工细化分解为学生管理、课程管理、教师管理、成绩管理、授课管理和编码维护等子加工。,图2-5 学籍管理1层数据流图,2.1面向过程分析与设计,根据实际业务,分析各处理流程,直到数据流图中出现的每个加工处理都不能再分解为止。成绩管理可以继续细化为如图2-6所示的成绩管理数据流图。,图2-6 成绩
12、管理数据流图,2.1面向过程分析与设计,图2-6所示的成绩录入和成绩查询都可以继续分解。例如:成绩录入加工可以继续细化为增加成绩、修改成绩、删除成绩等子加工,为了方便成绩录入,还需要班级学生名单查询子过程,因此图2-6所示的成绩管理的2层数据流图的成绩录入加工可以继续细化分解为图2-7所示成绩录入的3层数据流图。,图2-7 细化后的成绩录入数据流图,2.1面向过程分析与设计,(4)制定整理数据字典数据字典是系统中各类数据描述的集合。通常包括数据项、数据结构、数据流、数据存储、处理过程和外部实体等6个部分。 数据项的描述以图2-7中的“学号”数据项为例说明:数据项名称:学号含义:唯一标识每个学生
13、别名:类型: 字符型长度: 5取值范围:00000至99999取值含义:前2位标别该学生所在年级,后3位为顺序编号。,2.1面向过程分析与设计, 数据流的描述以 “学生名单”数据流为例。数据流名称:学生名单说明:某班全部学生的名单数据流来源:班级学生名单查询数据流去向:班级学生名单显示组成(包含的数据项):班级、学号、姓名平均流量:高峰期流量:,2.1面向过程分析与设计, 数据存储的描述以数据存储“考试成绩”为例。数据存储:考试成绩说明:保存学生各门课的考试成绩流入数据流:新增的成绩、修改后的成绩流出数据流:原成绩组成:学号、姓名、成绩数据量:3000(学生)*15(课程)存取方式:随机存取,
14、2.1面向过程分析与设计, 处理过程的描述 以处理过程“增加成绩”为例。 处理过程:增加成绩 说明:录入一个或一批学生某门课程的考试成绩 输入:添加成绩要求 输出:新增的成绩 处理:在考试成绩数据存储中增加一个或一批学生的考试成绩。,2.1面向过程分析与设计,2.1.2结构化设计通常把设计工作划分为概要设计和详细设计两个阶段。概要设计阶段的主要任务是,通过仔细分析需求规格说明,对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。详细设计阶段的主要任务是,详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。,2.1面向过程分析与设计,结构化设计的主要原则如下:
15、 抽象就是把事物本质的共同特性提取出来而不考虑其他细节。软件设计中考虑模块化解决方案时,可以定出多个抽象级别。抽象的层次从概要设计到详细设计逐步降低。 模块化模块是指把一个待开发的软件分解成若干小的简单的部分。每个模块可以完成一个特定的子功能,各个模块可以按一定的方法组装起来成为一个整体,从而实现整个系统的功能。,2.1面向过程分析与设计,信息隐蔽指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。 模块独立性模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。,2.
16、1 结构化开发方法,内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。按照内聚性由弱到强的顺序可分为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。耦合性是模块间互相连接紧密程度的度量。按照耦合性由弱到强的顺序可分为:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。一般来说,设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共耦合,杜绝内容耦合。 耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合。,2.1面向过程分析与设计,1)非直接耦合。如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。2)数据耦合。如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换 输入、输出信息的,则称这种耦合为数据耦合。,