实验二 结构化分析与设计
☆作业信息☆
作业班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11548 |
作业目标 | 复习结构化分析与设计的详细步骤,理解它们,并能够参照某个系统来尝试自己完成一个系统 |
此实验尝试完成的系统 | 图书管理系统 |
学号 | 3180701338 |
一.实验目的
(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)复习结构化的分析与设计方法的主要过程;
结构化的分析与设计方法的主要过程:
结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它把系统作为一系列数据流的转换,输入数据被转换为期望的输出值,通过模块化来完成自顶而下实现的文档化,并作为一种评价标准在软件设计中起指导性作用,通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。
结构化设计方法的步骤如下:
①评审和细化数据流图
②确定数据流图的类型
③把数据流图映射到软件模块结构,设计出模块结构的上层
④基于数据流图逐步分解高层模块,设计中下层模块
⑤对模块结构进行优化,得到更为合理的软件结构
⑥描述模块接口
结构化设计方法的设计原则:
①使每个模块执行一个功能(坚持功能性内聚)
②每个模块使用过程语句(或函数方式等)调用其它模块
③模块间传送的参数作数据用
④模块间共用的信息(如参数等)尽量少
(2)讨论系统存在的用户角色、工作流等;
(i)本次实验所做的图书借阅系统包含的用户角色有:
①借书者
②图书管理员
③系统管理员
(ii)系统中应存在的工作流:
①图书管理系统能够为一定数量的借阅者提供服务。每个借阅者能够拥有唯一标识其存在的编号。图书馆向每一个借阅者发放图书证,其中包含每一个借阅者的编号和个人信息。提供的服务包括:提供查询图书信息、查询个人信息服务和预定图书服务等。
②当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的代理和系统交互。
③系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的添加、删除和修改。并且能够查询借阅者、图书和图书管理员的信息。
④可以通过图书的名称或图书的ISBN号对图书进行查找。
(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;
(i)数据流图:
顶层数据流图:
第一层数据流图:
第二层数据流图:
(ii)数据字典:
①数据流词条描述
数据流名:图书信息
说明:用于存放,查询,图书主数据文档记录信息,修改图书借、还状态,同时作为图书统计信息来源之一。
数据流来源:来自图书登记处理;来自图书主数据库文档;来自图书借阅处理;来自图书归还处理
数据流去向:图书主数据库文档;图书登记处理;图书借阅处理;图书归还处理
数据流组成:图书编号 + 图书名称 + 图书类型 + 图书状态 + 登记日期 + 借还日期
数据流通量:大
数据流名:图书交易流水信息
说明:用于记录图书管理各种交易的情况,同时作为图书统计信息来源之一。
数据流来源:来自图书登记处理; 来自图书借阅处理;来自图书归还处理
数据流去向:图书交易流水文件; 图书统计处理
数据流组成:交易码 + 功能码 + 图书编号 + 图书名称 + 图书类型 + 图书状态 + 借阅人姓名 + 登记日期 + 借还日期
数据流通量:大
数据流名:图书借还信息
说明:用于对图书借阅,归还情况进行登记,同时作为图书统计信息来源之一。
数据流来源:来自图书借阅处理;来自图书归还处理;来自图书借还文件
数据流去向:图书借还文件;图书借阅处理;图书归还处理;图书统计处理
数据流组成:图书编号 + 图书名称 + 借阅人姓名 + 借阅日期 + 归还日期
数据流通量:大
②数据元素词条描述
数据元素名:图书编号
类型:数字
长度:7位
取值范围:“0000001”......“9999999”
相关数据结构:图书主数据库文件,图书交易流水文件,图书借还文件
数据元素名:图书名称
类型:字符
长度:50位
取值范围:任意
相关数据结构:图书主数据库文件,图书交易流水文件,图书借还文件
数据元素名:图书类型
类型:字符
长度:5位
取值范围:“00001”(政治)|“00002”(经济)|“00003”(科技)|
相关数据结构:图书主数据库文件,图书交易流水文件
数据元素名:图书状态
类型:字符
长度:4位
取值范围:“正常”|“遗失”|“收藏”|“借阅”
相关数据结构:图书主数据库文件,图书交易流水文件
数据元素名:登记日期,借还日期
类型:数字
长度:8位
取值范围:合法的“YYYY年+MM月+DD日”
相关数据结构:图书主数据库文件,图书交易流水文件,图书借还文件
数据元素名:交易码
类型:数字
长度:3位
取值范围:“001”(图书登记)|“002”(图书借阅)|“003”(图书归还)|“004”(图书计)
相关数据结构:图书交易流水文件
数据元素名:借阅人姓名
类型:字符
长度:10位
取值范围:任意
相关数据结构:图书借还文件
③数据文件词条描述
数据文件名:图书主数据库文件
简述:用于存放各类图书基本信息
输入数据:图书名称 + 图书类型 + 图书状态
输出数据:图书编号 + 图书名称 + 图书类型 + 图书状态 + 登记日期 + 借还日期
数据文件组成:图书编号 + 图书名称 + 图书类型 + 图书状态 + 登记日期 + 借还日期
组织方式:索引方式
存储方式:直接
存取频率:高
数据文件名:图书交易流水文件
简述:用于记录各类图书交易信息,以便用于查询,统计,恢复。
输入数据:无
输出数据:交易码 + 功能码 + 图书编号 + 图书名称 + 图书类型 + 图书状态 +借阅人姓
名 + 登记日期 + 借还日期
数据文件组成:交易码 + 功能码 + 图书编号 + 图书名称 + 图书类型 + 图书状态 + 借阅人姓名 + 登记日期 + 借还日期
组织方式:顺序方式
存储方式:顺序
存取频率:高
数据文件名:图书借还文件
简述:用于记录图书借还明细信息
输入数据:图书编号 + 图书名称 + 借阅人姓名 + 借阅日期 + 归还日期
输出数据:图书编号 + 图书名称 + 借阅人姓名 + 借阅日期 + 归还日期
数据文件组成:图书编号 + 图书名称 + 借阅人姓名 + 借阅日期 + 归还日期
组织方式:索引方式
存储方式:直接
存取频率:高
数据文件名:图书系统文件
简述:用于存放管理系统的系统状态,系统日期,当前图书编号
输入数据:系统状态 + 系统日期 + 图书编号
输出数据:系统状态 + 系统日期 + 图书编号
数据文件组成:系统状态 + 系统日期 + 图书编号
组织方式:顺序(单记录文件)
存储方式:顺序
存取频率:高
(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;
系统的功能结构图:
关键模块的流程图:
①业务流程图:
②主程序流程图:
(5)选择对应的结构化程序设计语言,实现并测试部分功能模块
数据库表的具体结构如下:
1)管理员表:用于保存管理员信息。代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Users](
[Name] [nvarchar](50) NULL,
[Password] [nvarchar](50) NULL,
[Type] [int] NULL
) ON [PRIMARY]
GO
2)图书信息表:存储图书信息。代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Book](
[Num] [nvarchar](50) NOT NULL,
[Name] [nvarchar](50) NULL,
[Author] [nvarchar](50) NULL,
[Type] [int] NULL,
[ISBN] [nvarchar](50) NULL,
[CBS] [nvarchar](50) NULL,
[CBRQ] [datetime] NULL,
[Status] [nvarchar](50) NULL,
CONSTRAINT [PK_Book] PRIMARY KEY CLUSTERED
(
[Num] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
3)借书卡信息表,代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Card](
[Num] [nvarchar](50) NOT NULL,
[Name] [nvarchar](50) NULL,
[Class] [nvarchar](50) NULL,
[StartTime] [datetime] NULL,
[EndTime] [datetime] NULL,
CONSTRAINT [PK_Card] PRIMARY KEY CLUSTERED
(
[Num] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
4)图书借阅表,代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Lend](
[CardNum] [nvarchar](50) NULL,
[BookNum] [nvarchar](50) NULL,
[Time] [datetime] NULL,
[Status] [nvarchar](50) NULL
) ON [PRIMARY]
GO
5)图书类型表,代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Type](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_Type] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
四.思考题
(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
①软件需求说明书,又称为软件规格说明书,是分析员在需求分析阶段需要完成的文档,是软件需求分析的最终结果。
它的作用主要是:作为软件人员与用户之间事实上的技术合同说明;作为软件人员下一步进行设计和编码的基础;作为测试和验收的依据。
软件需求说明书必须用统一格式的文档进行描述,为了使需求分析描述具有统一的风格,可以采用已有的且能满足项目需要的模板,也可以根据项目特点和软件开发小组的特点对标准进行适当的改动,形成自己的模板。
软件需求说明主要包括引言、任务概述、需求规定、运行环境规定和附录等内容。
②概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、安全设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。
③详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序 (每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本部分可以不单独编写,有关内容合并入概要设计说明书中。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
答:结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。而面向对象的分析方法则是通过将数据和逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。
(3)对数据流图进行审查有何意义?
答:在使用结构化分析方法进行分析时,我们对一个系统的理解,不可能一开始就完美无缺,开始分析一个系统时,尽管我们对问题的理解有不正确、不确切的地方,但还是应该根据我们的理解,用数据流图表达出来,然后对初步完成的流程图进行核对,反复修改完善,从而获得较为完美的数据流图。
(4)给出一次完整的会议讨论纪要,包括议题,最终结果。
答:
软件工程实验二小组会议讨论纪要
会议主题 | 对各自系统的理解以及文档的讨论与修改 |
---|---|
与会时间 | 2020年11月30日 |
与会地点 | C座603 |
与会成员 | 室友1、室友2 |
会议记录 | 主要讨论了需求分析、概要设计、详细设计文档存在的各种问题,然后小组成员分工进行撰写修改意见后进一步讨论得到一致的解决方案 |
五、实验小结
很好地复习了用结构化设计方法做系统的各个步骤,把其中每个流程自己独立思考了一遍,总体上发现还是有很多很多不会的地方。比如,画分层数据流图时,对该如何正确分层不是很够清晰;“选择对应的结构化程序设计语言实现并测试部分功能模块”这一部分自己不会;等等。还是要多多练习此类题目,掌握其结构化设计方法的主要思想,在练习中加深对有关概念的理解。
填写PSP表格:
psp实验二 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 40 | 50 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 10 |
Development | 开发 | 220 | 300 |
Analysis | 需求分析(包括学习新技术) | 30 | 40 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 | 15 | 10 |
Coding Standard | 代码规范 | 15 | 10 |
Design | 具体设计 | 60 | 70 |
Coding | 具体编码 | 30 | 50 |
Code Review | 代码复审 | 5 | 4 |
Test | 测试(自我测试,修改代码,提交修改) | 15 | 25 |
Reporting | 报告 | 15 | 25 |
Test Report | 测试报告 | 4 | 4 |
Size Measurement | 计算工作量 | 2 | 2 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 4 | 3 |