当前位置:文档之家› 《软件工程》教案-05 结构化分析与设计

《软件工程》教案-05 结构化分析与设计

山东轻工业学院教师授课教案

课程名称:软件工程

课程代码:0310040

学分: 3

课程类别:选修课

开课单位: 信息科学与技术学院

授课班级:计科07-12

授课教师:赵培英

山东轻工业学院教务处制

第五章结构化分析与设计

一、结构化分析概述

1.主要思想:

抽象: 从作为整体的软件系统开始, 每一抽象层次上只关注于系统的输入输出

分解: 自顶向下逐层分解, 不断分解为子系统, 模块……

随着分解层次的增加,抽象的级别越来越低,也越接近问题的解( 算法和数据结构) 2.结构化分析过程

•获得当前系统的具体模型(物理模型)

•抽象出当前系统的逻辑模型

•分析建立目标系统的逻辑模型

•为目标系统的逻辑模型作补充

3.结构化分析模型

•DD:核心,包含所有数据的描述

•DFD:用于功能建模,描述系统的输入数据流如何经过一系列的加工变换逐步变换成系统的输出数据流

•ERD:用于数据建模,描述DD中数据之间的关系

•状态转换图:用于行为建模,描述系统接收哪些外部事件,以及在外部事件的作用下的状态迁移情况

二、数据流图

1.Data Flow Diagram(简称DFD):

•描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模。

•基本元素包括:p88图

示例:图书订购系统DFD

•数据流图的扩充符号:描述一个加工的多个数据流之间的关系

星号(*):表示数据流之间存在“与”关系

加号(+):表示数据流之间存在“或”关系

异或(⊕):表示数据流之间存在“异或”(互斥)关系

2.对数据流图进行分层

•George Miller在著名的论文“神奇的数字7加减2:我们处理信息的能力的某种限制”中指出:人们在一段时间内的短期记忆似乎限制在5~9件事情之内

•根据自顶向下逐层分解的思想将数据流图画成层次结构

•每个层次画在独立的数据流图中,加工个数可大致控制在“7加减2”的范围中

3.数据流图的各个层次

•顶层图只有代表整个软件系统的1个加工,描述了软件系统与外界(源或宿)之间的数据流•顶层图中的加工经分解后的图称为0层图(只有1张)

•中间层图中至少有一个加工(也可以有多个)在下层图中分解成一张子图

•处于最底层的图称为底层图,其中所有的加工不再分解成新的子图

4.图和加工的编号

•顶层图只有一个代表整个软件系统的加工,该加工不必编号。

•0层图中的加工编号分别为1,2,3,…

•子图号:若父图中的加工号x分解成某一子图,则该子图号记为“图x”

•子图中加工的编号:若父图中的加工号为x的加工分解成某一子图,则该子图中的加工编号分别为x.1、x.2、x.3…

5.分层数据流图画法示例——资格和水平考试的考务处理系统

•简化的资格和水平考试的考务处理系统

•分成多个级别,如初级程序员、程序员、高级程序员、系统分析员等,凡满足一定条件的考生都可参加某一级别的考试

•考试的合格标准将根据每年的考试成绩由考试中心确定

•考试的阅卷由阅卷站进行,因此,阅卷工作不包含在软件系统中

资格和水平考试的考务处理系统

—功能需求

1).对考生送来的报名单进行检查

2).对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷

3).对阅卷站送来的成绩清单进行检查,并根据考试中心制订的合格标准审定合格者

4).制作考生通知单送给考生

5).进行成绩分类统计(按地区、年龄、文化程度、职业、考试级别等分类)和试题难度分

析,产生统计分析表

资格和水平考试的考务处理系统

—部分数据流的组成

•报名单=地区+序号+姓名+文化程度+职业+考试级别+通信地址

•正式报名单=准考证号+报名单

•准考证=地区+序号+姓名+准考证号+考试级别+考场

•考生名单={准考证号+考试级别},其中{w}表示w重复多次

•考生名册=正式报名单

•统计分析表=分类统计表+难度分析表

•考生通知单=准考证号+姓名+通信地址+考试级别+考试成绩+合格标志

(1).画系统顶层图

确定源或宿确定加工确定数据流顶层图通常没有文件

(2).画系统0层图

•以下确定加工、数据流、文件、源或宿的一般方法适用于0层图及其各层子图

•确定加工:指父图中某加工分解的子加工

根据功能分解来确定加工:将一个复杂的功能分解成若干个较小的功能,较多应用于高层DFD中的分解

根据业务处理流程确定加工:父图中待分解加工的业务处理流程中的每一步都可能是一个子加工,较多应用于低层DFD中的分解

特别要注意在业务流程中数据流发生变化或数据流的值发生变化的地方,应该存在一个加工,例如:图5.6

•确定数据流

在父图中某加工分解而成的子图中,父图中相应加工的输入/输出数据流都是且仅是子图边界上的输入/输出数据流

分解后的子加工之间应增添相应的新数据流表示加工过程中的中间数据

如果某些中间数据需要保存以备后用,那么可以成为流向文件的数据流

同一个源或加工可以有多个数据流流向一个加工,如果它们不是一起到达和一起加工的,那么可以将它们分成若干个数据流,例如:图5.7

•确定文件

如果父图中该加工存在读写文件的数据流,则相应的文件和数据流都应画在子图中

在分解子图中,如需要保存某些中间数据以备后用,则可将这些数据组成一个新文件 新文件( 首次出现的文件) 至少应有一个加工为其写入记录,同时至少存在另一个加工来读该文件的记录

注意:从父图中继承下来的文件在子图中可能只对其进行读,或只进行写

•确定源和宿

0层图和其它子图中通常不必画出源和宿

有时为了提高可读性,可以将顶层图中的源和宿画在0层图中

•案例分析:最终得到考务处理系统0 层图

根据功能分解方法识别出两个加工:考试报名、统计成绩

数据流

◆继承顶层图中的输入数据流和输出数据流

◆定义二个加工之间的数据流:由于这二个加工分别在考试前后进行,因此登记报

名单所产生的结果“考生名册”应作为文件保存以便考试后由统计成绩加工引用(3).加工细化(1…n层图)

•复杂的加工可以继续分解成1张DFD子图,分解方法

将该加工看作一个小系统,该加工的输入/输出数据流就是这个假设的小系统的输入/输出数据流

然后采用画0层图的方法,画出该加工的子图

•以0层图中加工1(考试报名)为例

根据业务处理流程来确定由加工1 的分解

与加工1 相关的业务流程:首先检查考生送来的报名单,然后编准考证号,并产生准考证,最后产生考生名单和考生名册( 文件)

加工1(考试报名)子图

◆3个子加工:检查报名单、编准考证号、登记考生

◆“合格报名单”和“正式报名单”是新增加的数据流,其它数据流都是加工1原

有的

◆在加工1的分解中没有新的文件产生

•加工2(统计成绩)子图

总结:画分层数据流图的步骤

•1.画系统的输入和输出,得顶层图

•2.画系统内部,得0层图

•3.画加工内部,得到各级子图

•4.重复第3步,直至每个尚未分解的加工都足够简单(即不必再分解)

三、分层数据流图的审查

