【北京大学 软件工程】五、结构化设计方法-1


一、结构化设计概念

1、设计的定义

一种软件开发活动,定义实现需求规约所需的软件结构。
设计目标:依据需求规约,在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构),以及详细的处理算法,产生设计规格说明书。
即:要回答如何解决问题一给出软件解决方案
结构化设计分为
(1)总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。
(2)详细设计:详细描述模块。

2、整体框架

image.png
image.png
image.png
image.png

3、对设计方法的需求

实现软件设计的目标对结构化设计方法的需求:
(1)提供可体现“原理/原则”的一组术语(符号),形成一个特定的抽象层,用于表达设计中所使用的部件
(2)依据术语所形成的“空间”,给出表达软件模型工具
(3)给出设计的过程指导

4、总体设计层概述

(1)引入了两个术语/符号

模块:一种可独立标识的软件成分。
image.png
调用:模块间的一种关系,模块A为了完成其任务必须依赖其他模块。
image.png

(2)引入了模块结构图 (MSD)

用于表达软件系统的静态结构。
image.png

(3)过程指导

为了实现设计目标,总体设计的具体任务是:将DFD转化为MSD
分二步实现:
第一步:如何将DFD转化为初始的MSD
分类:

变换型数据流图

事务型数据流图

变换设计

事务设计

第二步:如何将初始的MSD转化为最终可供详细设计使用的MSD

总体设计分为三个阶段:
第一阶段:初始设计。在对给定的数据流图进行复审和精化的基础上,将其转化为初始的模块结构图。根据穿越系统边界的数据流初步确定系统与外部的接口。
第二阶段:精化设计。依据模块“高内聚低耦合”的原则精化初始的模块结构图,并设计其中的全局数据结构和每一模块的接口
第三阶段:设计复审阶段,对前两个阶段得到的高层软件结构进行复审,必要时还可能需要对软件结构做一些精化工作。


二、初始模块结构图的设计

总体设计第一步:DFD -> 初始的MSD

1、数据流图分类

(1)变换型数据流图

具有较明显的输入部分和变换部分之间的界面、变换部分和输出部分之间界面的数据流图。
image.png

image.png

  • 逻辑输入:离物理输入最远、仍被看成系统输入的数据流。
  • 逻辑输出:离物理输出最远、仍被看成系统输出的数据流。

(2)事务型数据流图

数据到达一个加工 (例如下图1) ,该加工根据输入数据的值,在其后的若干动作序列(称为一个事务)中选出一个来执行,这类数据流图称为事务型数据流图。
image.png
事务型DFD完成下述任务

  1. 接受输入数据
  2. 分析并确定对应的事务
  3. 选取与该事务对应的一条活动路径

事务型DFD和变换型DFD的区别

原则上所有DFD都可以看成是变换型DFD
一般而言,接受1个输入数据,分成多条路径

image.png

2、变化设计的基本步骤

第1步:设计准备——复审并精化系统模型

  • 为了确保系统的输入数据和输出数据符合实际情况而复审其语境
  • 为了确保是否需要进一步精化系统的DFD图而复审其语境

第2步:确定输入、变换、输出这三部分之间的边界

  • 根据加工的语义和相关的数据流,确定系统的逻辑输入和逻辑输出

image.png
第3步:第一级分解——系统模块结构图顶层和第一层的设计
主模块:位于最顶层,一般以所建系统的名字命名,其任务是协调控制第一层模块。
输入模块部分:为主模块提供加工数据,有几个逻辑输入就设计几个输入模块。
变换模块部分:接受输入模块部分的数据,并对内部形式的数据加工,产生系统所有的内部输出数据。
输出模块部分:将变换模块产生的输出数据,以用户可见的形式输出。有几个逻辑输出,就设计几个输出模块。
image.png

image.png

第4步:第二级分解——自顶向下,逐步求精

  • 对每一个输入模块设计其下层模块
    • 接收数据模块(即输入模块)
    • 把接收的数据变换成它的上级模块所需的数据(即变换模块)
    • 直到输入模块为物理输入,则细化停止
  • 对每一个输出模块设计其下层模块
    • 将得到的数据向输出形式进行转换
    • 将转换后的数据进行输出
    • 直到输出模块是物理输出,则细化停止
  • 对变化模块进行分解(无通用法则)

image.png

3、事务设计的基本步骤

第1步:设计准备——复审并精化系统模型

  • 为了确保系统的输入数据和输出数据符合实际情况而复审其语境
  • 为了确保是否需要进一步精化系统的DFD图而复审其语境

