需求技术的基本特征:

  1. 提供方便通信的机制
  2. 鼓励需求分析人员使用问题空间的术语思考问题编写文档。
  3. 提供定义系统边界的方法
  4. 提供支持抽象的基本机制
  5. 为需求分析人员提供多种可供选择的方案
  6. 提供特定的技术,适应需求的变化

一.需求分析中的基本术语

1、数据:客观事物的一种表示 2、信息:具有特定语义的数据 3、数据是信息的载体 4、数据流:数据的流动 5、加工:数据变换单元6、数据存储 7、数据源和数据潭

  • 系统功能模型表示方法
  1. 数据流图(DFD图)

一种表示数据变换的图形化工具

  1. 数据流成图的元素

数据源/数据潭 ,数据流,数据加工,数据存储

1.建模过程:

1.自顶向下、逐步求精

2、建立系统环境图

3、0层图:从0层图开始对流程图中的要素编号 1,2,3,。。。

4、1层图 1.1 1.2 1.3 1.4 .....

2.建模过程-数据字典

数据字典:定义数据流成图中所有数据流和数据存储的数据结构

。顺序结构 +

。选择结构 |

。重复结构 { }

。子界 m..n

3.建模过程-加工的描述

  1. 判定表  其也成为决策表,是二维表,它说明了每一种条件组合所产生的结果。
  2. 判定树

判断树( Decision Tree)也称为决策树,是用来描述在一组不同的条件下,决策的行动是根据不同条件及其取值来选择的处理过程。业务规则的描述通常可以使用判断树这一过程描述工具。

3.结构化语言

若逻辑关系比较简单,可以用结构化自然语言来描述.

四、应用中注意的问题

1.模型平衡问题 DFD图与数据字典的一致 底层加工的处理逻辑描述,与数据字典一致

2、信息的复杂性控制问题 上层数据流可以打包 下层模块个数:7±2 每个加工的数据流不能太多:增加层次

五、需求验证

1、验证:必要性、无歧义性、可测性、可跟踪性、可测量性

2、需求中发现的错误类型

不正确的事实:40% 遗漏:31% 不一致;13% 歧义性:5% 错放:2% 其它:9%

六.发现错误的方法

审查:65% 单元测试:10% 评估:10% 集成:5%

第二节:结构化设计

一.总体设计

二.详细设计

结构化设计的任务

1、定义满足需求所需要的结构 2、确定“怎么做”的问题

3、划分为:

总体设计:以系统为对象

详细设计:以模块为对象

一、总体设计

1、总体设计的任务:把系统的功能需求分配到一个特定的软件系统结构钟。

2、引入了两个概念:

模块:软件中具有特定标识的独立成分 模块调用:模块之间的一种使用关系

如何表达模块和模块条用

1.模块结构图 2.层次图 3.HIPO图  H:层次图 IPO:输入/处理/输出图

 

 含有编号

  1. 总体设计的步骤

将DFD图映射为设计层面的模块及模块调用。

(1)将DFD图转换为初始的模块结构图

(2)基于“高内聚、低耦合”的软件设计原理通过模块化,将初始的模块结构图转化为最终的模块结构图。

二、两种映射方法

(1)变换设计

基于变换的数据流程图是一个线性的顺序结构,由输入、输出和变换中心三部分组成。

(2)事务设计

基于事务的数据流程图中有一个事务处理中心,它将输入分为许多相互平行的加工路径,然后根据输入的属性,选择某一加工路径。

(1)变换设计

变换型数据流程图是一个线性的顺序结构,由输入臂、输出臂和变换中心三部分组成。其中变换中心使系统数据发生本质的变化,输入臂将物理输入变换成逻辑输入,而输出臂则将逻辑输出变换成物理输出。

2.事务设计

如果模块为逻辑凝聚的模块,可以将其分为一个检查业务类型的模块和一个调度的模块,根据不同的业务类型,调度模块调用不同的下层模块。

3、模块化及其启发式规则

(1)模块

执行一个特殊任务的一个过程以及相关的数据结构。模块通常由两部分组成:模块接口和模块体。

(2)模块化的两个问题

①如何将系统分解成软件模块 ②如何设计模块

如何将系统分解成软件模块

分而治之”和“抽象” 自顶向下,逐步求精 形成模块层次结构

4、模块化

