您好,欢迎访问三七文档
一、SG实例研究:需求阶段MarthaStocktonGreengage在逝世后,留下20亿美元的财富给慈善事业。她的遗嘱中还特别要求设立MarthaStocktonGreengage基金(MSG),以帮助年轻夫妇购买他们自己的房子。为了减少操作费用,MSG的托管人正在研究计算机化问题。由于托管人中没有人有计算机方面的经验,他们决定委托一个小型软件组织来实现一个实验性项目,即利用计算机执行计算来决定每星期可用多少钱来购买房子。开发组成员访问了一些MSG管理员和相关职员,以了解基金会的工作方式。在以下条件下,MSG提供100%抵押款来购买房子:1)结婚夫妇至少已经合法结婚一年,但未超过10年。2)双方都在职有薪水。特别是,必须提供双方在前一年全日工作至少48个星期的证据。3)房子的价格必须比过去12月中那一地区公布的中等房价要低。4)以30年分期付款形式偿还的90%抵押款超过他们共同收入的28%,或者他们的存款不够付清房价的10%加7000美元费用(7000美元是有关附加费用的估计值)。5)基金会有足够的资金购买房子,这将在下面详细描述。如果申请被批准,则夫妇俩在今后的30年中,每星期必须付给MSG的数额计算如下(每周):1)偿还资金是购买房价的1/1560。2)应付利息是当前抵押余额4%的1/52。3)契据保存费用是每年财产税和房产所有人每年保险费总和的1/52。4)每星期付给MSG的费用数额就是(1)、(2)、(3)项的总和。5)如果4)项超过了家庭每星期收入的28%,则MSG将以补助形式付余下的差额。因此,抵押款每星期都要偿还,但夫妻俩所付款永远不会超过他们总收入的28%。夫妇必须每年给MSG提供一份收入所得税收据的副本,以便MSG有前一年收入的凭证。另外,夫妇也可将工资单副本作为目前总收入的凭证。因此,夫妇必须偿付的抵押款数额每星期都可能改变。MSG确定是否有资金批准一个抵押申请的过程如下:1)在每星期的一开始,计算总投资的预计年收入,并除以52。2)MSG的预计年操作费用除以52。3)计算本周预计的抵押偿还款总额。4)计算本周预计的补助总额。5)可用总金额是:1)-2)+3)-4)。6)如果房子成本不超过5),则MSG认为有购买房子所需的资金。7)在周末,任何未用的资金都将有MSG投资顾问用来投资。为了保证试验性项目成本尽可能地低,MSG托管人只要求开发商把计算每周资金所需的那些数据项纳入到产品中。如果MSG将来想把其操作的所有方面都计算机化,那么其余部分可在以后加入。因此,仅需要三种类型的数据,即投资数据、操作费用数据和抵押款数据。没有必要纳入在抵押人没有付他们每周的应付款时MSG应采取的措施,因为根据记录显示,这种情况很少出现。关于投资,需要以下的数据:项目号(12位数字)项目名预计的年收入(最高不超过999999999.99美元)(这一数字随着新信息的出现而不断修改。平均一年均出现四次)更新预计年盈利的日期关于操作费用,需要以下的数据:预计的年操作费用(最高不超过999999999.99美元)(这一数字目前一年计算四次)。关于每笔抵押,要求以下的数据:帐户(12位数字)抵押人的姓名(夫妇两人的姓名)房子的最初购买价格(最高为999999.99美元)抵押日期目前的家庭周收入(最高为999999.99美元)家庭总收入修改的日期年财产税(最高为99999.99美元)年房产保险费(最高为99999.99美元)抵押余额(最高为999999.99美元)所涉及的日常事务包括:增加、修改和删除投资或抵押数据;调整年操作费用金额;每周进行有关购买房屋的可用资金计算。需要三种类型的报表,即投资清单、抵押清单和每周计算结果报表。二、SG实例研究:面向对象的分析OOA由3个步骤组成,即类建模、动态建模和功能建模。这些步骤通常是交互进行的,第1步是类建模。这一步的目的是抽取类,找出它们的属性,并确定它们的相互关系。抽取类的工作通常有3个阶段。阶段1是尽可能简洁地定义产品,最好是用一句话。对于MSG,一种可能的定义方法是:确定每周有多少钱可用于抵押。第2阶段是拟定非形式化策略,最好用一段文字表示,一种可能的表述是:每周要打印出关于有多少钱可用于抵押的报告。此外,投资和抵押的报表必须按需要随时打印。第3阶段是从上一段中抽取出名词,如报告、钱、抵押、列表和投资。名词报告和列表是解答的一部分,而钱是一个抽象名词。余下的两个名词是候选类,即投资和抵押,它们均为金融工具,并且这两种类型的记录有许多共同操作,如插入一个新的记录、删除一个记录及显示一个记录。因而,定义一个超类——金融工具,应该是合理的。这个超类有投资和抵押两个子类。通过7.14节的需求分析可得出这些类的一个最小属性集。还需要另外的两个类,即main方法调用的MSG应用类和为实用程序的需求。同样,全局常量将被声明为MSG应用类的PublicStaticfinal变量,图9-8给出了类模型的结果。面向对象分析的第2步是动态建模。为开发动态模型,应首先拟定情景说明。在MSG模型中,可能的情景与可能具有的操作功能相对应,这些功能是添加、修改或删除一个金融工具(投资或抵押对象)、更新操作费用、列金融工具表、确定资金的可用性。这些操作反映在图9-9的动态模型中。面向对象分析的第3步也是最后一步为功能建模。图9-10所示的功能建模除了6个数据存储外,非常类似于图8-26的数据流图。6个数据存储中有两个已被定义为类,即投资类和抵押类。对于其他4个数据存储,即经费数据、利润数据、贷款数据、收入数据,它们是不是应该作为类呢?在这一步骤中没有理由产生更多的类(请看问题9.11)。因此,最好不要返回第1步去修改图9-8的类模型,而宁可等到面向对象的设计阶段去决定是否实际需要附加的类。客户通常将不认为这三个模型是恰当的规格说明文档。因此,必须起草一份客户更为习惯的文档,因为这种文档与附录D所提供的材料很相似,为节省篇幅,在此予以省略。图9-8MSG产品的类模型图9-9MSG产品金融工具类的动态模型MSG实用程序MSGMSG投资年度预期利润年度预期利润更新投资ID投资名称抵押年度保险费年度财产税本周收入抵押余额抵押ID抵押名称价格周收入更新主菜单结束投资菜单添加、修改、删除投资或返回到主菜单报告菜单列出投资、抵押、确定可用资金或返回主菜单抵押菜单添加、修改、删除抵押或返回到主菜单报告菜单列出投资、抵押、确定可用资金或返回主菜单开始抵押抵押经营经费报告MSG功能模型抵押细节每周预期收入、抵押津贴每周预期收入、抵押津贴修改后的抵押细节每周可用资金每周预期津贴津贴数据收入数据投资预期总利润年度运营费用抵押细节抵押细节抵押细节抵押数据年度运营费用修改后的年度运营费用投资细节投资细节投资数据费用数据投资细节交易修改后的抵押细节投资列表生成投资列表计算投资的总预期利润核实交易种类及其有效性产生抵押列表计算可用资金并产生资金报告计算每周预期收入、抵押付款及津贴用户利润数据投资的总预期利润每周预期津贴三、MSG实例研究:面向对象的设计如11.8节所述,面向对象设计有三个步骤。首先,确定类的行为(方法);第二,根据对象和它们的客户来设计产品;第三,进行详细设计。这个过程最好是反复地进行。在MSG实例研究中,通过研究类模型(图9-8)和功能模型(图9-10),可以抽取出一些初始方法。投资类和抵押类二者的实例都要利用的方法,声明为金融工具类的方法(如表11-2所示,表中显示了类表的最终版本),这些方法包括:删除记录和输入新记录等。两个类的实例都要使用的但实现不同的方法(如读录音和写记录声明为金融工具的abstract方法(6.8节)。最后,一个类所专有的方法声明为该类的方法,例如改变投资领域或读的abstract方法方法(6.8节)。最后,一个类所专有的方法声明为该类的方法,例如改变投资领域或读抵押数据。然后将这些方法插入类表中。继续这一过程直到设计组自信所有必须的方法都已经被明确且正确地分配到相应的类中(如表11-2所示)。现在执行第二步的初始循环工作(用对象和它们的客户来设计产品),接着进行第三步详细设计的初始循环工作。这两个步骤执行完之后,要修改类表。这一修改又会使第二步设计和第三步详细设计产生变化。当这一过程稳定下来且最终的设计得到了SQA的认可之后,面向对象的设计阶段就完成了。在以对象和它的客户设计产品时,快速原型法(附录C)表明,根据分层菜单来设计是可行的。主菜单允许用户选择打印报表或对投资、抵押、操作费用执行某种操作。分层菜单中的方法激活相关的对象(即,向对象发消息)。菜单方法是MSG实用程序类的字段。图11-20中显示了客户和对象关系的最终版本。鉴于这一过程的特性,需要进行多次的重复。为了简洁起见,这里只给出了该过程的最终结果,即表11-2中的类表、图11-20中的客户对象关系和一小部分详细设计(如图11-21所示)。附录F给出了全部的详细设计。前一句用“最终结果”这一词可能有点傲慢。毕竟,在MSG产品被实现和集成以后,设计很可能还要改变,有时甚至是根本性的改变。因此,将这个材料称为在面向对象的生命周期中设计阶段产生的“最终设计版本”更加合适。表11-2MSG实例研究的类表类属性方法金融工具abstract方法显示记录查找记录获得新数据执行删除放记录读记录更新记录写记录其他方法删除记录输入新记录投资预期年度预期年度利润更新投资ID投资名改变投资产生投资该投资数据计算每周投资利润总和抵押年度抵押贴水年度所得税当前周收入抵押发生日期抵押余额改变抵押领域产生抵押报告读抵押数据计算每周净收入总和抵押ID抵押名价格周收入更新MSG应用INTEREST_RATEMAXIMUM_PERC_OF_INCOMENUMBER_OF_MORTGAGE_PAYMENTSMSG实用程序WEEKS_IN_YEAR清屏显示主菜单显示投资菜单显示抵押菜单显示报告菜单解析日期更新年度运营费用图11-20MSG研究实例的客户-对象关系类名金融工具模块名删除记录修改者,类型publicvoid参数无出错消息如果要删除的记录不存在访问的文件无改变的文件无调用的方法查找记录、执行删除注释:提示用户输入删除记录的ID。调用查找记录方法查找指定的记录,然后调用执行删除方法删除记录。最后报告记录已删除。类名投资模块名产生投资报告修改者,类型publicvoid参数无出错消息如果没有投资存在访问的文件investment.dst修改的文件investment.dst调用的方法读记录、显示记录注释:调用读记录方法investment.dst读记录,然后通过调用显示记录方法显示这些记录。类名MSG应用方法名设置年度运营费用修改者,类型publicstaticvoid参数float出错消息无访问的文件opexp.dat改变的文件opexp.dat调用的方法无注释:确认新的年度运营费用,将数据写入文件opexp.dat供当前操作用。MSG应用MSG实用程序投资抵押图11-21MSG实例研究的一部分详细设计四、MSG实例研究:黑盒子测试事例图12-11中包含了MSG实例研究的黑盒测试样例,完全的一套样例参见附录G。测试事例有两种类型,一类基于等价类和边界值分析,另一类基于功能测试。第一组样例是等价类和边界值分析,用来测试产品是否能检测出投资的项目号是由12位数字组成的。这里产生了4个测试事例,分别测试:没有数字(应该标记为输入错误);长度不足12位的项目号(可接受);长度正好是12为的项目号(可接受);程度超过12位的项目号(应标记为输入错误)。另一组3个测试事例检查投资name项目名是否以字母开头。在附录G里,还有许多相似的测试事例来检查规格说明的其他语句。现在转到功能测试,在规格说明里列出了10项功能,如图12-11中所示。另外的11个测试事例分别测试对这些功能的误用。应该知道,一旦规格说明完成后,这些测试事例就应该设计好了。它们在这里出现的主要原因是由于测试事例的选择是本章的主题。每个测试计划都应该明确地规定:黑盒测试事例要尽可
本文标题:MSG实例研究
链接地址:https://www.777doc.com/doc-4806572 .html