文档库 最新最全的文档下载
当前位置:文档库 › xin复件11 软件工程复习

xin复件11 软件工程复习

xin复件11 软件工程复习
xin复件11 软件工程复习

第一章

1.1 软件危机

1.1.1定义:软件危机(软件萧条或是软件困扰)是指在计算机软件的开发和维护过程中所遇到

的一系列严重问题。即包含两方面的问题:1.如何开发软件,以满足对软件日益增长的需求 2.如何维护数量不断膨胀的已有软件

典型表现:1、对软件开发成本和进度的估计不准确2、用户对“已经完成的”软件系统不满3、软件产品的质量往往靠不住4、软件常常是不可维护的5、软件通常没有适当的文档资料6、软件成本在计算机系统总成本中所占的比例逐年上升7、软件开发生产率提高的速度,远跟不上计算机应用迅速普及的趋势

1.1.2 产生软件危机的原因

1) 软件本身的特点有关(如:缺乏可见性、规模庞大)

2) 软件开发与维护的方法不正确(忽视软件需求分析)

3) 对于软件生命周期认识不够4)软件成分5)修改代价

6) 开发人员与管理人员重视开发而轻视问题的定义和软件维护

7) 软件开发技术落后8) 软件管理技术差

1.1.3 解决软件危机的途径就是软件工程学的生成过程

1)对计算机软件的正确认识:软件是程序、数据及相关文档的完整集合。

2)软件开发是团队协作共同完成的工程项目,将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。

3)研究和推广成功的软件开发技术和方法,必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法

4)开发和使用更好的软件工具,使用的软件工具有机地集合成一个整体,支持软件开发的全过程

1.2.1 软件工程定义

一般定义:概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

典型定:1968年第一届NA TO会议:“软件工程是为了经济地获得可靠的且能在实际机器上有效运行的软件,而建立何使用完善的工程原理”。1993年IEEE: “软件工程是:a、把系统的、规范的、可度量的途径用于软件开发、运行和维护过程。也就是把工程应用于软件;b、研究a中提到的途径”

1.3 软件生命周期8个阶段及其任务

软件生命周期的三个时期:(1)软件定义(2)软件开发(3)软件维护

软件定义组成:问题定义、可行性研究、需求分析

软件开发组成:总统设计、详细设计、编码和单元测试,综合测试

(1)问题定义:要解决什么问题

(2)可行性研究:问题有解决的方法吗

(3)需求分析:目标系统必须做什么

(4)总统设计:如何实现目标系统

(5)详细设计:如何具体地实现系统

(6)编码和单元测试:写出正确的、易理解的、易维护的程序模块

(7)综合测试:通过各种类型的测试和调试使软件达到预定的要求

(8)软件维护:通过各种维护活动使系统持久地满足用户的需要

类维护活动:改正性维护、适应性维护、完善性维护、预防性维护

1.4软件过程模型

(1)瀑布模型:1、阶段间有顺序性和依赖性2、推迟实现的观点3、质量保证的观点

优点:1、是一种文档驱动的模型2、采用规范的方法、每个阶段必修提交文档、每个阶段的产品必须经过质量保证小组的仔细验证

缺点:1、由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。

(2)快速原型模型:快速建立起来的可以在计算机上运行的程序,其通常功能是最终产品能完成的功能的子集。

优点:软件产品的开发基本上是线性顺序进行的(指不带反馈)

(3)螺旋模型:使用原型及其他方法来尽量降低风险,可看作在每个阶段之前都增加了风险分析过程的快速原型模型

优点:1、风险驱动的2、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标

(4)喷泉模型

1、“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。

2、图中代表不同阶段的圆圈相互重叠,这明确表示两个活动之间存在交迭;

3、图中在一个阶段内的向下箭头代表该阶段内的迭代(或求精)。

4、图中较小的圆圈代表维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。第二章

2.1可行性分析的三个方面

1、技术可行性:使用现有的技术是否能实现该系统吗?

2、经济可行性:系统的经济效益能够超过它的开发成本吗?

3、操作可行性:系统的操作方式在这个用户组织内行得通吗?

2.2数据流图(DFD)

数据流图(DFD):是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。描绘数据在软件中流动和被处理的逻辑过程。

数据流图4种成分:(1)原点或终点(2)处理(3)数据存储(4)数据流

2.3可行性研究报告的内容

投资必要性、技术的可行性、财务可行性、组织可行性、经济可行性、社会可行性、风险因素及对策。第三章

3.1需求分析的任务:1、功能需求2、性能需求3、可靠性和可用性需求4、出错处理需求5、接口需求6、约束7、逆向需求8、将来可能提出的要求

3.2需求规格说明书

第五章

5.1总体设计

1、需求分析阶段回答系统必须“做什么”

2、总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为

概要设计或初步设计。

5.2设计原理

模块:是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。

1、按照模块的定义,过程、函数、子程序和宏等,都可作为模块。面向对象方法学中的对象是模块,对象内的方法(或称为服务)也是模块。模块是构成程序的基本构件。

2、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集

成起来构成一个整体,可以完成指定的功能满足用户的需求。

3、模块化是软件的单个属性,它使程序能被理性地管理

5.2.2 抽象

1、在现实世界中,事物、状态和过程之间总存在着某些共性,把这些共性集中、概括起来,而暂时忽略它们的差异,这就是抽象。

2、软件工程过程的每一步都是对软件解法的抽象层次的一次精化。在系统工程时,软件划分为基于计算机的系统的一种元素;在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计过渡时,抽象的程度也就随之降低;最后,当源程序写出来以后,也就达到了抽象的最低层。逐步求精和模块化的概念,与抽象是紧密相关的。

5.2.3逐步求精

1、逐步求精:是人类解决复杂问题时采用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计和实现技术)的基础。可以把逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”

2、逐步求精之所以如此重要,是因为人类的认知过程遵守Miller法则:一个人在任何时候都只能把注意力集中在(7±2)个知识块上。

3、逐步求精方法的强大作用就在于,它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上,而忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑。

4、求精实际上是细化过程。

5、抽象与求精是一对互补的概念

5.2.4模块独立

1、模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。

2、开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。换句话说,希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。

3.衡量模块独立性的定性标准:

