您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 原创文章-敏捷开发基础(全)
中国软件架构师网中国软件架构师网中国软件架构师网专家szjinco@public.szptt.net.cn敏捷开发基础敏捷开发基础————单元测试、自动化构建与单元测试、自动化构建与持续集成持续集成2中国中国中国软件架构师网软件架构师网软件架构师网¾¾契约式设计基础契约式设计基础¾¾单元测试单元测试¾¾正方形悖论的测试推演正方形悖论的测试推演¾¾自动化构建与持续集成自动化构建与持续集成内容提要内容提要契约式设计基础契约式设计基础4中国中国中国软件架构师网软件架构师网软件架构师网类及其方法的质量属性有那些内容?通类及其方法的质量属性有那些内容?通俗地讲,从实施层面来看,什么样的代俗地讲,从实施层面来看,什么样的代码才是高质量的?码才是高质量的?防错式设计的代码是否就意味着高质防错式设计的代码是否就意味着高质量,因为它几乎考虑了所有可能出错的量,因为它几乎考虑了所有可能出错的情形?情形?高质量的背后往往是更高的成本,如何高质量的背后往往是更高的成本,如何在两者间达成一种平衡?在两者间达成一种平衡?问题问题5中国中国中国软件架构师网软件架构师网软件架构师网类及其方法被开发出来是为了供其客户类及其方法被开发出来是为了供其客户代码使用,它必须满足以下质量属性:代码使用,它必须满足以下质量属性:正确性正确性————软件(或软件元素,比如软件(或软件元素,比如类)依照其规格定义正确执行的能力类)依照其规格定义正确执行的能力健壮性健壮性————软件(或软件元素,比如软件(或软件元素,比如类)对超出其规格定义之外的情形的适类)对超出其规格定义之外的情形的适应能力应能力类与它的客户类与它的客户clientclient代码代码6中国中国中国软件架构师网软件架构师网软件架构师网代码代码必须确保避免出必须确保避免出现,否则系统将现,否则系统将进入未定义的状进入未定义的状态(甚至崩溃)态(甚至崩溃)7中国中国中国软件架构师网软件架构师网软件架构师网==0y0y0|x|Max|y|MaxDivisionDivision除除法函数将返法函数将返回正确的结回正确的结果果DivisionDivision除法除法函数返回错误函数返回错误代码或抛出异代码或抛出异常,但保证系常,但保证系统仍然处于正统仍然处于正常状态常状态DivisionDivision除法函除法函数无法处理,系数无法处理,系统将进入未定义统将进入未定义的状态(甚至崩的状态(甚至崩溃)溃)获得健壮性的获得健壮性的代价代价——DivisionDivision除法除法函数必须判断函数必须判断x,yx,y的绝对值是的绝对值是否超限否超限8中国中国中国软件架构师网软件架构师网软件架构师网对于类而言,保证其正确性是绝对的要对于类而言,保证其正确性是绝对的要求,但是要实现绝对的健壮性则几乎是求,但是要实现绝对的健壮性则几乎是不可能的(也没有意义),因为超出其不可能的(也没有意义),因为超出其规格定义之外的情形太多了,目前最合规格定义之外的情形太多了,目前最合适的解决途径就是契约式设计适的解决途径就是契约式设计————将类(或构件)与其客户间的关系看作将类(或构件)与其客户间的关系看作一种正式的协议,它规定了各方的权利一种正式的协议,它规定了各方的权利与义务,而当双方都遵守它时,将确保与义务,而当双方都遵守它时,将确保不会出现未定义的结果。不会出现未定义的结果。正确性保证与契约式设计正确性保证与契约式设计9中国中国中国软件架构师网软件架构师网软件架构师网正确性公式正确性公式————{P}A{Q}{P}A{Q}从满足从满足PP的状态(前置条件)开始,任意的状态(前置条件)开始,任意一次一次AA((操作)的执行均结束于保证操作)的执行均结束于保证QQ的的状态(后置条件);状态(后置条件);使用上述公式可以形式化地描述软件使用上述公式可以形式化地描述软件(类操作)规格。(类操作)规格。程序中通常使用断言程序中通常使用断言AssertionAssertion来检查前来检查前后置条件。后置条件。规格描述规格描述10中国中国中国软件架构师网软件架构师网软件架构师网供给者拥有要求客户保证前置条件的权供给者拥有要求客户保证前置条件的权利,但必须承担确保后置条件的义务;利,但必须承担确保后置条件的义务;相对应的,客户必须承担确保前置条件相对应的,客户必须承担确保前置条件的义务,但拥有从供给者(类操作的义务,但拥有从供给者(类操作))得得到后置条件被满足的权利。到后置条件被满足的权利。对比容错式设计,契约式设计最显著的对比容错式设计,契约式设计最显著的变化是将类的部分责任转给其客户承变化是将类的部分责任转给其客户承担,使得类的职责分配更加均衡。担,使得类的职责分配更加均衡。契约契约11中国中国中国软件架构师网软件架构师网软件架构师网代码代码必须确保避免出必须确保避免出现规格定义范围现规格定义范围之外的执行条之外的执行条件,即确保前置件,即确保前置条件条件12中国中国中国软件架构师网软件架构师网软件架构师网软件系统的本质特征是由表及里、至顶软件系统的本质特征是由表及里、至顶而下的一种层次结构,其构成是所有相而下的一种层次结构,其构成是所有相对独立的构件或元素对独立的构件或元素zz而将所有构件或元素组织成为一个有机而将所有构件或元素组织成为一个有机整体的正是无所不在的契约整体的正是无所不在的契约zz在最表层,即系统与外部环境之间,是在最表层,即系统与外部环境之间,是最终用户与系统整体进行交互的契约最终用户与系统整体进行交互的契约(通常可以抽象成系统用例);次之,(通常可以抽象成系统用例);次之,各子系统各子系统//构件之间,是它们相互通讯构件之间,是它们相互通讯协作的契约;最后,类与类、类操作、协作的契约;最后,类与类、类操作、以及独立函数之间,是它们相互调用的以及独立函数之间,是它们相互调用的契约契约13中国中国中国软件架构师网软件架构师网软件架构师网前置条件前置条件————指在执行某种操作(例如启动用例的指在执行某种操作(例如启动用例的一条执行路径、调用类的一个方法等)之前,目标一条执行路径、调用类的一个方法等)之前,目标和其上下文必须共同满足的条件(例如系统处于正和其上下文必须共同满足的条件(例如系统处于正常运行状态、用户账号存在并未冻结、对象从其上常运行状态、用户账号存在并未冻结、对象从其上下文获取的资源处于可用状态等)下文获取的资源处于可用状态等)zz合法的输入合法的输入————例如发送给子系统的请求消息格式例如发送给子系统的请求消息格式正确、取值在规定范围内等)正确、取值在规定范围内等)zz期望的输出期望的输出————例如系统返回给用户需要的查询结例如系统返回给用户需要的查询结果等)果等)zz后置条件后置条件————指无论某种操作的执行过程怎样,结指无论某种操作的执行过程怎样,结束后,目标和其上下文必须达到的状态或满足的条束后,目标和其上下文必须达到的状态或满足的条件(例如类的不变式不被打破、上下文资源被释件(例如类的不变式不被打破、上下文资源被释放、系统不出现不能预料的边际效应等)放、系统不出现不能预料的边际效应等)15中国中国中国软件架构师网软件架构师网软件架构师网(x:G)push(x:G)isis
本文标题:原创文章-敏捷开发基础(全)
链接地址:https://www.777doc.com/doc-5534058 .html