软件工程结构化分析与设计.ppt

上传人:牧羊曲112 文档编号:5846218 上传时间:2023-08-27 格式:PPT 页数:94 大小:2.56MB
返回 下载 相关 举报
软件工程结构化分析与设计.ppt_第1页
第1页 / 共94页
软件工程结构化分析与设计.ppt_第2页
第2页 / 共94页
软件工程结构化分析与设计.ppt_第3页
第3页 / 共94页
软件工程结构化分析与设计.ppt_第4页
第4页 / 共94页
软件工程结构化分析与设计.ppt_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《软件工程结构化分析与设计.ppt》由会员分享,可在线阅读,更多相关《软件工程结构化分析与设计.ppt(94页珍藏版)》请在三一办公上搜索。

1、第三章 结构化分析与设计,需求分析结构化系统分析模块化设计思想结构化系统设计模块设计,3.1 需求分析,准确、完整、规范化的软件需求是软件开发成功的关键软件项目中40-60%的问题是在需求阶段埋下的祸根,让用户和开发者共同明确将要开发的是一个什么样(what)的系统第一:建立分析模型 描述软件需求的一组模型,是形成需求说 明、进行软件设计的基础第二:得到软件需求规格说明书 准确、一致、清晰、无二义、直观易读,需求分析的任务,需求获取(调研)形式:联合分析小组 手段:客户访谈、问答、原件收集 目标:功能、界面、质量.,需求分析的步骤,开发方,用户方(代表),专家,需求分析的步骤,需求提炼:分析建

2、模,结构化分析,面向对象分析,数据流图,实体关系图,状态转换图,控制流图.,类图,状态图,活动图.,用例图,需求分析的步骤,需求描述:撰写软件需求规格说明书(Software Requirement Specification SRS)在标准模板基础上剪裁需求验证(复审)组成复审小组:用户方+外来专家,实例(教材购销系统),学生,学生,张秘书,王会计,李出纳,赵保管,购书,购书,购书,申请,证明,发票,领书,单,书,学生,学生,审查有效性,开发票,开领书单,发书,购书,购书,购书,申请,证明,发票,领书,单,书,学生,学生,审查并开发票,开领书单,发书,购书,购书,申请,发票,领书,单,书,学

3、生,学生,审查并开发票,开领书单,购书,申请,发票,领书,单,当前系统,目标系统,需求获取的常用方法,常规需求获取方法 联合分析小组、客户访谈、问题分析与确认快速原型法在需求分析中的应用 两个层次:联机屏幕、外部特征 过程:规格说明检查生成/修改原型用户评估 基础:快速开发技术和工具(4GT),分析建模,软件分析模型:信息(数据)模型、功能模型、行为模型分类:结构化分析(SA)、面向对象分析(OOA)方式:图形+自然语言,3.2结构化系统分析,DD,E-R,DFD,CFD STD,控制说明,数据对象说明,加工说明,结构化分析模型的组成,数据流图(DFD)数据字典(DD)加工说明(PSPEC)实

4、体关系图(E-R),(1)数据流图(DFD),加工或变换,输入,输出,:加工,:数据的源点或终点,:数据的流向,:数据文件或数据库,数据流图(DFD),DFD不同于程序流程图。DFD可以表现大到整个系统,小到一个模块分层数据流图,学生,学生,审查并开发票,开领书单,购书,申请,发票,领书,单,无效书单,各班学生用书表,教材存量表,(2)数据字典(DD),对软件中的每个数据规定一个定义条目,以保持数据在系统中的一致性,数据项:只含一个数据,又称为数据元素,数据流:由多个相关数据项组成,数据文件(数据库):,符号:=、+、()、*,数据流,发票=(学号)+姓名+书号+单价+数量+总价+书费合计,数