(1)耦合:衡量不同模块彼此间互相依赖(连接)的紧密程度

(2)内聚:衡量一个模块内部各个元素彼此结合的紧密程度

3.1耦合(低—高:非直接耦合—数据耦合—标志耦合—控制耦合—外部耦合—公共耦合—内容耦合)

耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

3.1.1模块化设计的原则和目标

(1)目标:建立模块间耦合度尽可能松散的系统(2)使用耦合的原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合

3.2内聚(强—弱:功能内聚—顺序内聚—信息内聚—通信内聚—过程内聚—时间内聚—逻辑内聚—偶然

内聚)

3.2.4使用内聚的原则:重要的是设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度降低模块间的耦合程度,从而获得较高的模块独立性。

5.3信息流的类型(两种)

5.3.1变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。

5.3.2 事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流。图5.9中的处理T称为事务中心,它完成下述任务:(1) 接收输入数据(输入数据又称为事务);(2) 分析每个事务以确定它的类型;(3) 根据事务类型选取一条活动通路。

第六章

6.1结构化程序设计

1、经典定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并

且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

2、更全面的定义:结构程序设计是尽可能少用GO TO语句的程序设计方法。最好仅在检测出错误时

才使用GO TO语句,而且应该总是使用前向GO TO语句。

6.2过程设计工具(图形、图表和语言)

6.2.1程序流程图

程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,从20世纪40年代末到70年代中期,程序流程图一直是软件设计的主要工具。

优点

对控制流程的描绘很直观,便于初学者掌握。

缺点

(1) 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去

考虑程序的全局结构。

(2) 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精

神,随意转移控制。

(3) 程序流程图不易表示数据结构。

6.2.2 盒图(N-S 图)

Nassi 和Shneiderman 提出了盒图,又称为N-S 图,它有下述特点:

(1) 功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。

(2) 不可能任意转移控制。

(3) 很容易确定局部和全程数据的作用域。

(4) 很容易表现嵌套关系,也可以表示模块的层次结构。

6.2.3 PAD 图

PAD 是问题分析图(problem analysis diagram)的英文缩写,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。图6.5给出PAD 图的基本符号。

PAD 图的主要优点如下:

(1) 使用表示结构化控制结构的PAD 符号所设计出来的程序必然是结构化程序。

(2) PAD 图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD 图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD 图中竖线的总条数就是程序的层次数。

(3) 用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖

线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。

(4) 容易将PAD图转换成高级语言源程序,种转换可用软件工具自动完成,从而可省去人工编码的工

作,有利于提高软件可靠性和软件生产率。

(5) 即可用于表示程序逻辑,也可用于描绘数据结构。

(6) PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随

着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计,

相当于下图程序

6.2.4判定表

当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。然而判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。

一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。

6.2.5判定树

判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。多年来判定树一

直受到人们的重视,是一种比较常用的系统分析和设计的工具

6.2.6 PDL

过程设计语言(PDL)也称为伪码,伪码采用的类高级语言通常是类Pascal、类C风格的,其中的操作处理描述采用结构化短语(可以是英语或者是汉语)。

PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。因此,一般说来,PDL是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。

特点:

关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如,if…fi(或endif)等等。

自然语言的自由语法,它描述处理特点。

数据说明的手段。应该既包括简单的数据结构(例如纯量和数组),又包括复杂的数据结构(例如,链表或层次的数据结构)。

模块定义和调用的技术,应该提供各种接口描述模式。

优点:

可以作为注释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也相应地修改PDL 注释,因此有助于保持文档和程序的一致性,提高了文档的质量。

可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。

已经有自动处理程序存在,而且可以自动由PDL生成程序代码。

缺点:PDL是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简

单。

第七章

7.1软件测试的目标

G.Myers给出了关于测试的一些规则,这些规则也可以看作是测试的目标或定义:

1、测试是为了发现程序中的错误而执行程序的过程;

2、好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;

3、成功的测试是发现了至今为止尚未发现的错误的测试。

(了解)软件测试的工作量往往占软件开发总工作量的40%以上

7.2测试方法

测试产品的方法

黑盒测试:已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用

白盒测试:知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行

软件测试方法

黑盒测试:把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试。

白盒测试:前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试。

7.3 测试步骤

大型软件系统的测试过程基本上由下述几个步骤组成:

模块测试:把每个模块作为一个单独的实体来测试,容易设计检验模块正确性的测试方案。模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。在这个测试步骤中所发现的往往是编码和详细设计的错误

子系统测试:子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。模块相互间的协调和通信是这个测试过程中的主要问题,子系统测试的目的是测试模块的接口。

系统测试:系统测试是把经过测试的子系统装配成一个完整的系统来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。

验收测试:验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试。验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。验收测试也称为确认测试。

平行运行:所谓平行运行就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。

平行测试的具体目的有如下几点:1、可以在准生产环境中运行新系统而又不冒风险;2、用户能有一段熟悉新系统的时间;3、可以验证用户指南和使用手册之类的文档;

4、能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。

7.4 白盒测试技术

1、设计测试方案是测试阶段的关键技术问题。

2、所谓测试方案包括具体的测试目的(例如,预定要测试的具体功能),应该输入的测试数据和预期

的结果。

3、因为不可能进行穷尽的测试,选用少量“最有效的”测试数据。

逻辑覆盖:

7.4.1语句覆盖

1、为了暴露程序中的错误,至少每个语句应该执行一次。语句覆盖的含义是,选择足够多的测试

数据,使被测程序中每个语句至少执行一次。

2、语句覆盖对程序的逻辑覆盖很少。此外,语句覆盖只关心判定表达式的值,而没有分别测试判

定表达式中每个条件取不同值时的情况。语句覆盖是很弱的逻辑覆盖标准。

7.4.2判定覆盖

1、判定覆盖又叫分支覆盖,它的含义是,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次

2、判定覆盖比语句覆盖强,但是对程序逻辑的覆盖程度仍然不高

7.4.3条件覆盖

1、条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可

能的结果。

2、条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆

盖却只关心整个判定表达式的值

7.4.4判定/条件覆盖

1、选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达

式也都取到各种可能的结果。

2、有时判定/条件覆盖也并不比条件覆盖更强

7.4.5 条件组合覆盖

