版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、为什么要学习这门课程o 正确理解和认识“软件”的概念及其特点n 软件是PC的灵魂o 掌握软件工程的原则、方法和思想来系统地开发软件,尤其是复杂、庞大软件的开发n 从程序员到软件工程师o 了解和接触各种软件开发技术和工具o 软件工程是软件技术和管理人员必备的课程软件开发与人才需求o 现有模式n 小作坊的、一人身兼多职n 英雄式的软件开发o 生产模式n 大规模的软件生产,专业化n 分工越来越细,团队合作开发o 对人才的要求n 除精通开发技术外n 更需要软件工程意识和团队合作精神教程o 软件工程导论(第6版)n 张海藩等编著n 清华大学出版社教学内容o 软件工程概述(第1章)o 可行性研究(第2章)
2、o 需求分析(第3章)o 系统设计(第5章)o 详细设计(第6章)o 系统实现(第7章)o 系统维护(第8章)教学内容o 面向对象方法学引论(第9章)o 面向对象分析(第10章)o 面向对象设计(第11章)o 面向对象实现(第12章)o 软件项目管理(第13章)资源o http:/ 软件工程组织o http:/ 希赛o http:/ 中国最大的开发者技术社区程序员刊物官方网站o http:/ 赛迪教育信息产业部电子教育与考试中心唯一指定软考远程辅导平台o http:/ 软件测试网软件工程概述内容o 软件的定义和特点o 软件危机n 概况、原因和消除途径o 软件工程介绍n 概况、基本原理、软件工程
3、方法学o 软件生命周期o 软件过程n 瀑布模型、快速原型模型、增量模型、螺旋模型等软件o 软件= 程序?o IEEE Standard Glossary of Software Engineering Terminologyn 计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。o 程序:在运行时,能提供所希望的功能和性能的指令序列。o 数据:使程序能够正确运行的数据结构o 文档:描述程序研发过程、方法及使用的文档软件中的文档o 促进对软件的开发,管理和维护;o 便于各种人员(用户,开发人员)的交流软件本质特性o 复杂性n 软件在规模上可能比任何由人类创造的其他实体都要复杂,复杂性是软
4、件的本质特征n 软件的复杂形是必要属性o 大量的组合状态o 丰富的结构和相互依赖性o 良好的接口用以封装内部的复杂性n 开发问题也会增加复杂性o 高效率的代码通常是复杂的o 重用通用化的组件意味着复杂的状态连接o 复杂的代码难以维护,导致设计上的更复杂软件本质特性o 复杂性n Windows95有1000万行代码n Windows2000有5000万行代码n Exchange2000和Windows2000开发人员结构软件本质特性o 一致性n 软件必须遵从人为的惯例并适应已有的技术和系统o 软件必须遵循各种接口、协议和标准o 有些情况下,兼容性是软件开发的目标n 软件需要随接口的不同而改变,随
5、时间的推移而变化,而这些变化是不同的人设计的结果。n 许多复杂性来自保持与其他接口的一致,对软件的任何再设计,都无法简化这些复杂特性。软件本质特性o 可变性n 软件产品扎根于文化的母体中,如各种应用、用户、自然及社会规律、计算机硬件等,后者持续不断地变化着,这些变化无情地强迫着软件随之变化。n 所有成功的软件都会发生变更!o 当人们发现软件很有用时,会在原有应用范围的边界,或者在超越边界的情况下使用软件;o 功能扩展的压力主要来自那些喜欢基本功能,又对软件提出了很多新用法的用户们。软件本质特性o 可变性n 软件退化软件本质特性o 不可见性n 软件是不可见的和无法可视化的o 软件的客观存在不具有
6、空间的形体特征o 定义“需要做什么”成为软件开发的根本问题n 人们一直试图使用不同的技术进行软件可视化o 控制流程、数据流、依赖关系、UML、o 这些技术仍然无法给出准确的、完整的描述n 软件仍然保持着无法可视化的固有特性,从而剥夺了一些具有强大功能的概念工具的构造思路。这种缺憾不仅限制了个人的设计过程,也严重地阻碍了相互之间的交流。软件分类o 按工作方式划分n 实时处理软件n 分时软件n 交互式软件n 批处理软件软件分类o 按功能划分n 系统软件o 与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件n 支撑软件o 能协助用户开发软件的工具性软件,其中包括
7、帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具n 应用软件:o 在特定领域内开发,为特定目的服务的一类软件软件分类o 按规模(人力、时间、源程序行数)划分软件分类o 按用途n 通用软件o 面向市场公开销售的独立运行系统。o 例如:操作系统、数据库管理系统、字处理软件等。n 定制软件o 由客户委托,在合同约束下开发的软件o 例如:网上书店、图书管理系统、空中交通管理系统等。软件的发展o 计算机软件发展的三个时期n 程序设计阶段(60年代中期之前)o 硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。n 程序系统阶段(60年代中期-70年代中期)o 出现“软
8、件作坊”、产品软件;“个体化”开发方法。n 软件工程阶段(70年代中期之后)o 软件开发成为一门新兴的工程学科软件工程。软件的发展o 各阶段特点软件危机o 概念n 软件危机指的使软件开发和维护过程中遇到的一系列严重问题,包含两方面的问题:o 如何开发软件,怎样满足对软件的日益增长的需求o 如何维护数量不断膨胀的已有软件软件危机o 软件危机的主要表现n 对软件开发成本和进度的估计不准确n 产品不符合用户的要求n 软件质量不高、可靠性差n 软件常常不可维护、错误难以改正n 缺乏适当的文档资料n 软件成本占系统总成本的比例逐年上升n 软件开发速度跟不上计算机发展速度软件危机o 软件危机-开发成本高软
9、件危机o 软件技术进步落后于需求增长软件危机o 产生软件危机的主要原因n 客观:软件本身特点o 逻辑部件,难以控制质量o 规模庞大,结构复杂n 主观:不正确的开发方法,落后的开发工具o 忽视需求分析o 错误认为:软件开发=程序编写o 轻视软件维护软件危机o 解决软件危机的途径n 技术措施o 使用更好的软件开发方法和开发工具n 组织管理措施o 软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。软件工程o 指导计算机软件开发和维护的一门科学。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和技术方法结合起来
10、,以经济地开发出高质量的软件并有效维护。o 产生n 1968年,北大西洋公约组织(NATO),召开的有关计算机软件会议上正式提出“软件工程”术语。n IEEE 1993年定义软件工程(Software Engineer)软件工程本质特性o 关注大型程序构造o 中心课题:简化复杂性o 变动成本控制o 提高开发效率o 和谐开发o 软件必须有效支持用户n 功能、性能和可用性o 开发者和使用者来自不同文化背景n 连接着的角色软件工程的基本原理o 软件工程的 原则和信条n 100多条o B.W.Boehm的7条基本原理软件工程的基本原理o 用分阶段的生命周期计划严格管理n 经统计表明,不成功的软件项目中
11、有一半左右是由于计划不周造成的。n Boehm认为,在软件的整个生命周期中应制定并严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。软件工程的基本原理o 坚持进行阶段评审n 大部分错误是在编码之前造成的n 错误发现与改正得越晚,所需付出的代价越高。n 因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程的错误软件工程的基本原理o 实行严格的产品控制n 在软件开发过程中不要随意改变需求,因为改变某项需求往往需要付出较高的代价,但在实践中用户往往会提出需求变更,因此需要采取科学的产品控制技术。n 目前主要实行基准配置管理:基准配置是指经过阶段评
12、审后的软件配置成分,如各个阶段产生的文档或程序代码。n 对涉及基准配置的修改,必须经过严格的评审,通过后才能实施修改。软件工程的基本原理o 采用现代程序设计技术n 实践表明:采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。n 80年代及之前:结构化分析、设计技术n 90年代:面向对象分析、设计技术软件工程的基本原理o 结果应能清楚地审查n 软件产品是看不见、摸不着的逻辑产品,开发过程难以评价和管理。n 根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使所得的结果能够清楚地审查软件工程的基本原理o 开发小组的人员应该少而精n 开发小组人员的素质和数量是影响软件产品
13、质量和开发效率的重要因素。n 开发小组人员数目的增加,使相互交流复杂、费用增加。软件工程的基本原理o 承认不断改进软件工程实践的必要性n 遵循前6条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但不能保证赶上时代前进的步伐。n 积极主动采纳新的软件技术,且不断总结经验。软件工程方法学o 软件工程生命周期中采用的一整套技术方法的集合n 传统方法学n 面向对象方法学软件工程的三要素o 过程(Process)n 支持软件生命周期的所有活动o 方法(Method)n 为完成软件生命周期的一系列活动提供“怎么做”的技术o 工具(Tool)n 为“方法”提供一系列自动、半自动的软件支撑环境
14、传统方法学o 采用结构化技术完成软件开发的各项任务并使用适当的软件工具或环境来支持技术的运用o 把生命周期划分为若干个阶段,然后分阶段完成,前一阶段的技术标准是后一阶段的开始并分阶段审查结果面向对象方法学o 既面向数据又面向行为的方法学n 把对象作为融合数据和操作的统一软件构件n 所有对象都划分类,类定义数据和操作n 按父类子类关系,组成层次结构n 对象间发送消息软件生命周期o 软件从提出需求开始直到该软件报废为止的整个时期。n 软件定义o 问题定义、可行性研究、需求分析n 软件开发o 系统设计n 总体设计、详细设计o 系统实现n 编码、单元测试n 综合测试n 软件维护软件生命周期o 问题定义
15、n 做什么,问题性质、目标、规模o 可行性研究n 是否值得,是否能做o 需求分析 - 规格说明书(Specification)n 明确细致的确定做什么n 系统逻辑模型o 数据流图o 数据字典o 简要算法软件生命周期o 概要设计n 几种可能的方案和架构n 模块化o 详细设计n 模块的细化功能描述n 数据结构软件生命周期o 编码与单元测试o 综合测试n 集成测试o 按软件结构把模块组装测试o 按规格说明书测试,由用户验收o 维护n 改正性n 适应性,修改适应环境n 完善性,功能完善n 预防性软件过程o 为了获得高质量软件所需完成的一系列任务框架,规定了完成各项任务的步骤n 描述为了开发高质量的软件
16、,什么人在什么时候做什么事以及怎样做。n 使用资源将输入转化为输出的活动所构成的系统n 软件开发过程应该明确定义以下元素:o 过程中所执行的活动及其顺序关系。o 每一个活动的内容和步骤。o 团队人员的工作和职责。软件过程模型 瀑布模型o 特点n 顺序性和依赖性n 推迟实现o 不要急着写代码n 阶段性评审o 质量保证o 缺陷n 用户对系统的认识在开发阶段仅来自文档n 无法处理用户的模糊需求软件过程模型 快速原型模型o 特点n 线性顺序开发,无反馈软件过程模型 增量模型o优点:能较短时间内提交可完成部分工作的产品;可以使用户有充裕的时间学习和适应新产品。n文档系统:字处理,文法检测,页面排版分步完
17、善软件过程模型 增量模型o 并发程度高,集成风险更大软件过程模型 螺旋模型o 特点n 可把它看作在每个阶段之前都增加风险分析的快速原型模型。软件过程模型 螺旋模型软件过程模型 螺旋模型o 螺旋模型优点n 以风险驱动开发过程,强调可选方案和约束条件从而支持软件的重用。n 关注于早期错误的消除,将软件质量作为特殊目标融入产品开发之中。o 螺旋模型缺点n 要求许多客户接受和相信风险分析并做出相关反应是不容易的,往往适应于内部的大规模软件开发。n 需要软件开发人员具备风险分析和评估的经验,否则将会带来更大的风险。软件过程模型 喷泉模型o 特点n 典型的面向对象软件开发过程模型之一n 圆圈代表各个阶段互
18、相交叠,他准确反映了各个行为之间的交叠。n 某个阶段内的箭头代表那个阶段内的迭代n 维护圆圈较小,代表使用面向对象的范型时,维护的工作量减少了软件过程模型 喷泉模型o 喷泉模型优点n 具有更多的增量和迭代性质,生存期的各个阶段可以相互重迭和多次反复n 在项目的整个生存期中还可以嵌入子生存期n 采用面向对象方法实现的这种在概念上和表示方法上的一致性保证了开发活动间的无缝过渡o 喷泉模型缺点n 面向对象范例要求经常对开发活动进行迭代,这就有可能造成在使用喷泉模型的开发过程过于无序。Rational 统一过程o RUP(Rational Unified Process)软件开发经验n 迭代式开发 -
19、 容纳需求变更/减少风险n 管理需求 - 使用用例和脚本n 使用基于构件的体系结构- 功能清晰的模块和子系统n 可视化建模-模型可为文字、图形、数学表达式n 验证软件质量 - 质量评估内建在贯穿于整个开发过程的、由全体成员参与的所有活动中n 控制软件变更- 控制、跟踪、监控修改Rational 统一过程环境环境工作流工作流业务建模业务建模需求需求分析与设计分析与设计实现实现测试测试部署部署项目管理项目管理阶段阶段配置与变更管理配置与变更管理Rational 统一过程o1. 业务建模:n描述了如何拟定新目标组织的前景,并基于该前景来确定该组织在业务用例模型和业务对象模型中的流程、角色以及职责。n
20、主要角色:业务流程分析员、业务设计员、业务模型复审员n主要工件:业务模型(包括业务用例模型和业务对象模型)o2. 需求:n描述系统应该做什么,即捕获需求,并使开发人员和用户就这一需求描述达成共识。n主要角色:系统分析员、用户界面设计员、需求复审员n主要工件:用例模型和用户界面模型Rational 统一过程o3. 分析设计:n将需求转化成对未来系统的设计,为系统开发一个健壮的结构,并调整设计使其与实现环境相匹配,优化其性能。n主要角色:架构设计师、架构复审员、设计员、数据库设计员、设计复审员n主要工件:设计模型和可选的分析模型o4. 实施:n以层次化的子系统形式化地定义代码的组织结构;以构件的形
21、式实现类和对象;将开发出的构件作为单元进行测试;将各实施人员(或团队)完成的结果集成到可执行系统中。n主要角色:架构设计员、实施员、集成员、代码复审员n主要工件:实施模型Rational 统一过程o5. 测试:n检验对象间的交互作用,验证软件中所有构件是否正确集成,检验所有需求是否被正确的实现,识别、确认缺陷并确保在软件部署之前将缺陷解决。n主要角色:测试设计员、测试员n主要工件:测试模型和测试结果o6. 部署:n成功地生成产品版本并将软件分发给最终用户n主要角色:部署经理、实施人员、技术文档编写员、培训开发员n主要工件:产品的一个版本和文档培训资料Rational 统一过程o7. 配置和变更
22、管理:n描述了如何在多个成员组成的项目中控制大量的产品,并提供了相应准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本变更n主要角色:配置经理、变更控制经理、集成员n主要工件:配置管理计划、变更请求、项目存储库和工作区o8. 项目管理:n平衡竞争的目标、管理风险并克服各种约束,从而成功交付使用户满意的产品n主要角色:项目经理、项目复审员n主要工件:商业理由、迭代计划、风险管理计划、质量保证计划及象样的评估文档o9. 环境:n向软件开发组织提供软件开发的环境,包括过程和工具n主要角色:过程工程师、工具专家n主要工件:工作流程指南和工具、工具指南RUP生命周期4阶段o 初始阶段(Incept
23、ion):建立业务用例和确定项目的范围生命周期目标里程碑n 主要项目干系人对系统的范围达成一致意见;n 对是否已经获得正确的需求集达成一致意见,并且对这些需求的理解是共同的;n 对成本/进度估算、优先级、风险和开发流程达成一致意见;n 已经确定所有风险并且有针对每个风险的风险降低策略RUP生命周期4阶段o 精化阶段(Elaboration):建立稳定的架构、编制项目计划和淘汰项目中风险最高的元素生命周期架构里程碑n产品前景和需求是稳定的;n架构是稳定的;n可执行原型表明已经找到了主要的风险元素,并且已得到妥善解决;n构建阶段的迭代计划足够详细和真实,可以保证工作继续进行;n构建阶段的迭代计划有
24、可靠的估算支持;n所有项目干系人一致认为,如果在当前架构环境中执行当前计划来开发完整的系统,则当前的前景可以实现;n实际的资源耗费与计划的耗费相比是可以接受的。RUP生命周期4阶段o 构建阶段(Construction):所有构件和应用程序功能被开发并集成为产品,所有的功能被详尽地测试最初操作性能里程碑n该产品发布版已经足够稳定和成熟,可部署在用户群中;n所有项目干系人已准备好将产品发布到用户群;n实际的资源耗费与计划相比仍可以接受。o 移交阶段(Transition):将软件产品交付给用户群体产品发布里程碑n用户满意;n实际的资源耗费与计划的耗费相比可以接受对比o 与螺旋模型相比n相似:重复
25、一系列组成系统生命周期的循环n差异:oRUP给出了每个阶段内的若干次迭代过程完成后交付的增量的具体要求,即 四个阶段的里程碑oRUP详细阐述了不同阶段的不同迭代过程经历的九大核心工作流程中活动内容的重点和强度不同oRUP提供了对每次迭代过程中不同核心工作流程活动的并行化支持n优点:用于指导需求不明确、不稳定的项目开发时具有更强的可操作性。o 与瀑布模型相比,优点:nRUP将成本风险进一步降低为获得一次增量所需的费用nRUP进一步降低了产品不能按计划投放市场的风险nRUP使项目开发更能适应项目需求的变化敏捷过程o 具有高效、快速响应变化的开发过程。o 敏捷过程的价值观n 个体和交互胜过过程和工具
26、n 可以工作的软件胜过面面俱到的文档n 客户合作胜过合同谈判n 响应变化胜过遵循计划o 极限编程n 敏捷过程中最著名的一种,指把好的开发实践运用到极致,多应用于软件需求模糊的场合。极限编程o 客户作为开发团队的成员o 使用用户素材o 短交付周期(每两周完成一次迭代)o 验收测试o 结对编程o 测试驱动开发o 集体所有(程序代码属于整个开发小组,每个成员都有修改代码的权利,都对全部代码负责)极限编程o 可持续的开发速度(周工作时间不超过40小时,连续加班不超过两周)o 开放的工作空间o 及时调整计划o 简单的设计o 重构o 使用隐喻(隐喻是把整个系统联系在一起的全局视图,描述系统如何运做,如何把
27、新功能加入到系统中)敏捷过程与RUPo 敏捷过程的总体特征是针对商业环境下通常具有有限资源和有限时间约束的小型项目,提出了一些独具特色的、操作性较强的解决方案;o RUP是理想开发环境下软件过程的一种完美的模式,但对商业环境具有有限资源和有限时间约束的项目没有给出具体完整的配置方案。微软过程o Microsoft公司自己独特的软件开发过程,综合了RUP和XP的许多优点,是对众多成功项目的开发经验的正确总结o MSF的过程模型来自两个方面:n 微软开发应用程序的过程;n 一些有效的、公认的过程模型;o 详细论述参见微软软件开发解决方案框架(第二版),麦中凡、陶伟编著,北京航空航天大学出版社微软过程准则o项目计划应该兼顾未来的不确定因素o用有效的风险管理来减少不确定的因素o经常生成过渡版本并快速地测试软件来提高产品的稳定性及可预测性o采用快速循环、递进的开发过程o用创造性的工作来平衡产品特性和产品成本o项目进度表应该具有较高的稳定性和权威性o使用小型项目组并发地完成开发工作o在项目早期把软件配置项基线化o使用原型验证概念,对项目进行早期论证o把零缺陷作为追求的目标o里程碑评审会强调改进工作,避免相互指责微软软件生命周期微软软件生命周期o 构思阶段前景/范围认可里程碑n 主要工作:o 确定产品目标o 获取竞
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辣椒辣椒素含量提升方案
- 农药经营许可现场核查规范
- 理疗师穴位定位精准技法
- 南美白对虾苗种投放前消毒处理方案
- 一般工业固体废物管理办法
- 减肥代餐粉冲调饮用规范
- 高血压患者饮食控制指导手册
- 风力发电接地系统施工方案
- 肩颈康复理疗操作标准流程
- 风险点辨识与分级管控办法
- 2025四川遂宁发展投资集团有限公司招聘8人笔试参考题库附带答案详解析版
- 人教版八年级物理下册 8.2 二力平衡(上课、复习课件)
- 中国文化概要知到课后答案智慧树章节测试答案2025年春广东外语外贸大学、华南师范大学、暨南大学
- 部编初中语文文言文实词虚词归类复习及巩固练习集锦
- T-SMA 0050-2024 学生户外活动智能感知可穿戴设备的技术规范
- 国土变更技能竞赛理论考试题库(515题)
- 2023年高考各地试卷新高考I卷数学-解析
- 湖北省仙桃天门潜江2024-2025学年高一数学下学期期末考试试题
- DB50T 231-2024 城市桥梁养护技术规程
- 广告项目服务方案(技术方案)
- 2017年福建省中考英语试题及答案
评论
0/150
提交评论