软件工程第1章软件过程课件.pptx

上传人:牧羊曲112 文档编号:3727759 上传时间:2023-03-17 格式:PPTX 页数:98 大小:3.13MB
返回 下载 相关 举报
软件工程第1章软件过程课件.pptx_第1页
第1页 / 共98页
软件工程第1章软件过程课件.pptx_第2页
第2页 / 共98页
软件工程第1章软件过程课件.pptx_第3页
第3页 / 共98页
软件工程第1章软件过程课件.pptx_第4页
第4页 / 共98页
软件工程第1章软件过程课件.pptx_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《软件工程第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个增量,沟通,策划,建模(分析、设计),构建(编码、测试),部署(交付、反馈),三、敏捷开发与统一过程,敏捷开发

24、的背景敏捷开发宣言什么是敏捷敏捷开发模型极限编程统一过程,3.1 敏捷开发的背景,在现代市场经济条件下,计算机软件系统总是面临着不断的变化:市场环境变化新竞争对手出现新技术涌现这就导致软件开发和实施过程中,用户需求会不断变化1988年的发表的一份关于软件项目的研究报告指出,平均每个项目有25%左右的需求功能点变化;1997年的另一份研究报告中,这需求功能点的变化率则达到了35%-50%。,3.1 敏捷开发提出的背景,传统的过程开发模型都是从管理者的角度来看待软件开发。因此,存在着重大缺陷:忽视变化的存在。过程阶段划分过细、过于死板,难于适应实际情况的变化。忽视了软件开发是一个智力密集型的工作,

25、过分强调纪律和文档,导致人的创造性降低。忽视了人与人之间的直接交流。过多的书面交流既增加整个项目的时间成本,又导致了误解和沟通障碍的增加。过分注重过程。认为符合过程就能导致正确的结果。,3.2 敏捷开发宣言,敏捷开发可以认为是一场“革命”,开发者对管理者的革命。敏捷开发试图将开发者的视角也加入到软件过程管理中来。2001年Kent Beck等16位知名专家共同发起了敏捷联盟,并发表了“敏捷开发宣言”:个人与交流 胜于 开发过程和工具可运行的软件 胜于 面面俱到的文档客户协作 胜于 合同谈判响应变化 胜于 按部就班遵循计划注意,宣言中右边的各项并非没有价值,只是左边的各项价值更大,3.3 什么是

26、敏捷,敏捷的基本推动力:普遍存在的变化敏捷鼓励:使沟通更便利的团队结构和协作态度快速交付可运行产品而非中间文档客户以开发团队中的一员的身份参与项目根据实际情况灵活调整项目计划,3.3 敏捷对软件开发成本的影响,研究表明,敏捷能明显降低:由于需求变化导致的那部分软件开发成本,3.3 敏捷原则,敏捷联盟提出了实现敏捷的12条原则:最优先要做的是通过尽早、持续的交付有价值的软件来使客户满意即使在开发的后期,也欢迎需求变更。敏捷过程利用变更为客户创造竞争优势经常交付可运行的软件,交付时间间隔越短越好在整个项目开发期间,业务人员和开发人员应天天在一起工作围绕有积极性的个人构建项目。团队内部最有效率的沟通

27、方式是面对面交谈,3.3 敏捷原则(续),实现敏捷的12条原则(续):可运行软件是进度的首要度量指标提倡可持续的开发速度不断的关注优秀技能和好的设计简单(使不必做的工作尽可能多的艺术)是必要的。最好的架构、需求和设计出自于自我组织的团队每隔一定时间,团队应反省如何才能更有效的工作,并相应调整自己的行为,3.3 敏捷开发中人的因素,敏捷开发非常强调人的因素在软件项目开发中的重要性。特别的,敏捷开发强调团队及其成员应该具备下列要素:基本能力。包括软件开发和正确实施敏捷开发的能力。共同目标。团队成员必须瞄准同一个目标,即在承诺的时间内向客户提交能够可靠运行的软件或其增量。精诚合作。团队成员之间,以及

28、团队和项目其他利益相关者(如用户、客户)之间必须精诚合作,3.3 敏捷开发中人的因素,敏捷开发强调团队及其成员应该具备下列要素(续):决策能力。项目团队在项目问题上必须有自主决策权。相互尊重和信任。具体体现就是良好、高效的沟通。不断学习。团队应从多种来源(包括过去的失败)中学习到经验。自我组织。团队自己组织自身、安排进度来完成项目,并对此负责。,3.3 敏捷过程模型,在敏捷开发思想的指导下,业界提出了很多敏捷过程模型,其中影响较大的有:极限编程(eXtreme Programming,XP)Scrum特征驱动开发(FDD)精益软件开发(LSD)敏捷统一过程(AUP)等等这里简要介绍一下极限编程