第2步:确定事务处理中心
第3步:第一级分解——系统模块结构图顶层和第一层的设计

  • 首先,为事务中心设计一个主模块。
  • 然后,为每一条活动路径设计一个事务处理模块。
  • 对其输入部分设计一个输入模块。
  • 如果一个事务数据流图的活动路径集中于一个加工,则设计一个输出模块,否则第一层不设计输出模块。

image.png
第4步:第二级分解——自顶向下,逐步求精

  • 对于输入模块、输出模块的细化,如同变化设计的细化过程。
  • 对各条路径模块的细化,无设计法则。

image.png

DFD -> 初始的MSD

  • 一个系统的DFD,通常是变换型数据流图和事务型数据流图的组合
  • 自动的变换设计
  • 自动的事务设计

image.png


三、初始模块结构图精化的原则

1、精化的概念

总体设计第二步:将初始的MSD转化为最终可供详细设计使用的MSD
概念:模块,模块化
基于模块化原理——高内聚、低耦合
给出设计规则——经验规则——启发式规则
用于精化初始的MSD——体现设计人员的创造

2、模块和模块化

模块:执行一个特殊任务的一组例程和数据结构

  • 接口:给出可由其他模块和例程访问的对象
    • 常量,变量,数据类型,函数
  • 实现:接口的实现(模块功能的执行机制)
    • 私有量,过程描述,源程序代码

模块化:把系统分解成若干模块的过程

  • 50多年的历史
  • 软件的单个属性,使得程序能够被理性的管理

3、为什么要模块化

设C(x)是定义问题x复杂性的函数,E(x)是定义解决问题x所需要的工作量,那么,对于两个问题p1和p2,
如果C(p1)>C(p2),那么E(p1)>E(p2)
解释:解决困难问题需要花费更多的时间

人们又发现了另外一个有趣的特征:
C(p1+p2)>C(p1)+C(p2)
由上页结论:
If C(g1)>C(g2) Then E(g1)>E(g2)
所以:
E(p1+p2)>E(p1)+E(p2)

  • 一个理想的情况:如果我们能够无限制地划分软件,那么开发它所需的工作量可以变得非常小,乃至可以忽略!
  • 但是,这个结论是错误的。因为随着模块数量的增长,集成模块所需的工作量(成本)也在增长。

image.png

4、基本原则

  • 基本原则:高内聚,低耦合
  • 概念和分类
    • 耦合
    • 内聚
  • 启发式规则

5、耦合

定义:不同模块之间相互依赖程度的度量
image.png

耦合的强度所依赖的因素:

  • 一个模块对另一个模块的引用
  • 一个模块向另一个模块传递的数据量
  • 一个模块施加到另一个模块的控制的数量
  • 模块之间接口的复杂程度:整数,数组,控制信号……

耦合类型:(由强到弱)

  • 内容耦合:一个模块直接修改或操作另一个模块的数据
  • 公共耦合:两个以上的模块共同引用一个全局数据项。
  • 控制耦合:一个模块向另一模块传递一个控制信号,接受信号的模块将依据该信号值进行必要的活动。
  • 标记耦合:两个模块至少有一个通过界面传递的公共参数包含内部结构,如数组,字符串等。
  • 数据耦合:模块间通过参数传递基本类型的数据。

image.png

原则:如果模块间必须存在耦合就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合

6、内聚

定义:一个模块之内各成分之间相互依赖程度的度量。
好的设计满足:

  • 模块的功能单一
  • 模块的各部分都和模块的功能直接相关
  • 高内聚

内聚类型:(由低到高)

  • 偶然内聚:一个模块之内各成分之间没有任何关系。
  • 逻辑内聚:几个逻辑上相关的功能放在同一模块中。
  • 时间内聚:一个模块完成的功能必须在同一时间内完成,而这些功能只是因为时间因素关联在一起。
  • 过程内聚:处理成分必须以特定的次序执行。
  • 通信内聚:各成分都操作在同一数据集或生成同一数据集。
  • 顺序内聚:各成分与一个功能相关,且一个成分的输出作为另一成分的输入。
  • 功能内聚:模块的所有成分对完成单一功能是最基本的,且该模块对完成这一功能而言是充分必要的。

image.png

image.png


四、总体设计案例

image.png

1、确定逻辑输入和逻辑输出

确定逻辑输入/逻辑输出的方法:
(1)从物理输入端向前找,从物理输出端向后找。
(2)通过名字,根据经验进行判断。
image.png