把一个待开发的软件分解成若干个简单的具有高内聚低耦合的模块,这一过程称为模块化。

(1)模块耦合

耦合( coupl ing)是对两个模块之间相互依赖程度的一种度量。模块间的依赖程度越大,则其耦合程度也就越大;反之,模块间的依赖程度越小,则其耦合程度也就越小。

模块间耦合类型:

内容耦合:一个模块直接修改或操作另一模块数据

公共耦合:两个模块共同引用一个全局数据项

控制耦合:一个模块向另一模块传递控制信号

标记耦合:一个模块向两个模块传递一个公共参数

数据耦合:模块之间通过参数来传递数据

2)模块内聚

是指一个模块内部个成分之间相互关联程度的度量。也就是说,内聚是对模块内各处理动作组合强度的一种度量。很显然,一个模块的内聚越大越好。

内聚的类型:

1.偶然内聚:模块的各成分没有任何关系 2.逻辑内聚:逻辑上相关的处理放在一起 3.时间内聚:模块内的功能在同一时间完成

4.过程内聚:模块内的处理以特定的次序执行 5.通信内聚:操作同一数据集 6.顺序内聚:一个成分的输出作为另一成分的输入

7.功能内聚:模块的所有成分完成单一的功能

(3)启发式规则

高内聚、低耦

①改进软件结构,提高软件独立性。模块分解 ②模块规模适中 ③力求深度、宽度、扇出、扇入适中。深度:表示其控制的层数。

宽度:同一层次上模块总数的最大值。扇出:一个模块直接控制的下级模块的数目 扇入:有多少个上级模块直接调用它。

4尽量使模块的作用域在其控制域内。

模块的控制域:这个模块本身以及所有直接或间接从属它的模块的集合。

模块的作用域:受该模块内一个判断所影响的所有模块的集合。

5尽力降低模块接口的复杂度 ⑥力求模块功能可以预测

二.详细设计

具体描述模块结构图中的每一模块,即给出实现模块功能的实施机制,包括一组例程和数据结构详细设计的目标:将总体设计阶段产生的系统高层结构映射为以相关术语表达的低层结构,也是系统的最终结构。

1、结构化程序设计方法

是一种基于结构的编程方法,即采用顺序结构、选择结构和重复结构进行编程,其中每一结构只允许一个入口和一个出口。结构化程序设计的本质是:使程序的控制流程线性化,实现程序动态执行顺序符合静态书写的结构,提高程序的可读性。

2、详细设计工具

(1)程序流程图

程序流程图:程序流程图又称为程序框图,它是历史最悠久使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。

(2)盒图

出于要有一种不允许违背结构程序设计精神的图形设计工具的考虑,设计除了盒图 又称为:N-S图。

(3) PAD

图PAD是问题分析图( Problem Ana lys isDi agr am)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。下图给出PAD图的基本符号。

4)类程序设计语言PDL

PDL也称为伪码,它是用正文形式表示数据和处理过程的设计工具。PDL具有严格的关键字外部语法,用于定义控制结构和数据结构般说来PD是一种“混杂”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使用另种语言(某种结构化的程序设计语言)的语法。

3、设计规约

完整准确地描述满足需求规约所要求的所有功能模块,以及伴随功能模块而出现的非功能机制设计规约包括概要设计规约和详细设计规约。

1)概要设计规约

指明高层软件体系结构

1系统环境 2软件模块的结构 3模块描述 4文件结构和全局数据文件的逻辑结构 5测试需求

(2)详细设计规约

详细设计规约主要作为软件设计人员与程序员之间交流的媒体。

1.各处理过程的算法

2.算法所涉及的全部数据结构的描述

