实验二 结构化分析与设计
作业信息
作业课程 | 软件工程 |
---|---|
作业要求 | 作业要求 |
作业目标 | 结构化分析与设计 |
学号 | 3180205402 |
一.实验目的
(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)讨论系统存在的用户角色、工作流等;
(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;
(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;
(5)选择对应的结构化程序设计语言,实现并测试部分功能模块。
四.实验过程
1.需求分析
①用户需求
教材订购系统面向的对象有学生或老师,以及书库管理人员。学生或老师向教材订购系统发送购书需求,收取领书单;教材订购系统向书库管理员返回缺书单,管理员向其发送进书通知。
②业务需求
教材订购系统可以收取老师或学生的购书请求,通过查询数据库中指定书籍的数量,若数量足够,则向老师或学生发送领书单;若数量不足,则向书库管理员发送缺书单,提醒书库管理人员去采购,新书入库
后,即发进书单通知给书库管理人员。
③系统需求
系统能够身份识别,学生或老师以及书库管理员的登录进系统能够获得不同的系统权限,学生和老师只能提交购书请求,而书库管理员可以对书库里的缺少的图书进行补充。数据库需要有教材用书表、库存
表、缺书登记表、售书登记表、入库登记表、待购登记表等表用于存储系统用户所产生的数据。
2.系统分层数据流图
①顶层图
②一层数据流图
③加工P1的子图
④加工P2的子图
3.数据字典
3.1 数据项
| 名称 | 说明 | 别名 | 数据类型 | 长度 | 取值含义 | 与其他数据的逻辑关系 |
|--|--|--|--|--|--|--|--|
| 学号 | 本校学生编号 | 学生号 | 字符 | 10 | 记录本校学生年级、专业、班级、编号 | 购书单、发票信息 |
| 教职工号 | 本校教师编号 | 职工号 | 字符 | 10 | 记录本校教职工所属单位、入职时间、编号等 | 购书单、发票信息 |
| 管理员号 | 本校书库管理员编号 | 管理员编号 | 字符 | 10 | 记录书库管理员的管理信息、个人编号等 | 缺书单、新进图书信息 |
| 姓名 | 人员的姓名 | 名字 | 字符 | 20 | 记录用户的名字 | 购书单、进书单 |
| 电话 | 人员的电话 | 电话号码 | 字符 | 11 | 记录用户的电话 | 购书单、进书单、发票 |
| 书名 | 系统中书的名字 | 图书名 | 字符 | 30 | 记录系统流程中的书名 | 购书单、进书单、发票 |
| ISBN | 书的编号 | 编号 | 字符 | 20 | 记录系统中书的指定编号 | 购书单、进书单、发票 |
3.2数据结构
数据结构名 | 含义说明 | 组成 |
---|---|---|
学生/老师 | 是系统的主体数据结构,定义了购买者的信息 | 学号/教职工号、姓名、专业班级/所属单位、电话 |
管理员 | 是系统的主体数据结构,定义了书库管理员的信息 | 学号/教职工号、姓名、专业班级/所属单位、电话 |
购书单 | 学生/教师购买教材时生成的单子 | 学号/教职工号、姓名、电话、书名、数量、价格、购买时间 |
缺书单 | 学生/教师购买教材时因缺书生成的单子 | 管理员编号、姓名、电话、书名、缺书数量 |
发票 | 学生/教师购买教材时生成的发票 | 姓名、所属单位、电话、书名、数量、价格 |
3.3数据流
数据流名 | 含义说明 | 数据流来源 | 数据流去向 | 组成 |
---|---|---|---|---|
有效的购书单 | 对购书单进行审查确保其有效性 | 学生/教师 | 开发票 | 学号/教职工号、姓名、电话、书名、数量、价格、购买时间 |
发票信息 | 购书成功后打印此次发票 | 开发票 | 打印发票 | 姓名、所属单位、电话、书名、数量、价格 |
缺书单 | 在库存不足时生成缺书单 | 缺书审核汇总 | 书库管理人员 | 管理员编号、姓名、电话、书名、缺书数量 |
3.4数据存储
数据存储 | 含义说明 | 流入数据流 | 流出数据流 | 组成 |
---|---|---|---|---|
库存表 | 系统图书所有库存信息 | P1.1、P2.1 | P2.4 | 书名、ISBN、入库时间、价格、数量 |
缺书登记表 | 系统图书所有缺书信息 | P1.6 | P1.5 | 书名、ISBN、价格、缺书数量 |
售书登记表 | 学生/教师购买图书后产生的信息 | P1.4 | 无 | 学号/教职工号、姓名、电话、书名、数量、价格、购买时间 |
3.5处理过程
处理过程 | 含义说明 | 输入 | 输出 | 处理 |
---|---|---|---|---|
购书单审查有效性 | 对发送到系统的购书单进行审核 | 学生/教师 | 开发票 | 审核通过后对购书单进行开发票 |
开发票 | 审核通过后对购买信息开发票 | 审查有效性 | 打印发票、登记售书并打印领书单 | 对购买图书开发票 |
缺书审核汇总 | 对书库中缺的图书进行审核 | 缺书登记表 | 打印缺书单 | 书库缺书进行登记汇总 |
4.教材购销系统功能结构图
4.1教材购销系统的最初上层框架设计
4.2销售子系统初始 SC 图
4.3采购子系统初始 SC 图
4.4最终 SC 的上层框架
4.5初售动作分支的最终 SC 图
五、思考题
(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
①需求说明书
需求说明书是指在研究用户要求的基础上,完成可行性分析和投资效益分析以后,由软件工程师或分析员编写的说明书。它详细定义了信息流和界面,功能需求,设计要求和限制,测试准则和质量保证要求。它的作用是作为用户和软件开发人员达成的技术协议书,作为着手进行设计工作的基础和依据,系统开发完成以后,为产品的验收提供了依据
②概要设计说明书
概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序 系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、安全设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。
③详细设计说明书
详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序 (每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关 内容合并入概要设计说明书。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
面向对象的方法将对象作为实体,对其操作的函数对其依赖性很强,也就是对象更重要,例如C++语言,而结构化方法更关注的是程序自己的运行状态,以及函数的执行效率,例如C语言。
(3)对数据流图进行审查有何意义?
对数据流图进行审查对于项目的成功是绝对必要的。对数据流图进行审查是为了尽早发现数据流图中各项需求分析和设计中的缺陷,尽可能把这些缺陷在进入下一个阶段工作之前,予以纠正,从而避免后期付出更多的代价。
(4)给出一次完整的会议讨论纪要,包括议题,最终结果。
一篇会议纪包含以下内容:标题、会议概述、主要议题、会议内容和后续工作。
标题
建议格式为会议名称+纪要。比如:大客户营销项目会议纪要。
会议概述
说明会议主题,会议时间,地点,参会人员。建议用表格的形式列出。
主要议题
先概括性的说明会议的主要议题,用尽量简短的语言概括会议主题。可增加解释性语句。比如:
会议主要议题:大客户营销系统总体需求讨论。
会议内容
根据会议流程,记录与会者的主要观点以及在讨论后各方达成了什么共识,制定了什么方案等等。建议给会议内容分类、分点的记录,让读者更直观的了解会议内容。
后续工作
这部分需记录会后各方的工作,包括会议敲定事情的工作计划、时间节点、负责人、汇报人等信息;还需记录经过会议尚未结局的事情,记录后续跟进的各事项。
小结
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 10 | 20 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 15 |
Development | 开发 | 100 | 280 |
Analysis | 需求分析(包括学习新技术) | 10 | 10 |
Design Spec | 生成设计文档 | 15 | 20 |
Design Review | 设计复审 | 5 | 10 |
Coding Standard | 代码规范 | 5 | 8 |
Design | 具体设计 | 10 | 50 |
Coding | 具体编码 | 145 | 200 |
Code Review | 代码复审 | 10 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 10 | 10 |
Test Report | 测试报告 | 5 | 5 |
Size Measurement | 计算工作量 | 3 | 3 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 10 | 10 |