1、条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条

件的各种可能组合都至少出现一次。

2、显然,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。

因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。

7.4.6 路径覆盖

路径覆盖的含义是,选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。

7.5黑盒测试技术

黑盒测试着重测试软件功能。黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型的错误。

黑盒测试力图发现下述类型的错误:①功能不正确或遗漏了功能;②界面错误;③数据结构错误或外部数据库访问错误;④性能错误;⑤初始化和终止错误。

测试方法:等价划分、边界值分析、错误推测

等价划分

1、等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出

测试用例。一个理想的测试用例能独自发现一类错误。

2、等价类中每类的一个典型值在测试中的作用与这一类中所有其他值的作用相同。

3、使用等价划分法设计测试方案首先需要划分输入数据的等价类

划分等价类需要经验,下述几条启发式规则可能有助于等价类的划分:

(1)如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),两个无

效的等价类(输入值小于最小值或大于最大值);

(2)如果规定了输入数据的个数,则类似地也可以划分出一个有效的等价类和两个无效的等

价类;

(3)如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的输入

值是一个有效的等价类,此外还有一个无效的等价类(任一个不允许的输入值);

(4)如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若

干个无效的等价类(从各种不同角度违反规则);

(5)如果规定了输入数据为整型,则可以划分出正整数、零和负整数等3个有效类;

(6)如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。

边界值分析

经验表明,处理边界情况时程序最容易发生错误。例如,许多程序错误出现在下标、纯量、数据结构和循环等等的边界附近。因此,设计使程序运行在边界情况附近的测试方案,暴露出程序错误的可能性更大一些。

选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值

上个例子:

输入:‘-32768’预期输出:-32768

输入:‘32767’预期输出:32767

输入:‘-32769’预期输出:-32769

输入:‘32768’预期输出:32768

通常设计测试方案时总是联合使用等价划分和边界值分析两种技术。

错误推测

1、错误推测法在很大程度上靠直觉和经验进行。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。

2、人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误

的例子。这就是错误推测法。

3、错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它

们选择测试用例。

第八章

8.1 软件维护

软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

(了解)平均说来,大型软件的维护成本高达开发成本的4倍左右。目前国外许多软件开发组织把60%以上的人力用于维护已有的软件

8.2软件维护活动的分类4类

改正性维护:在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员。把诊断和改正错误的过程称为改正性维护。

适应性维护:也就是为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。原因:硬件更新快,软件使用寿命长(10年)

完善性维护:在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。为了满足这类要求,需要进行完善性维护。这项维护活动通常占软件维护工作的大部分。

预防性维护:当为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件时。目前这项维护活动相对比较少。

(了解)在全部维护活动中一半以上是完善性维护。国外的统计数字表明,完善性维护占全部维护活动的50%~66%,改正性维护占17%~21%,适应性维护占18%~25%,其他维护活动只占4%左右。

8.3 文档分类(用户文档和系统文档)及作用

文档是影响软件可维护性的决定因素。软件系统的文档可以分为用户文档和系统文档两类。

1、用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;

2、系统文档描述系统设计、实现和测试等各方面的内容。

8.4软件可靠性的概念

第九章

9.1基本概念

对象:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以惟一地标识它的名字,而且向外界提供一组服务。

类:类是对具有相同属性和行为的一个或多个对象的描述。

实例:实例就是由某个特定的类所描述的一个具体的对象

消息:消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。

方法:方法就是对象所能执行的操作,也就是类中所定义的服务。

属性:属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。

封装:封装就是把数据和实现操作的代码集中起来放在对象内部

继承:继承是子类自动地共享基类中定义的数据和方法的机制。

多态:多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。

重载:有两种重载

函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;

运算符重载是指同一个运算符可以施加于不同类型的操作数上面。

9.2类图

类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系。

9.2.1 关联

关联表示两个类的对象之间存在某种语义上的联系。

1、普通关联:普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联

表示。

2、关联的角色

在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用)

3、限定关联:限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变

成一对一,或从多对多简化成多对一。在类图中把限定词放在关联关系末端的一个小方框内。

4、关联类

与一个关联相连的类称为关联类。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。

9.2.2 聚集

聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。

除了一般聚集之外,还有两种特殊的聚集关系,分别是共享聚集和组合聚集。

1、共享聚集

如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享

聚集。

空心菱形

2、组合聚集

组合聚集:如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失(或失去存在价值了),则该聚集称为组合聚集(简称为组成)。

实心菱形

9.2.3 泛化

UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。泛化可进一步划分成普通泛化和受限泛化。

1、普通泛化

普通泛化与继承基本相同

2、受限泛化

可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。

预定义的约束有4种:多重、不相交、完全和不完全。这些约束都是语义约束

多重继承指的是,一个子类可以同时多次继承同一个上层基类

与多重继承相反的是不相交继承,即一个子类不能多次继承同一个基类

9.2.4依赖和细化

依赖关系

1、依赖关系描述两个模型元素之间的语义连接关系:其中一个模型元素是独立的,另一个模

型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它

的模型元素。

2、带箭头的虚线,箭头指向独立的类

细化关系

当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。

9.3 面向对象的三种模型:对象模型(类图);动态模型(状态图);功能模型(DFD)

第十一章

11.1面向对象设计准则

1. 模块化:对象就是模块

2. 抽象:1、面向对象方法不仅支持过程抽象,而且支持数据抽象。

2、类实际上是一种抽象数据类型

3、参数化抽象,是指当描述类的规格说明时并不具体指定所要操作的数据类型,而是把数据

类型作为参数

3. 信息隐藏:通过对象的封装性实现:类分离了接口与实现

4. 弱耦合:1、当两个对象必须相互联系相互依赖时,应该通过类的协议(即公共接口)实现耦合,而不

应该依赖于类的具体实现细节。

2、对象之间的耦合:(1) 交互耦合:耦合通过消息连接来实现减少对象发送(或接收)的消息数。

(2) 继承耦合:需要紧密的继承耦合

5. 强内聚:1、在设计时应该力求做到高内聚。

2、在面向对象设计中存在下述3种内聚。

(1)服务内聚:一个服务应该完成一个且仅完成一个功能。

(2)类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。

(3)一般-特殊内聚:设计出的一般-特殊结构

