一、作业信息
作业班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11548 |
作业目标 | 学习并掌握结构化分析与设计 |
学号 | 3180701337 |
二、实验目的
(1)掌握结构化的需求分析方法;
(2)掌握分层数据流图的绘制、数据字典和加工说明的编制;
(3)掌握数据流图映射为软件结构图的方法;
(4)掌握需求说明书和设计说明。书的主要内容,学习软件需求说明书和设计说明书的编写;
(5)掌握测试的基本方法。
三、实验内容
(1)参考一个熟悉的系统,如,机票预订系统/教材订购系统/ATM自动取款机,讨论其用户需求、系统需求和业务需求;
(2)绘制系统的分层数据流图,并给出数据字典;
(3)将系统的分层数据流图映射为软件结构图,绘制软件结构图;
(4)为关键模块进行详细设计,如绘制关键模块的流程图;
(5)实现系统部分功能并测试。
【实例1】机票预订系统
参考:
(1)携程网:https://flights.ctrip.com/international/search/domestic
(2)去哪儿:https://www.qunar.com/?ex_track=auto_4e0d874a
为了方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行
时间、旅行目的地等)输入该系统,系统为旅客安排航班,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误即印出
机票给顾客
【实例2】教材订购系统
销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领
书单,教师或学生即可去书库领书。
采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给书库采购人员;一旦新书入库后,即发进书单通知给教材发
行人员。
【实例3】图书管理系统
四、实验步骤
(1)复习结构化的分析与设计方法的主要过程;
结构化分析方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正确的原理和技术为支撑,
以数据流图,数据字典,结构化语言,判定表,判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分
析方法。
结构化分析的步骤如下:
①分析当前的情况,做出反映当前物理模型的 DFD;
②推导出等价的逻辑模型的 DFD;
③设计新的逻辑系统,生成数据字典和基元描述;
④建立人机接口,提出可供选择的目标系统物理模型的 DFD;
⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
⑥选择一种方案;
⑦建立完整的需求规约。
结构化设计方法是以自顶向下,逐步求精,模块化为基点,以模块化,抽象,逐层分解求精,信息隐蔽化局部化
和保持模块独立为准则的设计软件的数据架构和模块架构的方法学。结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的
原理与技术。它通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD 方法尤其适用于变换型结构和事务型
结构的目标系统。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。
结构化设计的步骤如下:
①评审和细化数据流图;
②确定数据流图的类型;
③把数据流图映射到软件模块结构,设计出模块结构的上层;
④基于数据流图逐步分解高层模块,设计中下层模块;
⑤对模块结构进行优化,得到更为合理的软件结构;
⑥描述模块接口。
(2)讨论系统存在的用户角色、工作流等;
本次实验我参考的是图书管理系统,
在该系统中存在的用户角色:学生,老师,书库管理人员。
工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将
工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是:为实
现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。简单来说,工作流(工作流程)是完成特
定过程所必需的一系列相关步骤或逻辑。
在图书管理系统中,工作流主要分为两步:
1.销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发
票、登记并返给教师或学生领书单,教师或学生即可去书库领书。
2.采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给书库采购人员;一旦新书入库
后,即发进书单通知给教材发行人员。
(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;
图书管理系统的主要功能为两部分:一是销售系统;二是采购系统。
1.销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购
书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。
2.采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给书库采购人员;
一旦新书入库后,即发进书通知给教材发行人员,以上的功能要求在计算机上实现。
数据流图
1.顶层图
2.一层数据流图
3.加工1的子图
4.加工2的子图
数据字典
数据字典各部分的描述
①数据项:数据流图中数据块的数据结构中的数据项说明
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}
1.数据项名称:学号
数据项含义说明:某个学生的代码
别名:学生编号
类型:字符型
长度:10位
取值范围:0000000001~9999999999
取值含义:入学学年+学院代码+专业代码+班级代码+班级顺序号
与其他数据的逻辑关系:借阅单,缺书单
2.数据项名称:老师编号
数据项含义说明:某个老师的代码
别名:老师编号
类型:字符型
长度:10位
取值范围:0000000001~9999999999
取值含义:入职学年+学院代码+教授专业代码+教师顺序号
与其他数据的逻辑关系:借阅单,缺书单
3.数据项名称:图书编号
数据项含义说明:某个图书的代码
别名:图书码
类型:字符型
长度:12位
取值范围:000000000001~999999999999
取值含义:图书类型+购买日期(年月日)+图书顺序号
与其他数据的逻辑关系:借阅单,购书单,缺书单
4.数据项名称:书库管理人员编号
数据项含义说明:某个书库管理人员的代码
别名:书库管理人员编号
类型:字符型
长度:10位
取值范围:0000000001~9999999999
取值含义:入职日期(年月)+身份证后两位+书库管理人员顺序号
与其他数据的逻辑关系:购书单
5.数据项名称:图书名称
数据项含义说明:某个图书的名字
别名:书名
类型:字符型
长度:50位
取值范围:无
取值含义:记录图书名称
与其他数据的逻辑关系:借阅单,购书单,缺书单
6.数据项名称:姓名
数据项含义说明:某个学生或老师或书库管理人员的名称
别名:名字
类型:字符型
长度:20位
取值范围:无
取值含义:记录人的名称
与其他数据的逻辑关系:借阅单,购书单,缺书单
②数据结构:数据流图中数据块的数据结构说明
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
1.数据结构名:借阅单
含义说明:借阅图书的证明
组成:学号/老师编号+学生姓名/老师姓名+图书编号+图书名称+数量+借阅日期+归还日期
2.数据结构名:购书单
含义说明:书库管理人员购置新图书的证明
组成:书库管理人员编号+书库管理人员姓名+图书编号+图书名称+购置日期+数量+价格
3.数据结构名:缺书单
含义说明:学生或老师有需求但图书馆未购置的图书信息,也是书库管理人员购置新图书的参考依据
组成:学号/老师编号+学生姓名/老师姓名+缺书信息(图书类型,图书名称)+缺书数量
③数据流:数据流图中流线的说明
数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}
1.数据流名:借书处理
说明:办理借书处理
数据流来源:数据流读者的学号,姓名,书籍编号,书名(及版本),作者,出版社,日期,来源于借阅单。借阅本数来源于数据存储读
者信息表。数据流图书的状态,来源于数据存储图书信息表。
数据流去向:将图书的改变信息保存在数据存储图书信息表中,并将所借书籍信息保存到数据存储借阅信息表中,并将借阅本数的修改保
存到读者信息表中。
组成:借阅单
2.数据流名:还书处理
说明:办理还书处理
数据流来源:数据流读者的学号,书名(及版本),作者,出版社,日期,来源于还书申请表;数据流借入时间,来源于借阅信息表。
数据流去向:数据流借阅本书的修改保存到读者信息表中,数据流还书信息的修改保存到借阅信息表和图书信息表,若有罚款,则将相关
信息保存到读者信息表中。。
组成:借阅单
3.数据流名:图书登记处理
说明:将新购入的图书信息登记入图书馆图书信息库
数据流来源:数据流中书籍编号,书名(及版本),作者,出版社,日期,来源于缺书单。数据流金额,购书本数来源于购书单。数据流
图书的状态,来源于数据存储图书信息表。
数据流去向:将图书的改变信息保存在数据存储图书信息表中。
组成:借阅单
④数据存储:数据流图中数据块的存储特性说明
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式}
1.数据存储名:图书信息表
说明:存放着图书信息
编号:001
流入的数据流:P1.1、P2.1
流出的数据流:P2.4
组成:书籍编号+书名(及版本)+作者+出版社+入库时间+状态(被借阅后显示借阅人信息和归还日期)
2.数据存储名:借阅信息表
说明:学生/教师借阅图书后的相关信息
编号:002
流入的数据流:P1.4
流出的数据流:无
组成:学号/老师编号+书籍编号+书名(及版本)+借入时间+归还日期
3.数据存储名:缺书信息表
说明:登记缺书信息
编号:003
流入的数据流:P1.6
流出的数据流:P1.5
组成:书名+价格+缺书数量
⑤处理过程:数据流图中功能块的说明
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}
1.处理过程名:还书审核
说明:在学生或老师归还书籍时审查归还日期是否过期
输入:借书处理
输出:图书信息表
处理:根据借书处理上的归还日期对照判断还书是否超时,超时后对相关借书人员进行处罚,并将图书信息表中的图书状态更新。
2.处理过程名:购书审核
说明:判断购书单中的书籍是否值得被购买
输入:图书信息表,购书单
输出:图书登记处理
处理:根据购书单中的图书信息在图书信息表中进行查询,对比其中的书籍类型和书籍数量,再进行人工判断审核,审核通过后,
购买图书,并将新购入的图书进行图书登记处理。
(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;
四、思考题
(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
需求说明书是指在研究用户要求的基础上,完成可行性分析和投资效益分析以后,在需求分析阶段需要完成的文档,是软件需求分析
的最终结果。软件需求说明书的编制是为了使用户和软件开发者双方对该软件的运行环境、功能和性能需求的初始规定有一个共同的理解
,使之成为整个开发工作的基础,为概要设计提供需求说明。
概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素
分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目
标与需求转换成具体界面设计解决方案的重要阶段。
详细设计说明书的主要内容是说明一个软件系统各个层次中的每个程序(每个模块或子程序),为程序员编写程序提供依据。如果一个软件
系统比较简单,层次很少,本部分可以不单独编写,有关内容合并入概要设计说明书中。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一
步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。面向对象的分析方法则是通过将数据和
逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。
两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型,结构
化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装
等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。两种方法
不是对立的,可在项目中结合使用。
(3)对数据流图进行审查有何意义?
对数据流图进行审查的主要目的是尽早发现数据流图中各项需求分析和设计中的缺陷与错误,并对其进行纠错与改正。在
分析的与画出数据流图的一开始并不能获得完美的数据流图,而对数据流图不断进行审查与改善便能是数据流图趋近于完美。
(4)给出一次完整的会议讨论纪要,包括议题,最终结果。
会议讨论纪要:
议题:需求分析和具体设计哪部分需要做的更好。
会议概述:根据需求说明书和设计说明书两这的区别判断在程序化设计过程中应在哪部分中投入较为更多的精力。
会议地点:C座603
参会人员:实验同组人员
最终结果:应在需求说明书部分投入更多精力,因为搞系统的时候要始终明白用户在想什么,要解决什么问题。当需求设计完美
完成后,具体设计也能很好地完成,反之如果没弄好需求分析,那么在具体设计过程中会陷入目的不明确的迷茫之中。
五、个人小结
通过本次结构化分析与设计,我对结构化的需求分析方法有了更清晰的认知,其次,在刚开始进行实验时,我对实验过程中的每个部
分都分析了一遍,但总是不能有很明确的认知,不知道该如何开始,但当实际动手来查阅资料与自行分析过后,慢慢的就能完成实验。并且,
在实验过程中不断遇到兵解决问题的过程使我受益匪浅。
(PSP)
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 5 | 8 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 5 | 6 |
Development | 开发 | 180 | 200 |
Analysis | 需求分析(包括学习新技术) | 5 | 8 |
Design Spec | 生成设计文档 | 5 | 5 |
Design Review | 设计复审 | 5 | 5 |
Coding Standard | 代码规范 | 5 | 3 |
Design | 具体设计 | 12 | 15 |
Coding | 具体编码 | 15 | 15 |
Code Review | 代码复审 | 12 | 12 |
Test | 测试(自我测试,修改代码,提交修改) | 15 | 24 |
Reporting | 报告 | 9 | 10 |
Test Report | 测试报告 | 3 | 3 |
Size Measurement | 计算工作量 | 2 | 2 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 5 | 3 |