软件工程第四章(习题课)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模块“加速/减速显示”可以相应地放在模块 “显示mph”的下面。 经过上述修改后的软件结构画在图5.19中。 上述7个设计步骤的目的是,开发出软件的 整体表示。也就是说,一旦确定了软件结构 就可以把它作为一个整体来复查,从而能够 评价和精化软件结构。在这个时期进行修改 只需要很少的附加工作,但是却能够对软件 的质量特别是软件的可维护性产生深远的影 响。
⑤导出供选择的解法 现在,问题有行得通的解决办法吗?分析员回答这个问题 的惟一方法是,导出一些供选择的解决办法,并且分析这些解
法的可行性。
导出供选择的解法的一个常用的简单方法是从数据流图出 发,设想几种划分自动化边界的模式,并且为每种模式设想一
个系统。
分析供选择的解法需进行下面的步骤:
(1)首先考虑的是技术上的可行性 显然,从技术角度看不可能实现的方案是没有意义的。 (2)操作可行性 考虑到教职工的个人隐私,必须为工资支付系统单独购 置一台计算机及必要的外部设备,并且放在一间专用的房间 里。 (3)必须考虑经济可行性问题 即“效益大于成本吗?”因此,分析员必须对已经通过了 技术可行性和操作可行性检验的解决方案再进行成本/效益 分析。
为了给客户提供在一定范围内进行选择的余地,分析员 应该至少提出3种类型的供选择的方案: (1)低成本系统 如果把每月发一次工资改为每两个月发一次工资,则除 了已经进行的可行性研究的费用外,不再需要新的投资。这 是一个很诱人的低成本方案。 当然,低成本方案也有缺点:违反常规等不能解决根本 问题。 (2)中等成本系统 作为中等成本的解决方案,建议基本上复制现有系统的 功能,图2.14所示的系统流程图描绘了上述系统。
上述中等成本方案看起来比较现实,因此对它进行了 完整的成本/效益分析,分析结果列在表2.2中。从分析 结果可以看出,中等成本的解决方案是比较合理的,经济 上是可 行的。
(3)高成本系统 成本更高的方案:建立一个中央数据库,为开发完整的 管理信息系统做好准备,并且把工资支付系统作为该系统的 第一个子系统。将来其他应用系统(例如,教学管理,物资管 理,人力资 源管理)能以较低成本实现,而且这些子系统能集 成为一个完整的系统。
第7步 使用设计度量和启发式规则对第一次分割得到的 软件结构进一步精化。 对第一次分割得到的软件结构,总可以根据模块独立原 理进行精化。为了产生合理的分解,得到尽可能高的内 聚、尽可能松散的耦合,最重要的是,为了得到一个易 于实现、易于测试和易于维护的软件结构,应该对初步 分割得到的模块进行再分解或合并。 具体到数字仪表板的例子,对于从前面的设计步骤得到 的软件结构,还可以做许多修改。下面是某些可能的修 改: 输入结构中的模块“转换成rpm”和“收集sps”可以合并 ; 模块“确定加速/减速”可以放在模块“计算mph”下面 ,以减少耦合;
在双方达成共识的基础上开发出确实能满足用户实际需 要的新系统,典型地,分析员用一份简短的书面备忘录表达 他对问题的认识,这份文档称为“关于系统规模和目标的报 告书”(见表2.1)。校长和财务科经过研究同意了上述报告 书,可以对工资支付项目进行更仔细的研究了。
可行性研究
可行性研究是抽象和简化了的系统分析和设计的全过程 。本项目的可行性研究过程由下述步骤组成: ①澄清系统规模和目标 ②研究现有的系统 ③导出高层逻辑模型 ④进一步确定系统规模和目标 ⑤导出供选择的解法 ⑥推荐最佳方案 ⑦草拟开发计划 ⑧写出文档提交审查
图2.11中黑盒子(工资支付系统)的内容,即人工系统计算 工资和编制报表的流程: (1)接到课时表和任务表之后,首先审核这些数据,然 后把审核后的数据按教职工编号排序并抄到专用的表格上 (2)根据当月课时数或完成承包任务情况,算出各项相 关数据,并登记到前述的专用表格上,就得到了工资明细表。 (3)对数据进行汇总,编制出各种财务报表,。 图2.12所示的系统流程图描绘了现有的人工工资支付系 统的工作流程。必须请有关人员仔细审查图2.12所示的系统 流程图,有错误就应该及时纠正,有遗 漏就应该及时补充。
④进一步确定系统规模和目标
通过仔细分析和讨论图2.13的数据流图,分析员现在对
工资支付系统的认识已经比问题定义阶段深入多了,可以更准
确地确定系统规模和目标。如果系统规模有较大变化,则应及 时报告给客户,以便做出新的决策。 可行性研究的上述4个步骤可以看作是一个循环。分析员 定义问题,分析这个问题,导出试探性的逻辑模型,在此基础 上再次定义问题……重复这个循环直至得出准确的逻辑模型为 止,然后分析员开始考虑实现这个系统的方案。
图5.16 未经精化的输入结构
图5.17 未经精化的变换结构
图5.18 未经精化的输出结构
虽然图中每个模块的名字表明了它的基本功 能,但是仍然应该为每个模块写一个简要说 明,描述: 进出该模块的信息(接口描述); 模块内部的信息; 过程陈述,包括主要判定点及任务等; 对约束和特殊特点的简短讨论。 这些描述是第一代的设计规格说明,在这个 设计时期进一步的精化和补充是经常发生的 。
①澄清系统规模和目标 为了确保从一个正确的出发点着手进行可行性研究,
首先通过访问财务科长和校长进一步验证上一阶段写出的
“关于工资支付系统规模和目标的报告书”的正确性。 通过访问分析员对人工计算工资存在的弊端有了更具 体的认识,并且了解到工资总数应该记入分类日记账,显 然,新工资支付系统不能忽略与分类账系统的联系。
③导出高层逻辑模型 系统流程图很好地描绘了具体的系统,但是,在这样的图 中把“做什么”和“怎样做”这两类不同范畴的知识混在一起 了。我们的目标不是一成不变地复制现有的人工系统,而是开 发一个能完成同样功能的新系统,因此,应该着重描绘系统的 逻辑功能。
删除图2.12中表示的有关具体实现方法的信息,把它抽象 成图2.13。这张数据流图描绘的是系统高层逻辑模型,在可行 性研究阶段还不需要考虑完成“加工事务数据”功能的具体算法 ,因此没必要把它分解成一系列更具体的数据处理功能。
从图5.11看出,数据沿着两条输入通路进入系统,然 后沿着5条通路离开,没有明显的事务中心。因此可以 认为这个信息流具有变换流的总特征。 第4步 确定输入流和输出流的边界,从而孤立出变换 中心。 输入流和输出流的边界和对它们的解释有关,也就是 说,不同设计人员可能会在流内选取稍微不同的点作 为边界的位置。当然在确定边界时应该仔细认真,但 是把边界沿着数据流通路移动一个处理框的距离,通 常对最后的软件结构只有很小的影响。 对于汽车数字仪表板的例子,设计人员确定的流的边 界如图5.12(见书98页)所示。
Baidu Nhomakorabea
图5.14 数字仪表板系统的第一级分解
第6步 完成“第二级分解”。 所谓第二级分解就是把数据流图中的每个处 理映射成软件结构中一个适当的模块。完成 第二级分解的方法是,从变换中心的边界开 始沿着输入通路向外移动,把输入通路中每 个处理映射成软件结构中Ca控制下的一个低 层模块;然后沿输出通路向外移动,把输出 通路中每个处理映射成直接或间接受模块Ce 控制的一个低层模块;最后把变换中心内的 每个处理映射成受Ct控制的一个模块。图 5.15表示进行第二级分解的普遍途径。
图5.15 第二级分解的方法
虽然图5.15描绘了在数据流图中的处理和软 件结构中的模块之间的一对一的映射关系, 但是,不同的映射经常出现。应该根据实际 情况以及“好”设计的标准,进行实际的第 二级分解。
对于数字仪表板系统的例子,第二级分解的 结果分别用图5.16,5.17和5.18描绘。这3张 图表示对软件结构的初步设计结果。
图5.13 第一级分解的方法
输出信息处理控制模块Ce,协调输出信息的 产生过程。 虽然图5.13意味着一个三叉的控制结构,但 是,对一个大型系统中的复杂数据流可以用 两个或多个模块完成上述一个模块的控制功 能。应该在能够完成控制功能并且保持好的 耦合和内聚特性的前提下,尽量使第一级控 制中的模块数目取最小值。 对于数字仪表板的例子,第一级分解得出的 结构如图5.14所示。每个控制模块的名字表 明了为它所控制的那些模块的功能。
图5.19 精化后的数字仪表板系统的软件结构
例2 财务科长请你研究用财务系统代目前手工会计 系统
对于上述要求,应该提出以下几个问题:
(1)这样做值得吗?
(2)用户面临的问题究竟是什么? (3)用户目标是什么?
(4)可以花多少钱呢?
(1)项目值得吗? 这样做预期将获得的经济效益能超过开发这个系统的成本 吗?换句话说,这样做值得吗? (2)用户面临的问题究竟是什么? 该校一直由会计人工计算工资并编制财务报表,随着学校 规模扩大,人工计算工资的成本还会进一步提高。 (3)用户目标 目标是寻找一种比较便宜的生成工资明细表和各种财务报 表的办法,并不一定必须在学校自己的计算机上实现工资支付 系统。 (4)花多少钱呢? 应该考虑下述3个基本数字: • 目前计算工资所花费的成本 • 新系统的开发成本 • 运行费用
第5步 完成“第一级分解”。 软件结构代表对控制的自顶向下的分配,所 谓分解就是分配控制的过程。 对于变换流的情况,数据流图被映射成一个 特殊的软件结构,这个结构控制输入、变换 和输出等信息处理过程。图5.13说明了第一 级分解的方法。位于软件结构最顶层的控制 模块Cm协调下述从属的控制功能: 输入信息处理控制模块Ca,协调对所有输入 数据的接收; 变换中心控制模块Ct,管理对内部形式的数据 的所有操作;
d
这个数据流图对于软件结构设计的“第一次分割 ”而言已经足够详细了,因此不需要精化就可以 进行下一个设计步骤。 第3步 确定数据流图具有变换特性还是事务特性 一般地说,一个系统中的所有信息流都可以认为 是变换流,但是,当遇到有明显事务特性的信息 流时,建议采用事务分析方法进行设计。在这一 步,设计人员应该根据数据流图中占优势的属性 ,确定数据流的全局特性。此外还应该把具有和 全局特性不同的特点的局部区域孤立出来,以后 可以按照这些子数据流的特点精化根据全局特性 得出的软件结构。
2. 设计步骤 第1步 复查基本系统模型。 复查的目的是确保系统的输入数据和输出数 据符合实际。 第2步 复查并精化数据流图。 应该对需求分析阶段得出的数据流图认真复 查,并且在必要时进行精化。不仅要确保数 据流图给出了目标系统的正确的逻辑模型, 而且应该使数据流图中每个处理都代表一个 规模适中相对独立的子功能。 假设在需求分析阶段产生的数字仪表板系统 的数据流图如图5.11(见书97页)所示。
例子1
我们已经开始进入“智能”产品时代。 在这类产品中把软件做在只读存储器中 ,成为设备的一部分,从而使设备具有 某些“智能”。因此,这类产品的设计 都包含软件开发的任务。作为面向数据 流的设计方法中变换分析的例子,考虑 汽车数字仪表板的设计。
假设的仪表板将完成下述功能: (1) 通过模数转换实现传感器和微处理机接口 ; (2) 在发光二极管面板上显示数据; (3) 指示每小时英里数(mph),行驶的里程,每 加仑油行驶的英里数(mpg)等等; (4) 指示加速或减速; (5) 超速警告:如果车速超过55英里/小时,则 发出超速警告铃声。 在软件需求分析阶段应该对上述每条要求以及 系统的其他特点进行全面的分析评价,建立起 必要的文档资料,特别是数据流图。
②研究现有的系统 通过访问具体处理工资事务的两名会计,可以知道处理工 资事务的大致过程。开始时把工资支付系统 先看作一个黑盒 子,图2.11所示的系统流程图描绘了处理工资事务的大致过 程。
处理工资事务的大致过程是: (1)每月月末教师把他们当月实际授课时数登记在课时 表上,由各系汇总后交给财务科,职工把他们当月完成承包任 务的情况登记在任务表上,汇总后交给财务科。 (2)两名会计根据这些原始数据计算每名教职工的工资 ,编制工资表、工资明细表和财务报表。 (3)把记有每名教职工工资总额的工资表报送银行,由 银行把钱打到每名教职工的工资存折上,同时把工资明细表发 给每名教职工。