•分层数据流图的一致性和完整性

一致性:分层DFD中不存在矛盾和冲突

完整性:分层DFD本身的完整性,即是否有遗漏的数据流、加工等元素•需注意的问题

•分解的程度

1.分层数据流图的一致性

1).父图与子图平衡:任何一张DFD子图边界上的输入/输出数据流必须与其父图中对应的

加工的输入/输出数据流保持一致

2).数据守恒

◆一个加工所有输出数据流中的数据,必须能从该加工的输入数据流中直接获

得,或者能通过该加工的处理而产生

◆多余的数据流:加工未使用其输入数据流中的某些数据项

3).局部文件:考虑分层数据流中一个文件应画在哪些DFD中,而不该画在哪些DFD中

◆任何一个文件都应同时包含读和写该文件的数据流,除非该文件是当前系统

与另一个软件系统所共享(应在需求说明中指明)

◆在一张DFD中当一个文件作为若干个加工之间的交界面(一个写另一个读)

时该文件应画出

◆在一张DFD中当一个文件仅与一个加工进行读写操作,并且在该DFD的父

(祖先)图中未出现过该文件则该文件是相应加工的内部文件,在当前DFD中

不应画出

◆一个文件一旦在某张DFD中画出,那么在它的子孙图中应根据父图与子图平

衡的原则画出该文件

◆在子孙图中,这个文件可能只有读或写文件中的一种数据流

4).一个加工的输出数据流不能与该加工的输入数据流同名

案例分析:

父图与子图不平衡的实例:加工2的输入数据流有M和N,输出数据流是T;而子图(右图)边界上的输入数据流是N,输出数据流是S和T

父图与子图平衡的实例:如果父图某加工的一个数据流,对应于子图中几个数据流,而子图中组成这些数据流的数据项全体正好等于父图中的这个数据流,那么它们仍算是平衡的

数据不守恒的实例:由于“正式成绩清单”中缺少“考生通知单”中的姓名、通信地址等数据,这些数据也无法由加工2.3自己产生,因此,加工2.3不满足数据守恒的条件 局部文件示例:“试题得分清单”文件是加工2的局部文件,根据抽象原则不应该将这类表示加工细节的局部文件画在其父图(如图c)中,正确的画法是图a和b

2.分层数据流图的完整性

每个加工至少有一个输入数据流和一个输出数据流

在整套分层数据流中,每个文件应至少有一个加工读该文件,有另一个加工写该文件 分层数据流图中的每个数据流和文件都必须命名(除了流入或流出文件的数据流),并保持与数据字典的一致

分层DFD中的每个基本加工(即不再分解子图的加工)都应有一个加工规约

3.构造分层DFD需注意的问题

适当命名

画数据流而不是画控制流:判断准则:这条线上是否有数据流过

避免一个加工有过多的数据流:

◆当一个加工存在许多数据流时往往意味着分解不合理

◆解决办法:重新分解

•1)把需重新分解的某张图(含有该复杂加工的图)的所有子图连接成一张图

•2)把连接后的图重新划分成几个部分,使各部分之间的联系最小

•3)重新定义父图,即第2)步中的每个部分作为父图中的一个加工

•4)重新建立各子图,即第2)步中的每个部分都是一张子图

•5)为所有的加工重新命名和编号

分解尽可能均匀

◆理想目标:任何两个加工的分解层数之差不超过1

◆应尽可能使分解均匀,对于分解不均匀的情况应重新分解

先考虑稳定状态,忽略琐碎的枝节:先考虑稳定状态下的各种问题,暂时不考虑系统如何启动、如何结束、出错处理以及性能等问题

随时准备重画:对于一个复杂的软件系统,往往要经过反复多次的重画和修改才能构造出完整、合理、满足用户需求的分层DFD

4.分解的程度

•可参照以下几条与分解有关的原则:

7加减2

分解应自然,概念上合理、清晰

只要不影响DFD的易理解性,可适当多分解几个加工,以减少层数

一般,上层分解得快些(即多分解几个加工),下层分解得慢些(即少分解几个加工) 分解要均匀

四、数据字典

•数据流图与数据字典是密不可分的,两者结合起来构成软件的逻辑模型(分析模型)

•数据字典由字典条目组成,每个条目描述DFD中的一个元素

•数据字典条目包括:数据流、文件、数据项(组成数据流和文件的数据)、加工、源或宿 加工逻辑的详细说明可以用“小说明”来描述(5.5节)

数据字典的描述符号p105

各类字典条目

•不同的开发组织或团队可以根据项目的需要定义字典条目的描述内容

•字典条目中的描述内容主要包括

DFD元素的基本信息(名称、别名、简述、注解)

定义(数据类型、数据组成)

使用特点(取值范围、使用频率、激发条件)

控制信息(来源、去向、访问权限)等

五、描述基本加工的小说明

•小说明是基本加工的规约说明,应精确地描述用户要求一个加工“做什么”

•包括加工的激发条件、加工逻辑、优先级、执行频率、出错处理等

•最基本的部分是加工逻辑,即该加工的输出数据流与输入数据流之间的逻辑关系

•加工逻辑不是对加工的设计,不涉及数据结构、算法实现、编程语言等与设计和实现有关的细节

加工逻辑的描述方法

•结构化语言:介于自然语言和形式语言之间的一种半形式语言

•判定表:适用于加工逻辑包含多个条件,而不同的条件组合需做不同的动作

•判定树:判定表的变种,它本质上与判定表是相同的,只是表示形式不同

七、结构化设计概述

•结构化设计(Structured Design,简称SD)是将结构化分析得到的数据流图映射成软件体系结构的一种设计方法

•强调模块化、逐步求精、信息隐蔽、高内聚低耦合等设计准则

•分为概要设计和详细设计两大步骤

1.结构图

1)基本知识

•用结构图(Structure Chart)来描述软件系统的体系结构

•描述一个软件系统由哪些模块组成,以及模块之间的调用关系

•结构图的基本成分有:模块、调用和数据

2)结构图中的辅助符号

3)结构图的几个概念

•深度:程序结构图中控制的层数

•宽度:程序结构图中同一层次上模块总数的最大值

•扇出(fan out):该模块直接调用的模块数目。

•扇入(fan in):能直接调用该模块的模块数目。

相关指标的含义

•深度和宽度在一定程序上反映了程序的规模和复杂程度

深度和宽度较大,说明程序的规模和复杂程度都较大。

模块的扇入扇出会影响结构图的深度和宽度

一个模块扇出过大通常意味着该模块比较复杂,然而扇出太少,可能导致深度的增加 一般情况,一个模块的扇出以3~9为宜

一个模块的扇入表示有多少模块可直接调用它,它反映了该模块的复用(reuse) 程度,因此模块的扇入越大越好

2.启发式设计策略

按照模块化设计原则,相应的启发式设计策略如下:

•改造程序结构图,降低耦合度,提高内聚度

•避免高扇出,并随着深度的增加,力求高扇入

•模块的影响范围应限制在该模块的控制范围内(p118)

•降低模块接口的复杂程度和冗余程度,提高一致性:模块接口上应尽可能传递简单数据,而且传递的数据应保持与模块的功能相一致,即不传递与模块功能无关的数据