5、据文件,学生用书表=系编号+专业和班编号+年级+书号系编号=2数字2,数据项,年级=F/M/J/S,数据字典例题,请给出安徽汽车的车牌号码的数据字典定义,如合肥的车牌是“皖A-23002”,芜湖的车牌是“皖B-00235”等,只考虑后面五位是数字的情况某个航空售票系统需要保存所有的航班信息,每个航班的属性包括航班号、出发地、目的地、若干个中途停靠站、头等舱座位数量及价格(固定)、公务舱座位数量及价格、普通舱座位数量及价格。有些航班没有头等舱。采用数据字典描述航班信息,车牌号码=皖A-Z-5数字5,航班=航班号+出发地+目的地+停靠站+(头等舱数量)+(头等舱价格)+公务舱数量+公务舱价格+普通

6、,例题,请给出购书申请的数据字典定义:一份申请对应一个学生,内容包括学生的学号、姓名、班级和他(她)所领全部教材的书号、书名和数量。其中学号由阿拉伯数字组成,姓名可选。,购书申请=学号+(姓名)+书号+书名+数量学号=数字,(3)加工说明(PSPEC),三部分:输入数据、加工逻辑、输出数据描述不宜过细,过细就变成了设计,描述工具,结构化语言,判定表,判定树,结构化语言描述加工说明,把学生学号和姓名写到发票上检索“学生用书表”,获得该生当年书单对购书单上每一个书号,如果 书单上无此书号 则,把书号写到无效书单上,否则,检索“教材存量表”,获得该书的单价和库存如果 库存购数单*数量 则,把书号写到

7、无效书单上,否则,将书号、单价、数量、总价写入发票更新“教材存量表”的库存,累计书费合计,把书费合计写到发票上,判定表描述加工说明,判定树描述加工说明,奖金,10008%+500,10008%,工资 奖金,10005%+300,10005%,10006%+300,10006%,10004%+200,10004%,50%,50%,50%,50%,10000,10000,预收货款,推销金额,例题,一个加工用来完成商店促销活动中的金额计算,规定:消费不超过100元,享受8折;消费100-500,享受7折;消费超过500享受6折。且如果是会员则再减20。用判定树描述该加工说明,(4)E-R图,备注:若

8、关系没有属性,则可以省略,E-R图向数据表的转换,一对一:两个实体可合并成一个表,学生,床铺,1:1,0:1,学生学号,姓名,床铺号,上下,,E-R图向数据表的转换,一对多:两个实体分别转换成两个表,在“多”的标中建立指向“1”的表中的外关键字,部门,员工,1:n,1:1,部门编号,名称,职责,员工工号,姓名,性别,所在部门编号,E-R图向数据表的转换,多对多:两个实体分别转换成两个表,另建立一个新表保存它们之间的关系,新表中应包括这两个表的关键字及关系的属性,产品,原材料,1:n,1:n,产品产品编号,名称,价格,原材料原料编号,名称,价格,单耗产品编号,原料编号,单耗量,,例题,以我校为例

9、,画出学生、班级、课程、教师的E-R图,结构化分析方法,结构化分析(SA):一种面向数据流的分析方法基本步骤:由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,编制DD和PSPEC;最终写出SRS。,(1)画分层数据流图,从基本模型开始(整个系统是一个加工)逐层分解重复这种分解,直到加工足够简单(基本加工)由顶向下、逐步细化(求精),顶层数据流图,学生,教材购销系统,书库保管员,购书单,领书单,缺书单,进书通知,外部项,目标系统,发票,二层数据流图,学生,书库保管员,购书单,领书单,缺书单,进书通知,发票,三层数据流图销售子系统,学生,学生,1.1审查有效性,1.2开