一般说来,紧密的继承耦合与高度的一般-特殊内聚是一致的。

6. 可重用

1、软件重用是提高软件开发生产率和目标系统质量的重要途径

2、重用基本上从设计阶段开始

3、重用有两方面的含义:一是尽量使用已有的类;二是设计新类的协议时,应该考虑将来的可重复

使用性

11.2软件重用1. 重用:重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。广义地说,软件重用可分为以下3个层次:

(1) 知识重用(例如,软件工程知识的重用)。(2) 方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用)。(3) 软件成分的重用。

2. 软件成分的重用级别:软件成分的重用可以进一步划分成以下3个级别:

(1) 代码重用:通常把它理解为调用库中的模块。实际上,代码重用也可以采用下列几种形式

中的任何一种:源代码剪贴;源代码包含;继承

(2) 设计结果重用:重用某个软件系统的设计模型(即求解域模型)。

(3) 分析结果重用:重用某个系统的分析模型。这种重用特别适用于用户需求未改变,但系统

体系结构发生了根本变化的场合

3. 典型的可重用软件成分:(1)项目计划;(2)成本估计;(3)体系结构;(4)需求模型和规格

说明;(5)设计;(6)源代码;(7)用户文档和技术文档;(8)用户界面;(9)数据;(10)测试用例

11.3 子系统交互方式:客户-供应商和平等伙伴关系

第十三章

13.1 软件配置管理

13.1.1 SCM的概念:SCM是在软件的整个生命期内管理变化的一组活动。活动包括①标识变化;②控制变化;③确保适当地实现了变化;④向需要知道这类信息的人报告变化。

13.1.2软件配置项:程序、文档、数据

1. 软件配置项也就是软件过程的输出信息:①计算机程序(源代码和可执行程序);②描述计算机程序的文档(供技术人员或用户使用);③数据(程序内包含的或在程序外的)

13.2 CMM

美国卡内基梅隆大学软件工程研究所在美国国防部资助下于20世纪80年代末建立的能力成熟度模型(capability maturity model,CMM),是用于评价软件机构的软件过程能力成熟度的模型

软件工程复习资料

