第四章需求分析与设计工具
一、学习内容
(一)需求工程概述
1. 定义
- 需求工程是需求的供需双方采取被证明行之有效的原理、方法,通过使用适当的工具和符号体系,全面地描述用户待开发系统的行为特征、约束条件的过程;
2. 开发人员
- 系统分析师起到桥梁工程师的作用,负责完成用户“业务世界”逻辑向由软硬件组成的“电脑世界”逻辑的获取和转换过程;
3. 需求工程
- 三个阶段:需求获取、需求生成、需求验证;
- 需求获取:归纳和整理用户提出的各种问题和需求;
- 需求生成:描述问题和需求;
- 需求验证:对需求的产品阶段质量进行检验的过程;
4. 其他要求
- 软件需求的层次性:业务需求,用户需求,功能需求;
- 业务需求:反映了用户对系统和产品高层次的目标要求;
- 用户需求:描述了用户使用产品必须要完成的任务;
- 功能需求:定义了开发人员必须要实现的软件功能;
(二)需求分析工具概述
1. 分类
- 从自动化程度分为以人工方式为主和以自动方式为主的需求分析工具;
- 从支持分析设计技术角度分支持传统的结构化方法的需求分析工具、面向对象分析的需求分析CASE工具、原型化分析的需求分析工具、基于其他方法的分析工具;
- 根据需求工具和客户的业务领域关系,可以分为很多类;
2. 需求分析工具的功能特性和衡量标准
- 特性:
(1)针对结构化方法:多种分析和设计方法、支持DFD、一致性检查;
(2)针对面向对象方法:支持典型的多种面向对象方法、支持类定义和类关系描述、支持对象复用、支持对象交互描述、一致性检查;
(3)一些共性:支持业务方向工程、支持版本控制、脚本支持、支持生成需求分析规格说明书、支持扩展标记语言、支持多种文件格式的导出和导入;
3. 衡量一个需求分析CASE工具功能强弱的主要依据
- 所支持的需求分析方法的类型与数量的多少;
- 使用方便程度;
- 与设计工具衔接的程度;
- 所占资源,即系统开销的多少以及对硬件环境的需求程度;
- 是否提供需求错误检测机制;
- 用户领域知识提示功能。
4. 需求分析CASE工具的选择:遵循因地制宜的原则;
(三)需求分析方法与需求分析工具
1. 软件需求分析的方法与工具
- 方法:自顶向下和自底向上;
- 自顶向下的分析方法(SA):从最上层的系统组织机构入手,采用逐层分解的方式分析系统,用数据流图(DFD)和数据字典(DD)描述系统,处理过程的处理逻辑常常借助判定表或判定树来描述,数据则是借助数据字典来描述;
(1)数据流图:命名的箭头表示数据流、用圆圈表示处理、用矩形或其他形状表示存储;
(2)数据字典:数据项是数据的最小单位、数据结构是数据项有意义的集合、数据流表示某一处理过程中数据再系统内传输的路径、数据存储处理过程中数据的存放场所、处理过程的处理逻辑通常用判定表或判定树来描述; - 常用的需求分析图形工具:UML、DFD、DD、判定树、判定表、结构化高级分析语言、HC、IPO、Warnier图、SADT、SREM、PSL/PSA;
2. 典型方法
- 结构化方法:历史悠久,比较成熟;
- 面向对象编程技术:时间不是很长,比较成熟;
- 产品线方法:关注点转移;
(四)软件设计概述
1. 软件设计的概念
- 应用各种技术和原理对一个设备、一个过程或者一个系统做出足够详细的规定,使之能够再物理上得以实现;
- 把软件需求转化为软件表示的过程;
- 运用一些基本的设计概念和各种有效的方法和技术,把软件需求分析转化为软件表示,使系统能在机器上实现。
- 重要性:
(1)软件设计阶段占据软件项目开发总成本的绝大部分,是在软件开发过程中形成质量的关键环节;
(2)软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径;
(3)软件设计做出的决策,最终影响软件实现的成败;
(4)设计是软件工程和软件维护的基础; - 要求:
(1)必须实现分析模型中所涉及的所有显示需求,必须与用户希望的所有隐士需求相适应;
(2)对编程、测试、维护人员必须是可读、可理解的;
(3)应给出相关数据、功能及其行为相关的软件全貌; - 从技术观点来看,软件设计包括软件结构设计、数据设计接口设计、过程设计
2. 软件设计的基本原理
- 分解与抽象:控制软件复杂性的基本手段是分解,把事实本质的共性提取出来而不考虑其他细节是抽象;
- 模块化:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干个模块的过程;
- 模块:把一个待开发的软件分解成若干小的简单的部分;
- 模块分解的标准评价设计方法:
(1)模块的可分解性;
(2)模块的可组装性;
(3)模块的可理解性;
(4)模块连续性;
(5)模块保护性; - 信息隐蔽:在一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问的;
- 模块的独立性:指每个模块只完成系统要求的独立的子系统,并且与其他模块的联系最少且接口简单;
- 模块的独立性度量标准:耦合性、内聚性;
- 内聚性:一个模块内部的各个元素间彼此结合的紧密程度的度量;
(1)偶然内聚:指一个模块内的各处理元素之间没有任何联系;
(2)逻辑内聚:指模块内执行几个逻辑上相关的功能,通过参数确定该模块完成哪一个功能;
(3)时间内聚:把需要同时或顺序执行的动作组合成一起形成的模块;
(4)过程内聚:必须以特定次序执行的;
(5)通信内聚:模块内所有处理功能都通过使用公用数据而发生关系;
(6)顺序内聚:处理按顺序执行;
(7)功能内聚:所有元素共同完成一个功能; - 耦合性:模块间互相连接的紧密程度的度量;
(1)内容耦合:直接访问另一模块内容;
(2)公共耦合:访问同一全局数据结构;
(3)外部耦合:访问同一全局简单变量;
(4)控制耦合:一个模块控制另一个模块;
(5)标记耦合:两模块间通过数据结构交换信息;
(6)数据耦合:两模块间通过数据参数交换信息;
(7)非直接耦合:模块间没有关系,通过主模块调用;
3. 软件设计过程和模型
- 过程:需求规格说明包括信息、功能、行为、其他描述作为设计的输入,设计输出结果是数据、体系结构、接口、过程设计;
- 模型:由接口设计、过程设计、数据设计、体系结构设计构成;
(五)结构化设计方法与工具
1. 概述
- 采用最佳的可能的方法设计系统的各个组成部分以及各成分之间的内部联系的技术;
- 基本思想:将软件设计成由相对独立、单一化的功能的模块组成的结构;
- 步骤
(1)评审和细化数据流图;
(2)确定数据流图的类型;
(3)把数据流图映射到软件模块结构,设计出模块结构的上层;
(4)基于数据流图逐步分解高层模块,设计中下层模块;
(5)对模块结构进行优化,得到更为合理的软件结构;
(6)描述模块接口。 - 设计原则
(1)使每个模块执行一个功能;
(2)每个模块用过程语句调用其他模块;
(3)模块间传送参数作数据用;
(4)模块间共用的信息尽量少。
2. 结构化设计方法的基本概念
- 是基于模块化、自顶向下细化、结构化程序设计等程序设计基础发展起来的;
- 基本思想:将软件设计由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段;
- 概要设计阶段描述工具是结构图;
- 概要设计:把系统的功能需求分配给软件结构,形成软件的模块结构图;
3. 概要设计工具——结构图
- 作用:反映系统的功能实现以及模块与模块之间的联系与通信,即反映了系统的总体结构;
- 基本组成成分:模块、数据、调用;
- 基本术语:
(1)深度:模块结构的层次数;
(2)宽度:同一层模块的最大模块数;
(3)扇入:一个模块直接调用的其他模块数目;
(4)扇出:调用一个给定模块的模块个数; - 好的软件结构:顶层扇出比较多,中层扇出较少,底层扇出较多;
4. 概要设计任务的实现——数据流图到结构图的变换
5. 详细设计及工具
- 目的:为软件结构图中的每一个模块确定采用的算法,模块内数据结构用某种选定的表达工具给出清晰的描述;
- 工具种类:图形工具、表格工具、语言工具;
- 工具:流程图(PFD),盒图(N-S图)、问题分析图(PAD)、过程设计语言(PDL)
(六)典型需求分析与设计工具
1. BPwin简介
- 提供功能建模、数据流建模、工作流建模;
- 将与建立过程模型有关的任务自动化;
- 为复杂项目的项目分析小组成员提供统一的分析环境;
- 可与模型管理工具ModelMart集成使用;
- 可与建模工具ERin集成使用;
- 符合美国政府FIPS和IEEE标准;
- 易于使用,支持Unicode;
2. Power Designer 简介
- 使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。
二、练习
(一)名称解释
1. 需求工程
答:需求的供需双方采取被证明行之有效的原理、方法,通过适当的工具和符合体系,正确、全面地描述用户待开发系统的行为特征、约束条件的过程;
2. SA方法
答:即自顶向下的分析方法,从最上层的系统组织机构入手,采用逐层分解的方式分析系统,用数据流图和数据字典描述系统;
3. 软件设计
答:即运用一些基本的设计概念和各种有效的方法和技术,把软件需求分析转化为软件表示,使系统能在机器上实现。传统软件设计可以分成系统的总体设计和过程设计;
4. 模块化
答:解决一个复杂问题使自顶向下逐层把软件系统划分成若干模块的过程;
5. 信息隐蔽
答:指在一个模块看内包含的信息,对于不需要这些信息的其他模块来说是不能访问的;
6. 模块独立性
答:指每个模块只完成系统要求的独立的子系统,并且与其他模块的联系最少且及接口简单;
(二)简答
1. 需求工程包括哪些阶段?
答:需求获取、需求生成、需求验证;
2. 如何理解软件需求?
答:具有不同的层次性,即业务需求、用户需求、功能需求;
(1)业务需求:反映了用户对系统和产品的高层次的目标要求,他们是用户组织机构流程的再现和模拟,是从用户组织机构工作流程角度进行的需求描述;
(2)用户需求:描述了用户使用产品必须要完成的任务,一般通过用例或方案脚本予以说明,它是从系统使用角度对待开发系统进行的需求描述;
(3)功能需求:定义了开发人员必须实现的软件功能,从而使得用户能完成任务,满足其业务需求;
3. 如何定位软件设计的重要性?
答:
(1)软件开发阶段占据软件项目开发总成本绝大部分,是在软件开发中形成质量的关键环节;
(2)软件设计是开发阶段最重要的步骤,是将需求准确的转化为完整的软件产品或系统的唯一途径;
(3)软件设计作出决策,最终影响软件实现的成败;
(4)设计是软件工程和软件维护的基础;
4. 评价模块分解设计方法有哪些标准?
答:模块可分解性、模块可组装性、模块的可理解性、模块连续性、模块保护性;
5. 结构化设计的基本思想是什么?
答:将软件设计成由相对独立、单一化功能的模块组成的结构,软件结构设计的一个目标就是得出一个系统化的程序结构;
(三)分析题
1. 如何衡量一个需求分析CASE工具功能的强弱?
答:
(1)所支持的需求分析方法的类型与数量多少;
(2)使用的方便程度;
(3)与设计工具衔接的程度;
(4)所占资源,即系统开销的多少硬件环境的需求程度;
(5)是否提供需求错误检测机制;
(6)用户领域知识提示功能;
第四章需求分析与设计工具相关推荐
- 《软件测试的艺术》第四章 测试用例的设计
<软件测试的艺术>第四章 测试用例的设计 4.0 前言 4.1 白盒测试 逻辑覆盖测试 语句覆盖 判定覆盖/分支覆盖 条件覆盖 判定/条件覆盖 多重条件覆盖 4.2 黑盒测试 4.2.1 ...
- 推荐的四款产品原型设计工具
与一般针对产品功能的介绍不同,本文以亲身的设计需求为出发点,通过对产品整理和提供相关的链接,帮助解决从业人群对做产品页面原型的直接需求.可以为做产品设计的童鞋提供一些参考和下载帮助. 天天和产品打交道 ...
- 设计美学 第四章 技术革命与设计革命
文章目录 1 技术革命与设计革命 1.1技术与设计的关系 1.2技术革命对设计的影响 1.3技术基础与审美范型 2 古代技术革命 3 古典设计 3.1东方建筑中的古典设计 3.2西方建筑中的古典设计 ...
- 【软件工程基础复习整理】第四章需求分析(3)功能建模
IDEF0功能建模 IEDF方法是一套对复杂系统进行建模分析和设计的系统方法,:IDEF0进行功能建模,IDEF1X用来建立数据模型,IDEF4方法则用于面向对象设计等等. IDEF0方法用严格的自顶 ...
- 【软件工程基础复习整理】第四章需求分析(2)数据流建模
数据流建模 是一种结构化方法(指导思想:自顶向下.逐步求精,一直到单入口到单出口的数据结构:顺序.选择.循环) 原则上可以用于分析任何应用系统的需求,特点是利用数据流图来对用户需求进行分析 尤其是大型 ...
- 《软件开发工具》(第七—十四章)
第七.八章 Eclipse入门和工作台 *(以下几章选择填空题居多)* Eclipse的体系结构:运行时内核.工作空间.工作台.插件等 1) 运行时内核:平台运行库是内核,它在启动时检查已安装了哪些插 ...
- mysql数据库设计工具_四种优秀的数据库设计工具
[51CTO.com快译]众所周知,良好的数据库设计能够大幅减少后期的运维工作,同时也能最大程度地减少软件项目出错的可能.由于我们所面临的真实项目需求往往五花八门,因此需要找到合适的设计工具,来实现事 ...
- 【软件工程】期末复习题 | 第一~十四章例题/课后习题
软件工程期末复习题整理(答案在文末) 目录 软件工程期末复习题整理(答案在文末) 一.判断题 二.选择题 三.简答题 四.应用题 一.判断题 第一章 1.软件就是程序,编写软件就是编写程序. ( ) ...
- 五款移动APP在线原型设计工具,值得收藏
今天已到2014年的最后一天了,25学堂还是一无既往的为大家提供最优质最简单通俗的移动APP设计资源和移动APP设计干货. 25学堂整理了国内外4个比较操作易上手的移动APP在线原型设计工具推荐给大家 ...
- 走向.NET架构设计—第四章—业务层分层架构(前篇)
走向.NET架构设计-第四章-业务层分层架构(前篇) 前言:在任何一个项目中业务层毫无疑问是最重要的层,所以在设计的过程中,如何组织业务层是至关重要的.本章的讨论将会涉及Flower的架构模式一书中的 ...
最新文章
- 怎么扫描_打印机上扫描仪怎么用 打印机上扫描仪使用及添加方法
- ca 服务器的搭建 和证书的申请与颁发
- python读取lmdb文件_python将图片转成lmdb格式
- 地壳中元素含量排名记忆口诀_Nature:利用熔融包裹体的元素和同位素示踪俯冲带流体来源...
- 目标检测算法图解:一文看懂RCNN系列算法
- cupsd进程_关于Linux操作系统进程操作(ps)命令简介
- SQL大赛——5X5方格棋盘难题
- Flutter进阶—实现动画效果(一)
- Linux htop工具使用详解
- 完全免费!6个不可错过的图片、视频等资源网站分享,个个都是精品!
- 计算机自我检测方法,电脑问题的自我检测方法有哪些?
- 怎么用matlab画误差椭圆,基于MATLAB的导线网平差软件设计及误差椭圆的绘制.docx...
- 计算机硬件和系统重装,如何找到最适合自己电脑的系统进行重装
- NS各种常用资料 [转载]
- excel表格拆分如何快速完成
- 一名武大同学的春招48小时
- 解决花生壳 Aira2 路由器 树莓派中的aira2状态未连接的思路
- CentOS 6.4下安装和配置Samba - 行知小筑 - 51CTO技术博客
- switchhosts工具
- 音视频进阶教程|实现直播间的自定义视频渲染
热门文章
- socket 支持 ipv6
- C语言常见例题源代码
- 常见Sql面试题及答案
- mysql认证_关于MySQL认证
- 第一部分 Word练习题
- 汉字书写解码_汉字密码 | 500个字根即可解码10万个汉字,《说文解字》的神功...
- 计算机控制实验报告组态软件学习,单片机与MCGS组态综合实验系统 教学软件 实训系统...
- linux db2 64位下载,DB2(Linux 64位)安装教程
- 深度学习:图像识别(匹配)方法|室内定位|论文与方法整理
- Hive 3.1.2 国内镜像下载地址