实验二 结构化分析与设计
| 博客班级 |
| ---- | ---- | ---- |
| 作业要求 |
| 学号 | 3180701122 |
一.实验目的
(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】图书管理系统
参考:http://lib.ahpu.edu.cn/
三.实验步骤
(1)复习结构化的分析与设计方法的主要过程;
(2)讨论系统存在的用户角色、工作流等;
(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;
(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;
(5)选择对应的结构化程序设计语言,实现并测试部分功能模块
机票预订系统
1.结构化的分析与设计方法
结构化分析方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正
确的原理和技术为支撑,以数据流图,数据字典,结构化语言,判定表,判定树等图形表达
为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。
结构化分析的步骤如下:
①分析当前的情况,做出反映当前物理模型的 DFD;
②推导出等价的逻辑模型的 DFD;
③设计新的逻辑系统,生成数据字典和基元描述;
④建立人机接口,提出可供选择的目标系统物理模型的 DFD;
⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
⑥选择一种方案;
⑦建立完整的需求规约。
2.用户角色
机票预定系统:旅行社、旅客。
3.工作流
4.数据流图
(1)机票预订系统顶层图
(2)机票预订系统0层图
5.数据字典
6.软件结构图
7.流程图
(1)订票业务流程
(2)取票业务流程
(3)临时更改航班业务流程
(4)退票业务流程
四.思考题
(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
需求说明书是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础而编制的,其主要包括了细化到适当层次的数据流图、数据字典和黑盒形式的算法描述等内容;
概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关;
详细设计说明书的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。除了保证软件的可靠性之外,使将来编写的程序可读性好、易于理解、易于测试、易于修改和维护,是详细设计阶段最重要的目标。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
结构化分析方法:
结构化分析方法可能存在的风险在于:在得到问题本质性的描述之前,不断分解出的结论和需要处理的信息越来越多、越来越复杂,使得“只见树木不见森林”的风险大大增加。
结构化分析方法运用得好,要求系统分析员具有一种“俯视全局”的能力,能够透过问题的表象直接把握到问题本质。
当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到简洁、高效率的逻辑模型。结构化方法对复杂问题的帮助有限。但结构化方法有助于使用面向分析方法的系统分析员确认系统初的高阶模型。
面向对象方法:
提供了一种方便的、可持续观测和扩展系统的机制。面向对象抽象出的对象是健壮的、可控制和容易维护的。
总是试图抽象出更公用的类,因此对系统分析员抽象事物和把我初分析方向的要求很高。常常难以控制抽象对象的层次、粒度,甚至抽象出与问题本质面目全非的对象模型。掌握难度高于结构化分析方法。
通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,但发生错误时,定位故障的代价大。尤其时继承的深度很大时。
对于需求变化频繁的系统,得到一个高度可复用的面向对象软件系统设计是很困那的事情。
结论:两种方法有本质上的不同,但不是对立的,没有谁先进谁过时之说,可在项目中结合使用。恰当的运用方法解决问题才是根本性的问题。在运用时应关注运用方法的成本和价值。
(3)对数据流图进行审查有何意义?
1、便于用户表达功能需求和数据需求及其联系;
2、便于两类人员共同理解现行系统和规划系统的框架;
3、清晰表达数据流的情况;
4、有利于系统建模。
(4)给出一次完整的会议讨论纪要,包括议题,最终结果。
一篇会议纪包含以下内容:标题、会议概述、主要议题、会议内容和后续工作,下面以用word做会议纪要的形式。
先概括性的说明会议的主要议题,用尽量简短的语言概括会议主题。可增加解释性语句。
根据会议流程,记录与会者的主要观点以及在讨论后各方达成了什么共识,制定了什么方案等等。建议给会议内容分类、分点的记录,让读者更直观的了解会议内容。