软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝2无磨损和老化,不遵循“浴盆曲 线”,但存在退化问题3尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性/ 程序结构复杂性),软件开发的性质如成本、进度、质量等难以估计控制,维护困难,可复用性软件分类:按功能:系统软件/支撑软件/应用软件2按工作方式:实时处理/分时/交互/批处理3按服务对象:项目 / 产品(定制 / 通用)4按失效影响:关键/ 非关键5规模:微型、小型、中型、大型、甚大型、极大型 软件危机的表现:软件开发成本和进度失控,维护代价高2用户不满意3软件 质量不可靠4软件不可维护 5无文档资料6 计算机系统中软件成本比重加大7软件开发生产率提高不能满足要求软件危机的原因软件的规模和复杂性2人类智力的局限性3协同工作的困难性4缺乏方法学和工具5用户描述不精确、二义、遗漏,双方理解有偏差缓解软件危机的途径组织管理、协同配合的工程2软件工程的理论模型、技术方法3软件工具 软件工程的三要素1过程:管理部分2方法:技术手段3工具:自动或半自 动地支持软件的开发和管理三要素的关系:相互关联与支持 软件生命周期:可行性研究-需求分析-概要设计-详细设计-实现-集成测试-确认 测试-使用与维护-退役 软件开发和测试活动之间的关系软件 开发和软件测试都是软件生命周期中的重要组成部分,软件测试是保证软件开发产物 质量的重要手段。测试是贯穿于整个开发流程了,而不是在编码完成才开始。 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工 作,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。最终得到软件产品优点是使用时间最长、应用面比较广泛的开发模型2是其他一些开发模型的基础3当前一阶段完成后,只需要去关注后续阶段缺点不能适应用户需求的变化2到最后阶段才能得到可运行的软件版本适用场合:对于规模较小,软件需求较为稳定的项目,采用模型能够显著提高软件开发的质量和效率 演化模型(原型模型)演化模型是一种全局的软件(或产品) 生存周期模型。属于 迭代开发方法。该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……优点:1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误缺点1需要为系统的每个新版本交付文档,不划算2新需求的不断增加,使系统结构退化,变更成本上升3不支持风险分析 螺旋模型1将瀑布模型与原型模型进行有机结合2增加风险分析步骤优点1支持 需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误4支持风险分析,可降低或者尽早消除软件开发风险5适合于需求动态变化、开发风险较大的系统缺点建设周期长适用场合在需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。特别适合于大型复杂的系统 喷泉模型:软件复用与生命周期中多项开发活动集成,主要支持面向对象的开发 方法优点1软件系统可维护性较好2各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡3整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代4模型具有增量开发特性,即能做到“分析一点、设计一点、实现一点,测试一点”,使相关功能随之加入到演化的系统中5模型由对象驱动,对象是各阶段活动的主体,也是项目管理的基本内容6该模型很自然地支持软部件的重用缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 OO 为什么好oo 解决问题的思路是从现实世界中的客观对象入手,运用人类的 自然思维方式来构造软件系统,而传统的结构化方法从功能入手和信息工程化方法从信息入手。在面向对象方法中,把一切都看成是对象。OO 方法用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系面向对象方法的特点(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域中的事物为中心来思考问题、认识问题,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象) (2)用对象的属性表示事物的状态特征;用对象的操作表示事物的动态特征(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节(封装)(4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例(分类)(5)复杂的对象可以用简单的对象作为其构成部分(聚集:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚集)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档,有利于复用(继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承)(7) 类具有封闭性,把内部的属性和服务隐藏起来,只有公共的服务对外是可见的(类的封闭性)(8) 对象之间通过消息进行通讯,以实现对象之间的动态联系(消息)(9) 通过关联表达类之间的静态关系(关联) 自顶向下,逐步求精:从顶层开始逐层向下分解,直至系统的所有模块都小 到易于掌握为止 抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。 过程抽象:将完成一个特定功能的动作序列抽象为一个函数名和参数表(模块)例: 比较字符串: int Compare (CString, CString)。数据抽象:将诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象例:Eg: 1, 2, 3,—>Integer ;软件工程书;人工智能书—>书类 封装把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部 细节。只是向外部提供接口,降低了对象间的耦合度使对象能够集中完整地描述并对应一个具体事物。意义:体现了独立性,使对象外部不能随意存取对象的内部数据,使其所含的信息对那些不需要这些信息的模块不可访问。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的信息隐藏起来。 模块化将一个软件划分为一组具有相对独立功能的部件,每个部件称为一个模 块;当把所有的模块组装在一起时,便可获得满足用户需求的软件系统。为什么要进行模块化:模块化体现了“分而治之”的问题分析和解决方法。模块化的目的①进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。②尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低模块设计原则1信息隐藏2高内聚度(强)3低耦合度(松)什么是信息隐藏(1)模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问(2)模块之间仅仅交换那些为完成系统功能所必须交换的信息信息隐藏的优点(1)支持模块的并行开发(设计和编码)(2)模块的独立性更好(3)便于系统功能的扩充(4)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。局部化就是指将一些使用上密切相关的元素尽可能放在一起。对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。在软件测试和维护期间经常需要修改一些模块的内容。信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 3.必须能够表示软件的行为(作为外部事件的结果) 4.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

《软件工程》期末复习题1

考试时间: 16周周一5,6节 考试地点: 二教419 406 408 考试题型: 选择题:20分 简答题:30分 应用题:50分 各章内容及题型总结: 第1,2章本章的主要题型是选择题和简答题。 1. 软件危机的主要表现是什么?答:“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本难以准确估算;软件产品的质量没有保证。 2. 软件工程的定义?答:软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件开发技术结合起来,运用到软件开发和维护过程中,来解决软件危机。 IEEE的定义:软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。 3. 软件工程研究的主要内容是什么?答:软件开发技术和软件开发管理两个方面。软件开发技术方面主要研究软件开发方法、软件开发过程、软件开发工具和环境。软件开发管理方面主要研究软件工程管理学、软件工程经济学、软件工程心理学。 4. 软件工程的7条基本原理是什么?答:①用分阶段的生命周期计划严格管理②坚持进行阶段评审③实行严格的产品控制④采用现代程序设计技术⑤结果应能清楚地审查⑥开发小组的人员应该少而精⑦承认不断改进软件工程实践的必要性。 5. 什么是软件生命周期?答:指一个软件从提出开发要求开始到该软件报废为止的整个时期。通常将软件的生命周期划分为可行性研究、需求分析、设计、编码、测试、集成、维护阶段。 6. 软件过程的定义?答:软件开发过程、活动和任务的结构框架。它能够清晰、直观地表达软件开发全过程,明确规定要完成的主要活动和任务。 7. 你能举出几个典型的软件过程模型吗?答:主要有瀑布模型、演化模型、喷泉模型、螺旋模型、智能模型。模型的选择是基于软件的特点和应用领域。 8. 目前,主流的软件开发方法有哪些?答:结构化方法和面向对象方法。 9. 软件工程师职业道德规范的8组关键词是什么?1999年由ACM/IEEE-CS软件工程师道德规范和职业实践(SEEPP)联合工作组制订了《软件工程师职业道德规范》,规范含有8组由关键词命名的准则:公众、客户和雇主、产品、判断、管理、专业、同行、自身。 10. 职业化软件工程师要注意的十大问题是什么?答:①高质量地完成任务②遵守行业标准,不能肆意按照自己的想象来发挥③积极帮助他人④版权意识敏感⑤严格遵守计划⑥公私分明⑦注意知识更新⑧善于沟通⑨遵守职业规则⑩诚实和正直。 第3章本章的题型主要是选择题。 1. 可行性研究的目的是什么?答:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2. 可行性研究的四大要素是:经济上可行,技术可行,法律允许、社会环境可行。 3. 可行性研究的实质:是要进行一次简化了的系统分析和设计过程。首先要分析和澄清问题定义,导出系统的逻辑模型,探索若可供选择的方案,对每种方案仔细研究它的可行性。推荐一个较好的解决方案和一个初步的计划。 第4,5章本章的题型有选择题。 2. 什么是需求工程?需求工程是指应用有效的技术和方法进行需求分析,确定客户需求,帮助分析人员理解问题,定义目标系统的外部特征的一门学科。需求工程中的主要活动有:需求获取、需求分析、需求规格说明、需求验证和需求变更管理。

软件工程复习资料

1、下列哪一模型是软件的基础模型 A.瀑布模型 B.快速原型 C.增量模型 D.螺旋模型 2、划分软件生存周期的阶段时所应遵循的基本原则是 A.各阶段的任务尽可能相对独立 B.各阶段的任务在时间上连续 C.各阶段的任务尽可能相关性 D.各阶段的任务在时间上相对独立 3、下列哪个办法不属于解决软件危机的途径之一 A.采用软件工程的解决途径 B.研制新一代智能计算机 C.采用面向对象的软件设计方法 D.大力扶持软件企业 4、下列哪个不属于软件工程的内涵之一 A.扶持培养软件高手的学院 B.开发既可靠又能有效运行的软件 C.应用完善的科学与工程原理 D.经济地开发软件 5.造成大型软件开发困难的根本原因在于 A.开发人员缺乏足够的开发经验 B.项目开发进度不合理 C.软件系统的复杂性 D.对软件开发的资金投入不足 6.软件会逐渐退化而不会磨损,其原因在于 A.软件备件很难订购 B.不断的变更使组件接口之间引起错误 C.软件错误在经常使用之后会逐渐增加 D.软件通常暴露在恶劣的环境下 7.下面说法正确的是 A.大多数软件系统是不容易修改的,除非它们在设计时考虑了变化 B.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产 C.一般来说,软件只有在其行为与开发者的目标一致的情况下才能成功 D.购买大多数计算机系统所需的硬件比软件更昂贵 8.Ariane 5火箭发射失败的事例告诉我们 A.(2)软件后备系统可以通过复制生成 B.(3)软件重用必须重新进行系统论证和系统测试 C. 选项(1)和(3) D.(1)系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制

9.软件危机的主要原因是 A.软件本身的特点及开发方法。 B.软件工具落后。 C.软件生产能力不足。 D.对软件的认识不够。 10.下面的描述正确的是 A.软件质量是在开发过程中逐渐构建起来的。 B.软件质量是由产品的功能、性能、易用性等外在特性决定的。 C.运行正确的软件就是高质量的软件。 D.软件产品质量越高越好,最理想的情况是达到“零缺陷”。 11、可行性研究主要包括哪几项? A.技术可行性、经济可行性和操作可行性 B.技术可行性、经济可行性和道德可行性 C.技术可行性、法律可行性和操作可行性 D.技术可行性、操作可行性和法律可行性 12、成本/效益分析的目的是帮助()正确地作出是否投资于这项开发工程的决定。 A.系统分析员 B.客户组织的负责人 C.项目经理 D.软件开发人员 13、在进行成本/效益分析的时候,需要考虑() A.开发成本 B.运行费用 C.系统带来的经济效益 D.系统使用寿命 14、数据流图和数据字典共同定义了新系统的逻辑模型。 A.错 B.正确 15、可行性研究可行性研究需要的时间长短和所研究系统的规模关系不大。 A. 正确 B.错误 16、把可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。 A.正确 B.错误 17、结构化分析方法遵守的准则之一——定义软件需要完成的功能,需要建立的模型是 A.功能模型 B.数据模型 C.行为模型 D.动态模型 18、下列叙述中,()不属于数据字典的作用。 A.为用户与开发人员之间统一认识 B.为需求分析阶段定义各类条目

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

北方工业大学软件工程期末复习题(含答案)

北方工业大学 《软件工程》课程期末复习题(答案) A 卷 2014年春季学期 开课学院:信息工程学院 考试方式:闭卷 考试时间:120 分钟 班级 姓名 学号 一.简要回答下列各问题(共40分,每个小题5分) (1) 阐述软件工程的定义。 答: ● 是指导计算机软件开发和维护的一门工程学科; ● 采用工程的概念、原理、技术和方法来开发和维护软件; ● 把证明正确的管理技术和最好技术综合运用到软件开发中; ● 研究经济地开发出高质量的软件方法和技术; ● 研究有效维护软件的方法和技术。 (2) 简述软件危机的原因。 答: ● 缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。 ● 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误 。 ● 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 ● 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作, 不仅涉及技术问题,更重要的是必须有科学严格的管理。 ● 缺少有效的软件评测手段,提交用户的软件质量不能完全保证。 订 线 装

(3) 画出软件生存周期的瀑布模型的示意图,并简单评述其优缺点。 (4) 画出软件生存周期的增量模型的示意图,并简述其优点。 优点: ●可强迫开发人员采用规范化的方法。 ●严格地规定了每个阶段必须提交的文档。 ●要求每个阶段交出的所有产品都必须是经过验证 的。 缺点 ●由于瀑布模型几乎完全依赖于书面的规格说明,很 可能导致最终开发出的软件产品不能真正满足用户 的需要。如果需求规格说明与用户需求之间有差异, 就会发生这种情况。 ●瀑布模型只适用于项目开始时需求已确定的情况。 1-2 瀑布模型示意图 ●能在较短时间内向用户提交可完成一些有用的工作产 品,即从第1个构件交付之日起,用户就能做一些有用 的工作。 ●逐步增加产品的功能可以使用户有较充裕的时间学习和 适应新产品,从而减少一个全新的软件可能给用户组织 带来的冲击。 ●项目失败的风险较低,虽然在某些增量构件中可能遇到 一些问题,但其他增量构件将能够成功地交付给客户。 ●优先级最高的服务首先交付,然后再将其他增量构件逐 次集成进来。因此,最重要的系统服务将接受最多的测 试。

软件工程(需求分析报告)

学生学籍管理系统需求分析报告 1 引言 1.1编写目的 学籍管理信息系统以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量。 1.2项目背景 传统的学校学籍管理方法、由于分散管理,易发生数据丢失,劳动强度高,速度慢。 使用计算机可以高速、快捷地完成以上工作。特别是在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范教学管理行为,从而提高了管理效率和水平。 学籍管理信息系统以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,从而全面提高教学质量。 1.3业务模式 本系统是运行在WindowsXP等操作系统环境下的多台计算机构成的局域网, 现在学校各部门分别使用不同数据库,各部门之间的信息还不能实现网上共享。由于学校的各个部门都需要一些学生的基本信息,所以各个部门都有一份学生档案。一个部门的改动,将导致其他各部门必须修改,否则,学生的信息将不一致。 高校学生学籍管理系统将采用B/S模式,学生的信息由各用户在规定的权限下在各自的工作站上录入,统一保存在系统服务器上,既可集中管理,有可让各部门管理自己负责的信息。信息上网后各用户可查询,调用,达到全校信息共享。 2用户需求 2.1使用范围 按西安交通大学城市学院学生学籍状况的系统管理(本科生用学年学分制)。 系统中保留4个年级学生的信息,学生毕业一年后信息转储,但随时可以查询,输出。 2.2功能要求 ·学生档案管理:学生的一般情况,及奖励,处分情况; ·学生成绩管理:学习成绩,补考成绩; ·学籍处理:学生留降级处理,休复学处理,退学处理; ·日常教务管理:日常报表,如通知书,补考通知书等,学生学习成绩的各种分类统计; ·毕业生学籍处理:结业处理,毕业处理,授位处理,学籍卡片等。 2.3信息采集与各部门的使用权限 每学期考试完毕由各系录入成绩,然后由教务科收集。为了信息的安全和数据的权威性,对于网上信息的使用权限和责任规定如下: 数据收集前的系统权限

大学软件工程复习资料

五、简答题 1.层次图和层次方框图之间区别何在?P92 ①层次图描绘软件的层次结构,层次方框图描绘数据结构 ②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素 ③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。 2.2、软件设计过程中为什么要采用模块化设计方法?P85 参考答案: (1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解; (2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性; (3)、模块化可以提高软件的可修改性; (4)、模块化有助于开发过程的组织和管理; 3.用某种软件复杂性度量算法来度量不同类型的程序时。得出的度量值是否真正反映了它们的复杂性? 如果对同类型的程序进行度量,其结果是否就比较有价值? 参考答案: 开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。 4.数据流图的作用是什么?它有哪些基本成分? 参考答案: 数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 基本成分有:数据原点/终点数据处理数据流数据存储 5.常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。 代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同; 功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。 6.CMM的全称是什么?其基本思想是什么?为什么要对CMM进行分级?P321 其基本思想是:软件开发和维护过程中的问题是由于管理软件过程的方法不当引起的,即使是应用新的软件技术,也不会自动提高软件的生产率和质量。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将有利于开发出高质量的软件,使更多的软件项目免受时间和费用超支之苦。 ······························································································· 3分 对于任何软件开发机构的软件过程的改进都是在完成一个又一个小的改进的基础之上不断进行的渐进过程,而不是一蹴而就的彻底革命。CMM将软件过程从无序到有序的进化过程分为5个等级,用于测量软件机构的软件过程成熟度和评价其软件过程能力 什么是软件配置管理? 答:软件配置管理,简称SCM(Software Configuration Management),是在软件的整个生命周期内管理变化的一组活动。具体地讲,这组活动包括:①标志变化,②控制辩化,③确保适当地实现变化,④向需要指导这类信息的人报告变化。软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件工程教材资料整理

软件工程复习资料 第一章 1、软件的概念:软件是计算机中与硬件相互依存的另一部分,它是包括程序、数据及其 相关文档的完整集合。 2、软件具有下列特点: 1.软件是一种逻辑产品,它具有抽象性和无形性。 2.软件的生产与硬件不同。 3.软件在运行和使用中,不会磨损和老化,但它存在退化问题。 4.软件的开发和运行对计算机系统有一定的依赖性。 5.软件开发至今仍未完全摆脱手工开发方式,大多数软件是“定做”的。 6.软件开发成本高、风险高。 7.相对于计算机硬件技术的发展,计算机软件技术的发展十分缓慢。 3、计算机软件技术的发展经历了三个阶段: 程序设计时期(20世纪40年代中期至60年代中期),软件质量取决于个人编程水平。 程序系统时期(20世纪60年代中期至70年代中期),软件质量取决于开发小组的技术水平 软件工程时期(20世纪70年代以后)。软件质量取决于软件工程管理水平。 软件技术的发展主线是由个体简单的开发方式向着复杂、大规模、标准化、工程化的方向发展,在最高阶段,把软件开发界定为两方面的内容:软件开发和软件维护。 4、软件开发引发的问题: 1.社会对软件需求的不断发展 2.软件开发理念和手段与客观实际存在的差异 ①对软件本身的认识存在差异②对软件的服务对象认识不足 ③对软件开发缺乏科学管理④软件开发手段落后 5、软件危机1)发生时间:软件发展第二阶段(程序系统阶段)的末期 (2)软件危机是指在计算机软件开发和维护过程中遇到的一系列严重问题。 (3)软件危机的主要表现有以下几方面: 1.软件开发经费超支、进度拖延 2.软件不能符合用户的要求 3.软件难以维护 4.软件可靠性差 5.软件开发生产率低 4)主要原因: 1 社会对软件的需求急剧增加 2 软件本身的特点:软件本身存在着复杂性 3软件开发理念和手段与客观实际存在的差异 ①对软件本身的认识存在差异②对软件的服务对象认识不足 ③对软件开发缺乏科学管理④软件开发手段落后 寻找解决软件危机途径的过程就是软件工程形成的过程 6、软件工程 核心:以工程化的原理和方法对软件进行规划、定义、开发和维护; 宗旨:以较少的投入,最快的时间生产出高质量的软件。 定义:“软件工程是软件开发、运行、维护和引退的系统方法”。 软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。 软件工程的三要素是方法、工具和过程。 软件工程的基本目标:实现软件的优质高产,即在给定成本、进度的前提下,达到要求的软件功能,取得较好的软件性能,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性,并满足用户需求的软件产品。

软件工程复习资料

软件工程的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程化思想和方法去进行软件开发、维护和管理的学科。 软件危机的定义:软件开发和维护过程中所遇到的如软件规模越来越大,复杂度不断增加,软件的需求量日益增大等的严重问题我们称之为软件危机。 软件工程有哪些基本的思想:a.推迟实现的观点b.逐步求精的观点c.分解与抽象的观点d.信息隐蔽的观点e.质量保证的观点 CMM(Capability Maturity Model)能力成熟度模型,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。 极限编程(Extreme Programming , XP)是一种软件工程方法学是敏捷软件开发中最富有成效的几种方法学之一。它的的核心有四个要点:交流、简单、反馈、勇气 软件生命周期模型:通常把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型。 软件需求分类:功能需求、非功能需求和领域需求 结构化分析(Structured Analysis, SA) 结构图(Structure Chart ,SC) 面向对象的一些概念:类是具有相同或相似性质的对象的抽象。实例是类的具体化。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。消息是指对象间相互联系和相互作用的方式 数据流类型:变换型数据流、事务型数据流、混合型数据流 Jackson图:Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观,可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。伪码一般采用结构化形式的英语描述,例如,用”select”语句描述选择结构,用”until”或”while”语句描述重复结构。 结构化程序设计的三种基本逻辑结构是:顺序结构、选择结构和循环结构。 类与类之间的关系:关联、泛化、聚集 软件设计的三类活动:软件设计的第一类活动是软件结构设计,也称为总体设计、概要设计或高层设计。第二类活动是软件详细设计,也称为(模块)过程设计或底层设计。第三类活动是设计测试。 软件模块化设计的指导思想:分解、抽象、逐步求精、信息隐蔽和模块独立性。 软件模块化设计的定义:把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体。 模块独立性的定义及控制标准:模块独立性是模块化、抽象、信息隐蔽概念的直接结果,也是判断模块化结构是否合理的标准。模块独立性可以由两个定性标准度量,即模块自身的内聚和模块之间的耦合。 内聚性、耦合性和抽象的定义:内聚性是从功能的角度对模块内部聚合能力的量度,耦合性是对一个软件结构内不同模块之间互连程度的度量。抽象是一种从一般的观点看待事物的方法,它要求我们集中于事物的本质特征(内部状态和运动规律),而非具体细节或具体实现。 信息隐蔽定义:每个模块对其他所有模块都隐蔽自己的设计决策,也就是说,模块应该详细说明且精心设计以求在某个模块中包含的信息不被不需要这些信息的其他模块访问。 按耦合度从低到高依次有7种耦合方式:a.非直接耦合(独立运行)b.数据耦合(用参数表传递简单数据)c.标记耦合(传递数据结构或者一部分)d.控制耦合(传递的信息包括控制模块的信息)e.外部耦合(模块与软件之外的环境有关)f.公共耦合(多个模块引用同一全局的数据区)g.内容耦合(访问内部数据,代码重叠或者多个入口)按内聚度从低到高依次有7种内聚种类:a.偶然内聚(模块完成的多个任务,任务之间的关系松散)b.逻辑内聚(模块完成逻辑相关的一组任务)c.瞬时内聚(模块的所有任务必须在同一时间间隔内执行)d.过程内聚(模块的处理元素相关而且按照特定的次序执行)e.通信内聚(模块的所有元素集中在一个数据结构区域上)顺序内聚(模块的处理元素相关,必须顺序执行)f.功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)结构化设计方法(SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。 软件维护类型及对应方向的维护: 纠错性维护:对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。纠错性维护占整个维护工作的21% 完善性维护:为了满足这些日益增长的新要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程期末考试总复习题与答案

)))))))) 精品文档考试教学资料施工组织设计方案 复习题 填空题 1.在信息处理和计算机领域内,一般认为软件是_程序____、_文档____ 和_数据____ 。 2.数据流图的基本组成部分有_数据的源点与终点____、数据 流_____、加工_____、数据文件_____。 3.数据流图和数据字典共同构成了系统的_逻辑____模型,是 需求规格说明书的主要组成部分。 4.划分模块时尽量做到__高内聚、低耦合______,保持模块的 独立性,尽量使用公共模块。 5.类的实例化是_对象_______。 6.人们常用硬件可靠性的定量度量方法来度量软件的可靠性和可用性,常用的度量软件可 7.靠性的两个指标是_成功地运行的概率_______和_平均故障 时间_______。