29、,3.4 极限编程,策划,设计,编码,测试,测试驱动开发,发布,极限编程过程模型,重构,用例,KISS原则,单元测试,持续集成,面向对象开发方法,3.4 极限编程,极限编程(XP)是使用最广泛的一种敏捷软件过程。XP定义了五个有重要意义的要素:沟通:强调口头的、面对面的交流简明:为了简化设计,只对当前的需要做设计。当设计需要改进时,使用重构来实现。反馈:通过测试、增量交付和持续集成等手段,快速获得反馈鼓励:鼓励符合极限精神的实践。例如,尽可能减少过度设计。尊重:敏捷团队应在内部成员之间,以及内部成员与其他利益相关者之间,灌输相互尊重的思想。减少推诿和扯皮,增加协作。,3.4 极限编程,XP使用

30、面向对象方法作为推荐的开发范型XP包含了4个框架活动的规则和方法:策划:开始于倾听,其目的是使团队成员理解软件的背景以及感受主要需求。倾听产生一系列“用户故事”(用例)。每个用例由客户标明权值(即用例的优先级)XP团队评估每个用例并估算期开发时间成本(以周为单位)。成本过高的用例会被进一步分成若干个子用例并重新赋予权值和计算成本。,3.4 极限编程,策划(续):客户和XP团队共同决定下一个要发布的软件增量中应包含哪些用例。通常应该选择优先实现那些具有最高权值或风险最大的用例。XP团队根据之前迭代轮次中软件增量的开发速度来估计后续版本的开发速度,并相应调整开发计划。在开发过程中,客户可以随时增加

31、、修改、分解、合并或者删除用例。XP团队根据用例的变化情况相应修改开发计划。,3.4 极限编程,设计:XP的设计活动严格遵循KISS原则(Keep It Simple、Stupid,保持简洁)。设计应恰好实现用例中的要求,不多也不少。不鼓励额外(因为开发者认为将来可能会用到)的设计如果在某个用例设计中碰到困难,XP推荐立即针对这部分设计编写可执行的原型,以便及时对设计进行评估,降低风险。,3.4 极限编程,设计(续):XP认为设计可以与编码同时进行(设计一部分,编码一部分)。编码活动本身就会给XP团队提供关于如何改进设计的反馈。设计可以并且应当是在构建过程中连续修改的中间临时产品。(可执行程序

32、才是最终产品)。修改的方法是重构。重构:以不改变代码外部行为(接口)而改进其内部结构(实现)的方式来改进软件系统的过程(方法)。,3.4 极限编程,编码:XP推荐使用测试驱动开发(TDD)方法来进行编码。测试驱动开发:在编写实际的功能实现代码之前,先编写接口和用于检测接口行为的一系列单元测试。这样,实际代码编写完成后,就可以立即进行单元侧,从而向开发者提供即时的反馈。XP推荐使用结对编程的方式进行编码。即两个人同时面对同一台计算机共同为同一个用例进行编码。这种编码方式是否适合我国的文化还存在很大疑问。,3.4 极限编程,测试:TDD,即在编码开始之前就建立单元测试是XP方法的关键之一。单元测试

33、的另一个好处是为重构提供一个安全网。XP推荐使用持续集成,即每天都进行系统的集成和确认测试。这样既可以为团队和客户实时提供项目的进展情况,也可以在问题发生时尽早提出预警。,3.4 极限编程的缺点,要求客户全程参与整个项目,这一点在实际中不容易做到不是所有的编程语言和工具都能良好的支持重构要求团队保持长期相对稳定对团队成员的能力、素质和自觉性要求较高对团队管理者的领导能力提出了很高的要求口头交流和自组织在大规模的团队和项目中往往难以实现,3.5 统一过程,统一过程(Unified Process,简称UP)是一种流行的、构造面向对象系统的、迭代式软件开发过程特别的,Rational统一过程(简称

34、RUP)是对UP的详细精化,并且已经被广泛采用。UP试图从传统软件过程中挖掘出最好的特性,把普遍认可的最佳实践结合起来,成为联系紧密并且具有良好文档描述的过程。UP将开发分成起始、细化、构造和交付4个阶段,每个阶段都提出了若干可选的最佳实践(方法)和制品(执行方法得到的输出)。团队可以根据项目实际需要选择合适的最佳实践和制品,并适当调整过程。将敏捷开发的思想应用于统一过程,就形成了敏捷统一过程(AUP),3.5 统一过程,四、软件工程方法,软件工程方法简介面向数据和功能的方法面向对象的方法统一建模语言(UML),4.1 软件工程方法简介,软件工程方法:软件开发活动中具体问题的解决方法。软件工程