10、发票,1.3打印发票,1.4登记售书打印领书单,1.5登记缺书,1.6产生补售书单,采购,F2缺书登记表,F1教材存量表,F4售书登记表,F3学生用书表,购书单,无效书单,有效书单,发票,发票,领书单,进书通知,补售书单,暂缺书单,三层数据流图采购子系统,2.1按书号汇总,2.2按出版社汇总,2.3进书处理,书库保管员,销售,F2缺书登记表,F1教材存量表,F5代购教材表,F6教材一览表,缺书单,进书通知,进书通知,分层DFD的优点,便于实现 逐步细化,避免一次引入过多细节,有利于控制问题的复杂度便于使用 便于阅读,有针对性,(2)确定数据定义与加工策略,从数据的终点开始,由后向前,领书单=学

11、号+姓名+书号+数量发票=学号+姓名+书号+单价+数量+总价+书费合计,1.4的PSPEC:从发票中提取数据生成领书单;登记售书,售书登记表=领书单=学号+姓名+书号+数量,确定数据定义和加工策略,有效购书单=学号+姓名+书号+数量,教材存量表=书号+单价+数量,1.2的PSPEC:核对存量;如果够则计算书费,并更新存量;如果不够则产生暂缺书单,暂缺书单=学号+姓名+书号+数量补售书单=学号+姓名+书号+数量缺书登记表=学号+姓名+书号+数量,(3)需求分析的复审,父图和子图的不平衡 父图和子图的输入数据和输出数据应分别保持一致,称为父子平衡。可以有“例外”未区分局部文件和局部外部项 各层负责

12、各层,保持图面简洁分解速度太快 每次分解24个,一般不超过7个不遵守加工编号规则,思考题,分析一个网上购物系统,其过程是:用户首先输入待购买商品名称(如:手机),然后在所有商品中选择自己中意的品牌(如:诺基亚8210)和欲购买的数量,系统检查库存,如果库存不够则提示用户交易失败,如果够就接受交易,并将订单显示给用户。其中:订单=商品名称+品牌+单价+数量+总价+交易时间 要求:1、画出分层数据流图 2、描述“接受交易”的加工说明 3、给出DFD中所有数据文件的数据定义,3.3模块化设计思想,把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块,叫做模块化设计分解模块独立性自顶

13、向下与由底向上设计,模块独立性,模块独立性由内聚和耦合来度量模块独立性越高,块内联系越强,块间联系越弱高内聚、低耦合,模块独立性,C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)分解的模块数量不能过大、也不能过小,内聚,偶然性内聚,功能性内聚,时间性内聚,逻辑性内聚,过程性内聚,顺序性内聚,通信性内聚,弱,强,(1)偶然性内聚,模块内各组成成分在功能上互不相关,组合纯属偶然,void m1()int i,j,k;i=2;j=m3()+2;,(2)逻辑性内聚,由若干个逻辑功能相似的成分组成,int calPoint(int flag)int ave,max,total