•模块的功能应是可预测的,避免对模块施加过多的限制

模块功能可预测是指该模块对相同的输入能产生相同的输出

限制一个模块只处理单一的功能,那么,这个模块体现出高内聚

•尽可能设计单入口和单出口的模块:单入口和单出口的模块能有效地避免内容耦合

3.结构化设计的步骤

•建立初始结构图:将DFD映射到结构图

•对结构图进行改进:可根据设计准则和启发式设计策略对初始结构图进行改进

•书写设计文档:书写设计规格说明,特别为每个模块书写功能、接口、约束和限制等

•设计评审

八、数据流图到软件体系结构的映射

•结构化设计是将结构化分析的结果(数据流图)映射成软件的体系结构(结构图)

•将DFD分为变换型数据流图和事务型数据流图,对应映射分别称为变换分析和事务分析•分层DFD的映射

1. 信息流:分为变换流与事务流

•变换流特征:数据流图可明显地分成输入、变换、输出三部分

•事务流特征:数据流沿着输入路径到达一个事务中心,事务中心根据输入数据的类型在若干条动作路径中选择一条来执行。事务中心的任务是:接收输入数据(即事务);分析每个事务的类型;根据事务类型选择执行一条动作路径。实例:银行业务中有存款、取款、查询余额、开

户、转帐等多种事务

2.数据流图映射到结构图的步骤

•复审和精化数据流图

•确定数据流图的类型(变换型、事务型)

•将DFD映射成初始结构图:采用变换分析(5.7.3节)或事务分析(5.7.4节)技术,将DFD 映射成初始结构图

•改进初始结构图(5.8节)

3.变换分析

•变换分析的任务是将变换型的DFD映射成初始的结构图,步骤如下:

划定输入流和输出流的边界,确定变换中心

进行第一级分解:将DFD映射成变换型的程序结构

进行第二级分解:将DFD中的加工映射成结构图中的一个适当的模块

标注输入输出信息:根据DFD,在初始结构图上标注模块间传递的输入输出信息

1.确定输入/出流边界和变换中心

•相关概念:

物理输入/出:指系统输入/出端的数据流

逻辑输入/出:指变换中心的输入/出数据流

•基本步骤

确定逻辑输入:根据DFD从物理输入端开始,一步步向系统的中间移动,可找到离物理输入端最远的,但仍可被看作系统输入的那个(或那些)数据流,就是逻辑输入

确定逻辑输出:根据DFD,从物理输出端开始,一步步向系统的中间移动,可找到离物理输出端最远的,但仍可被看作系统输出的那个(或那些)数据流,就是逻辑输出

确定变换中心:确定了所有的逻辑输入和逻辑输出后,位于逻辑输入和逻辑输出之间的部分就是变换中心

示例:统计成绩子图的输入、输出流边界

2.进行第一级分解

•将DFD映射成变换型的程序结构,p124图5.30

3.进行第二级分解

•将DFD中的加工映射成结构图中的一个适当的模块

•分解步骤如下

输入控制模块的分解:从变换中心的边界开始,沿着输入路径向外移动,把输入路径上的每个加工映射成结构图中受输入控制模块控制的一个低层模块

输出控制模块的分解:从变换中心的边界开始,沿着输出路径向外移动,把输出路径上的每个加工映射成结构图中受输出控制模块控制的一个低层模块

变换控制模块的分解:把变换中心的每个加工映射成结构图中受变换控制模块控制的一个低层模块

4.事务分析

•任务:将事务型DFD映射成初始的结构图

•事务型的结构图如图所示,包括:

主控模块:完成整个系统的功能

接收模块:接收输入数据(事务)

发送模块:根据输入事务的类型,选择一个动作路径控制模块

动作路径控制模块:完成相应的动作路径所执行的子功能

事务分析的步骤

•确定事务中心:事务中心位于数条动作路径的起点,这些动作路径呈幅射状从该点流出•将DFD映射成事务型的结构图

•分解每条动作路径所对应的结构图

接收模块的分解:从事务中心开始,沿着输入路径向外移动,把输入路径上的每个加工映射成结构图中受接收模块控制的一个低层模块

动作路径控制模块的分解:首先确定每条动作路径的流类型(变换流或事务流),然后,运用变换分析或事务分析,将每条动作路径映射成与其流特性相对应的以动作路径控制模块为根模块的结构图

5.分层DFD的映射

•0层图反映了系统由哪些子系统组成,此时可先将0层图映射成下图中的结构

•0层图每个加工的DFD子图可映射成以相应模块为根模块的结构子图

•如果DFD子图中的加工还可分解成一张子图,则再将其映射成以相应模块为根模块的结构子图

•依次一层一层分解下去得到最终的初始结构图

•如果初始结构图太大,我们也可以将它组织成分层的结构图

案例分析:“考务处理系统”的初始结构图如书中图5.35所示

九、初始结构图的改进

•改进依据:软件设计的准则和启发式设计策略

•改进往往不是一次完成的,需要进行多次的反复,有时还需要在多个改进方案进行选择1.改进实例

1).“考试报名”结构图的改进

•“考试报名”部分的结构图:

“输入报名单”模块比较简单,可以和“检查报名单”合并

将“打印报名单出错信息”模块合并到“检查报名单”模块,降低模块间的耦合度 最终三者合并为“输入并检查报名单”

•准考证在“编准考证号”模块产生,一直要到“打印准考证”模块才使用,因此可以将二者合并成“编制并打印准考证”

•“登记考生”和“输出考生名单”也可合并成“登记并输出考生名单”

•“输出控制”模块的作用是调用三个输出模块,现在这三个输出模块都合并到其它模块中去了,因此,“输出控制”可以删去

•对于“输入控制模块”和“报名处理”模块,它们除了调用低层模块并传递参数外,没有其它实质性的工作,这种模块称为管道模块,可以将其删除,其低层模块改由其上层模块调用2).“统计成绩”结构图的改进

•先将一些比较简单的模块合并到与其功能相一致的模块中,以减少耦合度 将“输入成绩清单”、“检查成绩清单”、“打印成绩单出错信息”合并成“输入并检查成绩清单”

将“输入合格标准”与“审定合格者”合并,仍取名“审定合格者”,但它包含读入合格标准功能

将“产生考生通知单”与“打印考生通知单”合并成“产生并打印考生通知单”

•降低模块间的耦合程度

将“打印难度分析表”模块和“打印分类统计表”模块分别作为“分析试题难度”模块和“分类统计成绩”模块的下属模块

•删去“统计成绩输出控制”

•“统计成绩输入控制”模块和“统计成绩处理模块”均为“管道”模块,也可删去

局部改进后的“考务处理系统”结构图

3).“考务处理系统”结构图的整体改进

•考虑到分析试题难度和分类统计成绩是相对独立的功能,因此将它们移到主控模块下•“考试报名”模块和“统计成绩”模块似乎是管道模块,但删去后主控模块“考务处理系统”的扇出就比较大,因此可不删除

2.结构图改进技巧

•减少模块间的耦合度

•消除重复功能

•消除“管道”模块

•模块的大小适中

•避免高扇出

•应尽可能研究整张结构图,而不是只考虑其中的一部分

软件工程中的结构化程序设计

