软件过程模型

软件工程 期末复习(1)

自作多情 提交于 2020-03-30 09:43:56
第一章 概 述 主要内容: 软件?软件的特点?软件的分类?计算机软件的发展 软件危机?表现?原因?克服的方法? 软件工程?七条基本原理? 软件过程?软件的生命周期? 软件过程模型? 软件开发方法 软件工具与软件开发环境 要求 : (1)识记:软件、软件的特点?软件工程? (2)领会:软件危机的出现,表现?原因?克服的方法,软件生命周期各阶段任务,软件工程方法学及常见软件过程模型。 1.1 软件 定义: 软件 == 程序 + 数据 + 文档 1.数据:程序加工处理的对象。包括数据的表示、组织与存储。 数据 == 初始化数据 + 测试数据 2.文档(document) :开发、使用和维护程序所需的图文资料 。 文档 == 开发文档 + 管理文档。 3.程序(program) :能完成预定功能和性能的指令集合。 4.软件和程序的区别 程序只是完整软件产品的一部分。 编写程序只是软件开发过程数据中的一个阶段,一般来说,其工作量仅仅是软件开发全部工作量的10%-20% 软件的特点 抽象性:逻辑实体。可记录。但看不到(Intangible),开发过程可视化程度低,开发结果难以直观表示。 可复制性:与开发成本相比,复制成本很低 无折旧 受硬件制约 未完全摆脱手工工艺 开发费用高 软件分类 1、按适用范围分: 定制软件(Custom Software)项目软件 通用软件(Generic

软件项目管理----第2讲 软件开发过程管理

徘徊边缘 提交于 2020-03-06 02:14:22
文章目录 什么是软件开发过程 什么是软件开发活动 按任务性质,软件开发活动可分为二种形式 为什么需要过程 软件开发过程模型 1.编码—修正模型 2.瀑布模型 3.快速原型模型 4.增量模型 5.螺旋模型 典型软件过程模型特征比较 6.喷泉模型 7.统一软件开发过程(IBM RUP) 8.敏捷(灵活)过程 (注)极限编程 极限编程XP的12个实践原则 9.微软过程 微软过程准则 选择软件开发过程模型的步骤 定义软件开发过程的要求 定义软件开发过程的步骤 步骤1:选择软件开发过程模型 步骤2:确定和描述活动 确定活动的原则 步骤3:确定和描述活动间的关系 步骤4:文档化软件开发过程 如何提供软件开发过程的完整视图? 步骤5:文档化如何剪裁过程 为什么需要定义剪裁过程 如何文档化过程剪裁 步骤6:文档化如何改善过程 为什么需要改善过程? 过程改善的目的 如何文档化改善过程? 步骤7:过程评审、认可和发布 步骤8:员工培训 什么是软件开发过程 按照项目的进度、成本和质量限制,开发和维护满足用户需求的软件所必需的一组有序的软件开发活动集合 什么是软件开发活动 为开发软件项目而执行的一项具有明确任务的具体工作 按任务性质,软件开发活动可分为二种形式 技术活动 对软件项目实施开发,产生软件产品 例如,需求分析,概要设计,编码,单元测试等等 管理活动 对软件项目中的人、产品和过程等实施管理的活动

软件开发过程模型综述

一曲冷凌霜 提交于 2020-03-05 18:32:37
一.软件开发过程模型的含义 软件开发过程中,我们面对的是一个十分艰巨的任务,根据软件工程学科的分析,我们需要有一个详细的软件开发过程称之为软件过程。 软件过程可以根据不同的问题分出不同的模型。想要了解软件过程开发模型,就要对软件过程活动有所了解。真实的软件过程是围绕着开发目标,交织着技术、协作、管理等方面工作的活动序列。 软件过程活动是软件过程的基本构成部分,完成某一方面的特定任务。活动的描述分为四部分:成果(软件过程活动的产品)、角色(软件过程中的参与人及职责)、前置条件(活动开展的前提)和后置条件(活动完成后对软件开发系统的影响),之后软件活动包括对项目的可行性研究和需求分析(软件规约),项目的设计与实现,项目的验证与确认(软件测试等)以及软件进化(完善软件以更好地满足用户需求)。 由此产生了多种软件过程模型,软件过程模型是一个特定软件过程的简称,给出软件开发的全部过程、活动和任务的结构框架,明确规定要完成的主要活动、任务和开发策略。常见的软件过程模型有:瀑布模型、增量模型、原型模型、螺旋模型、RUP、敏捷开发等 二.典型软件开发过程模型介绍 1.瀑布模型 瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改

2020-02-24

僤鯓⒐⒋嵵緔 提交于 2020-02-24 23:30:40
软件工程实践者的研究方法读书笔记 《软件工程—实践者的研究方法》这本书内容丰富,从软件工程的定义、软件过程、建模、质量管理到管理软件项目和软件工程发展趋势的探讨,作者逐个展开并做了大量的讲解。内容丰富,当然书也是非常厚。 这本书不像之前翻阅的软件工程书,里面有大量篇幅讲解敏捷开发,还有WebApp和移动App的分析、设计、测试和质量管理等。书中内容不局限于理论知识的阐述,使用大量篇幅在简单实例中进行分析和设计,主要以SafeHome来演示软件项目如何推进。也与Brooks的人月神话不同,Brooks的人月神话以工程项目中出现的重大问题为主线,以技术为核心,分析了软件开发和软件工程存在的一些问题,探寻到底有没有存在消灭“人狼”的“银弹”;而本书,我觉得作者想呈现给大家一套比较完整的软件工程理论体系,同时以项目示例演示如何将各种理论方法应用于项目工程。 本书主要分为五大部分,软件过程、建模、质量管理、管理软件项目和软件工程高级课程。在五部分之前还用了两章来讲述软件的定义和软件工程。软件是:(1)指令的集合(计算机程序),通过执行这些指令可以满足预期的特性、功能和性能需求;(2)数据结构,使得程序可以合理利用信息;(3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序的操作和使用。IEEE对软件工程下的定义是:(1)将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护

面向对象软件工程知识点

本秂侑毒 提交于 2020-02-01 11:16:17
面向对象软件工程知识点 1.封装是指把对象的(A)结合在一起,组成一个独立的对象。 A.属性和操作 B.信息流 C.消息和事件 D.数据的集合 2.状态图和活动图建立了UML面向对象开发过程中的对象动态(B)模型。 A.交互 B.状态 C.体系结构 D.软件复用 3.UML的(C)模型图由活动图、顺序图、状态图和合作图组成。 A.用例 B.静态 C.动态 D.系统 4.在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用(A)。 A.活动图 B.状态图 C.配置图 D.构建图 5.设计模式就是对(D)的描述或解决方案,往往直接对应一段程序代码。 A.某个构件 B.成熟的设计 C.一个用例 D.特定问题 6.类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必须有(C)。 A.正负号 B.动作 C.具体值 D.私有成员 7.顺序图的模型元素有(A)、消息、生存线、激活期等,这些模型元素表示某个用例中的若干个对象和对象之间所传递的消息,来对系统的行为建模。 A.对象 B.箭头 C.活动 D.状态 8.状态图可以表现(B)在生存期的行为、所经历的状态序列、引起状态转移的事件以及因状态转移而引起的动作。 A.一组对象 B.一个对象 C.多个执行者 D.几个子系统 9.使得在多个类中能够定义同一个操作或属性名,并在每一个类中有不同的实现的一种方法是(B)。 A.继承

软件工程--软件过程模型

 ̄綄美尐妖づ 提交于 2020-01-15 04:23:51
软件工程--软件过程模型 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。常见的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。 1.瀑布模型 这个特点有两重含义: 1.必须等前一阶段的工作完成之后,才能开始后一阶段的工作; 2.前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。 瀑布模型每个阶段都应坚持两个重要做法: 1.每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。 2.每个阶段结束前都要对所完成的文档进行评审,以便迟早发现问题,改正错误。事实上越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。 可以说瀑布模型是由文档驱动的。这个事实也是它的一个缺点,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。瀑布模型历史悠久、广为人知的,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是

CMM:软件成熟度模型

こ雲淡風輕ζ 提交于 2020-01-12 18:47:50
一、CMM简介 CMM,英文全称为Capability Maturity Model for Software,即:软件成熟度模型。 CMM的核心是把软件开发视为一个过程。它是对于软件在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。 根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化,使企业能够更好地实现商业目标。 分级:一级为 初始级 ,二级为 可重复级 ,三级为 已定义级 ,四级为 已管理级 ,五级为 优化级 。 优点: 1、提高软件开发的管理能力,因为CMM可提供软件公司自我评估的方法和自我提高的手段; 2、提高软件开发效率; 3、提高软件质量; 4、提高软件竞争力; 二、初始级(Initial) 特点:软件工程管理制度缺乏,过程缺乏定义、混乱无序。经常由于缺乏管理和计划导致时间、费用超支,管理方式属于反应式,主要用来应付危机,过程不可预测,难以重复。 即使制定了一些软件工程规范,但如果规范未能覆盖基本的关键过程要求,且执行时没有相关资源的支持保证,仍将其视为初始级。 关键词:技术负债 提高:建立项目过程管理,建立各种计划,开展QA活动。 三、可重复级(Repeatable) 特点:基于类似项目的经验,建立了基本的项目管理制度,采取了一定的资源控制手段。管理人员可及时发现问题,采取应对措施。 软件开发的首要问题不是技术问题而是管理过程

软件过程模型

狂风中的少年 提交于 2020-01-09 04:19:35
软件过程模型类型 瀑布模型--------------------------70年代,结构化 原型模型--------------------------80年代,需求变更 增量模型--------------------------80年代,多版本开发 螺旋模型--------------------------80年代,降低风险 喷泉模型--------------------------90年代,面向对象 统一软件开发过程--------------90年代,完美、完整(RUP) 敏捷过程与极限编程-----------00年代,以人为本 瀑布模型 一种基于里程碑的、阶段性的过程模型 文档是每个阶段的成果体现 每阶段需要评审 输入输出 简单易理解易操作 优点: 需求稳定、变化很小且开发人员能够一次性获取全部需求的项目 软件开发人员具有丰富经验,对于应用领域非常熟悉 软件项目本身的风险很低 缺点: 不接受需求模糊、变更 错误发现太迟 开发进度缓慢 中间成果难利用 抗风险能力弱 快速原型模型 背景:需求分析较难开展,无法固化用户需求 用户熟悉的是业务但不懂得开发的技术,且开发者熟悉具体的开发方法、工具等技术内容 而不明白相关的业务流程 用户和开发者在试用或演示原型过程中加强沟通和反馈,通过反复评价和改进原型,减少双方的误解,降低缺陷引入的几率

软件工程学习笔记(一):软件工程

倾然丶 夕夏残阳落幕 提交于 2020-01-07 18:06:37
1 计算机软件 1.1 软件 计算机软件是指计算机系统中的程序以及文档,程序是计算任务处理对象和处理规则的描述. 1.2 软件特点 一种逻辑实体. 维护工作量大. 维护软件过程中会引入副作用. 1.3 软件分类 1.3.1 系统软件 最靠近硬件的一层,比如操作系统. 1.3.2 支撑软件 软件开发,维护与运行的软件,比如各种IDE等. 1.3.3 应用软件 应用于特定领域的软件. 2 软件语言 软件语言主要包括需求定义语言,功能性语言,设计性语言,程序设计语言与文档语言. 2.1 需求定义语言 用于书写软件需求定义的语言,包括功能需求与非功能需求.典型的语言有PSL. 2.2 功能性语言 书写软件功能规约的语言,描述软件做什么以及只做什么.典型语言有广谱语言,Z语言. 2.3 设计性语言 书写软件设计规约的语言,是软件设计的严格而完整的描述.典型语言有PDL. 2.4 程序设计语言 即编程语言,可以分为低级语言与高级语言,过程式语言与非过程式语言,通用语言与专用语言,交互式语言与非交互式语言,顺序语言与并发语言与分布语言. 2.5 文档语言 书写软件文档使用的语言,比如Z语言. 3 软件工程 软件工程是建立和使用一套合理的工程原则,以便获得经济的软件,这种软件是可靠的,可以在实际机器上高效地运行.软件工程是应用计算机科学理论以及工程管理原则的方法

如何评测软件工程知识技能水平

♀尐吖头ヾ 提交于 2020-01-06 20:14:24
根据本课程的学习以及自身的知识和经验,您认为一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面,请您简要总结一下:   1.具有优秀的学习能力,IT技术更新很快,软件工程师应具备的技能里很重要的一点就是学习能力。只有具备了学习能力,才能很快适应市场与业务的需要,有时候工作的需求不是你在学校就已经学过的,只能靠着之前积累的经验与快速学习熟悉新的知识,升华自己的能力,为以后成为架构师后者其他职位打下基础。   2.具有扎实的计算机专业知识,吃透高等数学、离散数学、算法等课程。(1)基础编程语言,编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言通常来说,软件工程师往往需要掌握多门编程语言。(2)算法。算法是软件工程师的重点知识技能,算法的掌握情况往往能够决定软件工程师的成长高度。(3)数据库。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有Oracle数据库和SQL Server等。   3.具有对这个行业的热爱,才有能坚持与继续学习的动力。   4.具有良好的交流与沟通能力,现在的软件开发永远不是一个人的游戏,需要与团队成员协调沟通,分配好工作的任务与进度,才能够开发出高质量的软件。 一、选择题 1、软件工程的出现主要是由于( ) A.程序设计方法学的影响