14、,num;total=num=0;FileReader fr=new FileReader(“c:/gradePoint.txt”);BufferedReader br=new BufferedReader(fr);String s=br.readLine();while(br.ready()if(flag=1)total+=Integer.parseInt(s);num+;else max=max Integer.parseInt(s)?max:Integer.parseInt(s);s=br.readLine();return flag=1?total/num:max,(3)时间性内聚,模

15、块内成分有相同的执行时间联结到一起,int calPoint(int flag)int ave,max,total,num;total=num=0;FileReader fr=new FileReader(“c:/gradePoint.txt”);BufferedReader br=new BufferedReader(fr);String s=br.readLine();while(br.ready()if(flag=1)total+=Integer.parseInt(s);num+;else max=max Integer.parseInt(s)?max:Integer.parseInt(

16、s);s=br.readLine();return flag=1?total/num:max,BufferedReader initFile()FileReader fr=new FileReader(“c:/gradePoint.txt”);BufferedReader br=new BufferedReader(fr);return br;int calPoint(int flag)int ave,max,total,num;total=num=0;BufferedReader br=initFile();,(4)过程性内聚,模块中包含一组任务必须按照某一特定的次序执行,int calPo

17、int(int flag)int ave,max,total,num;total=num=0;FileReader fr=new FileReader(“c:/gradePoint.txt”);BufferedReader br=new BufferedReader(fr);String s=br.readLine();while(br.ready()if(flag=1)total+=Integer.parseInt(s);num+;else max=max Integer.parseInt(s)?max:Integer.parseInt(s);s=br.readLine();return f

18、lag=1?total/num:max,int calAvePoint()int ave,total,num;total=num=0;BufferedReader br=initFile();String s=br.readLine();while(br.ready()total+=Integer.parseInt(s);num+;s=br.readLine();return total/num;int calMaxPoint(),(5)通信性内聚,模块内部各个成分都使用同一种输入数据,或者产生同一个输出数据。例如:Java里面的“类”,(6)顺序性内聚,各组成部分顺序执行,void copy

19、GradeFile()FileReader fr=new FileReader(“c:/in.txt”);BufferedReader br=new BufferedReader(fr);FileWriter fw=new FileWriter(“c:/out.txt”);BufferedWriter bw=new BufferedWriter(fw);while(br.ready()String s=br.readLine();bw.write(s);bw.newLine();System.out.println(s);,void copyLine(BufferedReader br,Buf

20、feredWriter bw)String s=br.readLine();bw.write(s);bw.newLine();System.out.println(s);void copyGradeFile()while(br.ready()copyLine(br,bw);,(7)功能性内聚,完成一个单一的功能功能性内聚模块可以很好地进行软件复用例如:JDK中的各个类String Integer,耦合,非直接耦合,内容耦合,特征耦合,数据耦合,控制耦合,公共耦合,外部耦合,弱,强,耦合,非直接耦合:模块间没有信息传递数据耦合:模块间交换的都是简单变量特征耦合:模块间交换的是数据结构控制耦合:模

21、块间传递的是控制信号外部耦合:模块间共享同一个全局变量公共耦合:模块间共享同一个全局数据结构内容耦合:一个模块可以直接调用另一个模块的数据,或者允许直接转移到另一个模块,3.4结构化设计,结构化设计(SD):面向数据流。注意力集中在模块的合理划分,得出体系结构图。适用于概要设计,从分析模型导出设计模型,DD,E-R,DFD,STD,控制说明,数据对象说明,加工说明,过程设计,接口设计,体系结构设计,数据设计,中心任务:DFD SC涵盖体系结构设计和接口设计,结构化设计方法,3.4.1 SC图组成,组成符号:模块、调用关系、数据流6种模块:,X,Y,传入,X,Y,传出,变换,X,Y,x,源,X,

22、漏,Y,x,控制,SC图中的模块调用,A,B,C,X,Y,Z,A,B,C,X,Y,Z,A,B,C,X,Y,Z,模块调用实例,1.2开发票,1.3打印发票,1.4登记售书打印领书单,发票,发票,领书单,1.1审查有效性,购书单,无效书单,有效书单,3.4.2 数据流图的类型与SD的步骤,变换型结构事务型结构,(1)变换型结构,由传入路径、变换中心、传出路径组成,变换中心,传入路径,传出路径,变换型实例,2.1按书号汇总,2.2按出版社汇总,书库保管员,F5代购教材表,F6教材一览表,缺书单,F2缺书登记表,F1教材存量表,(2)事务型结构,由接受路径、事务中心、动作路径组成,事务中心,接受路径,

23、动作路径,事务型实例,2接受订购,3检查库存,4接受交易,商品库存表,购买请求,有效购买请求,用户,无效请求,同时存在两种结构,传入,事务,传入,变换,传出,接受,传出,传出,分支的分辨方法,同时执行:变换只执行一条:事务,SD方法的步骤,复审DFD鉴别软件结构类型把DFD转换成SC 变换型DFD:变换映射 事务型DFD:事务映射优化SC,初始SC,变换映射,划分DFD图的边界建立初始SC图的框架分解SC图的分支,划分DFD图,A,B,C,D,E,P,R,Q,W,U,V,a,b,c,d,e,q,r,w,u,v,传入部分,变换中心,传出部分,建立SC图框架,MC,MA,MT,ME,c,e,c,e

24、,u,w,u,w,第一级分解,顶层,第一层,分解传入分支,MA,C,E,B,D,A,c,e,c,e,b,a,d,MA,Get C,Get E,Get B,Read A,c,e,c,e,b,a,B To C,A To B,a,b,b,c,Read D,d,D To E,d,e,优化,分解传出分支,ME,W,U,V,u,w,w,u,v,ME,Write W,Put U,w,u,U To V,v,Write V,v,优化,u,w,u,分解中心加工分支,MT,Q,P,R,e,c,p,r,u,w,p,r,合成初始SC图,MC,MA,Get C,Get E,Get B,Read A,B To C,A To

25、 B,Read D,D To E,MT,Q,P,R,ME,Write W,Put U,U To V,Write V,事务映射,确定事务中心、接受部分和发送部分建立初始SC图的框架分解SC图的分支,识别各部分,事务,传入,变换,传出,接受,接受部分,事务中心,发送部分,a,b,c,d,e,f,画出SC图框架,事务控制,接受,发送,分解,根据各分支的特性进行变换映射或事务映射动作分支可划分为处理层、事务层、操作层、细节层大型系统往往变换型和事务型交织在一起的混合结构,分解,事务控制,接受,发送,a,a,b,结构化设计的优化原则,模块分割、合并和变动调用关系的原则 高内聚 低耦合 控制模块大小 10

26、100行 不必拘泥于和DFD图的对应,结构化设计的优化原则,保持高扇入/低扇出的原则 扇入:被其他模块调用数 扇出:调用其他模块数 高扇入:模块利用率高 低扇出:模块调用和控制的复杂度低 通过增加中间层降低扇出 瓮型结构,教材购销系统实例,学生,学生,1.1审查有效性,1.2开发票,1.3打印发票,1.4登记售书打印领书单,1.5登记缺书,1.6产生补售书单,采购,F2缺书登记表,F1教材存量表,F4售书登记表,F3学生用书表,购书单,无效书单,有效书单,发票,发票,领书单,进书通知,补售书单,暂缺书单,教材购销系统实例,2.1按书号汇总,2.2按出版社汇总,2.3进书处理,书库保管员,销售,

27、F2缺书登记表,F1教材存量表,F5代购教材表,F6教材一览表,缺书单,进书通知,进书通知,实例复审并修改DFD,学生,学生,1.1审查有效性,1.2审查库存,1.4打印发票,1.7打印领书单,1.5登记缺书,1.6产生补售书单,采购,F2缺书登记表,F1教材存量表,F4售书登记表,F3学生用书表,购书单,无效书单,有效书单,发票,领书单,进书通知,补售书单,1.3登记售书,1.8登记,框架,销售子系统分界,学生,学生,1.1审查有效性,1.2审查库存,1.4打印发票,1.7打印领书单,1.5登记缺书,1.6产生补售书单,采购,F2缺书登记表,F1教材存量表,F4售书登记表,F3学生用书表,购

28、书单,无效书单,有效书单,发票,领书单,进书通知,补售书单,暂缺书单,1.3登记售书,1.8登记,销售子系统,采购子系统(略)优化(略),3.5 模块设计(详细设计),目的与任务原则与方法表达工具实例,目的与任务,目的:为软件结构图中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出更清晰地描述,任务,确定算法,写出详细过程性描述,确定数据结构,确定接口细节(内、外部接口,用户界面,接口数据等),编写过程设计说明书,编写测试用例(输入数据,操作步骤,期望输出等),过程设计的原则与方法,清晰第一 禁用GOTO结构化的控制结构 3种基本结构 单入口、单出口逐步细化,3.5.3 常用表达工具,流程图和N-S图伪代码和PDL语言,例题,int i=1;int j=1;while(i 100,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号