软件工程导论-结构化分析
文章目录
- 结构化分析概述
- 核心思想
- 具体步骤
- 数据模型(E-R图)
- 数据模型组成
- 实体-关系图
- 具体实例
- 数 据 流 图
- 数据流图符号
- 数据流图范例
- 解法:
- 分层数据流图
- 分层法绘制流程图的几个问题
- 命名规则
- 用途
- 习题(画数据流图)
- 状态转换图
- 电话系统状态转换图
- 数据字典
- 数据字典定义方法
- 数据字典定义符号
结构化分析概述
核心思想
分解化简问题
物理与逻辑表示分开
进行数据与逻辑抽象
具体步骤
发现需求
求精
对初步需求反复求精多次细化。
- 建模
建立模型,用图形符号和组织规则书面描述事物。
具体步骤
- 规格说明
书写软件需求规格说明,作为分析阶段最终成果。
- 复审
数据模型(E-R图)
数据模型组成
- 数据对象
软件必须理解的复合信息表示,复合信息是具有一系列
不同性质或属性的事物。
事务(报表)、地点(仓库)、角色(教师、学生)单
位(会计科)、行为(打电话)等
- 数据对象间关系
对象彼此间相互连接方式,也称联系。
教师和学生间存在“教”的联系。
分三类,1:1 、 1:N 、 M:N。
- 属性
定义数据对象性质。
数据对象学生的属性可为学号、姓名、班级等。
实体-关系图
某校教学管理系统E-R图
具体实例
请为某仓库的管理设计一个ER模型,该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。
“零件”的主要属性是:零件编号,零件名称,颜色,重量。 “工程项目”的属性主要是:项目编号,项目名称,开工日期。“供应商”的属性主要有:供应商编号,供应商名称,地址。
数 据 流 图
数据流图(DFD)描绘系统逻辑模型,图中没有具体的物理元素,只描绘信息在系统中流动处理情况。
是非常好通信工具和软件设计出发点。
数据流图符号
正方形(或立方体):表示数据的源点或终点
人员、部门、计算机外部设备或传感器装置
圆角矩形(圆形):代表变换数据的处理;
一系列程序、单个程序或程序一个模块;人工处理过程。
开口矩形(两条平行横线):代表数据存储
文件、文件一部分、数据库元素或记录一部分,可存在磁盘、磁带、磁鼓、主存、微缩胶片任何介质上。
- 箭头:表示数据流,即特定数据的流动方向。
在处理之间有向流动的数据项或数据集合。
数据流图范例
工厂采购部采购员每天需一张定货报表,按零件编
号排序列出所需定货零件。
对定货零件列下述数据:零件编号、名称、定货数
量、目前价格,主次要供应者等。
零件入库或出库称事务,通过仓库终端把事务报告
定货系统。零件库存量少于库存临界值需订货。
解法:
- 从问题描述提取数据流图四种成分
先考虑源点和终点
再考虑处理
最后考虑数据流和数据存储
源点:仓库管理员
终点:采购员
处理:处理事务、产生报表等
数据流:事务、订货信息、订货报表等
数据存储:订货信息、库存信息
- 着手画数据流图的基本系统模型。
- 把基本系统模型细化,描绘系统主要功能。
- 主要功能进一步细化。
- 结束、进一步分解涉及如何具体实现功能时,不应再分解。
分层数据流图
为表达数据加工情况,需采用层次结构数据流图。
顶层数据流
图包含一个加工项;
底层流图
指加工项不再分解的数据流图;
中间层流
图只在顶层和底层之间,对其上层父图的
细化。
分层法绘制流程图的几个问题
- 编号的设置
子图的编号是父图相应的处理逻辑的编号。
子图中处理逻辑编号由子图号、小数点与局部号组成。
- 父图与子图的平衡
子图详细地描述父图中处理逻辑
子图的输入、输出数据流应同父图处理逻辑的输入、输出数据流相一致。
- 局部数据存贮
在子图中出现的数据存贮,可以不出现在父图
中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节。
命名规则
数据流(数据存储)命名
(1)用名词,区别于控制流。
(2)代表整个数据流(数据存储)内容,不仅仅反映某些成分。
(3)不用缺乏具体含义名字,如“数据”、“信息”。处理命名
(1)用动宾词组,避免使用“加工”、“处理”等笼统动词。
(2)应反映整个处理的功能,不是一部分功能。
(3)通常仅包括一个动词,否则分解。数据源点/终点
不属于数据流图的核心内容,可能是人员、计算机外部设备或传感器装置。采用它们在问题域中习惯使用的名字(如“采购员”、“仓库管理员’等)。
用途
- 作为交流信息的工具
- 作为分析和设计的工具
用数据流图辅助物理系统设计时,可在数据流图
上画出许多组自动化边界,每组自动化边界可能意
味着不同的物理系统。
习题(画数据流图)
工资计算系统包含如下功能:
计算工资
根据人事部门给出的出勤表和业绩表计算奖金和缺勤扣款,通过生成的奖金发放表及工资基本信息库的信息计算应发工资,根据应发工资表计算所得税,根据后勤部门给出的水电扣款及缺勤扣款表和所得税款计算出实发资,生成实发工资表和工资清单。
打印工资清单
根据工资清单完成工资条的打印,给职工
工资转存
根据实发工资表生成职工工资存款清单并将其发送到银行
请用数据流图描绘该系统。
状态转换图
软件的行为模型:状态、事件,行为。
状态:被观察到的系统行为模式。
事件:引起状态转换的外界事件抽象。
箭头表示,箭头上标事件名。后跟〔条件〕,表状态转换条件。
行为:进入某状态所作动作。
状态框内do:行为名。
电话系统状态转换图
数据字典
对系统使用的所有数据元素定义的集合,半形式化方法表达。
数据字典定义方法
数据字典对四类元素定义:数据流,数据元素,数据存储,处理
数据流的描述
数据元素的描述
数据存储的描述
处理
数据字典定义符号
定义数据方法:对数据自顶向下分解。
由数据元素组成数据的方式:
- 顺序: 以确定次序连接两个或多个分量(数据元素);
- 选择: 从两个或多个可能元素中选一个;
- 重复: 把指定的分量(数据元素)重复零次或多次;
- 可选: 一个数据元素可有可无的。
航班信息文件={航空公司名称+航班号+起点+终点+日期+起飞时间+降落时间}
航空公司名称=2{字母}8
航班号=3{十进制数字}3
字母="a"…“z”
十进制数字="0"…“9”
起点=终点=1{汉字}5
起飞时间=降落时间=时+分
时="00"…“23”
分="00"…“59”
日期=年+月+日
年=[2010|2011|2012|2013]
月="01"…“12“
日="01”…“31”
软件工程导论-结构化分析相关推荐
- 《软件工程导论》课后习题答案
<软件工程导论>课后习题答案 第一章 软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题表现在以下几个方面: (1)用户对开发出 ...
- 《软件工程导论》考研复试整理
一.名词解释 DFD 数据流图Data Flow Diagram PDL 过程设计语言 Process Design Language PAD 问题分析图 Problem Analysis Diagr ...
- 首经贸电子信息复试软件工程导论
一.名词解释 DFD 数据流图Data Flow Diagram PDL 过程设计语言 Process Design Language PAD 问题分析图 Problem Analysis Diagr ...
- 学习软件工程导论的心得体会
软件工程导论是一门软件工程专业的必修课,在长达一学期的学习中,我认识到为解决"软件危机"引发的一系列困境,使得"软件工程"这一概念面世,其中,软件工程中由&qu ...
- 软件工程导论考试-试卷4
软件工程试题及答案 第一部分 选择题 一.单项选择题 每小题1分,共20分.(在每小题的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内) 1.在下列工具与环境中( ) ...
- [课程复习] 软件工程导论之经典题目回顾 (一)选择题、填空题1
作者最近在复习考博,乘此机会分享一些计算机科学与技术.软件工程等相关专业课程考题,一方面分享给考研.考博.找工作的博友,另一方面也是自己今后完成这些课程的复习资料,同时也是在线笔记.基础知识,希望对您 ...
- 软件工程导论 期末知识点复习总结
title: 软件工程导论 期末知识点 复习 categories: 计算机专业课 tags: "软件工程" 软件工程知识点总结,仅仅为了期末考试.带*不重要了解一下即可,黑体重点 ...
- 《软件工程导论》学习笔记·
嗯,软件工程的笔记是上课做的,发现有小伙伴收藏,很开心,这里列出上学时的笔记,有些是课堂笔记,有些是图书馆刷书的笔记,电子档的笔记后面都有资源,生活加油,天天开心, ^_^ <Oracle 11 ...
- 软件工程导论团队项目
软件工程导论团队项目(速课小龙) 一.团队介绍 1.团队成员 邓 旭 2016012068 (组长) 陈逸璇 2016012056 周紫伊 2016012043 谢月鹏 2016012066 洪泽芳 ...
最新文章
- tensorflow——openpose代码和原理分析
- (017)java后台开发之客户端通过HTTP获取接口Json数据
- 在CentOS上禁用IPv6
- myeclipse新建映射文件xxx.hbm.xml
- 【Windows程序设计】Unicode简介
- 计算机视觉基础-图像处理(图像滤波)cpp+python
- xposed hook 静态函数_开源Hook框架-epic-实现浅析
- AD19无法生成PCB_对PCB印制线的传输线效应以及封装、连接器和电缆的频率响应进行全面分析...
- 【定位问题】基于matlab三维chan算法求解室内定位问题【含Matlab源码 580期】
- Golang + Qt5 桌面开发终极解决方案
- AD7124-4调试经验分享
- 拆解 米家扫地机器人_1699元!小米米家扫地机器人拆解:真复杂
- 双非上岸北大计算机,双非二战考研上岸北大汇丰经验贴
- 万里汇WorldFirst人民币提现,1天内到账,太快了!
- 中序线索化二叉树的遍历
- Zero-Shot Deep Domain Adaptation[reading notes]
- 【怎么用u盘装系统】
- linux工作区目录,Linux(以RHEL7为例)下添加工作区的方法|| The Way To Add Workspace On Linux...
- 【JS提升】六边形的两种画法
- 一支笔的测试点_软件测试面试:如何测试一支笔(铅笔,钢笔,中性笔)
热门文章
- 覆盖3700家机构!人大金仓联合卫宁健康助力广州市妇幼保健系统信创升级
- 恐龙灭绝与电脑的相关性[原创]
- 对于无法使用altium导入向导导入allegro文件从Allegro(.brd)文件转altium(.PcbDoc)文件的方法
- Codeforces Round #742 (Div. 2) B、C 题解
- 可能是最详尽的证券服务治理框架思路 | 华泰证券企业服务化思考 | 中生代38期...
- Promises/A+ 规范
- C++ 函数名前的 '', 参数前的
- 硕士面试公司程序员,却不被招聘方认可?面试官:这学历真没价值
- 初中计算机公开课教学设计,信息技术公开课教案
- C# / VB / LabVIEW / VC / Python 上位机使用S7-TCP协议与西门子PLC进行网口通信的教程 (Win/Linux)