软件工程中的结构化程序设计 软件工程的基本思想是面对复杂的问题,让软件的开发按照工程的概念、原理、技术和方法模式来实施,有计划地按照要求分阶段实现。针对大型项目开发,为了保证软件产品质量,提高软件开发效率,在进行详细设计、程序设计之前,必须先确定软件总体结构。软件总体结构设计的方法主要有结构化设计、面向数据结构的设计和面向对象的设计,其中结构化设计方法是应用最广泛的一种,它是建立良好程序结构的方法,提出了衡量模块质量的标准是“高内聚、低耦合”。 另外,结构化设计(structured design,SD)方法是一种面向过程的设计方法或面向数据流的设计方法,它可以与结构化分析方法、结构化程序设计(structured programming)方法前后呼应,形成了统一、完整的系列化方法。结构化设计方法以需求分析阶段获得的数据流图为基础,通过一系列映射,把数据流图变换为软件结构图。 结构化程序设计通常使用自上往下的设计模型,开发员将整个程序结构映射到单个小部分。已定义的函数或相似函数的集合在单个模块或字模块中编码,这意味着,代码能够更有效的载入存储器,模块能在其它程序中再利用。模块单独测试之后,与其它模块整合起来形成整个程序组织。 程序流程遵循简单的层次化模型,采用“for”、“while”等循环结构。几乎任何语言都能使用结构化程序设计技术来避免非结构化语言的通常陷阱。非结构化程序设计必须依赖于开发人员避免结构

问题,从而导致程序组织较差。大多数现代过程式语言都鼓励结构化程序设计。 结构化设计主要有两种图形工具:结构图和层次图。结构图和层次图基本上是大同小异,都是用来描述软件结构的图形工具,图中设有很多方框,一个方框就代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)用来表示模块的调用关系。二者描述重点不一样。 1.结构图 结构图主要描述软件结构中模块之间的调用关系和信息传递问题。基本成分有模块、调用和数据。 在通常情况下会在结构图中用箭头注释一下表示模块在调用过程中信息的来回传递。可以根据箭头的尾部形状标明某种信息,认定一种形状作为一种信息符号,自己只要按箭头形状就可以区分传递的信息是数据还是控制信息了。比如:尾部是空心圆就表示传递的是数据,实心圆就表示传递的是控制信息。结构图不仅仅只是一些基本符号,其实还有不少附加符号,用来表示模块的选择调用或循环调用的。 2.层次图 层次图主要描述软件系统的层次结构以及各个功能的隶属关系,特别适合于自顶向下设计使用。在层次图里除顶层之外,每个方框里都加编号,记录它所在的层次及在该层次的位置。一般最上层的模块含有退出、输入、处理、输出、查询和系统维护模块。根据系统的具体要求,下层再将功能进一步细化。

《软件工程》教案-05 结构化分析与设计

山东轻工业学院教师授课教案 课程名称:软件工程 课程代码:0310040 学分: 3 课程类别:选修课 开课单位: 信息科学与技术学院 授课班级:计科07-12 授课教师:赵培英 山东轻工业学院教务处制

第五章结构化分析与设计 一、结构化分析概述 1.主要思想: 抽象: 从作为整体的软件系统开始, 每一抽象层次上只关注于系统的输入输出 分解: 自顶向下逐层分解, 不断分解为子系统, 模块…… 随着分解层次的增加,抽象的级别越来越低,也越接近问题的解( 算法和数据结构) 2.结构化分析过程 •获得当前系统的具体模型(物理模型) •抽象出当前系统的逻辑模型 •分析建立目标系统的逻辑模型 •为目标系统的逻辑模型作补充 3.结构化分析模型 •DD:核心,包含所有数据的描述 •DFD:用于功能建模,描述系统的输入数据流如何经过一系列的加工变换逐步变换成系统的输出数据流 •ERD:用于数据建模,描述DD中数据之间的关系 •状态转换图:用于行为建模,描述系统接收哪些外部事件,以及在外部事件的作用下的状态迁移情况 二、数据流图 1.Data Flow Diagram(简称DFD): •描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模。 •基本元素包括:p88图 示例:图书订购系统DFD •数据流图的扩充符号:描述一个加工的多个数据流之间的关系 星号(*):表示数据流之间存在“与”关系 加号(+):表示数据流之间存在“或”关系 异或(⊕):表示数据流之间存在“异或”(互斥)关系 2.对数据流图进行分层 •George Miller在著名的论文“神奇的数字7加减2:我们处理信息的能力的某种限制”中指出:人们在一段时间内的短期记忆似乎限制在5~9件事情之内 •根据自顶向下逐层分解的思想将数据流图画成层次结构 •每个层次画在独立的数据流图中,加工个数可大致控制在“7加减2”的范围中 3.数据流图的各个层次 •顶层图只有代表整个软件系统的1个加工,描述了软件系统与外界(源或宿)之间的数据流•顶层图中的加工经分解后的图称为0层图(只有1张) •中间层图中至少有一个加工(也可以有多个)在下层图中分解成一张子图 •处于最底层的图称为底层图,其中所有的加工不再分解成新的子图 4.图和加工的编号 •顶层图只有一个代表整个软件系统的加工,该加工不必编号。 •0层图中的加工编号分别为1,2,3,… •子图号:若父图中的加工号x分解成某一子图,则该子图号记为“图x” •子图中加工的编号:若父图中的加工号为x的加工分解成某一子图,则该子图中的加工编号分别为x.1、x.2、x.3…

《软件工程》课程辅导5

第五章详细设计 一、详细设计的任务 详细设计的目的是为软件结构图(SC图或HC图)中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。 这一阶段的主要任务: 1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述; 2.确定每一模块使用的数据结构; 3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。 在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。交付给下一阶段(编码阶段)的工作依据。 4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。 二、详细设计的原则 1.由于详细设计的蓝图是给人看的,所以模块的逻辑描述要清晰易读、正确可靠。 2.采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。其基本内容归纳为如下几点。 (1) 程序语言中应尽量少用GOTO语句,以确保程序结构的独立性。 (2) 使用单人口单出口的控制结构,确保程序的静态结构与动态执行情况相一致。保证程序易理解。 (3) 程序的控制结构一般采用顺序、选择、循环三种结构来构成,确保结构简单。 (4) 用自顶向下逐步求精方法完成程序设计。结构化程序设计的缺点是存储容量和运行时间增加10-20%,但易读易维护性好。 (5) 经典的控制结构为顺序,IF THEN ELSE分支,DO-WHILE循环。扩展的还有多分支CASE,DO-UNTIL循环结构,固定次数循环DOWHILE。 3.选择恰当描述工具来描述各模块算法。 三、详细设计的方法 详细设计的工具: 1.图形工具 利用图形工具可以把过程的细节用图形描述出来。 2.表格工具 可以用一张表来描述过程的细节,在这张表中列出了各种可能的操作和相应的条件。 3.语言工具 用某种高级语言(称之为伪码)来描述过程的细节。 四、程序流程图 程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。因此,至今仍是软件开发者最普遍采用的一种工具。 流程图也存在一些严重的不足。 流程图中只能使用下述的五种基本控制结构。

软件工程教案

