计算机导论 2ppt课件.ppt_第1页
计算机导论 2ppt课件.ppt_第2页
计算机导论 2ppt课件.ppt_第3页
计算机导论 2ppt课件.ppt_第4页
计算机导论 2ppt课件.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章软件工程 6 1软件危机6 2软件工程6 3软件工程方法学6 4标准建模语言UML6 5统一开发过程6 6能力成熟度模型6 7软件项目管理 6 1软件危机 6 1软件危机6 2软件工程6 3软件工程方法学6 4标准建模语言UML6 5统一开发过程6 6能力成熟度模型6 7软件项目管理 6 1软件危机 定义 软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题 软件危机包含两个方面的内容 第一 如何开发软件 以满足对软件日益增长的需求 第二 如何维护数量不断膨胀的已有软件 6 1软件危机 症状 就其具体症状来说 软件危机有如下一些主要的典型特征 首先 开发成本和进度估计常常很不准确 其次 用户不满意新开发的系统 再次 软件产品的质量往往靠不住 最后 若干年来软件成本在总成本中所占的比例逐年上升 软件开发率提高速度远远跟不上计算机普及深入的趋势 6 1软件危机 原因 软件危机严重制约着计算机的普及与应用 就其内部原因来说 主要有两个方面 一是与软件本身的特点有关 软件是一种逻辑产品 缺乏可见性 具有抽象性 另一方面是由软件开发和维护的方法不正确造成的 为了消除软件危机 既要有技术措施 又要有必要的组织管理措施 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科 6 2软件工程概述 6 1软件危机6 2软件工程概述6 2 1软件工程框架模型6 2 2软件工程本质特征6 2 3软件工程基本原理6 2 4软件过程6 2 5软件过程模型6 3软件工程方法学6 4标准建模语言UML6 5统一开发过程6 6能力成熟度模型6 7软件项目管理 6 2软件工程概述 定义1 2 软件工程是一类求解软件的工程 它应用计算机科学 数学以及管理科学等原理 借鉴传统工程的原则 方法 创建软件以达到提高质量 降低成本的目的 其中计算机科学 数学用于构造模型与算法 工程科学用于制定规范 设计范型 评估成本以及确定权衡 管理科学用于计划 资源 质量 成本等管理 它是一门指导计算机软件开发和维护的工程学科 6 2软件工程概述 定义2 2 软件工程是一门交叉性学科 软件工程包含技术和管理两个方面的内容 是管理与技术的紧密结合 软件开发技术包括软件开发方法学 软件开发过程 软件开发工具和软件开发工程环境等部分的内容 软件工程管理部分包括软件管理学 软件经济学和软件心理学 软件工程所包含的内容随着人们对软件系统的研制开发和生产的理解而发展 目前使用最广泛的是结构化方法学和面向对象方法学 6 2软件工程概述 框架模型1 4 通过一个框架模型来描述软件工程的概念 含义和相关内容 软件工程包括工程目标 工程原则和基本的工程活动等部分 6 2软件工程概述 框架模型2 4 如图软件工程要素 即工程目标 工程原则和基本的工程活动 由此可以把软件工程定义为由目标 原则和活动构造的三元组 如 软件工程的目标是 生产具有正确性 可用性以及开销合宜的产品 其中正确性是指软件产品达到预期的功能的程度 可用性是指软件基本结构 实现以及文档为用户可用的程度 开销合宜性是指软件开发 运行的整个开销满足用户要求的程度 它们共同形成了对软件开发过程以及工程方法选取的约束 6 2软件工程概述 框架模型3 4 如上图 围绕工程设计 工程支持以及工程管理 软件工程提出了如下四条基本原则 第一 根据软件需求 硬件需求以及其他质量性能等方面的因素 选择适宜的软件开发模型 第二 根据软件的模块化 抽象与信息隐蔽 局部化 一致性等要求 采用合适的设计方法 第三 采用软件工具和支持环境 提供高质量的工程支持 第四 重视软件开发过程的过程管理工作 6 2软件工程概述 框架模型4 4 在软件工程中 基本活动有需求分析 软件设计 软件实现 软件确认和售后支持等 1 需求分析活动 在软件开发过程中 需求活动的主要任务是定义问题 即建立系统模型 2 软件设计活动 软件工程的设计活动是在需求分析的基础上 给出系统的软件解决方案 包括两个阶段 总体设计和详细设计阶段 3 软件实现活动 是在软件设计的基础上 编码被建的每一个模块或构件 4 软件产品验证活动 主要任务是进行软件测试 软件测试目的是在软件投入使用之前 尽可能多的发现软件中的错误 5 支持活动 软件交付使用之后 软件产品就进入了维护阶段 也是最后活动 根本任务保证软件在一个相当长的时间内正常运行 6 2软件工程概述 本质特征 软件工程都具有如下一些本质特征 这也是四十多年来 在实践与摸索的基础上 对软件工程的基本认识 第一 软件工程总是关注于大型程序的开发构造过 第二 软件工程的中心课题是控制复杂性 第三 软件是经常变化的 软件工程需要提供相应的技术和方法 有效地满足 控制这种变化 其次 软件工程还具有如下方面的特征 如 关注于大型软件的开发效率 实现软件开发过程中的和谐的合作 力求新开发出来的软件能够有效的支持它的用户等 6 2软件工程概述 基本原理 针对软件危机 提出的软件工程的概念在实践发展 有些经验作为软件工程的基本原理 被贯穿到了软件工程的思想 方法和工具中 用分阶段的软件生命周期计划方法严格管理软件开发维护过程 软件开发过程中 坚持进行阶段评审 审查工作 采用现代程序设计技术 方法和工具 开发维护软件产品 开发过程需要进行严格的产品控制 保证项目开发小组的人员少而精 坚持不断的改进工程实践过程 6 2软件工程概述 阶段 软件工程过程是为了获得高质量软件所需要完成的一系列任务的框架 它规定了软件开发时完成各项任务的工作步骤 在概念上可以把软件生命周期划分三个时期 八个阶段 软件生命周期的三个时期是软件定义 软件开发和运行维护等三部分组成 其中先后包括的八个阶段是问题定义 可行性研究 需求分析 概要设计 详细设计 编码和单元测试 综合测试以及维护等阶段 6 2软件工程概述 过程模型1 3 软件过程模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序 因此 也称为生命周期模型 软件过程模型是软件开发全部过程 活动和任务的结构框架 软件开发模型能够清晰 直观地表达软件开发全部过程 明确规定要完成的主要活动和任务 它可用来作为软件项目工作的基础 6 2软件工程概述 过程模型2 3 软件开发实践已经提出了多种过程模型 例如 瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 智能模型等 6 2软件工程概述 过程模型3 3 瀑布模型 是软件工程产生以来 应用范围最广的最基本的一类软件开发模型 其活动如瀑布流水式的组织 严格规定每一活动的工作对象和输出 阶段结束时 评审 确认阶段成果 给出反馈意见 确认是否进入下一阶段工作 6 3软件工程方法学 6 1软件危机6 2软件工程6 3软件工程方法学6 3 1结构化方法学6 3 2面向对象方法学6 4标准建模语言UML6 5统一开发过程6 6能力成熟度模型6 7软件项目管理 6 3软件工程方法学 方法要素 软件生命周期中使用的一整套技术方法 被称之为软件方法学 也称之为软件开发范型 软件工程方法学包括方法 工具和过程三个要素 其中 方法 是指 怎么做 的问题 是完成软件开发各项任务的技术方法 工具 是使用方法而提供的自动化或半自动化的支撑环境 过程 是使用方法完成软件开发工作所定义的一系列任务框架 它规定了完成各项任务的工作步骤 目前广泛使用的软件工程方法有结构化软件方法学和面向对象的软件方法学 6 3软件工程方法学 结构化方法 结构化方法是软件工程早期广泛使用的软件开发技术 直到今天依然被许多软件开发组织所使用 结构化方法学使用一整套技术方法 从分析 设计到软件的实现 提供了严格的贯通一致的技术方法 可以用来完成整个软件开发过程的核心工作 6 3软件工程方法学 结构化分析 结构化分析实质上就是一种建模活动 通常要为系统建立数据模型 功能模型和行为模型 结构化方法使用实体联系图描述数据对象和数据对象之间的关系 用于建立系统的数据模型 使用数据流图描绘当数据在软件系统中流动时被变换的逻辑过程 指明系统具有改变数据的功能 结构化方法使用状态转换图来指明作为外部事件结果的系统行为 所以状态转换图描绘了系统的各种行为模型和在不同状态间转换的方式 6 3软件工程方法学 结构化设计 结构化设计为软件开发过程的总体设计和详细设计提供了有效的工具和方法 在总体设计时 结构化设计把结构化分析的结果数据流图作为基本输入信息按照一定的规则 设计软件模块 结构化方法中的总体设计是与结构化分析一脉相传的 它的最终完成了软件模块的设计 详细设计需要对总体设计中的模块实现过程作出规范说明 确定应该怎样具体实现所要求的系统 得出对目标系统精确描述 从而设计出程序蓝图 6 3软件工程方法学 结构化实现 实现阶段 实现阶段包括编码和测试两个过程 编码是把软件设计的结果 经过翻译成用某种程序设计语言书写的程序 软件测试在编写出每个模块之后就对它做必要的测试 单元测试 测试阶段的根本任务是发现并改正软件中的错误 6 3软件工程方法学 OO方法 面向对象方法学的出发点和基本原则 是尽可能模拟人类习惯的思维方式 使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法与过程 从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致 面向对象是一整套软件开发的思想 技术和方法 在软件开发的各个阶段 都能体现着一脉相承的面向对象的开发技术 主要包括面向对象的分析 面向对象的设计和面向对象的实现 6 3软件工程方法学 OOA 分析的过程是提取 精化 明晰系统需求的过程 它的工作主要包括理解 表达和验证 面向对象分析的关键工作是分析 确定问题域中的对象及对象间的关系 并建立起问题域的对象模型 分析的目标是全面深入地理解问题域 其中不应该涉及具体实现的考虑 6 3软件工程方法学 OOD 面向对象设计 就是用面向对象观点建立求解空间模型的过程 通过面向对象的模型机制和方法来描述预实现系统 分析与设计本质上是一个多次反复迭代的过程 而面向对象分析与面向对象设计的界限尤其模糊 6 3软件工程方法学 OOP 面向对象实现主要包括两项工作 第一是把面向对象设计结果翻译成用某种程序设计语言书写的面向对象程序 第二是测试并调试面向对象的程序 6 4标准建模语言UML 6 1软件危机6 2软件工程6 3软件工程方法学6 4标准建模语言UML6 4 1标准建模语言UML的出现6 4 2标准建模语言UML的内容6 4 3标准建模语言UML的主要特点6 4 4标准建模语言UML的应用领域6 5统一开发过程6 6能力成熟度模型6 7软件项目管理 6 4标准建模语言UML 定义 面向对象的分析与设计 OOA D 方法的在上个世纪80年代末至90年代中出现了一个高潮 UML是这时的产物 UML UnifiedModellingLanguage 是一种绘制软件蓝图的标准建模语言 可以使用UML对软件密集型系统的制品进行可视化 详述 构造和文档化 UML仅仅是一种语言 一种建模语言 并且仅仅是软件开发方法的一部分 是独立于具体的软件开发过程的 不过最好用于以用况为驱动 以体系结构为中心 迭代及增量的过程中 6 4标准建模语言UML 内容1 2 作为一种建模语言 UML的定义包括UML语义和UML表示法两个部分 1 UML语义 描述基于UML的精确元模型定义 元模型为UML的所有元素在语法和语义上提供了简单 一致 通用的定义性说明 使开发者能在语义上取得一致 消除了因人而异的最佳表达方法所造成的影响 2 UML表示法 定义UML符号的表示法 为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准 6 4标准建模语言UML 内容2 2 标准建模语言UML的重要内容可以由下列五类图来定义 第一类是用例图 从用户角度描述系统功能 第二类是静态图 Staticdiagram 包括类图 对象图和包图 第三类是行为图 Behaviordiagram 描述系统的动态模型和组成对象间的交互关系 主要包括状态图和活动图 第四类是交互图 Interactivediagram 描述对象间的交互关系 主要有时序图和协作图 第五类是实现图 Implementationdiagram 6 4标准建模语言UML 特点 标准建模语言UML的主要特点可以归结为三点 1 UML统一了Booch OMT和OOSE等方法中的基本概念 2 UML还吸取了面向对象技术领域中其他流派的长处 其中也包括非OO方法的影响 3 UML在演变过程中还提出了一些新的概念 UML是一种先进实用的标准建模语言 但其中某些概念尚待实践来验证 UML也必然存在一个进化过程 6 4标准建模语言UML 应用领域 UML的目标是以面向对象图的方式来描述任何类型的系统 具有很宽的应用领域 其中最常用的是建立软件系统的模型 但它同样可以用于描述非软件领域的系统 如机械系统 企业机构或业务过程 以及处理复杂数据的信息系统 具有实时要求的工业系统或工业过程等 它是一个通用的标准建模语言 可以对任何具有静态结构和动态行为的系统进行建模 6 5统一开发过程 6 1软件危机6 2软件工程6 3软件工程方法学6 4标准建模语言UML6 5统一开发过程6 6能力成熟度模型6 7软件项目管理 6 5统一开发过程 背景 统一软件开发过程 UnifiedSoftwareDevelopmentProcess简称 USDP 是由统一建模语言 UnifiedModelingLanguang 简称UML 的开发者们提出来的 并为对象管理组织 ObjectManagementGroup 简称OMG 所推荐 6 5统一开发过程 定义 统一软件开发过程 USDP 对于如何运用UML的概念进行软件开发提供了详细指导 即 1 指导开发队伍安排其开发活动的次序 2 为各开发者和整个开发组指定任务 3 明确地规定需要开发的制品 4 提供对项目中的制品和活动进行监控与度量的准则 统一软件开发过程 USDP 不仅仅是一个简单的过程 而是一个通用的过程框架 6 5统一开发过程 特点 它具有如下特点 第一 统一过程是用况驱动 第二 统一过程是以结构框架为中心的 第三 统一过程是迭代和增量的过程 6 5统一开发过程 核心活动 开发过程是将整个项目划分为一些 小 的项目 通过核心工作流 即需求规约 分析 设计 实现和测试这五个活动 6 5统一开发过程 阶段 对每个小项目都进行迭代 迭代被组织在4个阶段中 即初始阶段 确定所设立的项目是否可行 精化阶段 在该阶段识别出大多数用况 对当前迭代的每个用况进行细化 构造阶段 此阶段每一次迭代开发都针对用况进行分析 设计 编码 测试和集成 得到一个满足项目需求子集的产品 和移交阶段 在该阶段完成最后的软件产品和最后的验收测试 并完成用户文档以及准备对用户培训等 6 5统一开发过程 活动分布 阴影部分表示所在迭代过程和阶段的各个活动的工作量 6 6能力成熟度模型 6 1软件危机6 2软件工程6 3软件工程方法学6 4标准建模语言UML6 5统一开发过程6 6能力成熟度模型6 7软件项目管理 6 6能力成熟度模型 背景1 3 费根堡姆质量体系认为 在制造及传递某种合乎特定质量标准的产品时 必须配合适当的管理及技术作业程序 这些程序所组成的结构 称之为质量体系 基于这种认识 人们广泛地关注于产品的生产管理过程 以此来提高产品的质量 软件是一种产品 软件产品质量的提高 在于软件产品生产过程的改进 6 6能力成熟度模型 背景2 3 在80年代中期 美国工业界和政府部门开始认识到 在软件开发中 关键的问题在于软件开发组织不能很好地定义和控制其软件过程 在无纪律的 混乱的软件项目开发状态中 开发组织不可能从软件工程的研究成果中获益 软件开发的历史的经验也表明 一个软件开发组织 只有通过建立全组织的有效的软件过程 采用严格的软件工程方法和管理 坚持不懈地付诸实践 才能取得全组织的软件过程能力的不断改进 6 6能力成熟度模型 背景3 3 针对软件开发质量问题问题 1986年11月 美国卡内基 梅隆大学软件工程研究所 SEI 开始开发过程成熟度框架 CMM的软件过程成熟度框架通过成熟度级别 定义了在使软件过程成熟的过程中的演化状态 6 6能力成熟度模型 等级1 2 CMM将这些演化步骤组织为5个成熟度等级的框架 这五个等级分别是初始级 可重复级 已定义级 已管理级和持续优化级 为持续的过程改进提供了基础 6 6能力成熟度模型 等级2 2 初始级 主要特征是组织通常没有提供开发和维护软件的稳定的环境 可重复级 它的主要特征是组织将软件项目的有效管理过程制度化 已定义级 主要特征是在组织范围内开发和维护软件的标准过程被文档化 已管理级 主要特征是项目减小

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论