软件工程第三章节结构化方法相关推荐

  1. 软件工程(三)—— 结构化方法

    一.结构化需求分析 在软件系统的需求工作中,通常面临三大挑战,即问题空间理解.人与人之间的通信.需求的变化性.为了应对这三大挑战,支持需求工作目标的实现,一种好的需求技术应具有以下基本特征: ① 提供 ...

  2. DevOps笔记-01:软件交付面临的问题、软件工程的三个发展阶段、什么是DevOps?

    目录 1.软件交付面临的问题 2.软件工程的三个发展阶段 3.什么是DevOps? 4.总结 1.目前软件交付面临的问题 (1)跨部门沟通成本高:团队间沟通和协作的重要性一点也不亚于写代码.写文档.做 ...

  3. 研究是一门艺术 前三章节笔记

    作者: Wayne C. Booth / Gregory G. Colomb / Joseph M. Williams 内容简介  · · · · · · <研究是一门艺术>英文版自首次出 ...

  4. 2019软件工程第三次作业

    2019软件工程第三次作业 数独游戏 戳这里进入Github项目 第一眼看到要做数独的时候,脑海里的第一反应就是用深搜.现在好了,确定了算法,接下来就是要去实现它,可是对于将近半年没写过深搜的我要写一 ...

  5. 软件工程第三次作业——软件质量保证鄙见

    阅读教材第14章及课后参考文献  写一篇关于软件质量保障的博文 参考文献: 两种不同的声音(1)https://coolshell.cn/articles/6994.html (2)https://w ...

  6. 北航2022软件工程第三次作业——结对编程(最长英语单词链)

    软件工程第三次结对编程作业 项目 内容 这个作业属于哪个课程 北京航空航天大学2022春季软件工程(罗杰 任健) 这个作业的要求在哪里 结对编程项目-最长英语单词链 我在这个课程的目标是 学习软件工程 ...

  7. 软件工程包括三个要素:方法、工具和过程

    知识点记录: 软件工程包括三个要素:方法.工具和过程. 软件工程方法为软件开发提供了"如何做"的技术.它包括了多方面的任务,如项目计划与估算.软件系统需求分析.数据结构.系统总体结 ...

  8. 【高数】高数第三章节——微分中值洛必达泰勒单调性与凹凸性作图弧微分与曲率

    高数第三章节--微分中值&洛必达&泰勒&单调性与凹凸性&作图&弧微分与曲率 0.博主高数相关章节目录 1.数列 1.微分中值定理 1.1 罗尔定理 1.2 费马 ...

  9. 读软件工程前三章后感

    "再多读一次",这是我读完一到三章之后的第一想法,自我发现悟性不高,相信下一次阅读会有新的感悟以及收获. 第一章中作者极尽通俗之力,告诉读者何为软件工程,善用例子,让读者能一点就通 ...

  10. 现代软件工程 第三章 【软件工程师的成长】练习与讨论

    1.  选哪一种医生? 作为一个软件工程师, 你觉得自己表现如何? 有没有这样的体会: 看书的时候觉得"技止此耳",开发项目的时候才觉得实际情况和书上讲的都有一些出入,一些重要的细 ...

最新文章

  1. PHP消息队列httpsqs安装与使用无错版
  2. html input type=file 文件上传; 图片上传; 图片闪烁
  3. [BUUCTF-pwn]——jarvisoj_level2_x64
  4. tomcat JRE_HOME
  5. IntegerCache的妙用和陷阱
  6. 50个最有价值的数据可视化图表
  7. 刘作虎:今年一加9系列不会送测DxO
  8. golang 相互引用_Golang与C互用以及调用C的so动态库和a静态库
  9. [Java] 蓝桥杯ALGO-85 算法训练 进制转换
  10. 39个SEO经典案例
  11. 软考嵌入式中级经验分享+真题教材
  12. shell批量修改文件后缀名
  13. 软件工程师-华为机试注意事项
  14. Microsoft MSN Messenger 7.0.0205 Beta Leaked
  15. Unity ios打包卡在Converting managed assemblies to C++
  16. 一个完整的NES模拟器
  17. excel手机版_微软开发于手机端的办公软件!
  18. flex布局实现无缝滚动
  19. 教你用Canvas将图片截成圆图
  20. AutoMagic使用说明

热门文章

  1. 云计算技术基础复习知识点
  2. 两点定标法_基于积分时间调整的红外焦平面阵列非均匀校正算法研究
  3. tp6 thinkswoole 使用极光curl请求时报错
  4. 10 Habits of All Successful People 成功人士的10个习惯
  5. elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)
  6. 201919102004张雪婷(第三次作业)
  7. 强烈推荐张玉宏《深度学习之美》成书前的《深度学习系列十四篇》
  8. STM32工具使用---STM32CubeProgrammer更新固件
  9. 服务器自动关机重启1076,状态服务器上的事件 ID 1072 或1076 - ASP.NET | Microsoft Docs...
  10. devcpp的简单使用