8.将待开发的软件细化,分别估算每一个子任务所需要的开发工作量,然后将它们加起来, 9.将得到软件的总开发量。这种成本估算方法称为_自底向上 _______。 10.如果一个模块被n 个模块调用,其中直接的上级模块的个数是m 个(m<=n )那么该模块的扇入数是____N_______ 个。 11.结构化设计以__数据流图_________ 为基础,按一定的步骤映射成软件结构。 12.软件的风险分析可包括风险识别、风险预测和风险驾驭(或风险管理)等3项活动。 )))))). )))))))) 13.软件著作权登记的3种主要类型:(1)著作权登记;(2)著 作权延续登记;(3)权利转移备案登记。 14.软件工程管理的主要内容有:项目经费管理,软件质量管理, 项目进度管理和人员管理。 15.面向对象分析的目的是对客观世界的系统进行___建模 _______________ 。 16.软件维护工作的生产性活动包括分析评价、修改设计和 ____编写程序代码_______ 等。

软件项目项目管理资料讲解

软件项目项目管理

《软件项目项目管理》 课程报告 学院: 姓名: 学号:

【摘要】决定项目成败的不仅仅是范围、成本、进度的计划多么完美,而是团队是否能高效的工作。或许跟其他的项目不同,软件项目彻底是"以人才为核心"的项目,项目的主要成本来自于人力成本、项目的进度完全由成员决定,因此,在软件项目中,对团队的管理不仅仅是对进度的保障,更是对项目质量、项目成本的保障。团队管理才是软件项目管理中的重中之重。因而,软件项目管理经理的作用极为重要。 【关键字】软件项目管理经理、合同、团队合作,进度规划 【正文】项目经理( Project Manager ) ,从职业角度,是指企业建立以项目经理责任制为核心,对项目实行质量、安全、进度、成本管理的责任保证体系和全面提高项目管理水平设立的重要管理岗位。项目经理是为项目的成功策划和执行负总责的人。项目经理是项目团队的领导者,项目经理首要职责是在预算范围内按时优质地领导项目小组完成全部项目工作内容,并使客户满意。为此项目经理必须在一系列的项目计划、组织和控制活动中做好领导工作,从而实现项目目标。 项目经理在拿到招标文件的首要工作如下: 一、研究熟悉合同文件 项目经理组织已明确的项目的成员仔细核阅合,同文件、协议、补充协议等各项有关合同文件,深入消化了解,据此来开展项目工作。主要包括:了解合同中的谈判背景、中标条件及合同主要条款,研究、熟悉合同的主要内容,研究制定执行合同的策略、重点及注意事项。 确定项目的工作分解结构和编码。根据合同项目的具体内容确定项目的工作分解结构和编码,将项目的工作任务分解成详细的工作单元,给每个单元规定各自的账目编码,这是进行费用/进度综合控制的基础。根据项目的工作分解结构和编码,进一步确定项目的组织分解结构和编码。使项目的每一项工作都落实到公司的一个部、室的一个专业组织,不能遗漏,也不能把一项工作重复委派给一个以上的专业组。项目组实行动态管理,根据项目规模大小、复杂程度、专业协作条件关系,决定采取集中或分散的组织形式。 组织业主(用户)开工会议。一般在合同生效后3-4周内,项目经理要组织召开业主(用户)开工会议。这是项目成立后与业主的第一次正式重要会议。在会上要进一步明确承发包双方的职责和范围,工程公司的工作内容和基础条件,进一步确认合同项目采用的标准及相关事项,确定双方的联系渠道和协调事项,讨论项目计划的有关工作。 编制项目计划。项目计划是项目经理对项目的总体构思和安排。项目计划中要明确项目目标、工作原则、工作重点、工作程序和方法。项目经理首先编一个计划方案,提出对合同的研究意见,在技术和商务方面的可靠性和风险以及掌握项目进度、费用、质量和材料控制的原则和方法等,并经公司有关部门审查同意。接着再编制详细实施计划,并在项目开工会议上发布。这是项目工作的重要指导性文件。 其中,合同中的6.1节,“在某些情况下,政府采购中心可能对招标文件进行修改。”这也是需要考虑的部分,纳入后面的进度规划中,以防采购中心的修改对整个项目的工期造成影响。 二、团队合作

相关文档
相关文档 最新文档