您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程12(西南交通大学软件工程课件)
第12章面向对象实现12.1.1面向对象语言的优点使用面向对象语言时,编译程序可以自动把面向对象概念映射到目标程序中。使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到程序中。1980年的smalltalk-80发展了Simula-67的对象和类的概念,并引入了方法、消息、元类及协议等概念,所以有人将smalltalk80称为第一个面向对象语言。但是,使面向对象广泛流行的是C++。12.1.2面向对象语言的技术特点选择面向对象语言时应考虑的技术特点:1.支持类与对象概念的机制2.实现整体-部分(聚集)结构的机制3.实现一般-特殊(泛化)结构的机制4.实现属性和服务的机制5.类型检查6.类库7.效率8.持久保存对象9.参数化类10.开发环境12.1.3选择面向对象语言1.将来能否占主导地位2.可重用性3.类库和开发环境4.其他因素有否提供技术支持?提供开发人员什么开发平台?对及其性能的需求?集成已有软件的容易程度。12.2程序设计风格12.2.1提高可重用性12.2.2提高可扩充性12.2.3提高健壮性12.3测试策略12.3.1面向对象的单元测试基类:操作A:X子类:操作A1:XA2:XA3:X有必要在每个子类中测试操作X不孤立地测试单个操作(函数),而是把操作作为类的一部分进行测试。12.3.2面向对象的集成测试两种不同的测试策略:1)基于线程的测试(threadbasedtesting)将响应系统的一个输入或一个事件所需要的哪些类集成起来测试。2)基于使用的测试(usebasedtesting)先测试独立类,再测试使用独立类的下一层次的类(依赖类),重复直至完毕。12.3.3面向对象的确认测试主要是根据动态模型和描述系统行为的脚本来设计确认测试用例。12.4设计测试用例12.4.1测试类的方法1.随机测试ATM系统中account(帐户)类的操作有:Open(打开)、Setup(建立)、Deposit(存款)、Withdraw(取款)、Balance(余额)、Summarize(清单)、CreditLimit(透支限额)、Close(关闭)。可以随机地产生一系列不同的操作序列:测试用例1:Open.Setup.Deposit.Balance.Summarize.Withdraw.Close测试用例2:Open.Setup.Withdraw.Deposit.Balance.CreditLimit.Close2.划分测试(类似于等价类划分)1)基于状态的划分改变Account类状态的操作:deposit,withdraw;不改变Account类状态的操作:balance,summarize,creditLimit测试用例:1.open.setup.deposit.deposit.withdraw.withdraw.close;2.open.setup.balance.summarize.creditLimit.close;2)基于属性的划分根据类操作使用的属性来划分操作。例,按属性Balance分可三类:使用Balance的操作;不使用Balance的操作;不使用也不修改balance的操作。3)基于功能的划分依据类操作完成的功能来划分类操作。例,初始化操作:open,setup计算操作:deposit,withdraw查询操作:balance,summarize,creditLimit3.基于故障的测试一般依靠经验和直觉,类似于错误推测测试法。12.4.2集成测试方法测试类协作可以使用随机测试方法、划分测试方法、行为测试等。1.多类测试2.从动态模型导出测试用例EmptyacctsetupacctworkingacctnonworkingacctdeadacctopenSetupacctDeposit(initial)closeWithdraw(final)depositwithdrawBalanceCreditAcctInfoAccount类的状态转换图应使Account类实例遍历所有允许的状态转换:测试用例1:open.setupacct.deposit(initial).withdraw(final).Close测试用例2:open.setupacct.deposit(initial).deposit.blance.credit.withdraw(final).Close测试用例3:open.setupacct.deposit(initial).deposit.withdraw.AcctInfo.withdraw(final).Close……
本文标题:软件工程12(西南交通大学软件工程课件)
链接地址:https://www.777doc.com/doc-3476149 .html