《软件开发模型幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件开发模型幻灯片.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件开发模型第1页,共53页,编辑于2022年,星期三软件开发模型:软件开发模型:l软件开发模型是软件开发的全部过程、活动、任务和管理软件开发模型是软件开发的全部过程、活动、任务和管理 的的结构框架结构框架。l软件开发模型能清晰、直观地表达软件开发全过程,软件开发模型能清晰、直观地表达软件开发全过程,明确明确 规定了要完成的主要活动和任务,用来作为软件项目工作的基础。规定了要完成的主要活动和任务,用来作为软件项目工作的基础。l选择合适的开发模型是十分重要的选择合适的开发模型是十分重要的2.1 软件开发模型与软件工程软件开发模型与软件工程第2页,共53页,编辑于2022年,星期三软件开发模型是将
2、软件开发中的主要活动细分为:软件开发模型是将软件开发中的主要活动细分为:2.1 软件开发模型与软件工程软件开发模型与软件工程系统需系统需求分析求分析程序程序设计设计程序程序编码编码测测试试运行运行维护维护系统系统设计设计人员管理人员管理项目管理项目管理第3页,共53页,编辑于2022年,星期三l常见的开发模型常见的开发模型:瀑布模型、演化模型、螺旋模型、瀑布模型、演化模型、螺旋模型、XPXP开发模型、开发模型、快速开发模型等。快速开发模型等。l由于现在还没有任何一种方法能够解决软件危机中的所有问题,所由于现在还没有任何一种方法能够解决软件危机中的所有问题,所以在软件开发的各个阶段采用综合治理的
3、方法。以在软件开发的各个阶段采用综合治理的方法。l软件开发模型直接影响软件开发的周期和软件质量,是软件开发软件开发模型直接影响软件开发的周期和软件质量,是软件开发的组织管理形式,是软件工程最重要的内容之一。的组织管理形式,是软件工程最重要的内容之一。2.1 软件开发模型与软件工程软件开发模型与软件工程第4页,共53页,编辑于2022年,星期三l2.2.1 瀑布模型的概念瀑布模型的概念:2.2 瀑布模型(瀑布模型(Waterfall Model)瀑布模型是将软件生存周期各活动规定为依线性顺序瀑布模型是将软件生存周期各活动规定为依线性顺序联接的若干阶段的模型。它包括需求分析、概要设计、联接的若干阶
4、段的模型。它包括需求分析、概要设计、详细设计、编码、测试和维护。它规定了由前至后、详细设计、编码、测试和维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。相互衔接的固定次序,如同瀑布流水,逐级下落。第5页,共53页,编辑于2022年,星期三l2.2.1 瀑布模型的概念瀑布模型的概念:2.2 瀑布模型(瀑布模型(Waterfall Model)需求分析需求分析系统设计系统设计程序设计程序设计编码编码测试测试运行及维护运行及维护瀑布模型瀑布模型(需求说明书)(需求说明书)(系统设计书)(系统设计书)(程序设计书)(程序设计书)(程序清单)(程序清单)(测试报告)(测试报告)(维护
5、报告,(维护报告,改进的系统改进的系统)第6页,共53页,编辑于2022年,星期三l阶段任务、结果及人员阶段任务、结果及人员阶阶段段基本任基本任务务工作工作结结果果参加者参加者需求分析需求分析理解和表达用理解和表达用户户的要求,的要求,需求需求说说明明书书用用户户、分析、分析人人员员系系统设计统设计建立系建立系统统的的结结构构,模模块块划分划分系系统设计书统设计书用用户户、系、系统统设计设计人人员员程序程序设计设计程序内的模程序内的模块设块设计计,数据,数据库库的物的物理理设计设计程序程序设计书设计书程序员?程序员?编编程程程序程序编编写写程序程序程序程序员员测试测试发现错误发现错误和排除和排
6、除错误错误测试报测试报告告测试测试人人员员运行及运行及维护维护维护维护维护报告、改维护报告、改进的系统进的系统用户、维护用户、维护人员人员2.2 瀑布模型概念瀑布模型概念第7页,共53页,编辑于2022年,星期三特征:特征:l从上一阶段承接的成果物作为本阶段的工作对象;从上一阶段承接的成果物作为本阶段的工作对象;l对上一阶段成果实施本阶段的活动;对上一阶段成果实施本阶段的活动;l给出本阶段的成果,作为下一阶段的输入;给出本阶段的成果,作为下一阶段的输入;l对本阶段的工作进行评审,若本阶段的工作得到确认,则继续对本阶段的工作进行评审,若本阶段的工作得到确认,则继续下阶段的工作,否则返回前一阶段或
7、更前一阶段。下阶段的工作,否则返回前一阶段或更前一阶段。优点优点:l提供了一个模板,使得分析、设计、编码、测试、运行维护可以在提供了一个模板,使得分析、设计、编码、测试、运行维护可以在该模板的指导下应用。该模板的指导下应用。2.2.2 瀑布模型的特点瀑布模型的特点第8页,共53页,编辑于2022年,星期三缺点缺点:l缺乏灵活性,不能适应用户需求的改变缺乏灵活性,不能适应用户需求的改变l开始阶段的小错误被逐级放大,可能导致软件产品报废开始阶段的小错误被逐级放大,可能导致软件产品报废l返回上一级的开发需要十分昂贵的代价返回上一级的开发需要十分昂贵的代价l随着软件规模和复杂性的增加,对于需求不能完全
8、确定的软件随着软件规模和复杂性的增加,对于需求不能完全确定的软件开发项目将产生很大的风险。开发项目将产生很大的风险。通常使用场合通常使用场合:l需求分析做得比较好的系统需求分析做得比较好的系统l二次开发系统二次开发系统2.2.2 瀑布模型的特点瀑布模型的特点第9页,共53页,编辑于2022年,星期三l在项目开发的初始阶段,人们对软件的需求认识往往不够清楚,在项目开发的初始阶段,人们对软件的需求认识往往不够清楚,因而使得开发项目难以做到一次开发成功,出现返工再开发在因而使得开发项目难以做到一次开发成功,出现返工再开发在所难免。所难免。2.3原型模型原型模型第10页,共53页,编辑于2022年,星
9、期三 在获得用户基本需求说明的基础上,投入少量人力和物力,在获得用户基本需求说明的基础上,投入少量人力和物力,快速建立一个原始模型,使用户及时运行和看到模型的概貌和快速建立一个原始模型,使用户及时运行和看到模型的概貌和使用效果,并对需求说明进行补充和精化,提出改进意见,开使用效果,并对需求说明进行补充和精化,提出改进意见,开发人员进一步修改完善,如此循环迭代,直到得到一个用户满发人员进一步修改完善,如此循环迭代,直到得到一个用户满意的模型为止。意的模型为止。从原型法的基本思想中可以看到,用户能及早看到系统模型,从原型法的基本思想中可以看到,用户能及早看到系统模型,在循环迭代修改和完善过程中,使
10、用户的需求日益明确,从而在循环迭代修改和完善过程中,使用户的需求日益明确,从而消除了用户需求的不确定性,同时从原型到模型的生成,周期消除了用户需求的不确定性,同时从原型到模型的生成,周期短、见效快,对环境变化的适应能力较强。短、见效快,对环境变化的适应能力较强。2.3.1原型模型的基本思想原型模型的基本思想第11页,共53页,编辑于2022年,星期三 功能选择功能选择 要恰当选择原型实现的功能。根据用户基要恰当选择原型实现的功能。根据用户基本需求,对系统给出初步定义。用户的基本需求本需求,对系统给出初步定义。用户的基本需求包括各种功能的要求、数据结构、菜单和屏幕、包括各种功能的要求、数据结构、
11、菜单和屏幕、报表内容和格式等要求。这些要求虽是概略的,报表内容和格式等要求。这些要求虽是概略的,但是最基本的,易于描述和定义。原型和最终的但是最基本的,易于描述和定义。原型和最终的软件系统不同,软件系统不同,两者在功能范围上的区别主要有两者在功能范围上的区别主要有以下两个方面:以下两个方面:2.3.2 原型模型的内容原型模型的内容第12页,共53页,编辑于2022年,星期三第一最终系统是软件需求全部功能的实现,而原型只实现第一最终系统是软件需求全部功能的实现,而原型只实现所选择的部分功能。所选择的部分功能。第二最终系统对每个软件需求都要求详细实现,而原型仅第二最终系统对每个软件需求都要求详细实
12、现,而原型仅仅是为了试验和演示用的,部分功能需求可以忽略,或者仅是为了试验和演示用的,部分功能需求可以忽略,或者模拟实现。模拟实现。2.3.2 原型模型的内容原型模型的内容第13页,共53页,编辑于2022年,星期三 构造原型构造原型 根据用户初步需求,开发出一个可以应用的系统,它根据用户初步需求,开发出一个可以应用的系统,它应满足上述的由用户提出的基本要求。在构造一个原型应满足上述的由用户提出的基本要求。在构造一个原型时,应当强调着眼于预期的评估,而不是为了正规的长时,应当强调着眼于预期的评估,而不是为了正规的长期使用。期使用。运行和评价原型运行和评价原型 在试用中能亲自参加和面对一个实在的
13、模型,能在试用中能亲自参加和面对一个实在的模型,能较为直观和明确地进一步提出需求,提出修改意见。较为直观和明确地进一步提出需求,提出修改意见。通过运行原型对软件需求规格说明进行评价和确认。通过运行原型对软件需求规格说明进行评价和确认。评价要有用户参与,注意来自用户的反馈信息。评价要有用户参与,注意来自用户的反馈信息。2.3.2 原型模型的内容原型模型的内容第14页,共53页,编辑于2022年,星期三 修改和完善原型修改和完善原型 根据修改意见进行修改,以得到新的系统原型,然后再进行试根据修改意见进行修改,以得到新的系统原型,然后再进行试用和评价,这样经过有限次的循环反复,逐步提高和完善,直到得
14、用和评价,这样经过有限次的循环反复,逐步提高和完善,直到得到一个用户满意的系统模型为止。根据原型实现的特点和环境,可到一个用户满意的系统模型为止。根据原型实现的特点和环境,可以把原型作为试验的工具,用完就丢弃之(大部分原型都废弃不用,以把原型作为试验的工具,用完就丢弃之(大部分原型都废弃不用,主要因为原型太慢、太大、结构不合理等原因);也可以使原型全主要因为原型太慢、太大、结构不合理等原因);也可以使原型全部或部分地成为最终系统的组成部分。部或部分地成为最终系统的组成部分。原型开发与原型运行评价两者需反复进行多次,才能最后得原型开发与原型运行评价两者需反复进行多次,才能最后得到经过确认的需求规
15、格说明,并以此作为进一步的软件设计和实到经过确认的需求规格说明,并以此作为进一步的软件设计和实现的基础。现的基础。2.3.2 原型模型的内容原型模型的内容第15页,共53页,编辑于2022年,星期三需求分析原型开发最终系统设计原型评价最终系统实现用户反馈图图2.3 2.3 快速原型模型快速原型模型2.3.2 原型模型的内容原型模型的内容第16页,共53页,编辑于2022年,星期三原型模型(快速原型模型)(快速原型模型)原型范型原型范型用户测试用户测试运行原型运行原型建造建造/修改修改 原型原型 听取用听取用 户意见户意见2.3.2 原型模型的内容原型模型的内容第17页,共53页,编辑于2022
16、年,星期三采用原型模型的软件生存周期分析定义分析定义系统需求系统需求生成生成原型原型系统系统设计设计程序程序设计设计编码编码测试测试运运 行行和维护和维护原型化原型化含原型化的含原型化的软件软件生存期生存期2.3.2 原型模型的内容原型模型的内容第18页,共53页,编辑于2022年,星期三优点:优点:l开发者与用户充分交流,可以澄清模糊需求,需求定义比其开发者与用户充分交流,可以澄清模糊需求,需求定义比其他模型好得多他模型好得多 l为用户需求的改变提供了充分的余地为用户需求的改变提供了充分的余地 缺点:缺点:l开发者为了使一个原型快速运行起来,往往在实现过程中开发者为了使一个原型快速运行起来,
17、往往在实现过程中采用折衷的手段。软件系统的组成部分可能会打折扣;采用折衷的手段。软件系统的组成部分可能会打折扣;l资源规划和管理较为困难,随时更新文档也带来麻烦。资源规划和管理较为困难,随时更新文档也带来麻烦。一般使用场合:一般使用场合:l开发者在不了解的应用领域开发开发者在不了解的应用领域开发 l客户不清楚其所开发软件项目的最终目标客户不清楚其所开发软件项目的最终目标 2.3.3 原型模型的特点原型模型的特点第19页,共53页,编辑于2022年,星期三2.4 2.4 增量模型增量模型1.阶段式开发:增量模型阶段式开发:增量模型 系系统统设设计计时时分分片片交交付付,可可使使用用户户在在使使用
18、用某某些些基基本本功功能能的的同同时时,开开发发剩剩余余的的功功能能。这这样样通通常常会会并并行行地地存存在在两两个个系系统统:生生产产系系统统和和开开发发系系统统。运运行行或或生生产产系系统统是是当当前前被被客客户户或或用用户户所所使使用用的的系系统统。而而开开发发系系统统是是准准备备用用于替代当前生产系统的下一个版本。于替代当前生产系统的下一个版本。增量模型是一种非整体开发的模型。是瀑布模型的顺增量模型是一种非整体开发的模型。是瀑布模型的顺序特征和序特征和快速原型模型的迭代特征相结合的产物快速原型模型的迭代特征相结合的产物。该模型具有较大的灵活性,适合于软件需求不明确、该模型具有较大的灵活
19、性,适合于软件需求不明确、设计方案有一定风险的软件项目。设计方案有一定风险的软件项目。第20页,共53页,编辑于2022年,星期三创建版本1创建版本2创建版本3使用版本1使用版本2使用版本3开发者使用者阶段式开发:增量和迭代模型阶段式开发:增量和迭代模型2.4 2.4 增量模型增量模型第21页,共53页,编辑于2022年,星期三规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户增量1增量2增量3增量n2.4 2.4 增量模型增量模型第22页,共53页,编辑于2022年,星期三特点:特点:在前面增量的基础上开发后面的增量在前面
20、增量的基础上开发后面的增量每个增量的开发可用瀑布或快速原型模型每个增量的开发可用瀑布或快速原型模型迭代的思路迭代的思路优点:优点:如果在项目既定的商业要求期限不可能找到如果在项目既定的商业要求期限不可能找到足够的开发人员,这种情况下增量模型显得足够的开发人员,这种情况下增量模型显得特别有用。早期的增量可以有少量的人员实特别有用。早期的增量可以有少量的人员实现。同时,增量模型可以规避技术风险。现。同时,增量模型可以规避技术风险。2.4 2.4 增量模型增量模型第23页,共53页,编辑于2022年,星期三 软软件件开开发发几几乎乎总总要要冒冒一一定定的的风风险险,例例如如,产产品品交交付付给给用用
21、户户之之后后用用户户可可能能对对产产品品不不满满意意,到到了了预预定定的的交交付付日日期期软软件件可可能能还还未未开开发发出出来来,实实际际的的开开发发成成本本可可能能超超过过了了预预算算,产产品品完完成成之之前前一一些些关关键键的的开开发发人人员员可可能能“跳跳槽槽”了了,产产品品投投入入市市场场之之前前竞竞争争对对手手发发布布了了一一个个功功能能相相近近、价价格格更更低低的的软软件件等等等等。软软件件风风险险是是任任何何软软件件开开发发项项目目中中都都普普遍遍存存在在的的实实际际问问题题,项项目目越越大大,软软件件产产品品越越复复杂杂,承承担担该该项项目目所所冒冒的的风风险险也也越越大大。
22、软软件件风风险险可可能能在在不不同同程程度度上上损损害害软软件件开开发发过过程程和和软软件件产产品品质质量量。因因此此,在在软软件件开开发发过过程程中中必必须须及及时时识识别别和和分分析析风风险险,并并且且采采取取适适当当措措施施以以消除或减少风险的危害。消除或减少风险的危害。构建原型是一种能使某些类型的风险降至最低的方法。构建原型是一种能使某些类型的风险降至最低的方法。于是在于是在1988年年B.boehm提出了提出了螺旋模型螺旋模型。2.5 螺旋模型螺旋模型第24页,共53页,编辑于2022年,星期三 螺螺旋旋模模型型的的基基本本思思想想是是,使使用用原原型型及及其其他他方方法法以以尽尽可
23、可能能地地降降低低风风险险。理理解解这这种种模模型型的的一一个个简简易易方方法法,是是把把它它看看作作在在每每个个阶阶段段之之前前都都增增加加了了风风险险分分析析过过程程的的快快速速原原型型模模型型,如如右右图图所所示。示。简化的螺旋模型图2.5 螺旋模型螺旋模型第25页,共53页,编辑于2022年,星期三螺旋模型将瀑布模型与原型模型结合起来,加入了两种模型均忽略了的风险分析,弥补了这两种模型的不足。螺旋模型是一种风险驱动的模型。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。螺旋模型适合于大型软件的开发。2.5 螺旋模型螺旋模型第26页,共53页,编辑于2022年,星期
24、三 螺旋模型螺旋模型完整的螺旋模型图完整的螺旋模型图制定计划制定计划风险分析风险分析客户评估客户评估工程实施工程实施第27页,共53页,编辑于2022年,星期三 螺旋模型是一种迭代模型,每迭代一次,螺旋线就前进一周。当项目按螺旋模型是一种迭代模型,每迭代一次,螺旋线就前进一周。当项目按照顺时针方向沿螺旋移动时,每一个螺旋周期包含了风险分析,并且按照顺时针方向沿螺旋移动时,每一个螺旋周期包含了风险分析,并且按以下以下4个步骤来进行:个步骤来进行:(1)确定目标,选定方案,设定约束条件,选定完成本周期所定目标)确定目标,选定方案,设定约束条件,选定完成本周期所定目标的策略。的策略。(2)分析该策略
25、可能存在的风险。必要时通过建立一个原型来确定风)分析该策略可能存在的风险。必要时通过建立一个原型来确定风险的大小,然后据此决定是按原定目标执行,还是修改目标或终止项险的大小,然后据此决定是按原定目标执行,还是修改目标或终止项目。目。(3)在排除风险之后,实现本螺旋周期的目标,例如,第一圈可能)在排除风险之后,实现本螺旋周期的目标,例如,第一圈可能产生产品的规格说明,第二圈可能产生实现产品设计等。产生产品的规格说明,第二圈可能产生实现产品设计等。(4)最后一步是评价前一步的结果,并且计划下一轮的工作。)最后一步是评价前一步的结果,并且计划下一轮的工作。2.5 螺旋模型螺旋模型第28页,共53页,
26、编辑于2022年,星期三优点优点:l结合瀑布模型和原型模型的优点结合瀑布模型和原型模型的优点l风险分析可使一些极端困难的问题和可能导致费用过高的风险分析可使一些极端困难的问题和可能导致费用过高的问题被更改或取消问题被更改或取消缺点:缺点:l螺旋模型开发的成败,很大程度上依赖于风险评估的成败。螺旋模型开发的成败,很大程度上依赖于风险评估的成败。需要开发人员具有相当丰富的风险评估经验和专门知识需要开发人员具有相当丰富的风险评估经验和专门知识 一般使用场合一般使用场合:l需求不能完全确定,同时又存在技术、资金或开发时间需求不能完全确定,同时又存在技术、资金或开发时间等风险因素的等风险因素的大型开发项
27、目大型开发项目。2.5 螺旋模型螺旋模型第29页,共53页,编辑于2022年,星期三2.6 XPXP开发模型开发模型2.6.1 XPXP开发模型概要开发模型概要lXPXP极限编程极限编程(eXtreme Programming)(eXtreme Programming)是一种敏捷(是一种敏捷(AgileAgile)开)开发方法,发方法,以编码为核心以编码为核心任务的,供任务的,供中小型小组中小型小组用于开发用于开发需求快需求快速变化速变化的软件。的软件。l敏捷是什么?敏捷是什么?敏捷已经成为当今描述现代软件过程的时髦用敏捷已经成为当今描述现代软件过程的时髦用词。每个人都是敏捷的,敏捷团队是能够
28、适当响应变化的灵词。每个人都是敏捷的,敏捷团队是能够适当响应变化的灵活团队。变化就是软件开发本身,软件构建有变化,团队成活团队。变化就是软件开发本身,软件构建有变化,团队成员在变化、使用新技术带来变化,各种员在变化、使用新技术带来变化,各种 变化都会对开发的变化都会对开发的软件产品以及项目本身造成影响。软件产品以及项目本身造成影响。我们必须接受我们必须接受“支持变化支持变化”的思想的思想,它应当根植于软件开发中的每一件事中,因为这是,它应当根植于软件开发中的每一件事中,因为这是软件的心脏与灵魂。敏捷团队意识到软件是团队中所有人共软件的心脏与灵魂。敏捷团队意识到软件是团队中所有人共同开发完成的,
29、这些人的个人技能和合作能力是项目成功的同开发完成的,这些人的个人技能和合作能力是项目成功的关键所在。关键所在。l敏捷方法是为了克服传统软件工程中认识和实践的弱点开发而敏捷方法是为了克服传统软件工程中认识和实践的弱点开发而成的(成的(Jim HighsmithJim Highsmith说:说:“传统方法学家陷入了误区,乐于传统方法学家陷入了误区,乐于生完美的文档而不是满足业务需要的可运行系统生完美的文档而不是满足业务需要的可运行系统”)。敏捷开)。敏捷开发可以带来多方面的好处,但它并不使用于所有的项目、所有发可以带来多方面的好处,但它并不使用于所有的项目、所有的方面、所有的人和所有的情况,它并不
30、完全对立于传统的软的方面、所有的人和所有的情况,它并不完全对立于传统的软件工程实践。件工程实践。第30页,共53页,编辑于2022年,星期三lXPXP有四部分组成:价值、原则、活动和实践有四部分组成:价值、原则、活动和实践XP的的4种价值观:种价值观:l交流交流:侧重口头交流,而不是文档、报表和计划。因而,人际关系显:侧重口头交流,而不是文档、报表和计划。因而,人际关系显得尤为重要。得尤为重要。l简化简化:在管用的前提下,做最简单的事。目标放在客户当前的需求上,摒:在管用的前提下,做最简单的事。目标放在客户当前的需求上,摒弃了过多的文档。弃了过多的文档。l反馈反馈:u通过及时地单元测试和功能测
31、试获得快速反馈。通过及时地单元测试和功能测试获得快速反馈。u快速地编写软件,然后向客户演示。为确保准确性和高质量,获取客户关于快速地编写软件,然后向客户演示。为确保准确性和高质量,获取客户关于到目前为止的进度的反馈是至关重要的。到目前为止的进度的反馈是至关重要的。l勇气勇气:u提倡积极面对现实和处理问题的勇气提倡积极面对现实和处理问题的勇气u快速工作并在必要时重新进行开发的勇气。快速工作并在必要时重新进行开发的勇气。2.6.1 XPXP开发模型概要开发模型概要第31页,共53页,编辑于2022年,星期三XP的指导原则:的指导原则:l快速反馈快速反馈:开发人员通过简短的反馈循环迅速了解其当前产品
32、是:开发人员通过简短的反馈循环迅速了解其当前产品是否满足了客户的需求。否满足了客户的需求。l简单性假设简单性假设:将每个问题都视为很容易解决。只需为当前迭代:将每个问题都视为很容易解决。只需为当前迭代打算,而无需洞察未来可能需要什么。打算,而无需洞察未来可能需要什么。l逐步修改逐步修改:通过一系列细微的修改来解决问题。:通过一系列细微的修改来解决问题。l拥抱变化拥抱变化:包容变化,提倡变化。:包容变化,提倡变化。l高质量的工作高质量的工作:工作质量决不可打折扣。:工作质量决不可打折扣。XP采用测试先行采用测试先行的编程方式,强调编码和测试的重要性。的编程方式,强调编码和测试的重要性。2.6 X
33、PXP开发模型概要开发模型概要第32页,共53页,编辑于2022年,星期三XP活动:活动:l倾听倾听:积极倾听。:积极倾听。l测试测试:非:非“马后炮马后炮”式的测试。编码之前编写测试用例。式的测试。编码之前编写测试用例。l编码编码:编写代码是一种工艺,通过重构、结对编程和代码复:编写代码是一种工艺,通过重构、结对编程和代码复核等实践得以改进。核等实践得以改进。l设计设计:设计是不断演化的,并非固定的,不能赋予它单个职责,:设计是不断演化的,并非固定的,不能赋予它单个职责,而是基于小组的,动态的。而是基于小组的,动态的。2.6.1 XPXP开发模型概要开发模型概要第33页,共53页,编辑于20
34、22年,星期三XP实践:实践:2.6.1 XPXP开发模型概要开发模型概要实践实践描述描述 规则游戏规则游戏 规则游戏的职责是快速制定下一次发布或迭代的高级规划规则游戏的职责是快速制定下一次发布或迭代的高级规划 小型发布小型发布 XPXP周期提供业务价值的频繁发布组成周期提供业务价值的频繁发布组成 隐喻隐喻 隐喻是用于描述项目的通用观点、术语和语言隐喻是用于描述项目的通用观点、术语和语言 简单设计简单设计 从从XPXP的角度说,简单意味着代码完成的是最简单、惯用的的角度说,简单意味着代码完成的是最简单、惯用的 测试测试 测试首先被开发,然后再测试装置中实现测试首先被开发,然后再测试装置中实现
35、重构重构 不改变系统中可见行为的前提下,对已有的代码设计进行改进不改变系统中可见行为的前提下,对已有的代码设计进行改进 结对编程结对编程 两位开发人员坐在同一台工作站前,一起完成开发任务两位开发人员坐在同一台工作站前,一起完成开发任务 集体拥有集体拥有 任何小组成员能够在任何时间对代码的任何部分进行修改任何小组成员能够在任何时间对代码的任何部分进行修改 持续集成持续集成 每天对系统组件进行多次的集成每天对系统组件进行多次的集成 每周工作每周工作40小时小时 加班加点,无法确保高质量和高性能。加班加点,无法确保高质量和高性能。XPXP要求正常的工作时间,要求正常的工作时间,以确保质量。不要连续两
36、个星期都加班以确保质量。不要连续两个星期都加班 现场客户现场客户 团队中加入一位真正的、起作用的用户,他将负责全职回答问题团队中加入一位真正的、起作用的用户,他将负责全职回答问题 编码标准编码标准 编码标准是一系列的约定,所有人在开发时都必须遵守编码标准是一系列的约定,所有人在开发时都必须遵守第34页,共53页,编辑于2022年,星期三2.6.1 XPXP开发模型概要开发模型概要第35页,共53页,编辑于2022年,星期三XP关键特征:关键特征:l明确的反馈:早期的明确反馈。明确的反馈:早期的明确反馈。l逐步规划:逐步规划:“让我们对现在知道的进行规划,然后在发生变让我们对现在知道的进行规划,
37、然后在发生变化时,不断地重新规范化时,不断地重新规范”l测试优先测试优先l口头交流口头交流一般使用场合:一般使用场合:l规模小、进度紧、需求变化大、质量要求严的项目规模小、进度紧、需求变化大、质量要求严的项目2.6.2 XPXP开发模型特点开发模型特点第36页,共53页,编辑于2022年,星期三一般不适合的场合:一般不适合的场合:l中大型的项目中大型的项目l重构会导致大量经费开销的应用项目重构会导致大量经费开销的应用项目l需要很长的编译或者较长的测试周期的系统需要很长的编译或者较长的测试周期的系统l不容易进行测试的应用项目不容易进行测试的应用项目l团队人员异地分布的项目团队人员异地分布的项目l
38、不能接受不能接受XPXP文化的组织和团队文化的组织和团队2.6.2 XPXP开发模型特点开发模型特点第37页,共53页,编辑于2022年,星期三 2.7 2.7 面向面向对对象的开象的开发发模型模型1 1在讲在讲面向面向对对象的开象的开发发模型之前先模型之前先讲讲面向对象的基本概念面向对象的基本概念第38页,共53页,编辑于2022年,星期三面向对象的基本概念对象对象Object类类Class继承继承Inheritance消息消息Message 面向对象面向对象对象对象+类类+继承继承+消息通信消息通信第39页,共53页,编辑于2022年,星期三对象Object客观世界中的实体状态(静态属性
39、Attributes)操作(动态行为 Methods)对象:=Identifier(标识:即名称,用来在问题域中区分其他对象)Method Set(即行为或方法:一是对自身的操作,改变原有的属性状态;另一是施加于其他对象的操作,将产生的输出结果作为消息发送的操作)Data Structure(数据:描述对象属性的存储或数据结构,他表示了对象的一个状态)Message Interface(接口:主要指对外接口,指对象受理外部消息所制定的操作的名称集合)第40页,共53页,编辑于2022年,星期三类Class和实例Instance类相同属性和行为的对象的抽象实例特定类所描述的一个具体对象第41页,
40、共53页,编辑于2022年,星期三子类直接继承父类的数据和操作继承的传递性,单继承、多重继承继承(Inheritance)家具桌子椅子衣柜床椅子的实例第42页,共53页,编辑于2022年,星期三多态性Polymorphism概念不同类层次共享一个方法名相同的参数特征和返回值类型多种不同实现C+中虚函数实现动态联编第43页,共53页,编辑于2022年,星期三重载Overloading函数重载函数重载同一作用域同一作用域多个名字相同的函数多个名字相同的函数参数特征不同参数特征不同静态联编静态联编运算符重载运算符重载第44页,共53页,编辑于2022年,星期三消息Message对象间的交互手段对象间
41、的交互手段形式:形式:Message:dest,op,paraDestination Object(目标对象)(目标对象)Operation(操作)(操作)Parameters(参数)(参数)第45页,共53页,编辑于2022年,星期三 2.7 2.7 面向面向对对象的开象的开发发模型模型2 2 对对象象技技术术为为软软件件工工程程的的基基于于构构件件的的过过程程模模型型提提供供了了技技术术框框架架。面面向向对对象象范范型型强强调调了了类类的的创创建建,类类封封装装了了数数据据和和用用于于操操纵纵该该数数据据的的算算法法。如如果果经经过过合合适适的的设设施施和和实实现现,面面向向对对象象的的类
42、类可可以以在在不不同同的的应应用用及及基基于于计计算算机机的的系系统统结结构中复用构中复用 面面向向对对象象模模型型融融合合了了螺螺旋旋模模型型的的许许多多特特征征。它它本本质质上上是是演演化化的的,支支持持软软件件开发的迭代方法。开发的迭代方法。第46页,共53页,编辑于2022年,星期三2.8 构件集成模型 构件(component)也称为组件,是一段实现一系列有确定接口的程序体,具有自己的功能和逻辑,能同其他构件组装起来协调工作。该模型支持软件重用,对缩短软件开发周期、降低项目成本有重要的现实意义。同时,建造符合某应用领域体系结构标准的构件,可以用来搭建分布式的、跨越不同操作平台的软件,
43、扩展了软件的应用前景,促进了软件标准化、商品化的发展。因此,在此基础上专家们又提出了“基于构件的软件工程”(CBSE)。构件组装模型具有极其广阔的实用性和深远的意义构件组装模型具有极其广阔的实用性和深远的意义。构件组装模型如下图所示:第47页,共53页,编辑于2022年,星期三2.8 构件集成模型软件需求软件需求标识构件标识构件检索构件库检索构件库开发构件开发构件取出构件取出构件存入构存入构件库件库集成目集成目标系统标系统体系结构设计体系结构设计构件适应性修改构件适应性修改集成测集成测试试系统系统测试测试运行运行维护维护第48页,共53页,编辑于2022年,星期三构件集成模型第49页,共53页
44、,编辑于2022年,星期三构件集成模型特点特点面向对象面向对象基于构件库基于构件库融合螺旋模型特征融合螺旋模型特征支持软件开发的迭代方法支持软件开发的迭代方法 软件重用软件重用第50页,共53页,编辑于2022年,星期三构件技术 软件体系结构被建立后,必须用构件去充实,这些构件可从复用库中获得,或者根据专门需要而开发。整个过程可以演化地进行,面向对象方法给予技术上的支持。构件技术目前主要有三种流行标准:OMG的CORBA:对象管理组织发布的公共对象请求代理体系结构(Common Object Request Broker Architecture)。一个对象请求代理(ORB)提供一系列服务,使
45、得一个构件和其他构件通信,而不管它们在系统中的位置,实现了远程对象通过接口进行通信的机制。第51页,共53页,编辑于2022年,星期三构件技术 微软的COM/DCOM:微软开发了构件对象模型(Component Object Model),它提供了运行于windows之上的单个应用系统使用不同厂商生产的构件的规约。基于分布式环境下的COM称为DCOM(Distribute COM)。SUN的EJB(Enterprise JavaBean):随着Java在企业级应用的地位日趋重要,Sun提出了一个统一的企业级Java平台J2EE。在J2EE中,EJB负责最核心的业务处理。它为服务器端的应用程序提供了一种与厂商无关的Java接口,让任何符合EJB规范的构件都可以运行在每一台这样的服务器上。第52页,共53页,编辑于2022年,星期三基于构件的未来基于构件的未来软件生产线软件生产线应用构件应用构件提取车间提取车间 应用应用构件库构件库构件生构件生产车间产车间 构件库构件库组装组装车间车间领域领域 1 1领域领域 2 2应用应用系统系统.1 12 23 34 41 1基础构件,基础构件,2 2功能构件功能构件 3 3接口构件,接口构件,4 4用户界面构件用户界面构件 第53页,共53页,编辑于2022年,星期三
限制150内