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