软件工程教案 课程名称:软件工程 课程代码:SE001 课时安排:40学时(每周2学时,共20周) 课程目标: 1. 熟悉软件工程的基本概念和原理,了解软件工程的整体过程和各个阶段; 2. 掌握软件需求分析、软件设计、软件开发和软件测试等基本方法和技术; 3. 培养学生的软件开发能力和团队协作能力; 4. 培养学生的软件项目管理和质量控制意识。 教学内容: 第一单元:软件工程概述 1.1 软件工程的定义和发展历程 1.2 软件工程的基本概念和原理 1.3 软件工程的生命周期 第二单元:软件需求分析 2.1 需求工程的基本概念 2.2 需求获取和需求分析方法 2.3 需求规格说明书的编写 2.4 需求验证和需求管理

第三单元:软件设计 3.1 软件设计的基本原则和方法 3.2 结构化设计和面向对象设计 3.3 软件设计工具的使用 第四单元:软件开发 4.1 软件开发过程和方法 4.2 编程语言和开发环境的选择 4.3 编码规范和代码质量控制 4.4 软件版本控制和配置管理 第五单元:软件测试 5.1 软件测试的基本概念和原理 5.2 测试方法和技术 5.3 测试工具的使用 5.4 测试计划和测试报告的编写 教学方法: 1. 理论教学与实践相结合,通过案例分析和小组项目实践进行课堂讨论和演练; 2. 引导学生逐渐独立完成一个小规模软件项目,锻炼团队合作和项目管理能力; 3. 借助软件工程相关工具和平台,进行实际软件开发和测试。 考核方式: 1. 平时表现(出勤、参与讨论等)占20%;

2. 课堂小测或作业占30%; 3. 小组项目实践报告占30%; 4. 期末考试占20%。 参考教材: 1. 《软件工程导论》第7版,Pressman R.S.,机械工业出版社; 2. 《软件项目管理案例教程》第5版,佚名,高等教育出版社; 3. 《软件测试导论与实践》第3版,李晓红等,机械工业出版社。 备注:教案仅供参考,实际教学中可根据教学资源和学生情况进行适当调整和优化。

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

软件工程结构化分析与设计 软件工程结构化分析与设计 简介 软件工程结构化分析与设计(Software Engineering Structured Analysis and Design)是软件工程的重要环节之一,旨在将复杂的软件系统分解为相对简单的模块,从而便于理解、开发和维护。 结构化分析 结构化分析是软件工程中的一种需求分析方法,通过对用户需求进行分析,将系统功能划分为不同的模块,以及模块之间的关系和交互。 结构化分析采用基于流程图的图形化表示方法,通常使用数据流图(Data Flow Diagram,简称DFD)来描述系统的功能流程。 结构化设计 结构化设计是在结构化分析的基础上,进一步定义每个模块内部的结构和功能。它将模块细化为更小的子模块,通过设计各个模块之间的接口和通信方式,确保系统能够协调运作。

结构化设计通常使用结构图来表示系统的模块组织结构,其中最常见的就是层次图(Hierarchy Chart)和结构图(Structure Chart)。 优势与挑战 结构化分析与设计的主要优势在于可以将复杂系统分解为简单的模块,使得系统的开发和维护更加容易。结构化分析与设计还能够提高系统的可靠性和可扩展性。 ,结构化分析与设计也面临一些挑战。结构化分析与设计需要面对不断变化的需求,需要具备较好的适应性和灵活性。结构化分析与设计也需要考虑系统的性能、安全性等方面的需求,以保证系统能够满足用户的要求。 软件工程结构化分析与设计是软件工程中重要的一环,通过将复杂的系统分解为简单的模块,并设计模块之间的关系和接口,实现系统的有效开发和维护。 结构化分析与设计能够提高系统的可靠性、可扩展性和易开发性,但也需要面对需求变化和其他挑战。 希望通过软件工程结构化分析与设计,我们可以开发出更好的软件系统,满足用户的需求。

大学软件工程教案

大学软件工程教案 一、教材名称及编写者 《软件工程》是由清华大学计算机科学与技术系李国杰、贾仕武、林晓斌三位教师共 同编写完成的。 二、教学目标 通过本课程的学习,学生应该达到以下目标: 1.掌握软件工程的基本概念和理论知识,理解软件开发的过程和方法。 2.了解软件工程各阶段的活动和主要工作内容,能够进行软件需求分析、设计、编码、测试等基本工作。 3.掌握常用的软件开发工具和技术,能够熟练运用软件开发工具和技术解决实际问题。 4.能够编写符合软件工程规范的软件产品,具备软件设计和项目管理的能力。 三、教学内容 1.软件工程引论 1.1 软件工程的起源和发展 1.2 软件危机和软件生命周期模型 1.3 软件过程和软件度量 2.软件需求分析 2.1 软件需求的定义和分类 2.2 软件需求获取和分析方法 2.3 软件需求文档的编写 3.软件设计 3.1 软件设计的原则和方法 3.2 结构化设计和面向对象设计 3.3 UML和设计模式

4.软件编码 4.1 编程语言和编程工具 4.2 编码规范和编码风格 4.3 软件测试和调试 5.软件测试 5.1 测试的基本概念和分类 5.2 测试计划和测试策略 5.3 测试方法和工具 6.软件维护 6.1 软件维护的定义和类型 6.2 软件维护的过程和方法 6.3 软件重构和重用 7.软件项目管理 7.1 软件项目的定义和特点 7.2 软件项目的组织和管理 7.3 软件质量保证和评审 四、教学方法 本课程采用讲座教学与案例分析相结合的教学方法,对软件工程的各个阶段进行深入讲解,并通过具体案例分析进行实际操作,加深学生对软件开发过程的理解和掌握常用的软件开发工具和技术。 五、考核与评价 本课程的考核方式包括考试、作业和项目实践。平时作业主要包括相关软件开发工具和技术的学习和实践;项目实践主要针对一个实际的软件开发项目进行计划、设计、编码、测试与维护,并形成报告和演示。

软件工程课程设计方案

软件工程课程设计方案 一、概述 随着信息技术的迅猛发展,软件工程课程在计算机相关专业中的地位日益重要。本文旨在介绍一种软件工程课程的设计方案,以满足学生对软件工程领域的学习需求。该方案具备结构合理、内容丰富、实践性强等特点,旨在培养学生的软件工程思维和实际应用能力。 二、课程目标 本课程的主要目标是: 1. 了解软件工程的基本原理和方法; 2. 熟悉软件开发生命周期以及常用的软件开发模型; 3. 掌握软件需求分析、设计、编码、测试和维护等核心技术; 4. 培养学生团队合作和项目管理的能力; 5. 提高学生解决实际软件工程问题的能力。 三、课程大纲 1. 软件工程导论 - 软件工程概述 - 软件工程知识体系介绍 - 软件工程发展历史

2. 软件开发生命周期 - 传统瀑布模型 - 增量模型 - 迭代模型 - 敏捷开发模型 3. 软件需求分析 - 需求获取和分析方法 - 需求规格说明书撰写 - 需求验证与确认 4. 软件设计 - 结构化设计方法 - 面向对象设计方法 - 设计模式的应用 5. 软件编码与测试 - 编码规范与最佳实践 - 软件测试方法和策略 - 单元测试、集成测试和系统测试

