软件工程课件之第1章-软件工程学概述(第6版)(张海潘编著).pptx

上传人:知****量 文档编号:91065183 上传时间:2023-05-21 格式:PPTX 页数:82 大小:934KB
返回 下载 相关 举报
软件工程课件之第1章-软件工程学概述(第6版)(张海潘编著).pptx_第1页
第1页 / 共82页
软件工程课件之第1章-软件工程学概述(第6版)(张海潘编著).pptx_第2页
第2页 / 共82页
点击查看更多>>
资源描述

《软件工程课件之第1章-软件工程学概述(第6版)(张海潘编著).pptx》由会员分享,可在线阅读,更多相关《软件工程课件之第1章-软件工程学概述(第6版)(张海潘编著).pptx(82页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、为什么要学习这门课程软件开发与人才需求o现有模式o小作坊的、一人身兼多职o英雄式的软件开发o生产模式o大规模的软件生产,专业化o分工越来越细,团队合作开发o对人才的要求o除精通开发技术外o更需要软件工程意识和团队合作精神教程o软件工程导论(第6版)o张海藩等编著o清华大学出版社教学内容o软件工程概述(第1章)o可行性研究(第2章)o需求分析(第3章)o系统设计(第5章)o详细设计(第6章)o系统实现(第7章)o系统维护(第8章)教学内容o面向对象方法学引论(第9章)o面向对象分析(第10章)o面向对象设计(第11章)o面向对象实现(第12章)o软件项目管理(第13章)资源o 软件工程组织o 希

2、赛o 中国最大的开发者技术社区程序员刊物官方网站o 赛迪教育信息产业部电子教育与考试中心唯一指定软考远程辅导平台o 软件测试网软件工程概述内容o软件的定义和特点o软件危机o概况、原因和消除途径o软件工程介绍o概况、基本原理、软件工程方法学o软件生命周期o软件过程o瀑布模型、快速原型模型、增量模型、螺旋模型等软件o软件=程序?o IEEE Standard Glossary of Software Engineering Terminologyo计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。o程序:在运行时,能提供所希望的功能和性能的指令序列。o数据:使程序能够正确运行的数据结构o

3、文档:描述程序研发过程、方法及使用的文档软件中的文档o促进对软件的开发,管理和维护;o便于各种人员(用户,开发人员)的交流软件本质特性o复杂性o软件在规模上可能比任何由人类创造的其他实体都要复杂,复杂性是软件的本质特征o软件的复杂形是必要属性o大量的组合状态o丰富的结构和相互依赖性o良好的接口用以封装内部的复杂性o开发问题也会增加复杂性o高效率的代码通常是复杂的o重用通用化的组件意味着复杂的状态连接o复杂的代码难以维护,导致设计上的更复杂软件本质特性o复杂性oWindows95有1000万行代码oWindows2000有5000万行代码oExchange2000和Windows2000开发人员

4、结构软件本质特性o一致性o软件必须遵从人为的惯例并适应已有的技术和系统o软件必须遵循各种接口、协议和标准o有些情况下,兼容性是软件开发的目标o软件需要随接口的不同而改变,随时间的推移而变化,而这些变化是不同的人设计的结果。o许多复杂性来自保持与其他接口的一致,对软件的任何再设计,都无法简化这些复杂特性。软件本质特性o可变性o软件产品扎根于文化的母体中,如各种应用、用户、自然及社会规律、计算机硬件等,后者持续不断地变化着,这些变化无情地强迫着软件随之变化。o所有成功的软件都会发生变更!o当人们发现软件很有用时,会在原有应用范围的边界,或者在超越边界的情况下使用软件;o功能扩展的压力主要来自那些喜

5、欢基本功能,又对软件提出了很多新用法的用户们。软件本质特性o可变性o软件退化软件本质特性o不可见性o软件是不可见的和无法可视化的o软件的客观存在不具有空间的形体特征o定义“需要做什么”成为软件开发的根本问题o人们一直试图使用不同的技术进行软件可视化o控制流程、数据流、依赖关系、UML、o这些技术仍然无法给出准确的、完整的描述o软件仍然保持着无法可视化的固有特性,从而剥夺了一些具有强大功能的概念工具的构造思路。这种缺憾不仅限制了个人的设计过程,也严重地阻碍了相互之间的交流。软件分类o按工作方式划分o实时处理软件o分时软件o交互式软件o批处理软件软件分类o按功能划分o系统软件o与计算机硬件紧密配合

6、在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件o支撑软件o能协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具o应用软件:o在特定领域内开发,为特定目的服务的一类软件软件分类o按规模(人力、时间、源程序行数)划分软件分类o按用途o通用软件o面向市场公开销售的独立运行系统。o例如:操作系统、数据库管理系统、字处理软件等。o定制软件o由客户委托,在合同约束下开发的软件o例如:网上书店、图书管理系统、空中交通管理系统等。软件的发展o计算机软件发展的三个时期o程序设计阶段(60年代中期之前)o硬件通用,软件专用;程序规模小

7、,编写者和使用者为同一人(同组人)。o程序系统阶段(60年代中期-70年代中期)o出现“软件作坊”、产品软件;“个体化”开发方法。o软件工程阶段(70年代中期之后)o软件开发成为一门新兴的工程学科软件工程。软件的发展o各阶段特点软件危机o概念o软件危机指的使软件开发和维护过程中遇到的一系列严重问题,包含两方面的问题:o如何开发软件,怎样满足对软件的日益增长的需求o如何维护数量不断膨胀的已有软件软件危机o软件危机的主要表现o对软件开发成本和进度的估计不准确o产品不符合用户的要求o软件质量不高、可靠性差o软件常常不可维护、错误难以改正o缺乏适当的文档资料o软件成本占系统总成本的比例逐年上升o软件开

8、发速度跟不上计算机发展速度软件危机o软件危机-开发成本高软件危机o软件技术进步落后于需求增长软件危机o产生软件危机的主要原因o客观:软件本身特点o逻辑部件,难以控制质量o规模庞大,结构复杂o主观:不正确的开发方法,落后的开发工具o忽视需求分析o错误认为:软件开发=程序编写o轻视软件维护软件危机o解决软件危机的途径o技术措施o使用更好的软件开发方法和开发工具o组织管理措施o软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。软件工程o指导计算机软件开发和维护的一门科学。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确

9、的管理技术和技术方法结合起来,以经济地开发出高质量的软件并有效维护。o产生o1968年,北大西洋公约组织(NATO),召开的有关计算机软件会议上正式提出“软件工程”术语。oIEEE 1993年定义软件工程(Software Engineer)软件工程本质特性o关注大型程序构造o中心课题:简化复杂性o变动成本控制o提高开发效率o和谐开发o软件必须有效支持用户o功能、性能和可用性o开发者和使用者来自不同文化背景o连接着的角色软件工程的基本原理o软件工程的 原则和信条o100多条oB.W.Boehm的7条基本原理软件工程的基本原理o用分阶段的生命周期计划严格管理o经统计表明,不成功的软件项目中有一半

10、左右是由于计划不周造成的。oBoehm认为,在软件的整个生命周期中应制定并严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。软件工程的基本原理o坚持进行阶段评审o大部分错误是在编码之前造成的o错误发现与改正得越晚,所需付出的代价越高。o因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程的错误软件工程的基本原理o实行严格的产品控制o在软件开发过程中不要随意改变需求,因为改变某项需求往往需要付出较高的代价,但在实践中用户往往会提出需求变更,因此需要采取科学的产品控制技术。o目前主要实行基准配置管理:基准配置是指经过阶段评审后的软件配置成分,如

11、各个阶段产生的文档或程序代码。o对涉及基准配置的修改,必须经过严格的评审,通过后才能实施修改。软件工程的基本原理o采用现代程序设计技术o实践表明:采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。o80年代及之前:结构化分析、设计技术o90年代:面向对象分析、设计技术软件工程的基本原理o结果应能清楚地审查o软件产品是看不见、摸不着的逻辑产品,开发过程难以评价和管理。o根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使所得的结果能够清楚地审查软件工程的基本原理o开发小组的人员应该少而精o开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。o开发小组人员数

12、目的增加,使相互交流复杂、费用增加。软件工程的基本原理o承认不断改进软件工程实践的必要性o遵循前6条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但不能保证赶上时代前进的步伐。o积极主动采纳新的软件技术,且不断总结经验。软件工程方法学o软件工程生命周期中采用的一整套技术方法的集合o传统方法学o面向对象方法学软件工程的三要素o过程(Process)o支持软件生命周期的所有活动o方法(Method)o为完成软件生命周期的一系列活动提供“怎么做”的技术o工具(Tool)o为“方法”提供一系列自动、半自动的软件支撑环境传统方法学o采用结构化技术完成软件开发的各项任务并使用适当的软件工具

13、或环境来支持技术的运用o把生命周期划分为若干个阶段,然后分阶段完成,前一阶段的技术标准是后一阶段的开始并分阶段审查结果面向对象方法学o既面向数据又面向行为的方法学o把对象作为融合数据和操作的统一软件构件o所有对象都划分类,类定义数据和操作o按父类子类关系,组成层次结构o对象间发送消息软件生命周期o软件从提出需求开始直到该软件报废为止的整个时期。o软件定义o问题定义、可行性研究、需求分析o软件开发o系统设计o总体设计、详细设计o系统实现o编码、单元测试o综合测试o软件维护软件生命周期o问题定义o做什么,问题性质、目标、规模o可行性研究o是否值得,是否能做o需求分析 -规格说明书(Specific

14、ation)o明确细致的确定做什么o系统逻辑模型o数据流图o数据字典o简要算法软件生命周期o概要设计o几种可能的方案和架构o模块化o详细设计o模块的细化功能描述o数据结构软件生命周期o编码与单元测试o综合测试o集成测试o按软件结构把模块组装测试o按规格说明书测试,由用户验收o维护o改正性o适应性,修改适应环境o完善性,功能完善o预防性软件过程o为了获得高质量软件所需完成的一系列任务框架,规定了完成各项任务的步骤o描述为了开发高质量的软件,什么人在什么时候做什么事以及怎样做。o使用资源将输入转化为输出的活动所构成的系统o软件开发过程应该明确定义以下元素:o过程中所执行的活动及其顺序关系。o每一个

15、活动的内容和步骤。o团队人员的工作和职责。软件过程模型 瀑布模型o特点o顺序性和依赖性o推迟实现o不要急着写代码o阶段性评审o质量保证o缺陷o用户对系统的认识在开发阶段仅来自文档o无法处理用户的模糊需求软件过程模型 快速原型模型o特点o线性顺序开发,无反馈软件过程模型 增量模型o优点:能较短时间内提交可完成部分工作的产品;可以使用户有充裕的时间学习和适应新产品。o文档系统:字处理,文法检测,页面排版分步完善软件过程模型 增量模型o并发程度高,集成风险更大软件过程模型 螺旋模型o特点o可把它看作在每个阶段之前都增加风险分析的快速原型模型。软件过程模型 螺旋模型软件过程模型 螺旋模型o螺旋模型优点

16、o以风险驱动开发过程,强调可选方案和约束条件从而支持软件的重用。o关注于早期错误的消除,将软件质量作为特殊目标融入产品开发之中。o螺旋模型缺点o要求许多客户接受和相信风险分析并做出相关反应是不容易的,往往适应于内部的大规模软件开发。o需要软件开发人员具备风险分析和评估的经验,否则将会带来更大的风险。软件过程模型 喷泉模型o特点o典型的面向对象软件开发过程模型之一o圆圈代表各个阶段互相交叠,他准确反映了各个行为之间的交叠。o某个阶段内的箭头代表那个阶段内的迭代o维护圆圈较小,代表使用面向对象的范型时,维护的工作量减少了软件过程模型 喷泉模型o喷泉模型优点o具有更多的增量和迭代性质,生存期的各个阶

17、段可以相互重迭和多次反复o在项目的整个生存期中还可以嵌入子生存期o采用面向对象方法实现的这种在概念上和表示方法上的一致性保证了开发活动间的无缝过渡o喷泉模型缺点o面向对象范例要求经常对开发活动进行迭代,这就有可能造成在使用喷泉模型的开发过程过于无序。Rational 统一过程oRUP(Rational Unified Process)软件开发经验o迭代式开发-容纳需求变更/减少风险o管理需求-使用用例和脚本o使用基于构件的体系结构-功能清晰的模块和子系统o可视化建模-模型可为文字、图形、数学表达式o验证软件质量-质量评估内建在贯穿于整个开发过程的、由全体成员参与的所有活动中o控制软件变更-控制

18、、跟踪、监控修改Rational 统一过程初始初始初始初始精化精化精化精化构建构建构建构建移交移交移交移交初始初始初始初始精化精化精化精化1 1 精化精化精化精化2 2 构建构建构建构建1 1构建构建构建构建2 2构建构建构建构建3 3移交移交移交移交1 1移交移交移交移交2 2环境环境工作流工作流业务建模业务建模需求需求分析与设计分析与设计实现实现测试测试部署部署项目管理项目管理阶段阶段配置与变更管理配置与变更管理Rational 统一过程o1.业务建模:o描述了如何拟定新目标组织的前景,并基于该前景来确定该组织在业务用例模型和业务对象模型中的流程、角色以及职责。o主要角色:业务流程分析员、

19、业务设计员、业务模型复审员o主要工件:业务模型(包括业务用例模型和业务对象模型)o2.需求:o描述系统应该做什么,即捕获需求,并使开发人员和用户就这一需求描述达成共识。o主要角色:系统分析员、用户界面设计员、需求复审员o主要工件:用例模型和用户界面模型Rational 统一过程o3.分析设计:o将需求转化成对未来系统的设计,为系统开发一个健壮的结构,并调整设计使其与实现环境相匹配,优化其性能。o主要角色:架构设计师、架构复审员、设计员、数据库设计员、设计复审员o主要工件:设计模型和可选的分析模型o4.实施:o以层次化的子系统形式化地定义代码的组织结构;以构件的形式实现类和对象;将开发出的构件作

20、为单元进行测试;将各实施人员(或团队)完成的结果集成到可执行系统中。o主要角色:架构设计员、实施员、集成员、代码复审员o主要工件:实施模型Rational 统一过程o5.测试:o检验对象间的交互作用,验证软件中所有构件是否正确集成,检验所有需求是否被正确的实现,识别、确认缺陷并确保在软件部署之前将缺陷解决。o主要角色:测试设计员、测试员o主要工件:测试模型和测试结果o6.部署:o成功地生成产品版本并将软件分发给最终用户o主要角色:部署经理、实施人员、技术文档编写员、培训开发员o主要工件:产品的一个版本和文档培训资料Rational 统一过程o7.配置和变更管理:o描述了如何在多个成员组成的项目

21、中控制大量的产品,并提供了相应准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本变更o主要角色:配置经理、变更控制经理、集成员o主要工件:配置管理计划、变更请求、项目存储库和工作区o8.项目管理:o平衡竞争的目标、管理风险并克服各种约束,从而成功交付使用户满意的产品o主要角色:项目经理、项目复审员o主要工件:商业理由、迭代计划、风险管理计划、质量保证计划及象样的评估文档o9.环境:o向软件开发组织提供软件开发的环境,包括过程和工具o主要角色:过程工程师、工具专家o主要工件:工作流程指南和工具、工具指南RUP生命周期4阶段o初始阶段(Inception):建立业务用例和确定项目的范围生命周

22、期目标里程碑o主要项目干系人对系统的范围达成一致意见;o对是否已经获得正确的需求集达成一致意见,并且对这些需求的理解是共同的;o对成本/进度估算、优先级、风险和开发流程达成一致意见;o已经确定所有风险并且有针对每个风险的风险降低策略RUP生命周期4阶段o精化阶段(Elaboration):建立稳定的架构、编制项目计划和淘汰项目中风险最高的元素生命周期架构里程碑o产品前景和需求是稳定的;o架构是稳定的;o可执行原型表明已经找到了主要的风险元素,并且已得到妥善解决;o构建阶段的迭代计划足够详细和真实,可以保证工作继续进行;o构建阶段的迭代计划有可靠的估算支持;o所有项目干系人一致认为,如果在当前架

23、构环境中执行当前计划来开发完整的系统,则当前的前景可以实现;o实际的资源耗费与计划的耗费相比是可以接受的。RUP生命周期4阶段o构建阶段(Construction):所有构件和应用程序功能被开发并集成为产品,所有的功能被详尽地测试最初操作性能里程碑o该产品发布版已经足够稳定和成熟,可部署在用户群中;o所有项目干系人已准备好将产品发布到用户群;o实际的资源耗费与计划相比仍可以接受。o移交阶段(Transition):将软件产品交付给用户群体产品发布里程碑o用户满意;o实际的资源耗费与计划的耗费相比可以接受对比o与螺旋模型相比o相似:重复一系列组成系统生命周期的循环o差异:oRUP给出了每个阶段内

24、的若干次迭代过程完成后交付的增量的具体要求,即 四个阶段的里程碑oRUP详细阐述了不同阶段的不同迭代过程经历的九大核心工作流程中活动内容的重点和强度不同oRUP提供了对每次迭代过程中不同核心工作流程活动的并行化支持o优点:用于指导需求不明确、不稳定的项目开发时具有更强的可操作性。o与瀑布模型相比,优点:oRUP将成本风险进一步降低为获得一次增量所需的费用oRUP进一步降低了产品不能按计划投放市场的风险oRUP使项目开发更能适应项目需求的变化敏捷过程o具有高效、快速响应变化的开发过程。o敏捷过程的价值观o个体和交互胜过过程和工具o可以工作的软件胜过面面俱到的文档o客户合作胜过合同谈判o响应变化胜

25、过遵循计划o极限编程o敏捷过程中最著名的一种,指把好的开发实践运用到极致,多应用于软件需求模糊的场合。极限编程o客户作为开发团队的成员o使用用户素材o短交付周期(每两周完成一次迭代)o验收测试o结对编程o测试驱动开发o集体所有(程序代码属于整个开发小组,每个成员都有修改代码的权利,都对全部代码负责)极限编程o可持续的开发速度(周工作时间不超过40小时,连续加班不超过两周)o开放的工作空间o及时调整计划o简单的设计o重构o使用隐喻(隐喻是把整个系统联系在一起的全局视图,描述系统如何运做,如何把新功能加入到系统中)敏捷过程与RUPo敏捷过程的总体特征是针对商业环境下通常具有有限资源和有限时间约束的

26、小型项目,提出了一些独具特色的、操作性较强的解决方案;oRUP是理想开发环境下软件过程的一种完美的模式,但对商业环境具有有限资源和有限时间约束的项目没有给出具体完整的配置方案。微软过程oMicrosoft公司自己独特的软件开发过程,综合了RUP和XP的许多优点,是对众多成功项目的开发经验的正确总结oMSF的过程模型来自两个方面:o微软开发应用程序的过程;o一些有效的、公认的过程模型;o详细论述参见微软软件开发解决方案框架(第二版),麦中凡、陶伟编著,北京航空航天大学出版社微软过程准则o项目计划应该兼顾未来的不确定因素o用有效的风险管理来减少不确定的因素o经常生成过渡版本并快速地测试软件来提高产

27、品的稳定性及可预测性o采用快速循环、递进的开发过程o用创造性的工作来平衡产品特性和产品成本o项目进度表应该具有较高的稳定性和权威性o使用小型项目组并发地完成开发工作o在项目早期把软件配置项基线化o使用原型验证概念,对项目进行早期论证o把零缺陷作为追求的目标o里程碑评审会强调改进工作,避免相互指责微软软件生命周期微软软件生命周期o构思阶段前景/范围认可里程碑o主要工作:o确定产品目标o获取竞争对手的信息o完成对客户和市场的调研分析o确定新版本产品应该具备的主要特性o确定相对于前一版本而言,新版本应该解决的问题和需要增加的功能o产品:o前景/范围说明书o风险评估说明书o项目组织结构说明书微软软件生

28、命周期o设计阶段项目计划认可里程碑o主要工作:o根据产品目标编写系统的特性规格说明书,这份说明书主要描述软件特性、系统结构、各构件之间的相关性以及接口标准o从系统高层开始着手进行系统设计o描述整个系统的设计方案o绘制系统结构图o确定系统中存在的风险因素o分析系统的可重用性o划分出系统中的子系统,给出各个子系统和各个构件的规格说明o根据产品特性规格说明书制定产品开发计划o产品:o功能说明书o风险管理计划o项目总体计划书和总体进度表微软软件生命周期o开发阶段范围完成里程碑o主要工作:o编写程序代码和书写文档o产品:o源代码和可执行程序o安装脚本和用于发布的配置信息o已冻结的功能说明书o关于产品使用

29、的支持要素o测试说明书和测试用例微软软件生命周期o稳定阶段发布就绪认可里程碑o主要工作:o测试和调试o产品:o黄金版本o版本注释o关于产品使用的支持要素o测试结果和测试工具o源代码和可执行程序o项目文档o里程碑评审记录微软软件生命周期o部署阶段部署完成里程碑o主要工作:o发布产品和解决方案,把项目移交到运营和支持人员手中o产品:o运营与支持信息系统o程序和过程o知识库、报告、日志o文档库,包含项目过程中产生的所有版本的文档、资源o所有项目文档的最终版本o下一步的工作计划微软软件生命周期特点o相对RUP,微软过程可视为RUP的一个精简配置版本。o相对敏捷过程,微软过程是它的一个扩充版本,扩充了其每个生命周期内的各阶段的具体运作流程。讨论o在你曾经经历过的软件开发任务中,采用的是近似于上面哪一种软件过程模型?有哪些主要的开发活动?有何应对后期需求变化的措施?o你认为在研究机构中,比如大学,进行的软件项目,所采用的软件过程模型与专门从事软件开发的公司所采用的模型有什么不同吗?只有学会有效地编写小程序的人,才能学习有效地编写大程序。-D.Gries谢谢!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