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