35、方法是完成软件工程项目的技术手段。它支持软件开发与维护的全部过程。软件工程过程由方法的使用活动组成。软件工程方法划分为:面向数据和功能的方法结构化分析方法Jackson方法Warnier方法面向对象方法,4.2 面向数据和功能的方法,这类方法以软件系统所处理的数据或其功能为核心分析对象。其对应于传统对软件的理解:“软件=数据结构+算法”,4.2.1 Jackson方法,Jackson方法是最典型的面向数据结构的设计方法首先分析数据的层次结构,生成输入、输出数据结构图,然后将处理模块化,并在此基础上进行详细设计和编程。Jackson方法有JSP(Jackson Structure Program

36、ming)和改进的JSD(Jackson System development)方法。,4.2.1 Jackson方法的发展,二十世纪七十年代Jackson提出了软件工程领域中著名的Jackson方法,当时它只用于软件设计。二十世纪八十年代初,Jackson又对它进行了多方面的扩充和完善,最终发展成为一种需求分析方法。Jackson方法的核心思想是:根据作用于数据的行为序列的结构(顺序、选择与重复),建立目标软件系统的模型然后在软件设计阶段将模型演化为相应的程序结构。,4.2.1Jackson方法的主要步骤,分析并确定输入数据和输出数据的逻辑结构。找出输入数据结构和输出数据结构中有对应关系的数

37、据单元。从描述数据结构的Jackson图导出描述程序结构的Jackson图。列出所有的操作和条件,并把他们分配到程序结构图中去。,4.2.1Jackson方法基本元素,顺序结构伪码:A seqBCDA end,重复结构伪码:A iter until(或while)condBA end,选择结构伪码:A select cond1BA or cond2CA or cond3DA end,4.2.1 Jaskson方法示例,例:一个正文文件由若干个记录组成,每个记录是一个字符串,即:要求:统计每个记录中空格字符的个数,以及文件中空格字符的总个数。输出数据格式:每复制一行输入字符串之后,另起一行印出这

38、个字符串中的空格数,最后印出文件中空格的总个数。,4.2.1 Jaskson方法示例,例,输入:Hello worldI am a studentToday is a fine day!,输出:Hello world1I am a student3Today is a fine day!48,4.2.1 Jaskson方法示例,步骤1:绘制输入和输出数据结构,输入结构,输出结构,4.2.1 Jaskson方法示例,步骤2:找出输入数据结构和输出数据结构有对应关系的数据单元,然后,用Jackson图表示按映射规则导出相应的程序结构。,统计空格,程序体,打印总数,处理字符串*,打印字符串,分析字符

39、串,打印空格数,分析字符*,I,处理空格,处理非空格,S,I,4.2.1 Jaskson方法示例,步骤3:列出所有的操作和条件,并把它们分配到程序结构图的适当位置。,(1)停止(2)打开文件(3)关闭文件(4)印出字符串(5)印出空格数(6)印出空格总数(7)sum:=sum+1(8)totalsum:=totalsum+sum(9)读入字符串(10)sum:=0(11)totalsum:=0(12)pointer:=1(13)pointer:=pointer+1 I(1)文件结束 I(2)字符串结束S(3)字符是空格,统计空格,程序体,印总数,处理字符串*,印字符串,分析字符串,印空格数,分

40、析字符*,I(2),处理空格,处理非空格,2,9,11,3,1,6,10,12,4,8,9,5,7,13,13,I(1),S(3),4.2.1 Jaskson方法示例,步骤4:用Jackson伪代码写出与程序结构图对应的过程性表示。,打开文件读入字符串totalsum:=0程序体iter until文件结束 处理字符串seq 打印字符串seq 印出字符串 打印字符串end sum:=0 pointer:=1,分析字符串iter until字符串结束 分析字符select字符是空格 处理空格seq sum:=sum+1 pointer:=pointer+1 处理空格end 分析字符or字符不是空

41、格 处理非空格seq pointer:=pointer+1 处理非空格end 分析字符end分析字符串end,打印空格数seq 打印出空格数目 打印空格数end totalsum:=totalsum+sum 读入字符串 处理字符串end 程序体end 打印总数seq 打印出空格总数 打印总数end 关闭文件 停止统计空格end,4.2.2 结构化分析方法,该方法是一种面向数据流的开发方法。图形表示方法为数据流图(DFD)和模块层次结构图(SC)。是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。结构化方法总的指导思想自顶向下、逐步求精,分解成若干个具有合适大小和功能的

