实验二 结构化分析与设计
作者:互联网
班级 | 软件工程 |
---|---|
实验要求 | 实验二 结构化分析与设计 |
实验目标 | 握结构化的需求分析方法;掌握分层数据流图的绘制、数据字典和加工说明的编制;掌握数据流图映射为软件结构图的方法; |
学号 | 3180701331 |
一.实验目的
(1)掌握结构化的需求分析方法;
(2)掌握分层数据流图的绘制、数据字典和加工说明的编制;
(3)掌握数据流图映射为软件结构图的方法;
(4)掌握需求说明书和设计说明。书的主要内容,学习软件需求说明书和设计说明书的编写;
(5)掌握测试的基本方法。
【实例1】机票预订系统
参考:
(1)携程网
(2)去哪儿
为了方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行
时间、旅行目的地等)输入该系统,系统为旅客安排航班,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误即印出
机票给顾客
【实例2】教材订购系统
销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领
书单,教师或学生即可去书库领书。
采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给书库采购人员;一旦新书入库后,即发进书单通知给教材发
行人员。
【实例3】图书管理系统
二.实验内容
(1)参考一个熟悉的系统,如,机票预订系统/教材订购系统/ATM自动取款机,讨论其用户需求、系统需求和业务需求;
(2)绘制系统的分层数据流图,并给出数据字典;
(3)将系统的分层数据流图映射为软件结构图,绘制软件结构图;
(4)为关键模块进行详细设计,如绘制关键模块的流程图;
(5)实现系统部分功能并测试。
三.实验步骤
(1)复习结构化的分析与设计方法的主要过程;
1.结构化方法概述
结构化方法是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部
分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向
下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
该方法的特点如下:
l 成功率较高,发展较为成熟;
l 简单、易掌握,适应于瀑布模型;
l 特别适合于数据处理领域中的应用,对规模大的项目,特别复杂的应用不太适应。
l 难于解决软件重用问题,难于适应需求的变化
结构化分析方法
结构化分析方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正
确的原理和技术为支撑,以数据流图,数据字典,结构化语言,判定表,判定树等图形表达
为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。
2.结构化分析的步骤如下:
①分析当前的情况,做出反映当前物理模型的 DFD;
②推导出等价的逻辑模型的 DFD;
③设计新的逻辑系统,生成数据字典和基元描述;
④建立人机接口,提出可供选择的目标系统物理模型的 DFD;
⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
⑥选择一种方案;
⑦建立完整的需求规约。
3.结构化设计方法
结构化设计方法是以自顶向下,逐步求精,模块化为基点,以模块化,抽象,逐层分解
求精,信息隐蔽化局部化和保持模块独立为准则的设计软件的数据架构和模块架构的方法
学。
结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它通
常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD 方法尤其
适用于变换型结构和事务型结构的目标系统。在设计过程中,它从整个程序的结构出发,利
用模块结构图表述程序模块之间的关系。
结构化设计的步骤如下:
①评审和细化数据流图;
②确定数据流图的类型;
③把数据流图映射到软件模块结构,设计出模块结构的上层;
④基于数据流图逐步分解高层模块,设计中下层模块;
⑤对模块结构进行优化,得到更为合理的软件结构;
⑥描述模块接口。
(2)讨论系统存在的用户角色、工作流等;
(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;
顶层数据流图:
一层数据流图:
图书借还处理二层数据流图:
图书查询处理二层数据流图:
图书预定处理二层数据流图:
数据字典:
数据项条目表
编号 | 名称 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|
S001 | 学生编号 | Int | 20 | 学生在系统中的代码标识 |
S002 | 学生姓名 | Varchar | 10 | 学生姓名的说明 |
S003 | 学生类型 | Int | 4 | 学生的分类说明 |
S004 | 学生性别 | Varchar | 2 | 学生的性别说明 |
S005 | 学生出生日期 | Datetime | 8 | 学生出生日期说明 |
S006 | 学生联系方式 | Varchar | 100 | 学生联系的说明 |
S007 | 图书ID | Int | 4 | 图书的标识 |
S008 | 图书书名 | Varchar | 100 | 图书书名说明 |
S009 | 图书类别 | Varchar | 50 | 关于图书类别说明 |
S010 | 作者 | Varchar | 200 | 图书作者说明 |
S011 | ISBN | Varchar | 20 | 图书编号标识 |
S012 | 出版社 | Varchar | 50 | 图书出版说明 |
S013 | 图书价格 | Money | 图书单价说明 | |
S014 | 库存量 | Int | 6 | 图书在库数量说明 |
S015 | 超期罚款 | Money | 图书超期而罚款说明 | |
S016 | 简介 | Varchar | 200 | 图书介绍说明 |
S017 | 借出次数 | Int | 6 | 图书被解约的次数说明 |
S018 | 入库日期 | Datetime | 8 | 图书采购日期 |
S019 | 借阅时间 | Datetime | 8 | 图书被借阅的日期 |
S020 | 应还时间 | Datetime | 8 | 图书应被归还的日期 |
S021 | 可借天数 | Int | 4 | 图书可以被借阅的时间 |
数据存储条目表
编号 | 名称 | 来源 | 去向 | 组成 | 简述 |
---|---|---|---|---|---|
D1 | 学生库 | P6 | P7 | 学生编号、姓名、类别、联系方式 | 对学生信息的记录 |
D2 | 图书库 | P1 | P3 | 图书编号、名称、库存数量、出版社、简介 | 对图书信息的记录 |
D3 | 借阅库 | P2 | P2 | 借阅数量、日期、操作员借阅人、图书编号 | 对借阅图书的信息的记录 |
数据流条目表
编号 | 名称 | 来源 | 去处 | 组成 | 说明 |
---|---|---|---|---|---|
F1 | 编号及姓名查询 | 学生 | 学生查询处理 | 学生编号,学生姓名 | 查询学生信息的条件 |
F2 | 编号及书名查询 | 读者 | 图书查询处理 | 图书编号、图书名称 | 查询图书信息的条件 |
F3 | 图书预定 | 学生 | 图书预定处理 | 图书编号、图书名称、预订时间、学生姓名、读者编号 | 预订图书的信息 |
F4 | 图书续借 | 学生 | 图书借阅处理 | 图书编号、图书名称、学生姓名、学生编号 | 续借图书的信息 |
F5 | 图书预订信息 | 图书管理员 | 图书预定处理 | 图书编号、图书名称、预订时间、学生姓名、学生编号、操作员 | 图书管理员对预定信息进行处理 |
F6 | 图书续借信息 | 图书管理员 | 图书续借处理 | 图书编号、图书名称、学生姓名、学生编号、操作员 | |
F7 | 学生信息 | 图书管理员 | 学生信息处理 学生编号、姓名、性别、类型、出生日期 | 图书管理员对学生信息进行处理 | |
F8 | 图书信息 | 图书管理员 | 图书信息处理 | 图书编号、书名、库存数量、单价、简介 | 图书管理员对图书信息进行处理 |
数据处理条目表
编号 | 名称 | 输入 | 输出 | 处理过程 |
---|---|---|---|---|
P1 | 图书信息处理 | 图书信息 | 图书库 | 根据图书信息修改图书库 |
P2.1 | 图书归还处理 | 还书信息 | 图书库、借阅库 | 根据还书信 |
P2.2 | 检查读者编号 | 学生库 | 有效 | 根据学生库的信息检查读者是否已存在 |
P2.3 | 检查图书是否有现存 | 图书库 | 有现存 | 根据图书信息检查图书是否有现存 |
P2.4 | 填写借阅信息和修改图书信息 | 有现存 | 借阅库、图书库 | 有现存则借阅图书,修改图书库存量 |
P3.1 | 图书查询处理 | 图书查询条件 | 图书库、查询结果 | 根据查询条件,查看相关图书 |
P4.1 | 预定信息输入 | 预定信息 | 读者身份检查 | 根据图书库信息,选择预约的图书 |
P4.2 | 学生身份检查 | 学生库 | 有效 | 根据学生库信息检查学生是否已存在 |
P4.3 | 图书预定处理 | 图书库 | 预定信息 | 填写预订信息,申请预订 |
P5 | 图书续借处理 | 图书续借 | 借阅库 | 根据续借信息修改借阅库 |
P6 | 学生信息处理 | 学生信息 | 学生库 | 根据学生信息修改学生库 |
P7 | 学生查询处理 | 学查询 | 学生库 | 根据学生库信息查询学生情况 |
(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;
图书管理员功能结构图:
学生功能结构图:
(5)选择对应的结构化程序设计语言,实现并测试部分功能模块
四.思考题
(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
1.需求说明书是指在研究用户要求的基础上,完成可行性分析和投资效益分析以后,由软件工程师或分析员编写的说明书。它详细定义了信息流和界面,功能需求,设计要求和限制,测试准则和质量保证要求。它的作用是作为用户和软件开发人员达成的技术协议书,作为着手进行设计工作的基础和依据,系统开发完成以后,为产品的验收提供了依据。
2.概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序 系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、安全设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。
3.详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序 (每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关 内容合并入概要设计说明书。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。而面向对象的分析方法则是通过将数据和逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。结构化分析方法是先创建总体结构模型,之后逐渐填充完善目标的方法。
两者的区别在于,当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑根型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。面向对象分析方法是先确认每小部分的过程模型,最终整合完善目标的方法。
(3)对数据流图进行审查有何意义?
检查图中是否存在错误或不合理(不理想)的部分
确保两大特性
1.一致性:分层DFD中不存在矛盾和冲突。
2.完整性:是否有遗漏的数据流、加工等
(4)给出一次完整的会议讨论纪要,包括议题,最终结果。
一篇会议纪包含以下内容:标题、会议概述、主要议题、会议内容和后续工作。
标题:格式为会议名称+纪要。比如:图书管理系统项目会议纪要。
会议概述:说明会议主题,会议时间,地点,参会人员。建议用表格的形式列出。
主要议题:先概括性的说明会议的主要议题,用尽量简短的语言概括会议主题。可增加解释性语句。比如:会议主要议题:图书管理系统总体需求讨论。
会议内容:根据会议流程,记录与会者的主要观点以及在讨论后各方达成了什么共识,制定了什么方案等等。建议给会议内容分类、分点的记录,让读者更直观的了解会议内容。
后续工作:这部分需记录会后各方的工作,包括会议敲定事情的工作计划、时间节点、负责人、汇报人等信息;还需记录经过会议尚未结局的事情,记录后续跟进的各事项。
五、小结
这次的实验是和同学一起写出来的图书管理系统,在这两节实验课的时间我们只是大致设计了图书管理系统的数据流,以及一些细致的数据字典,要是在进行详细编写时候可以利用mysql数据库更为方便的填写数据,以及后续视图和索引的建立,用select语句进行查询等功能。
标签:信息,学生,实验,编号,数据流,设计,结构化分析,图书 来源: https://www.cnblogs.com/Y0unger/p/14036697.html