软件工程复习资料整理.docx

上传人:b****4 文档编号:2837071 上传时间:2022-11-15 格式:DOCX 页数:28 大小:911.62KB
下载 相关 举报
软件工程复习资料整理.docx_第1页
第1页 / 共28页
软件工程复习资料整理.docx_第2页
第2页 / 共28页
软件工程复习资料整理.docx_第3页
第3页 / 共28页
软件工程复习资料整理.docx_第4页
第4页 / 共28页
软件工程复习资料整理.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

软件工程复习资料整理.docx

《软件工程复习资料整理.docx》由会员分享,可在线阅读,更多相关《软件工程复习资料整理.docx(28页珍藏版)》请在冰豆网上搜索。

软件工程复习资料整理.docx

软件工程复习资料整理

第一章软件工程介绍

软件工程的概念

IEEE对软件工程的定义:

(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。

(2)在

(1)中所述方法的研究。

过程、方法和工具

过程:

为了获取高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

方法:

各项任务的技术方法,回答“怎么做”的问题。

工具:

为运用方法而提供的自动或半自动的软件工程支撑环境

软件工程层次图

软件危机与软件工程的关系、产生的原因及其表现

软件工程的提出:

软件工程主要是针对20世纪60年代的软件危机而提出的

软件危机定义:

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

产生软件危机的原因:

客观原因:

软件缺乏“可见性”,管理和控制其开发过程相对困难

软件大多规模庞大,而复杂性随规模以指数速度上升

主观原因:

错误的认识和做法

忽视软件需求分析的重要性—急于求成,仓促上阵

认为软件开发就是写程序—编程只占全部工作量的10%--20%,软件配置主要包括程序、文档和数据

轻视软件维护—维护费用占总费用的55%--70%

软件神话一些错误认识

管理神话:

我们已经有了一本写满软件开发标准和规程的宝典。

它无所不包,囊括了我们可能问到的所有问题

如果我们未能按时完成计划,我们可以通过增加程序员人数而赶上进度

如果将一个软件外包给另一家公司,则我们可以完全放手不管。

用户神话:

有了对项目目标的大概了解,便足以开始编写程序,我们可以在之后的项目开发过程中逐步了解细节。

虽然项目需求不断变更,但是因为软件是弹性的,因此可以很容易地适应变化

从业者神话:

当我们完成程序并将其交付使用之后,我们的任务就完成了。

直到程序开始运行,才能评估其质量

对于一个成功的软件项目,可执行程序是惟一可交付的成果。

软件工程将导致我们产生大量无用文档,并因此降低工作效率。

第二章过程模型

掌握五个最基本的框架活动:

将整个软件过程再进一步细分为各个相对独立的功能块,即过程框架。

(以工作开展的时间为线索)。

五个最基本的框架活动:

沟通:

与客户之间的交流与写作

策划:

为后续的软件工程工作制定计划

建模:

包括分析和设计

构建:

编码和测试

部署:

软件交付用户,用户对其进行评估并反馈意见。

了解典型的普适性活动

适用于任何一个框架活动:

软件项目跟踪和控制;风险管理;软件质量保证;正式技术评审;测量;软件配置管理;可复用管理;工作产品的准备和生产

了解什么是CMMI

能力成熟度模型集成(CMMI),用于预测软件开发组织所开发的系统和软件工程能力

(5个能力成熟等级)

CMMI定义了每一个过程域的“特定目标”,以及达到该目标所需的“特定实践”。

 

理解瀑布模型;增量模型;RAD模型;原型模型;螺旋模型;协同开发模型;基于构件模型;形式化方法模型;面向方面模型;统一过程

适用范围、特点、优缺点

瀑布模型:

也称为线性模型或传统生存周期,V模型

适用范围:

通常发生在对一个已有系统进行明确定义的适应性调整和增强的时候

对于一个新的项目,需求必须是准确定义和相对稳定的

线性顺序模型特点:

阶段间的顺序性和依赖性;

文档驱动性;

严格阶段评估;

开发初期需要清楚全部需求;

开发周期长、风险大。

瀑布模型的缺点:

顺序太严格。

实际工作经常是在多个环节之间来回反馈调整,而不是将一个环节完成后再继续前进。

产品在最后阶段才与客户见面,从心里学的角度讲有些考验客户。

另外,如果此时才发现问题,需要改正,工作量将会很大。

效率可能不高。

瀑布模型的优点:

它提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。

虽然有不少缺陷但比在软件开发中随意的状态要好得多。

增量模型:

以迭代方式运用瀑布模型。

特点:

一般来讲,最重要的增量放在前面。

每次交付的增量产品都是可用的。

适合于功能可以划分,而且时间不紧迫的情况。

可以规避一定的风险。

如有些技术还不稳定,将这部分放到后边。

RAD模型:

快速应用程序开发(RapidApplicationDevelopment,RAD)是一种侧重于短暂的开发周期的增量软件模型。

瀑布模型的高速变体,通过基于构件的方法快速实现。

适于工期紧张,又可细分功能,还要有合适的构件。

缺点:

需要投入更多的人力。

各团队要紧密协作。

只适应于特殊的系统,必须可以合理模块化。

不适于高性能需求(若需调构件接口)

系统需求灵活,现有构件不容易轻易满足。

技术风险很高的情况下,不宜采用该模型。

演化过程模型:

软件,类似于其他复杂的系统,会随着时间的推移而演化

软件有技术能力的限制,时间的限制,认识理解的限制,其它客观因素的限制。

演化模型也是一种迭代模型。

包括:

原型模型、螺旋模型、协同开发模型。

原型是一个循环的过程,所以也是迭代的过程。

原型模型:

对原型的基本要求:

体现主要的功能、提供基本的界面风格、展示比较模糊的部分,以便于确定或进一步明确,防患于未然。

原型最好是可以运行的,最少要在各主要功能模块之间能够建立相互连接

原型的处理方法:

抛弃型:

在获取的明确需求的基础上,重新设计与开发,成本相对高,小公司一般慎用。

演化型:

在原型的基础上继续开发。

原型模型的优点:

能让人(开发者或客户)很快见到产品,有成就感。

能渐进地启发客户提出新的要求或任务。

原型模型的缺点:

容易蒙骗客户,也可能由此给自己带来麻烦。

往往只为结果,而不考虑技术手段,为今后埋下隐患。

系统可能考虑不周全。

与增量模型相比:

增量模型在开发以前基本能确定系统的需求,虽然在以后的过程中也可能不断完善;原型开发适应于预先不太清楚系统的需求。

增量模型的反馈可能较少,而原型开发需要不断的大量反馈信息。

螺旋模型:

结合了原形的迭代性质和瀑布模型的系统性和可控性特点;风险驱动,引入非常严格的风险识别、风险分析和风险控制;早期迭代中可能是一个理论模型或原形。

螺旋模型与原型相比:

螺旋模型虽不像增量模型中对功能有明确界定,但有比原型要清晰一些。

螺旋模型的反馈要求持续于产品的整个生命期。

适合于大型软件的开发。

协同开发模型又叫协同工程。

定义了一个活动的网络,网络上每个活动、动作和任务同时存在。

过程网络中某一点产生的事件可以触发状态的转换。

可适用于所有类型的软件开发。

基于构件模型:

什么是构件?

没有统一的定义

GartnerGroup定义:

运行时软件构件是一个可动态绑定的、含一个或多个程序的软件包,它作为一个独立单位,通过运行时可辨别的文档化接口加以管理和存取

类似于螺旋模型,本质上是演化模型。

构件开发的步骤:

对所需构件进行评估。

考虑构件的集成。

设计系统的软件框架。

将构件放入框架。

进行测试。

形式化方法模型的主要活动是生成计算机软件形式化的数学规格说明。

特点:

精密、准确。

缺点:

难度大,成本高,可用人力资源少,用户不易理解,有时甚至无法完成。

方法:

有穷状态机、Petri网、Z语言等。

面向方向的模型:

将系统分成若干相对较独立的组成部分,这些部分称为方面。

面向方面技术包括面向对象技术,比它大。

系统的方面包括用户接口、协调工作、发布、持续性、存储器管理、事务处理、安全、完整性等。

还不成熟。

具有螺旋型和协同型的共同特点。

统一过程:

试图将传统软件模型(惯例软件模型)和敏捷过程模型的优点结合起来,即统一起来。

一些术语:

面向对象(Object-Oriented,OO),面向对象分析(Object-OrientedAnalysis,OOA),面向对象分析(Object-OrientedDesign,OOD).

统一过程包括:

起始,细化,构建,转换,生产等步骤。

起始:

包括客户沟通和策划活动,此时的构架只是主要子系统及其功能、特性的试探性概括。

细化:

包括用户沟通和通过过程模型的建模活动,扩展体系结构以包括软件的五种视图:

用例模型、分析模型、设计模型、实现模型和部署模型。

构建:

与通过软件过程的构建活动相同。

采用体系结构模型作为输入,开发或获取软件构件,使得最终用户能够操作用例。

转换:

软件被提交给最终用户进行Beta测试,用户反馈报告缺陷及必要的变更。

另外,发布必须的支持信息:

用户手册,用户指南及安装步骤等。

结束时,软件增量成为可用的发布版本。

生产:

与通过软件工程的部署一致。

提供运行环境支持,提交并评估缺陷报告和变更请求。

第三章敏捷开发

基于敏捷原则进行的软件开发过程,视为敏捷过程。

(所谓“基于”,是指充分考虑,而不是全部包含。

)有自适应和增量提高的过程即是敏捷过程。

掌握敏捷开发宣言

普遍存在的变化是敏捷的基本动力

理解有哪些敏捷过程模型:

极限编程、自适应软件开发、动态系统开发、Scrum、Crystal、特征驱动开发

极限编程关键思想

极限编程(eXtremeProgramming,XP)力求用最少的精力活动最大的成果,运用已有成果、方法。

Scrum关键思想

Scrum原则与敏捷宣言一致:

组织小型团队以达到“沟通最大化、负担最小化、非语言描述、非形式化知识”

过程对技术和业务变化必须具有适应性,以“保证制造具有最好可能的产品”

过程生产频繁发布“可检查、可调整、可测试、可文档化、可构建”的软件增量

了解一些过程模型。

开发工作和开发人员分为“清晰的、低耦合的部分或包”

坚持在产品构建过程中进行测试和文档化

Scrum过程提供“在任何需要的情况下都能完成产品的能力”。

自适应软件开发;

自适应软件开发(AdaptiveSoftwareDevelopment,ASD)

ASD的三个重点:

思考---启动项目并完成自适应循环策划;协作---但同时鼓励个人主义;学习---三种方式,焦点组(学习用户反馈的信息),正式技术评审(自我审视),事后剖析(回望自己团队前面的工作)。

动态系统开发;

动态系统开发(DynamicSystemDevelopmentMethod,DSDM)---通过在可控项目环境中使用增量原型开发,模式完全满足对时间有约束的系统的构建和维护。

特点:

在每个增量的环节,并不完全完成任务。

留下20%在以后完成。

Crystal

目的是开发一种提倡“机动性的”的软件开发方法

特征驱动开发

特征驱动开发(FeatureDrivenDevelopment,FDD)

特征:

能在更短时间内完成的小功能。

可行性研究

了解可行性研究的目的和任务

掌握数据流图画法(DFD)

第四章理解需求

需求工程(RequirementEngineering,RE)

是指致力于不断理解需求的大量任务和技术。

需求工程在设计和构造之间建立起联系的桥梁。

为什么需求工程特别困难?

客户说不清楚需求;需求自身不断变动;分析人员或客户理解有误

需求分析的三个层次

业务需求、用户需求、功能需求—也包括非功能需求

业务需求:

反映了组织机构或客户对系统、产品高层次的目标要求。

用户需求:

文档描述了用户使用产品必须要完成的任务。

功能需求:

定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。

需求工程中的七个活动

起始;导出;精化;协商;规格说明;确认;管理

1.起始:

软件工程是询问一些似乎与项目无直接关系的问题

泛谈起始,有各种各样的情况

目的是对问题、方案需求方、期望方案的本质、客户和开发人员之间初步的交流和合作的效果建立基本的谅解

2.导出

询问客户、用户和其他人,系统或产品的目标是什么?

想要

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1