6. 软件维护与管理 - 软件维护的类型和策略 - 变更管理和配置管理 - 项目管理与团队合作 7. 软件工程实践项目 - 学生分组进行软件工程实践项目 - 项目管理和进度控制 - 成果展示和评价 四、教学方法 1. 授课形式 本课程采用理论讲授与实践相结合的教学模式,通过理论讲解、案例分析、小组讨论和实践操作等方式,使学生对软件工程的知识有一个全面的了解。 2. 实践操作 鼓励学生参与实践项目,通过实践操作培养学生的动手能力和解决问题的能力。 3. 课堂讨论

《软件工程》教学教案

《软件工程》教学教案 软件工程教学教案 一、引言 软件工程是一门研究如何开发和维护高质量软件的学科。随着信息技术的快速发展,软件在现代社会中的重要性日益增加。因此,软件工程教育扮演着培养优秀软件工程师的重要角色。本教学教案旨在介绍一种系统的软件工程教学方法,通过科学的教学设计和优质的教学内容,提高学生的软件工程能力。 二、教学目标 本教学教案的主要目标是培养学生具备以下能力: 1. 理解软件工程的概念、原则和方法论; 2. 掌握软件需求分析和系统设计的基本技巧; 3. 熟悉软件开发过程中的各个阶段,并能应用相应的工具和方法; 4. 能够合作开发软件项目并有效沟通; 5. 具备解决实际软件工程问题的能力。 三、教学内容 1. 软件工程导论 1.1 软件工程的定义和发展历程;

1.2 软件工程的重要性和应用领域; 1.3 软件工程的原则和方法论。 2. 软件需求工程 2.1 需求工程的概念和目标; 2.2 需求获取和分析技术; 2.3 需求规格说明方法; 2.4 需求验证和确认。 3. 软件设计 3.1 软件设计的概念和原则; 3.2 结构化设计方法; 3.3 面向对象设计方法; 3.4 设计模式和架构设计。 4. 软件开发过程 4.1 瀑布模型; 4.2 增量模型; 4.3 喷泉模型; 4.4 敏捷开发方法。

5. 软件项目管理 5.1 项目计划和进度控制; 5.2 软件配置管理; 5.3 软件质量保证; 5.4 团队协作和沟通。 四、教学方法 1. 讲授 通过课堂讲授,向学生介绍软件工程的基本概念、原则和方法论。讲授过程中,教师可以借助案例分析、图表展示等形式,增加学生的 理解和兴趣。 2. 实践 在课程中加入实践环节,让学生参与到软件工程项目的开发过程中。可以采用小组合作的方式,让学生分工合作,完成一个小型软件 项目。 3. 研讨 安排研讨环节,让学生就软件工程中的热点问题展开讨论。可以 提供相关文献和案例,引导学生积极思考和交流。 五、教学评估 1. 作业考核

软件工程课程教学大纲教案

《软件工程》课程教学大纲教案 课程代码:课程类型:必修 适用专业/开课对象:计算机或软件工程专业/大二或大三 先修课程:计算机导论、数据结构、面向对象程序设计、数据库原理 开课单位: 团队负责人:责任教授: 执笔人:核准院长: 一、课程的性质、目的与任务 《软件工程》是计算机/软件工程专业的一门工程性基础课程,在软件工程学科人才培养体系中占有重要的地位。软件开发是建立计算机应用系统的重要环节,人们通过软件工程学把软件开发纳入工程化的轨道,而软件工程学是用以指导软件人员进行软件的开发、维护和管理的科学。《软件工程》已成为高等学校计算机软件教学体系中的一门核心课程, 本课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践”软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。 通过本课程的学习,要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。 本课程注重培养学生理论应用于实践的能力,课堂上教师向学生讲述软件工程中的相关原理和概念,并通过课程设计,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。本课程对提高学生的软件开发能力和项目管 1

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

软件工程结构化分析与设计 1. 简介 软件工程结构化分析与设计是软件开发中非常重要的一门课程,通过对软件系统进行结构化分析和设计,可以提高软件的质量、可 维护性和可扩展性。本文将介绍软件工程结构化分析与设计的基本 概念和主要内容。 2. 结构化分析 结构化分析是软件工程中的一种分析技术,它主要用于对问题 域进行分析,确定问题需求和对问题进行建模。结构化分析主要包 括以下几个步骤: 确定问题领域和问题域边界; 识别问题中的对象和它们之间的关系; 划分问题域为子问题,建立问题域模型; 确定问题的功能需求和非功能需求。 结构化分析的核心是数据流图,它可以表示问题域中的数据流 和处理过程,帮助确定系统功能和数据流向。 3. 结构化设计

结构化设计是在结构化分析的基础上进行的,它主要用于确定系统的结构和设计系统的组件。结构化设计的主要内容包括以下几个方面: 系统结构设计:确定系统的模块和模块之间的关系; 数据结构设计:设计系统中的数据结构和数据存储组织方式; 接口设计:设计系统与其他系统或外部设备之间的接口; 过程设计:设计系统中的算法和处理过程。 结构化设计的目标是提高系统的可维护性、可扩展性和可重用性,满足系统的功能需求和非功能需求。 4. 工具与方法 在软件工程结构化分析与设计过程中,有一些常用的工具和方法可以帮助完成任务。其中一些常用的工具包括: UML:统一建模语言,用于描述系统的结构和行为; 数据流图:用于表示数据流和处理过程; 结构图:用于表示系统的模块和模块之间的关系; 状态图:用于描述系统中对象的状态和状态转换。 而一些常用的方法包括:

数据字典:记录系统中的数据元素和数据流,帮助理清数据之间的关系; 面向对象分析与设计:通过对象的抽象和分类,设计系统的结构和行为; 结构化设计方法:采用自顶向下和自底向上的设计方法,将系统划分为模块并确定模块之间的关系。 5. 软件工程结构化分析与设计是软件开发中非常重要的一环,它通过对问题域进行分析和设计,帮助构建高质量、可维护和可扩展的软件系统。在结构化分析和设计过程中,我们需要使用一些工具和方法来辅助完成任务,如UML、数据流图、结构图等。通过合理应用这些工具和方法,可以使软件开发过程更加规范化和高效化。

软件工程结构化系统设计

软件工程结构化系统设计 软件工程结构化系统设计 一、引言 本文档是软件工程结构化系统设计的详细说明,旨在为软 件开发团队提供一个基准,以确保设计的系统能够满足用户需求, 同时具备可扩展性、可靠性和可维护性。在本文档中,将会对系统 的整体结构、各个模块的功能和接口、数据流等进行详细描述和说明,以便开发团队能够按照标准的设计准则进行系统的开发和维护。 二、系统概述 本系统是一个(系统类型)系统,旨在提供(系统的功能 描述)。用户可以通过该系统实现(系统的主要功能)。 三、需求分析 1.功能需求 1.1 功能:描述功能的细节和使用场景。 1.2 功能:描述功能的细节和使用场景。 2.数据需求 2.1 数据结构:描述系统涉及的数据结构,包括数据 库表、记录结构等。

