软件工程第1章软件过程课件.pptx
《软件工程第1章软件过程课件.pptx》由会员分享,可在线阅读,更多相关《软件工程第1章软件过程课件.pptx(98页珍藏版)》请在三一办公上搜索。
1、软件工程与测试基础软件过程与方法,引子:罗马不是一天建成的,2013年IT界最大的新闻是什么?,2010年9月,面对苹果iphone的威胁,Nokia董事会任命埃洛普为新的CEO。此前,埃洛普任微软的Business Division部门的总管,负责Office 2010的开发。,第一步:自废武功?,埃洛普上任后就做出了很多备受争议的决策:宣布彻底放弃经典的Symbian系统中止了前任诺基亚CEO规划的诺基亚Android手机计划放弃了与intel合作开发的MeeGo系统(搭载此系统的N9手机已经研发成功并上市),第二步:执子之手,2011年,宣布诺基亚与微软公司达成战略合作伙伴,将在所有智能
2、手机上都采用Windows Phone 7操作系统。,微软坑我千百遍,但由于:微软在WP7的研发和发布等发面,并未给予Nokia特别的优待;微软的Windows Phone系统与原有的Symbian系统并不兼容(连导入/导出通讯录都很麻烦);微软在2011年推出Windows Phone 7后不久,就正式宣布运行WP7的手机无法升级到即将发行的WP8系统。到2013年1季度,WP手机的市场占有率只有2.9%(Anroid 74%,iOS 14%),据说是微软的WP8发布会邀请函。为什么主角不是Nokia?,我待微软如初恋,一直到收购前,Nokia一直坚持WP独占的战略(WP全部销量中Nokia
3、占70%以上)。相比之下,其他主要的竞争对手三星、HTC及Sony等都采取了多头下注(同时开发Android和WP手机)的策略。,结局:如愿以偿?,从2010年埃洛普担任CEO以来,Nokia的手机市场占有率从30%以上一路下跌到不到2%,股价从10.1美元一路下跌到3.9美元。9月3日,微软正式宣布将收购Nokia手机部门。在此之前(8月底),微软CEO鲍尔默正式宣布将于一年内退休。埃洛普随着Nokia的收购回到了微软,并成为了下一任CEO的有力竞争者,软件过程与方法,一、软件过程二、软件过程模型三、敏捷开发与统一过程四、软件工程方法五、小结,一、软件过程,过程与过程管理软件过程定义软件过程
4、要素核心软件活动普适性软件活动,还记得吗?软件工程的构成?,过程,质量和过程是“道”,方法和工具是“术”!,1.1 过程与过程管理,过程:也称业务过程,指为客户创造价值的一系列相互关联、有组织的活动或任务的集合。管理学意义上的过程是有明确目的性的:为客户(或企业)创造价值过程的特点:可确定性:有明确的输入、输出和边界;顺序:构成过程的活动,必须在时间和空间里具有确定的顺序;客户:过程的结果必须有接收者客户。增值:在过程中发生的转换必须为接收者增加价值,无论接收者是在过程的上游还是下游。,1.1 过程与过程管理,过程管理:辨识出一连串的商业活动,并针对这些活动的作业流程进行管理。过程管理的目标:
5、确保企业中各种商业活动的执行成果能具有一定的水平和精确度,确保能持续改善活动的进行方式,串连活动的作业流程让企业能保持市场上的竞争力。,1.1 过程与过程管理,过程管理的任务:发现、去除非增值活动,简化过程通过合理安排活动顺序提高过程效率适当改变过程以适应环境变化对过程执行情况加以监控,寻找过程中的错误、薄弱、低效环节并加予以纠正,1.2 软件过程定义,软件过程:构建、维护软件产品时所执行的一系列活动、动作和任务的集合。,1.3 软件过程要素,活动:组成软件过程的最主要的宏观步骤。例如:需求分析、设计、编码、发布等。动作:对活动进一步细分的得到的步骤。例如设计活动,可以细分分为总体设计、模块设
6、计等多个动作。任务:具体的工作步骤。例如:编写一个具体的软件模块等。,1.4 核心软件活动,所有合理的软件过程都包含一些共同的必要的活动(步骤),这些活动我们称为核心软件活动。应该有哪些核心软件活动呢?如果让我们来帮某个人A盖一栋房子,会怎么做呢?:决定要不要盖?能不能盖?了解A想要什么样的房子?制定计划(什么时候开始设计,什么时候开始施工,什么等等设计房屋(外观、结构等等)施工与监理(有没有偷工减料?是否按照设计施工?)交付,1.4 核心软件活动,软件过程通常包括下列六个核心软件活动:沟通需求:通过与客户的沟通协作,了解客户的真实需要,决定软件特性和功能,制定项目目标。策划:创建软件项目的“
7、地图”,以指导团队的项目旅程。通常包括:需要执行的具体任务、每个任务需要的资源分配,每个任务的具体产品,以及工作计划等建模(设计):通过构造软件模型(通常是图形形式的模型)的方法来研究、理解具体问题,(向客户和其他开发人员)展现具体解决方案。,1.4 核心软件活动,核心软件活动(续):编码与测试:实际编写代码、验证代码的正确性运行与部署:将软件交付用户使用。通常用户会对软件进行一段时间的试用,并给出反馈意见维护:修复用户使用过程中发现的软件缺陷,或者根据用户使用意见对软件进行改进上述活动之间并不一定是简单的线性关系,而是可能存在反复的迭代。,1.5 普适性软件活动,除了上述活动外,在实际软件过
8、程中往往还存在一些贯穿整个过程的普适性活动,以帮助软件团队管理和控制项目进度、质量、变化和风险。常见的普适性软件活动包括:项目跟踪和控制:定期评估项目进度情况,采取必要措施确保项目按期完成风险管理:对可能影响项目进度和产品质量的风险进行评估,并采取必要措施来降低风险,1.5 普适性软件活动,普适性软件活动(续):测量:定义和采集关于过程、项目和产品的度量数据,以帮助管理和改进其他活动。例如:开发人员的生产率等软件质量保证:确保软件质量的措施和活动软件配置管理:管理软件(代码、配置信息及其文档)的版本变化历史可复用管理:建立产品(代码等)复用的机制和标准(如公用函数库等)人员培训:对相关人员进行
9、必要的培训,使其具备必要的知识和技能,掌握相关工具的使用方法,二、软件过程模型,软件过程模型与过程流瀑布模型原型开发模型螺旋模型增量过程模型,2.1 软件过程模型与过程流,软件过程模型是从一特定角度提出的软件过程的简化描述。“模型的本质在于简化”软件过程模型就是对描述的实际过程的抽象,它包括构成软件过程的各种活动、软件产品及软件工程人员参与的不同角色。,2.1 软件过程模型与过程流,过程流(模型)是最主要的一类软件过程模型。过程流描述了如何在执行顺序和执行时间这一层面上,组织软件过程中(除维护之外的)的活动。几种主要的过程流及典型过程模型:线性过程流:瀑布模型迭代过程流:原型开发模型演化过程流
10、:螺旋模型并行过程流:混合过程流:增量模型,2.1 软件过程模型与过程流,2.2 瀑布模型,瀑布模型(waterfall model)是由W.Royce于1970年提出来的。又称为软件生存周期模型。瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。,2.2 瀑布模型,软件生存周期:软件从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。瀑布模型将软
11、件生命周期分成软件定义、软件开发、运行、维护及退役五个时期组成。而每个时期又可以进一步划分成若干阶段。,2.2 瀑布模型的结构,可行性研究,特点:阶段间具有顺序性和依赖性推迟实现质量保证,需求分析,概要设计,详细设计,实现,组装测试,验收测试,使用与维护,退役,2.2 瀑布模型的变形-V模型,可行性研究,V模型强调了质量保证活动,特别是测试与其它动作之间的关系,2.2 瀑布模型的优点,可强迫开发人员采用的规范方法;严格规定了每一阶段必须提交的文档;要求每一阶段交付之产品都必须经过质量保证小组的仔细审查;清晰区分了逻辑设计与物理设计,尽可能推迟程序的物理实现。“一种文档驱动的模型”提供了软件开发
12、的基本框架,有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,因此,在软件工程中占有重要的地位。,2.2 瀑布模型的不足,瀑布模型要求在项目开始的需求分析阶段就能够完整的得到客户的所有需求。但在实际中客户通常难以清楚地描述出所有的需求;同时,客户自身的需求也可能会随着时间的变化而发生变化。1988年的发表的一份关于软件项目的研究报告指出,平均每个项目有25%左右的需求功能点变化;1997年的另一份研究报告中,需求功能点的变化率则达到了35%-50%。客户要到项目接近尾声的验收阶段才能够看到实际的程序执行效果。如果这时才发现程序和客户实际要求有重大偏差,就可能会造成
13、重大的损失。这两个问题构成了瀑布模型的致命弱点。,2.2 瀑布模型的不足,2001年发表的一份论文,对1027个失败软件项目的失败原因作了研究。其中82%的项目认为采用瀑布模型是导致失败的罪魁祸首!很多采用瀑布模型的项目在开发时为了应对可能的变化,采取了在软件产品中尽可能包含更多功能的方法,这构成了极大的浪费。在一份研究发现,在采用瀑布模型的开发项目中,有45%以上的功能最终根本就没有被使用,有19%以上的功能几乎没有被使用。也就是说,为了开发这将近65%的功能而所作的工作完全是浪费!不过,当需求非常明确时(比如,山寨某个已知的软件),瀑布模型还是个很有用的模型。,2.3 原型开发模型,针对瀑
14、布模型的下列缺陷,提出了原型开发模型:在瀑布模型中,项目开发者在需求分析阶段只能通过文字和图形来向用户展示软件功能,不够直观,很容易造成误解用户直到最后阶段才能看到软件操作界面和实际功能。所谓原型,就是软件的一个模拟的可执行界面。用户可在原型上进行操作,直观的感受软件的执行效果。原型开发就是软件开发人员根据用户提出的软件基本需求快速开发一个原型,向用户展示软件界面和功能。在征求用户对原型的评价意见后,进一步改进、完善原型,如此迭代,直到软件开发人员和用户都确认软件系统的需求并达成一致的理解为止。软件需求确定后,便可进行设计,编码、测试等以后的各个开发步骤。,2.3 原型开发模型的优点,原型的开
15、发和评审是系统分析员和用户/客户共同参予的迭代过程,这种迭代过程有利于双方的充分理解和沟通。原型开发模型比瀑布模型更符合人们认识事物的过程和规律,项目成员能够更清晰的理解用户实际需求。如果原型的开发语言和实际软件相同,那么它的若干高质量的程序片段和开发工具也可被用于工作程序的开发。,2.3 原型开发,2.3 原型开发,初步需求分析,快速设计,建造原型,用户评估原型(新需求),对原型加工,开发产品,开始,结束,用户/客户给出软件产品的一般需求开发小组和用户共同定义软件总体目标,标识已知需求对界面、功能、人机交互方式等,进行设计并建造原型强调“快速”,釆用基于构件的软件开发方法,尽量缩短软件开发周
16、期,不宜釆用过多的新技术用户/客户对原型进行评估修改需求、更新设计、完善原型直至确定需求。,2.3 快速原型的开发途径,原型仅仅是需求分析的一部分,因此必须尽可能快速的开发原型:仅模拟软件系统的人机界面和人机交互方式。开发一个工作模型,实现软件系统中重要的或容易产生误解的功能。利用一个或几个类似的正在运行的软件向用户展示软件需求中的部分或全部功能。,建造原型应尽量采用相应的软件工具和环境,并尽量采用软件重用技术,在运行效率方面可做出让步,以便尽快提供。同时,原型应充分展示软件系统的可见部分,如人机界面、数据的输入方式和输出格式等。,2.3 采用原型模型的软件生命周期,生成原型,测试,分析定义系
17、统需求,系统设计,程序设计,含原型化的软件生存期,原型化,运 行和维护,编码,2.3 原型开发模型的缺点,原型开发模型要求开发者和用户在一段时间内紧密配合、共同参与完成原型系统的开发,特别是需要用户的及时反馈。如果用户对此不够重视,那么原型开发的意义也就大打折扣了。原型的快速构造容易让用户误以为实际软件的开发也是可以很容易、很快就完成的,或者要求开发者直接将原型稍加修改使之成为实际运行的产品。而实际上,为了快速开发原型,开发者往往会牺牲软件质量和可维护性而采取了最快速的开发手段,因此实际的高质量软件产品需要抛弃原型从头开发。如果不能够充分的向客户解释这一点的话,就容易导致软件开发人员和用户之间
18、产生矛盾。原型开发模型最大的缺点在于,它仍然没有解决需求变化的问题。,2.3 原型开发的意义,原型开发模型虽然存在无法适应需求变化的缺陷,但原型开发作为一种需求分析的方法,还是非常有价值的。要充分发挥原型开发的价值,避免用户的误解,需要在项目开始时就和用户进行充分的沟通和解释,让他们明白(或者说承认)原型只是为了明确需求而服务的,用完后是要丢弃的,实际软件系统则是要以质量为第一目标来进行开发。,2.4 螺旋模型,螺旋模型是一种演化式的软件过程模型。它结合了原型开发模型的迭代性和瀑布模型的系统性和可控性特点。它把软件开发过程转化成了了软件的版本演进过程。通过多次的反复迭代演化,一个版本一个版本的
19、逐步完善软件,提高了软件开发对需求变化的适应能力它在模型中明确加入了风险控制活动,每次迭代时都要考虑可能的风险,并采取措施来降低风险。交付并不意味着软件过程的结束,它只是上一次迭代的结束和下一次迭代的开始。整个软件过程贯穿软件产品的整个生命周期。,2.4 螺旋模型,评审,提交线,顺时针为进展方向,2.4 螺旋模型,螺旋模型的每一个迭代周期都包括计划(需求定义)、风险分析、工程实现和评审4个阶段。计划(需求定义)在第一轮迭代周期中,利用需求分析技术理解应用领域,获取初步用户需求,制定项目开发计划(即整个软件生命周期计划)和需求分析计划。在以后的每个迭代周期中,根据用户和开发人员对上一周期工作成果
20、评价和评审,修改、完善需求,明确下一周期软件开发的目标、约束条件,并据此制定新一轮的软件开发计划。,2.4 螺旋模型,风险分析根据本轮制定的开发计划,进行风险分析,评估可选方案,并构造原型进一步分析风险,给出消除或减少风险的途径。此时根据风险分析的结果决策项目是否继续。所以,螺旋模型是一个风险驱动的模型。工程实现在前几轮迭代周期中,构造的原型进行需求建模或进行系统模拟在后面的迭代周期中,逐步构造、完善实际的软件系统。,2.4 螺旋模型,用户评价与阶段评审将原型或者软件产品提交用户使用并征求改进意见。开发人员应在用户的密切配合下进一步完善用户需求,直到用户认为原型可满足需求,或对软件产品设计进行
21、评价或确认等。就这样,螺旋模型从第一个周期的计划开始,一个周期、一个周期地不断迭代,直到整个软件生命周期结束。螺旋模型中的每个迭代周期都不应该太长(一般是2-8周左右)。太短了则每轮实际工作量太少,无法得到有意义的结果太长了,无法及时得到用户的反馈,也就失去了迭代演化的意义。,2.4 螺旋模型的优点,支持用户需求的动态变化。支持软件系统的可维护性,每次维护过程只是沿螺旋模型继续多走一两个周期。这符合人们认识现实世界和软件开发的客观规律。原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。开发者和用户共同参与软件开发,可
22、尽早发现软件中的错误。螺旋模型特别强调原型的可扩充性和可修改性,原型的使用贯穿整个软件生存周期,这将有助于提高目标软件的适应能力。既保持瀑布模型的系统性、阶段性,又可利用原型评估降低开发风险。螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。,2.4 螺旋模型的缺点及适用范围,螺旋模型的缺点:如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间;使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。螺旋模型适用场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
23、,2.4 增量过程模型,增量过程模型是螺旋模型基础上的改进。前面讲的几种模型,过程流本质都是顺序执行。也就是说,上一个活动执行完才能执行下一个活动这种顺序执行往往会导致项目中产生“阻塞状态”,即由于任务之间的依赖性,项目的部分成员要等待另一些成员的工作完成。94年的一项研究表明,在很多项目中,花在等待上的时间反而超过了花在实际工作上的时间!增量开发模型采用并行的方式来解决这种阻塞带来的浪费问题。,2.4 增量过程模型,软件功能和特征,项目时间,第一个增量,第二个增量,第三个增量,第n个增量,沟通,策划,建模(分析、设计),构建(编码、测试),部署(交付、反馈),三、敏捷开发与统一过程,敏捷开发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件 过程 课件

链接地址:https://www.31ppt.com/p-3727759.html