




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程 复习第 1 章 软件工程概述什么是计算机软件? 计算机软件指计算机系统中的程序、数据及其相关文档的集合。 三要素:软件=程序+ 文档+ 数据 程序是按照特定顺序组织的计算机数据和指令的集合。 数据是使程序能正常执行的数据结构。 文档是与程序的开发、维护和使用有关的资料。它是为了便于了解程序所需的阐明性资料,文档一般是给人看的,不一定装入计算机。软件的主要特点 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。 软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。 软件的使用没有硬件那样的机械磨损和老化问题。软件的分类 系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应用领域无关。如操作系统、编译程序等。 支持软件:支持软件的开发和维护的软件。如数据库管理系统、网络软件、软件开发环境等。 应用软件:特定应用领域专用的软件。如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等。 按软件工作方式划分: 实时处理软件 分时软件 交互式软件 批处理软件 按软件服务对象的范围划分: 项目软件 产品软件 按使用的频度进行划分: 一次使用 频繁使用 按软件失效的影响进行划分: 高可靠性软件 一般可靠性软件软件工程定义 B.W.Boehm 的定义:运用现代科学技术知识来设计并构造计算机程序,以及为开发、运行和维护这些程序所必须的相关文件资料。 Fritz Bauer 的定义:软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件,而建立和使用的一系列完善的工程化原则。 1983 年美国IEEE 软件工程标准术语的定义为:软件工程是开发、运行、维护和修复软件的系统方法,其中“软件”的定义为:计算机程序、方法、规则、相关的文档资料,以及在计事机上运行时所必需的数据。软件工程化思想 把软件看作是一个工程产品。 两个方面: 软件开发技术 软件工程管理 原因: 缺乏软件过程控制能力 能力成熟模型(Capability Maturity Model) 体现: 工程化管理软件工程基本原理 推迟实现原理:软件方法学的一条基本思想。把逻辑设计与物理设计清楚地划分开来,尽可能推迟软件的物理实现。 逐步求精原理,求解一个复杂问题,采用从抽象到具体,有条理地逐步分解与细化方法和过程进行。 分解与抽象原理,是把复杂问题趋于简单化处理的有效策略。 信息隐蔽原理,把一些关系密切的软件元素物理地放得彼此靠近,使信息最大限度地局部化。 质量保证原理,是软件与文档中明确描述的功能和性能需求、开发标准以及任何专业开发的软件产品具有的隐含特征相一致的程度。软件工程基本原则 1983 年提出了软件工程的 7 条基本原则: 分阶段的软件生存周期 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 明确职责 开发小组的人员应少而精 不断改进开发过程软件工程两大范型 结构化开发范型 特征:结构化技术要么面向行为,要么面向数据 构成结构化开发范型的技术包括: 结构化分析 结构化设计 结构化编程 结构化测试 结构化维护软件工程两大范型 面向对象范型 特征:将对象视作一个融合了数据及在其上操作的行为的、统一的软件组件。 技术包括: 面向对象分析 面向对象设计 面向对象编程 面向对象测试 面向对象维护 优势: 对象的概念符合业务或领域的客观实际 维护容易第 2 章 软件过程软件过程 定义: 软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动。 通常使用生命周期模型简洁地描述软件过程。 层次: 软件工程是一门建立在以质量焦点为基础的层次化综合技术。 过程:定义阶段和管理。 方法:技术支持。 工具:自动化实施支持。软件过程框架 定义: 框架是实现整个软件开发活动的基础,并且那些与过程有关的角色、职责的定义以及实现也都离不开框架的支持。软件过程模型 把软件生命周期中各项开发活动的流程用一个合理的框架开发模型来规范描述,这就是软件过程模型,也称为软件生命周期模型。能力成熟度模型 CMM 是对软件组织在定义、实施、度量、控制和改善其软件过程的各个发展阶段的描述,是国际公认的对软件公司进行成熟度等级认证的重要标准。 能力成熟度模型集成(CMMI-Capability Maturity Model Integration)是 CMM 模型的最新版本。CMM 的五个级别 CMM 提供了一个成熟度等级框架:1 级- 初始级、 2 级- 可重复级、3 级-已定义级、4 级- 已管理级和 5 级-优化级。 1.初始(initial)级:过程无序且不可见。 软件过程的特点是无秩序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,成功往往依赖于个人或小组的努力和机遇。 Level 1:初始级OutIn 2.可重复(repeatable )级:里程碑可见,按计划开发。 建立了基本的项目管理过程来跟踪成本、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。Level 2:可重复级 3.已定义(defined)级:每个阶段的内部活动可见,标准过程和项目定义过程裁剪 己将管理和工程活动两方面的软件过程文档化、标准化,并综合成该机构的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。Level 3:定义级4. Level 4 已管理(managed)级:过程可度量,预测值与结果之间的偏差可控。收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。Level 4 管理级5. Level 5 优化(optimizing)级:过程动态调整、新技术的采用。整个组织关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的发生。过程的量化反馈和先进的新思想、新技术促使过程不断改进。Level 5 优化级极限编程 极限编程(eXtreme Programming,XP)是一种软件工程方法学,是敏捷开发中最富有成效的方法学之一。 具有强沟通、简化设计、迅速反馈等特点。 适合于规模小、进度紧、需求不稳定、开发小项目的小团队。极限编程 核心有四个要点: 交流 简单 反馈 勇气Pair Programming( 结对编程 )结对编程 结对编程(Pair-Programming) 是 XP 中非常重要的实践之一。 定义:两个人坐在同一台计算机前面,使用相同的键盘和鼠标来开发同样的一个模块,一个称为驾驶者(Driver),负责代码的键入,另外一个称为领航员(Navigator),负责监看与决策,包括低级错误和方向性的错误。 当出现的一个问题对其中一个人来说,难以解决,而恰好是另外一个人的强项的时候,那么角色就会发生转换。如何结对编程? Driver 写设计文档(Class diagram 等) ,进行编码(Unit Test and Business Object)等 XP 开发流程。 Navigator 审阅 Driver 的文档、Driver 对编码等开发流程的执行;考虑 Unit Test 的覆盖程度;是否需要和如何 Refactoring;帮助 Driver 解决具体的技术问题。 Driver 和 Navigator 不断轮换角色,不要连续工作超过一小时,每一小时休息 15 分钟。Navigator 要控制开发时间。 主动参与 虽然每个 Engineering Task 都有 owner,但不能以旁观者的心态来做。任何一个 Task 都首先是两个人的责任,也是所有人的责任。没有“我的 Code”、 ”你的Code”或“她的 Code”,只有“我们的 Code”。如何结对编程? 只有水平上的差距,没有级别上的差异。一个 Pair,尽管可能大家的级别资历不同,但不管在分析,设计或编码,双方都拥有平等的决策权利。 Pairs 之间互换 Partner。每个 Task 都应该和不同的 Developer 配对。 每隔一天,甚至是半天,互换 Partners。但 Task 的 owner 因该继续留该 Task 的 Pair 中。 如果 Pair 中的一人请假,另一人应尽量不要写 Production Code。 Pair 一起加班。软件工程实践 软件工程实践的精髓是理解问题、计划解决方案、实施计划和检查结果的精确度等方面。 通用的框架活动包括: 沟通 计划 建模 部署 普适性活动第 3 章 软件过程模型 典型的软件过程模型有: 瀑布模型(waterfall model) 演化模型(evolutionary model) 增量模型(incremental model) 原型模型(prototyping model) 螺旋模型(spiral model) 面向对象过程模型喷泉模型(water fountain model) 基于构件的开发模型(component-based development model) 形式方法模型(formal methods model) 统一过程模型(unified procdss model)软件过程模型 软件过程模型是软件开发全部过程、活动和任务的结构框架。 也称软件开发模型或软件生存周期模型。软件生存周期 软件也有一个从生到死的过程,这个过程一般称之为软件的生存周期或生命周期(Software Development Life Cycle) 。 软件生存周期包括可行性分析、项目计划、需求分析、软件设计、编码与测试、维护等阶段,每个阶段包含一系列的活动。一.瀑布模型 瀑布模型将软件生命周期划分为软件计划、需求分析和定义、设计、实现、测试、运行和维护这 6 个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水逐级下落。瀑布模型特点 顺序性和依赖性接受上一阶段的结果作为本阶段的输入,上一阶段的输出正确,下一阶段的工作才能获得正确的结果。 推迟实现清楚地区分逻辑设计与物理设计,尽可能推迟程序的编程实现。 质量保证的观点,重视各个阶段的文档齐备。缺点 缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发。 开发早期存在的问题往往要到交付使用时才发现,维护代价大。二.演化模型 许多软件项目在开发早期对软件需求的认识是模糊的、不确定的,因此软件很难一次开发成功。 演化模型的开发过程就是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。 演化模型适用于对软件需求缺乏准确认识的情况。 典型的演化模型有:增量模型、原型模型、螺旋模型。1.增量模型 增量模型(Incremental Model)也称为渐增模型,是在项目的开发过程中以一系列的增量方式开发系统。 增量方式包括: 增量开发:以一定的时间间隔开发部分工作软件。 增量提交:以一定的时间间隔增量方式向用户提交工作软件及相应文档。2.原型模型 原型(prototype)是预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制订原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。3.螺旋模型 螺旋模型(Spiral Model)是结合了瀑布模型和快速原型模型的迭代开发模型,是瀑布模型和演化模型的结合,并增加了风险分析。 强调了其他模型均忽略了的风险分析: 风险识别 风险分析 风险控制 特别适合于大型复杂的系统。 每一个周期都包括需求定义、风险分析、工程实现和评审。螺旋模型活动 四个象限分别代表了以下活动: 制定计划:确定软件目标,选定实施方案,确定项目开发的限制条件; 风险分析:分析评估所选方案,考虑如何识别和消除风险; 实施工程:实施软件开发和验证; 客户评估:评价开发工作,提出修正建议,制定下一步计划。 螺旋模型是风险驱动的模型。三.面向对象过程模型 面向对象是一种程序设计的方法,或者说它是一种程序设计范型。 基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。 面向对象的要素: 抽象:强调实体的本质、内在的属性,忽略一些无关紧要的属性。类实现了对象的数据(即状态)和行为的抽象,是对象的共性的抽象。 封装性:指所有软件部件内部都有明确的范围以及清楚的外部边界。 共享性。 面向对象的特征:对象惟一性;分类性;继承性;多态性(多形性) 。1.喷泉模型 喷泉模型是一种支持面向对象开发的模型。 体现迭代和无间隙特征: 迭代:各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统。 无间隙:开发活动之间不存在明显的边界。四.基于构件的开发模型 支持软件复用(reuse) 。 利用预先包装好的软件构件(包括组织内部开发的构件和现存商品化构件 COTS)来构造应用系统。构件集成模型 构件集成模型是基于构件的开发模型。 构件集成模型: 整个系统模块化。 复用构件库中的软件构件。 构件集成模型是演化形的,开发过程是迭代的。 5 个阶段: 软件的需求分析和定义 体系结构设计 构件库建立 应用软件构建 测试和发布五.形式方法模型 形式化方法(formal methods)是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。六.统一过程模型 统一过程是用况驱动的。 用况模型(use case model)要素: 用户(user ) 用况(use case) 动作(action) 用况驱动(use-case driven):用况
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车队运输时效保障合同范本模板
- 餐饮加盟商信息保密合同范本
- 餐饮业店铺租赁合同及食品安全责任书
- 芯片销售保密协议书范本
- 中草药购销协议书范本
- 餐饮店股东合作协议及知识产权保护
- 甜品店品牌授权及区域代理合同
- 生态环保项目拆旧房屋搬迁与补偿协议范本
- 古董拍卖委托授权合同模板
- 餐饮业股权并购及品牌授权与经营合同
- 读书分享交流会《从一到无穷大》课件
- 汉字的发展(英文版介绍)Chinese-character
- 土地利用现状分类代码表
- 华为“1+X”职业技能等级(网络系统建设与运维)中级考试题库(含答案)
- (完整版)生产车间地面画线标准
- 单位财务内控制度
- 有机硅化合物的基本性质
- “阿里巴巴”并购“饿了么”案例分析
- 口腔完整病历范文(合集27篇)
- 山东省病原微生物实验室及实验活动备案管理系统
- 小学道德与法治-被动物咬伤怎么办教学设计学情分析教材分析课后反思
评论
0/150
提交评论