2.2 数据流:描述系统中数据的流动和转换关系。 3.性能需求 3.1 响应时间:描述系统对用户请求的响应时间要求。 3.2 并发性能:描述系统能够处理的并发用户数。 四、系统设计 1.系统结构 1.1 模块划分:描述系统按照功能划分的模块,每个 模块的职责和关系。 1.2 模块接口:描述各个模块之间的接口和通信方式。 2.模块设计 2.1 模块:描述模块的功能、数据操作和算法等细节。 2.2 模块:描述模块的功能、数据操作和算法等细节。 3.数据库设计 3.1 表结构:描述系统所使用的数据库表结构。 3.2 索引设计:描述系统对数据库表的索引设计。 4.用户界面设计 4.1 页面布局:描述系统各个页面的布局和组件。

4.2 用户交互:描述用户在界面上的操作和系统的响应。 五、系统实现 1.开发环境:描述系统开发所使用的硬件和软件环境。 2.开发工具:描述系统开发所使用的开发工具和集成环境。 3.编码规范:描述系统开发中所遵循的编码规范。 六、测试与验证 1.单元测试:描述系统各个模块的单元测试方案和测试用例。 2.集成测试:描述系统各个模块的集成测试方案和测试用例。 3.系统测试:描述对整个系统进行的系统测试方案和测试 用例。 七、部署与维护 1.部署方案:描述系统的部署方案和步骤。 2.维护计划:描述系统上线后的维护计划和策略。 八、附件

软件工程——结构化方法

软件工程——结构化方法 上世纪60年代,由于计算机计算能力和处理的问题复杂度的急速增长,爆发了众所周知的软件危机。为了应对 软件危机带来的危害,解决管理大型复杂软件的难题,学 术界与工业界共同研究并提出了许多有效的软件开发方法。而其中影响最为深远的,分支最为庞大的方法就是结构化 方法。自1967年起就涌现出了许多软件工程领域有关结构化的相关概念与方法。如结构化程序设计,结构化分析技术,结构化设计。本文将针对它们进行介绍以及其应用。 结构化编程结构化编程(Structured programming)是上世纪60年代迪杰斯特拉,科拉多·伯姆及朱塞佩·贾可皮尼等计算机科学家所提出的。图灵奖得主迪杰斯特拉(Edsger Wybe Dijkstra)在1968年的一篇名称为《GOTO陈述有害论》的论文写到:最近我发现为什么使用goto语句具有灾难性的影响,而且我认为goto语句应该从所有的高级语言中废除,因为它使分析和验证程序正确性(特别是涉及循环)的任 务变得复杂。——Go To Statement Considered Harmful Edsger W.Dijkstra科拉多·伯姆于1966年5月在《Communications of the ACM》期刊发表论文,说明任何一个有goto指令的程序,可以改为完全不使用goto指令 的程序。下面来看一个例子,用于展示goto带来的差可读

性。void foo{A:...if(c==1)goto B;else goto C;B:...if(c==2) goto A;else goto C;C:...if(c==3)goto B;else goto A;}因此为了应对这些弊端,迪杰斯特拉提出了结构化程序设计。首先他证明了任何程序都可以用以下三种流程架构所组成。可分为循序(sequence)、选择(selection)及重复(repetition),循序是指程序正常的运行方式,运行完一个 指令后,运行后面的指令。选择是依程序的状态,选择数段程序中的一个来运行,一般会使用if..then..else..endif或switch、case等关系字来识别。重复是指一直运行某一段程序,直到满足特定条件,或是一集合体中的所有元素均已处理过,一般会使用while、repeat、for或do..until等关键字识别。划分出三种结构以后,程序可以变成一个个基本块,每个基本块之间互不影响(有的时候存在跨基本块的变量),使得程序可读性变强。结构化程序设计一经提出,在当时受到广泛的关注,大多数人赞同该设计方法。一个很显著的影响就是,后期几乎所有的高级程序设计语言都受其影响,强调结构化设计,虽然Java,Python,C++等语句以面向对象为主要设计思想,但其对象内部实现依旧以结构化思想为主。当然也有人提出了一些反对意见,著名计算机科学家高德纳(计算机程序设计艺术作者)也提出了使用goto指令可以使得程序更清楚而有效率,也不会牺牲程序的可读性。高德纳提出了一个较松的结构限制要求:将

淮海工学院软件工程结构化设计实验题目及报告

淮海工学院计算机科学系实验报告书 课程名:《软件工程》 题目:结构化设计实验 班级:软件122 学号: 姓名:韩莹

结构化设计实验报告要求 1目的与要求: 1)系统学习和理解结构化软件工程设计阶段的基本任务、概念、原理、技术和方法; 2)掌握设计阶段各种设计工具,如、层次图、程序流程图、N-S图、PAD图、判定表(树)、伪代码语言等工具的使用方法; 3)通过理论学习和试验要逐步提高运用结构化软件工程的设计理论、技术和方法解决实际问题的综合应用和实践创新能力; 4)请借阅有关Microsoft Office Visio 系统,预习系统有关的结构化设计工具和使用方法; 5)按照实验题目要求独立完成结构化设计实验内容,严禁拷贝、抄袭他人设计成果; 6)认真书写实验报告,并于第七周周五以前提交,不得延误; 7)本次实验内容极其重要,承前启后(下一次实验使用本次实验结果),希望同学提前做好设计和实验准备工作。 2 实验内容或题目 1.针对自己第一次实验所完成的结构化分析项目(或题目),选择所绘制的数据流图,E-R 图、状态图,完成下面2、3、4、5、6步要求的结构化设计内容; 2.按照面向数据流图的结构化设计方法,并在优化所选择数据流图的基础上,导出项目的总 体设计层次图(H图);特别注意:设计过程中必须给出细化好并且加了输入输出边界的 数据流图; 3.按照详细设计阶段所学的过程设计工具,分别选择程序流程图、盒图和PAD图等设计工 具,在第2所得层次图中选择几个主要模块进行详细设计,画出相应详细设计结果图形; 4.根据E-R图所建立的数据模型进行数据库(以关系数据库模型为基准,进行数据库表及其 关系设计); 5.根据H图进行界面菜单设计(模拟菜单显示样式绘制菜单设计图),选择一个数据库表(实 体)进行界面表单(数据编辑界面)设计; 6.选择第3步中某一模块的详细设计结果,画出对应得程序流图,并计算其环形(圈)复杂 度。 3 实验步骤与源程序 数据流图:

软件工程 结构化分析 实验报告

软件工程第3章作业 1、需求分析阶段需要完成哪些具体工作? (1)准确地了解用户当前的情况和需要解决的问题; (2)对需求反复求精和细化; (3)需求建模; (4)编制需求规格说明书; (5)进行需求分析的评审。 2、目前教学资料的管理工作主要由手工完成,教学资料包括:(1)教师完成的课程计划、课程教案、授课讲义等;(2)学生完成的考试试卷、课程实验报告、实习报告、课程设计报告等。 如果由你负责开发一个教学资料管理系统,该系统能够提供教学资料收集、教学资料维护、教学资料查询等功能,你将如何开展需求分析阶段的工作? a)通过与用户交流尽可能准确的了解用户当前的情况和要解决的问题; b)参考类似的系统制定初步模型; c)与用户交流沟通,看看他们的想法,结合用户中精华的计划,一直到满足用户的需求。 3、银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。 (1)用分层数据流图描述本系统的功能; (2)用数据字典定义数据流图中的重要数据。 答:(1)数据流图: 第一层模型: 第二级模型(最终结果——完整的DFD图):