image.png

2、输入部分的进一步精化

image.png

3、输出部分的进一步精化

image.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件工程发展调研报告(1)全文共4页,当前为第1页。软件工程发展调研报告(1)全文共4页,当前为第1页。软件工程发展调研报告 软件工程发展调研报告(1)全文共4页,当前为第1页。 软件工程发展调研报告(1)全文共4页,当前为第1页。 专业简介 软件工程 (Software Engineering,简称为SE)是一门研究用工程方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。 培养目标 为培养适应政府机关、事业单位、大中型企业的IT岗位要求的系统工程的专业人才。 学习课程 以上海交通大学软件工程系为例,除基础必修课程,通识课程及个性教育以外,所需要学习的专业课程有: 专业必修类: 程序设计与数据结构 数据库原理与技术 计算机组成与系统结构 计算机系统概论 数字电路与数字逻辑 软件工程概论 软件测试 面向对象分析与设计 编译原理与技术 操作系统 计算机网络 软件过程与管理 人机界面与交互 系统设计与开发大型课程设计 软件工程发展调研报告(1)全文共4页,当前为第2页。软件工程发展调研报告(1)全文共4页,当前为第2页。专业方向类: 软件工程发展调研报告(1)全文共4页,当前为第2页。 软件工程发展调研报告(1)全文共4页,当前为第2页。 嵌入式系统原理技术基础(嵌入式系统) 信息系统分析与设计(信息系统) 分布式计算(网络计算) 中间件技术(网络计算) 游戏程序设计(数字媒体与应用) 专业选修类: 主流数据库系统与应用 数字图像处理 计算机图形学 Linux内核分析 形式方法 社会需求与就业形势 软件工程师在全国各地都有着广阔的市场,但主要集中在北京、上海、广东、深圳、浙江、江苏、福建这些沿海发达地区。 根据2009年毕业生就业状况统计,软件工程专业毕业生在各理工科类中就业率比较靠前,同时根据IT产业目前的发展状态来看,在今后的一段时间内,该专业的毕业生需求将不会出现忽冷忽热的情况。 虽然软件工程师的需求很大,但大部分公司都要求应聘者要有出色的专业技能,很看重应聘者的工作经验和专业素养,竞争非常激烈。这对于应届毕业生有很大的挑战,需要具备过硬的基本功和技能才有可能被招收。 主要相关行业 JAVA软件工程师 VC软件工程师 .NET开发工程师 嵌入式软件开发工程师 Delphi开发工程师 数据库工程师 网站程序员 硬件工程师 PCB设计工程师 FPGA工程师 嵌入式硬件开发工程师 通信设计工程师 项目管理人员 教师 软件工程发展调研报告(1)全文共4页,当前为第3页。软件工程发展调研报告(1)全文共4页,当前为第3页。代表性企业 软件工程发展调研报告(1)全文共4页,当前为第3页。 软件工程发展调研报告(1)全文共4页,当前为第3页。 Microsorft Apple Oracle IBM Cisco Huawei Tencent Baidu 这些企业作为行业的代表性企业,特别是Microsoft、Oracle等从事技术相关行业的大型软件公司,对应届毕业生的招收情况并不理想,大多偏向于有实际项目开发经验,专业知识过硬的应聘者。大多数的软件工程应届毕业生往往是先就职于小公司担任开发/代码编写工作(即所谓软件"蓝领"),在积累一定工作经验和能力后,再另谋其它出路。 当然,这些企业也接受并乐于接受优秀的应届毕业生,同时往往有员工职业发展培训课程等,使得那些没有工作经验或工作经验较少的应聘者能够更快的适应工作环境。 主要部门 以Microsoft为例,除常规部门外,在软件工程方面设: 产品规划部门 内容发布部门 创新部门 国际项目工程及本地部门 常规软件管理部门 软件开发部门 软件构建部门 软件测试部门 用户体验部门 计划管理部门 硬件工程部门* 相关职位的职责 软件开发工程师 完成软件设计、开发、测试、修改bug等工作,包括业务需求的沟通,功能模块详细设计,业务功能实现与单元测试,系统维护。 软件测试工程师   软件测试就是使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。开发工作的根本是尽量实现软件用户的需求,测试工作的根本是检验软件系统是否满足软件用户的需求。 软件工程发展调研报告(1)全文共4页,当前为第4页。软件工程发展调研报告(1)全文共4页,当前为第4页。数据库工程软件工程发展调研报告(1
软件开发报告 项目名称:图书馆查询借阅系统 组 员: 专 业: 指导老师 第一部分 可行性研究报告 软件开发报告 1 第一部分 可行性研究报告 2 1.1.引言 4 1.2.可行性研究的前提 5 1.3.对现有系统的分析 7 1.4.所建议技术可行性分析 8 1.5.所建议系统经济可行性分析 10 1.6.社会因素可行性分析 11 1.7.结论意见 11 第二部分 需求分析 2.1 编写目的 12 2.2 用户需求分析 12 2.3 功能需求分析 12 2.4 分析各个子系统的功能需求 14 2.5 系统运行要求 16 2.6 非功能需求分析 17 第三部分 概要设计 3.1.引言 17 3.2.任务概述 17 3.3.总体设计 21 3.4.接口设计 23 3.5.数据结构设计 24 3.6.运行设计 25 3.7.出错处理设计 25 3.8.安全保密设计 26 3.9.维护设计 26 第四部分 详细设计 4.1 引言 26 4.2 总体设计 26 4.3 程序描述 26 4.4 程序复杂程度的定量度量 31 第五部分 测试报告 5.1引言 34 5.2任务概述 34 5.3计划 35 5.4测试项目说明 35 5.5评价 36 第一部分 可行性研究报告 1.1 引言 1.1.1 编写目的 当今是数字、网络的时代。图书馆是学校的文献信息中心,是学校信息的重要 基地。图书馆的工作是学校教学和科学研究工作的重要组成部分,是全校师生学习和研 究的重要场所。为了更好地适应这种网络数字信息的环境,一种成功的跟踪最新技术 ,充分利用软硬件资源,扎根于准、新、全数字资源的"图书馆管理信息系统"已孕育而 生。 另外,由于图书馆陈旧的管理手段给读者和图书馆管理员带来的很多操作上的不方便 ,同时为了提高工作效率、服务质量和管理水平,并使图书馆管理人员从繁琐的工作中 解脱出来,因此开发该系统具有非常重要意义。 1.1.2 项目背景 建议开发软件名称:图书馆图书查询借阅管理系统 项目提出者:图书馆 开发者:施秀霞 陈薇薇 吴观萍 周玲 用户:读者、管理员 实现软件的单位:福建工程学院 1.1.3 定义 该图书馆管理信息系统是基于Internet/Intranet 及Web技术,建立以Browser/Server 为结构模式、以数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加 工整序和管理维护,为教学和科学研究提供文献信息保障和提高管理图书的效率而设计 的系统。 1.1.4 参考资料 教材 : 《软件工程导论》(第四版) 张海藩编著,清华大学出版社,2006年10月版,北京 查阅资料: (1)、可行性分析报告参考文献: http://www.doc88.com/p-083372493479.html http://wenku.baidu.com/view/3f990a00b52acfc789ebc95a.html (2)、需求分析报告参考文献: 《图书管理系统需求分析报告》 系统开发小组 郑州航院信息统计职业学院 http://www.doc88.com/p-605926677790.html (3)、概要设计报考参考: http://www.doc88.com/p-737752877588.html (4)详细设计报告参考文献: http://wenku.baidu.com/view/d3ee9a40be1e650e52ea99e8.html (5)测试报告参考文献: http://wenku.baidu.com/view/bffef17b5acfa1c7aa00ccb0.html 类似项目项目开发报告: 《图书馆管理系统需求分析报告》 作者:葛东之 北京联合大学 2012年3月1日 1.2 可行性研究的前提 1.2.1 要求 功能: 1.新书入库。 2.借还书籍处理(每人限借书5本)。 3.按分类、书名、作者、ISBN号、出版年、主题词、书名内关 键词等查询书籍信息。 4.书籍损坏丢失处罚处理。 5.公布借书超期读者名单(借书期限为30天)。 6.显示图书室的规章制度、有关系统等信息。 性能:能运行良好 输入:用户名称、图书编码 输出:用户信息、图书信息 基本的数据流程和处理流程: 图1.1 顶层数据流图 图1.2 一层数据流图 安全与保密要求:馆中所有未借出的书籍能够供用户随时查阅,用户信息只能被系统管 理员查阅,修改; 完成期限:2015年12月 1.2.2 目标 a. 人力与设备费用的节省; b. 处理速度的提高; c. 减少操作出错; d. 管理信息服务的改进; e. 决策系统的改进; f. 人员工作效率的提高 1.2.3 条件、假定和限制 1.系统运行寿命的最小值:4年 2.进行系统方案选择比较时间:10天 3.经

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值