考试:软件工程(01)

软件开发生命周期

◆软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标, 具体可分成问题定义、可行性研究、需求分析等。

◆软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。

◆软件运行和维护:就是把软件产品移交给用户使用。

◆软件系统的文档可 以分为用户文档和系统文档两类,用户文档主要描述系统功能和使用方法,并不关 系这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。

◆软件工程过程是指为获得软件产品包括以下4个方面活动:

(1)P(Plan)------ 软件规格说明。规定软件的功能及其运行时的限制。

(2)D(Do)---- 软件开发。开发出满足规格说明的软件。

(3)c(Check)------ 软件确认。确认开发的软件能够满足用户的需求。

(4)A (Action)------软件演进。软件在运行过程中不断改进以满足客户新的需求。

软件系统工具 通常可以按软件过程活动将软件工具分为:

软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具等。

软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。

软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

◆软件设计四 个活动:数据设计、架构(体系结构)设计、人机界面(接口)设计和过程设计。

CMM

CMMI

I就是集成

目前都是cmmi.

软件过程模型

瀑布模型

◆瀑布模型 ( SDLC ): 瀑布模型是一个经典的软件生命周期模型, 将软件开发分为 :可行性分析(计划)、需求分析、软 件设计(概要设计、详细设计)、编码(含单 元测试)、测 试、运行维护等几个阶段。

◆瀑布模型特点

( 1 ) 从上一项开发活动接受该项活动的工作对象作为输入。

(2)利用这 一 输入,实施该项活动应完成的工作内容。

(3)给出该项活动的工作成果,作 为 输 出传给下一项开发活 动 。

( 4 ) 对该项活动的实施工作成果进行评审。若其工作成果得 到确认,则继续进行下一项开发活动;否则返回前一项,甚 至更前项的活动。尽量减少多个阶段间的反复。以相对来说 较小的费用来开发软件

按照顺序来的过程。

螺旋模型

◆螺旋模型是一个 演化软件过程模型 ,将 原型实现的迭代特 征与线性顺序(瀑布)模型中控制的和系统化的方面结合 来。在螺旋模型中, 软件开发是一系列的增量发

◆开发过程具有 周期性重复的螺旋线状 。四个象限分别标志 每个周期所划分的四阶段: 制订计划、风险分析、实施工程 和客户评估 。螺旋模型 强调了风险分析 ,特别 适用于庞大而 复杂的、高风险的系统

这里主要是 对风险分析。

V模型

单编-集详-系概-验需

原型模式

◆原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用 户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最 终 弄 清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满 意的产品。

◆原型法认为在很难一下子全面准确地提出用户需求的情况下,原型应当具备 的特点如下。

(1) 实际可行

( 2 ) 具 有最终系统的基本特征

(3) 构造方便、快速,造价低。原型法的特点在于原型法对用户的需求是动态 响应、逐步纳入的。

增量模型

◆增量模型:首先 开发核心模块功能 ,而后与用户确认,之后再开发次核心模 块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发, 优先级最高的服务最先交付

◆特点:但由于并不是从系统整体角度规划各个模块,因此 不利于模块划分 难点在于 如何将客户需求划分为多个增量 。与原型不用的是 增量模型的每一次 增量版本都可作为独立可操作的作品 ,而原型的构造一般是为了演示。

喷泉模型

◆喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型,适合于面向 对象的开发方法。使开发过程具有迭代性和无间隙性。

快速开发模式CBSD

◆基于构件的开发模型 CBSD: 先包装的构件来构造应用系统 。构件可以

是组织内部开发的构件,也可以是商品化成品软件构件。特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复

用,因此可以提高可靠性,节省时间和成本。

形式化方法模型

形式化方法模型:建立在 严格数学基础上 的一种软件开发方法,主要活动是 生成计算机软件形式化的数学规格说明。

敏捷开发模型(重点看)

开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划。

◆敏捷方法区别于其他方法的两个特点:

( 1 ) 是 "适应性"而非"预设性"。

( 2 ) 是 "面向人的"而非"面向过程的"。

◆敏捷方法的核心思想:

(1)敏捷方法是适应型,而非可预测型。 拥抱变化,适应变化。

(2)敏捷方法是以人为本,而非以过程为 本。发挥人的特性。

(3) 迭代增量式的开发过程。以原型开发 思想为基础,采用法代增量式开发,发行版 本小型化。

统一过程模型RUP(重点)对应的敏捷开发

◆ RUP把软件开发生命周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次

由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段如下。

·初始阶段:定义最终产品视图和业务模型,并确定系统范围。

·细化阶段:设计及确定系统的体系结构,制订工作计划及资源要求。

·构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。

·移交阶段:把产品提交给用户使用。

◆ RUP 中定义了如下一些核心概念,理解这些概念对于理解RUP 很有帮助。

·角色:Who 的问题。角色描述某个人或一个小组的行为与职责。 RUP预先定义了很多角色,如体 系结构师、设计人员、实现人员、测试员和配置管理人员等,并对每一个角色的工作和职责都做 了详尽的说明。

·活动:How 的问题。活动是一个有明确目的的独立工作单元。

·制品:What 的问题。制品是活动生成、创建或修改的一段信息。

·工作流:When 的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值 的产品,并显示了角色之间的关系。

RUP 特点

(1) 用例驱动 :需求分析、设计、实现和测试等活动都是用例驱动的

(2) 以体系结构为中心 :包括系统的总体组织和全局控制、通信协议等。是一个多维的 结构会采用多个视图来描述。在典型的4+1视图模型中:

分析人员和测试人员 关心的是系统的行为,会侧重于用例视图;

◆最终用户关心的是系统的功能,会侧重于逻辑视图;

程序员 关心的是系统的配置、装配等问题,会侧重于实现视图;

系统集成人员 关心的是系统的性能、可伸缩性、吞吐率等问题,会侧重于进程 视图;

系统工程师 关心的是系统的发布、安装、拓扑结构等问题,会侧重于 部署视图。

(3) 迭代与增量 。把整个项目开发分为 多个迭代过 程。在每次选代中,只考虑系统的一部分需

求,进行分析、设计、实现、测试和部署等过程;每次迭代是在己完成部分的基 础上进行的,次增加一些新的功能实现,以此进行下去,直至最后项目的完成

逆向工程

相关推荐
Dola_Zou4 小时前
CodeMeter 8.20&AxProtector 11.50版本更新
安全·软件工程·软件加密
⠀One0ne2 天前
软件设计原则(Java实现/给出正例反例)
java·软件工程
茜茜西西CeCe2 天前
软件工程知识点总结(7):软件项目管理
软件工程·甘特图·软件项目管理·wbs·gantt
帅次2 天前
重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估支持浏览器在线编程的系统架构设计
性能优化·重构·软件工程·软件构建·个人开发·代码规范·规格说明书
长安er3 天前
编译原理/软件工程核心概念-问题理解
java·开发语言·软件工程·编译·指针·敏捷开发·瀑布模型
z2014z4 天前
系统架构设计师教程 第5章 5.1 软件工程 笔记
笔记·系统架构·软件工程
糖拌西红柿多放醋4 天前
架构师知识梳理(七):软件工程-测试
软件工程
buyicn5 天前
汇编:嵌入式软件架构学习资源
软件工程
Alueaxten(上学版)6 天前
【软考】程序设计语言基础
经验分享·笔记·学习·软件工程·软考