答:(2) 4、目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危

重病人的病情变化,还会延误抢救时机。 某医院打算开发一个以计算机为中心的患者监护系统。医院对患者监护系统的基本要求是:随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息;此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 请分层次画出描述本系统功能的数据流图。 数据流图1: 数据流图2(总DFD图): —————————————————————————————————————— 注:1、作业以word文件格式提交; 2、在作业页面的页眉中,标清楚:班级、学号、姓名

软件工程课程设计

软件工程作业 姓名:李泽伟班级:11信科(1)班学号:28 1.题目:采用结构化分析方法写出书店管理系统的需求文档,包括数据流图及数据字典,书店JS是一家从事图书销售的传统公司,对系统要求如下: (1)记录每本图书的库存。 (2)实现图书的零售(包括打折),实现开架售书。 (3)可以每日统计销售情况。 (4)实现图书的采购、退货及结算,实现与供货商的销售及结算关系。 (5)遵守出版行业的行规:在书店到书后,若在3个月内未实现销售,可全部或部分退货,在发书后3个月内给予发票,书店在3个月后可部分或全部付款,该项规则对采购货批发均有效。 (6)该书店还可将该产品批发给其他书店。 (7)在供应商、书店、其他书店、零售客户之间的结算采用码洋折扣方式进行,也就是说如果图书的实价为X,则图书码洋为X,而以7折给书店,则图书的实洋就为0.7X,供应商、书店等以相对固定的折扣进行交易。 (8)管理人员可以随时查看库存、采购、销售、付款、到款情况,并能提供日/月销售报表、应付/付款情况分析表、应收/到款情况分析表。 由于销售商品是图书,图书除有书名、作者、出版社外,还有版次、印次、出版日期以及ISBN号、条码、定价;由于出版领域的特殊性,一种图书(如软件工程)只有一个ISBN 号以及一个条码,而该图书一句不同的版次、印次,可有不同的定价,折给条码的扫描确定一本图书带来一定的困难。 答案:

数据流图: 顶层图 0层图

数据字典: 1、数据流条目: 订货单={书号+书名+作者+出版社+数量}+日期+订货人 付款单=应付金额+实付金额+付款人+收款人+日期 发货单={书号+书名+作者+出版社+数量}+发货人+收货人+日期

软件工程课程要求及学时安排

软件工程课程要求及学时安排 软件工程(S o f t w a r e E n g i n e e r i n g) 学分数3周学时3 课程性质专业基础课 预修课程程序设计,离散数学,数据结构 教学目的通过本课程的教学,使学生掌握软件工程的基本概念和原则,培养学生用工程化的方法高效地开发高质量软件的初步能力,以及项目管理的初 步能力。 基本内容软件工程的基本概念、原则、模型、方法、过程 基本要求掌握软件工程的基本概念和原则,能运用软件工程的基本原理、模型、方法和过程开发简单的应用软件。增强软件开发的工程化和规范化意 识,提高高效率、高质量开发软件的能力。 教学用书钱乐秋、赵文耘、牛军钰编《软件工程》,清华大学出版社,2007 教学内容、要求和课时安排 一.概论(学时数:5) 教学内容 1.计算机软件 软件定义,软件语言及分类(需求定义语言,功能性语言,设计性语言,程序 设计语言,文档语言),软件的特点和分类,软件发展历史,软件危机 2.软件工程 软件工程定义,目标,过程,原则,软件生存周期 3.软件过程 软件过程定义和分类,软件过程能力成熟度模型CMM,软件过程能力成熟度模型 集成CMMI 4.软件过程模型 瀑布模型,演化模型,增量模型,原型模型,螺旋模型,喷泉模型,基于构件的 开发模型,形式化方法模型 5.敏捷软件开发 敏捷软件开发的价值观和开发原则,XP方法 6.CASE工具与环境 计算机辅助软件工程(CASE),CASE工具,集成型开发环境 教学要求 1.掌握软件及软件工程的基本概念

2.掌握软件生存周期各阶段的任务 3.了解软件过程的概念,以及CMM和CMMI的由来、作用、各等级的特点、结构 4.掌握各种软件过程模型的特点 5.了解敏捷软件开发的基本思想 6.了解CASE工具与环境的作用 二.计算机系统工程(学时数:1) 教学内容 基于计算机的系统,系统工程的任务,可行性分析 教学要求 1.了解系统工程的任务 2.掌握可行性分析的方法 三.需求工程(学时数:3) 教学内容 1.需求工程概述 需求工程定义,需求工程六个阶段 2.需求获取 软件需求定义,软件需求内容,需求获取方法与策略 3.需求分析、协商与建模 需求分析原则,信息域、抽象、分解与多视点分析,需求协商,需求建模基本 方法简介 4.需求规约与验证 需求规约的原则、需求规约、需求验证 5.需求管理 需求管理定义、需求跟踪 教学要求 1.掌握需求工程的定义及六个阶段 2.掌握软件需求内容 3.掌握需求获取的方法与策略 4.掌握需求分析原则 5.掌握需求规约的原则 6.掌握需求规约的内容 7.了解需求验证过程 8.了解需求管理相关概念 四.设计工程(学时数:3) 教学内容 1.软件设计工程概述

软件工程 软件详细设计

教案首页 周次日期课时序 授课教师

第五章软件详细设计 详细设计又称过程设计,在总体设计阶段,已经确定了软件系统的总体结构,给出系统中各个组成模块的功能和模块间的联系。这一步的工作,就是要在上述结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。需要指出,这些描述应该用详细设计的表达工具来表示,但它们还不是程序,一般不能够在计算机上运行。 详细设计是编码的先导。这个阶段所产生的设计文档的质量,将直接影响下一阶段程序的质量。为了提高文档的质量和可读性,本章除要说明详细设计的目的、任务与表达工具外,还将扼要介绍结构程序设计的基本原理,以及如何用这些原理来指导模块内部的逻辑设计,提高模块控制结构的清晰度。 5.1 详细设计的任务与原则 详细设计的目的是为软件结构图( SC图或HC图)中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。表达工具可以由开发单位或设计人员选择,但表达工具必须具有描述过程细节的能力,进而可在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。 详细设计阶段的主要任务如下。 1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述; 2.确定每一模块使用的数据结构; 3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。 在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。交付给下一阶段(编码阶段)的工作依据。 4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容,其要求和设计方法将在第八章详细介绍,这里需要说明的一点是,由于负责详细设计的软件人员对模块的功能、逻辑和接口最清楚,所以可由他们在完成详细设计后接着提出对各个模块的测试要求。 5.1.2 详细设计的原则 1.模块的逻辑描述要清晰易读、正确可靠。 2.采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。其基本内容归纳为如下几点。 ①程序语言中应尽量少用 GOTO语句,以确保程序结构的独立性。

相关主题
文本预览
相关文档 最新文档