42、模块并对各个模块进行定义和描述,其实质就是功能分解和抽象。,4.2.2 结构化方法的发展,70年代初 结构化程序设计方法 SP法(Structured Program)70年代中 结构化设计方法 SD法(Structured Design)70年代末 结构化分析方法 SA法(Structured Analysis)SA,SD,SP法相互衔接,形成了一整套开发方法。若将SA,SD 法结合起来,又称为结构化分析与设计技术,即SDAT技术。,4.2.2 结构化分析方法示例,例:学生选课系统学生使用自己的学号和密码,可以登录系统,查询可选课程,选课,以及打印课表。,4.2.2 结构化分析方法示例,步骤

43、1:在需求分析阶段,可以绘制数据流图(DFD)如下:,注意DFD要素:参与者、数据、处理、存储,4.2.2 结构化分析方法示例,步骤2:设计阶段,根据DFD绘制模块结构图步骤2.1:划分信息输入、加工、输出环节,信息输入,信息加工,信息输出,4.2.2 结构化分析方法示例,步骤2.2:构造顶层模块,选课主模块,系统登录模块,选课处理模块,课表打印模块,合法身份,4.2.2 结构化分析方法示例,步骤2.3:逐级构造剩下的层次,选课主模块,系统登录模块,选课处理模块,课表打印模块,合法身份,4.3 面向对象方法,面向对象方法学是20世纪90年代发展起来的软件分析设计方法。该方法把客观世界的事物或实

44、体都看成对象,把对象作为分析设计的基本元素。把所有对象都划分成对象类类可以派生和继承对每个对象类都定义一组数据和方法。面向对象方法包括:面向对象分析 面向对象设计 面向对象实现面向对象方法是近年来取得迅速发展并具有强大生命力的软件开发方法,被誉为90年代软件的核心技术之一。,4.4 统一建模语言,统一建模语言(UML)是描述、构造和文档化系统制品的可视化语言。这里的可视化就是图形化。UML是图形化表示法的事实标准,用来绘制和展示与软件(特别是面向对象软件)的相关图形(及文字)UML 适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并吸

45、收当今优秀成果的标准建模方法。,4.4 UML图型分类,UML中有9种图型,分为2大类4小类类 图:类以及类之间的相互关系对象图:对象以及对象之间相互关系构件图:构件及其相互依赖关系部署图:构件在各节点上的部署顺序图:强调时间顺序的交互图协作图:强调对象协作的交互图状态图:类所经历的各种状态活动图:对工作流建模用例图:需求捕获,测试依据,静态结构,行为,4.4 UML图形举例,UML用例图,五、小结,什么是过程?什么是过程管理?过程管理的目的是什么?什么是软件过程?什么是软件过程活动软件过程包含哪些关键活动?本课介绍了哪几种典型的软件过程模型,其主要优缺点是什么?什么是敏捷开发?敏捷开发注重哪

46、四项要素?UP、XP、TDD这些词都代表什么意思?本课介绍了哪些软件工程方法?,1、有时候读书是一种巧妙地避开思考的方法。23.3.1723.3.17Friday,March 17,20232、阅读一切好书如同和过去最杰出的人谈话。22:46:2122:46:2122:463/17/2023 10:46:21 PM3、越是没有本领的就越加自命不凡。23.3.1722:46:2122:46Mar-2317-Mar-234、越是无能的人,越喜欢挑剔别人的错儿。22:46:2122:46:2122:46Friday,March 17,20235、知人者智,自知者明。胜人者有力,自胜者强。23.3.1

47、723.3.1722:46:2122:46:21March 17,20236、意志坚强的人能把世界放在手中像泥块一样任意揉捏。2023年3月17日星期五下午10时46分21秒22:46:2123.3.177、最具挑战性的挑战莫过于提升自我。2023年3月下午10时46分23.3.1722:46March 17,20238、业余生活要有意义,不要越轨。2023年3月17日星期五10时46分21秒22:46:2117 March 20239、一个人即使已登上顶峰,也仍要自强不息。下午10时46分21秒下午10时46分22:46:2123.3.1710、你要做多大的事情,就该承受多大的压力。3/17/2023 10:46:21 PM22:46:212023/3/1711、自己要先看得起自己,别人才会看得起你。3/17/2023 10:46 PM3/17/2023 10:46 PM23.3.1723.3.1712、这一秒不放弃,下一秒就会有希望。17-Mar-2317 March 202323.3.1713、无论才能知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。Friday,March 17,202317-Mar-2323.3.1714、我只是自己不放过自己而已,现在我不会再逼自己眷恋了。23.3.1722:46:2117 March 202322:46,谢谢大家,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号