软件工程 第十一章

合集下载

[计算机软件技术基础(第三版)麦中凡 苗明川 何玉洁]第十一章_软件开发与软件维护

[计算机软件技术基础(第三版)麦中凡 苗明川  何玉洁]第十一章_软件开发与软件维护

返回
20
一个圈就是一个过程/函数,可退化为一 个语句,也可再分解为一个子DFD图,出入的数
据流不变。 返回
21
控制流图
扩充DFD图为CFD(Control Flow Diagram)图,把控制动作以虚 线表示,非控制动作仍如DFD图。大圆圈依然是处理功能,虚箭头上 标明控制项(或事件)名。同样,平行虚线表示控制项存储(图11.14中 未示出),竖线条表示控制(规格)说明,即系统的行为。下面是复印 机的控制流图。
返回
15
状态图(State)
状态图描述某个对象实体因事件改变其状态,也就是行 为的综合快照,即在什么事件驱使下状态有什么改变。在需求 分析和设计中可以帮助找出遗漏和不太明确的功能(事例)。例 如旅店系统中的客房,用RoomState类来描述客房状态,则用 状态图对它建模,如图11.10所示。
返回
返回软件需求的目标是把用户的“需要”变成系统开发 的“需求”,或称需求规范。这个工作大体上分三 步:收集用户、市场、公司对本项目的需要;经过 分析建立解题模型;细化模型,抽取需求。请注意, 这个需求每一条都是系统测试的验收准则,所以模 型要细化到能写出可验收需求的程度,决不能太笼 统,如“开发一个办公室系统要灵活、方便好用。” 就不是一个好的需求,因为它既不能指导开发,也 无法验收。好的需求具有众多特点,归纳下来主要 有:一致的,完整的,可理解的,无二异的,和可 测试的。
返回
17
活动图(activity)
在分析和设计时,UML的活动图十分有用。它把传统的流 程图(Flowchart,只描述程序的动作步骤)和数据流图(DFD,只 描述动作后输入/输出数据的改变,不看步骤先后)结合在一起。 活动图既有控制流(顺序、分支、循环)又有数据流(每个动作点 前后数据变化),增加了数据、动作的同步分支,并且给每个对 象一个泳道,清晰地描述了对象间数据传递。较粗的活动图用于 分析,在设计时细化。在下节给出例子。

《软件工程》教学教案

《软件工程》教学教案

《软件工程》教学教案一、第一章:软件工程概述1. 教学目标了解软件工程的定义、目的和重要性,掌握软件开发的基本过程和原则。

2. 教学内容软件工程的定义和重要性;软件开发的基本过程;软件工程的原则和方法。

3. 教学方法采用讲授法,结合案例分析,让学生了解和掌握软件工程的基本概念和原则。

4. 教学资源教材、课件、案例分析。

5. 教学评价通过课堂提问和案例分析,评估学生对软件工程的理解和应用能力。

二、第二章:软件需求分析1. 教学目标掌握软件需求分析的基本概念、方法和过程,能够运用需求分析工具进行需求收集和分析。

2. 教学内容软件需求分析的基本概念;需求分析的方法和过程;需求分析工具的使用。

3. 教学方法采用讲授法和实例分析,让学生了解和掌握需求分析的方法和过程。

4. 教学资源教材、课件、实例分析。

5. 教学评价通过课堂提问和实例分析,评估学生对需求分析的理解和应用能力。

三、第三章:软件设计1. 教学目标掌握软件设计的基本概念、方法和过程,能够运用设计工具进行软件架构和详细设计。

2. 教学内容软件设计的基本概念;设计方法和过程;设计工具的使用。

3. 教学方法采用讲授法和实例分析,让学生了解和掌握软件设计的方法和过程。

4. 教学资源教材、课件、实例分析。

5. 教学评价通过课堂提问和实例分析,评估学生对软件设计的理解和应用能力。

四、第四章:软件实现1. 教学目标掌握软件实现的基本概念、方法和过程,能够运用编程语言进行软件编码和测试。

2. 教学内容软件实现的基本概念;实现方法和过程;编程语言和测试工具的使用。

3. 教学方法采用讲授法和编程实践,让学生了解和掌握软件实现的方法和过程。

4. 教学资源教材、课件、编程环境和测试工具。

5. 教学评价通过编程实践和测试结果,评估学生对软件实现的理解和应用能力。

五、第五章:软件维护1. 教学目标掌握软件维护的基本概念、方法和过程,能够进行软件维护和优化。

2. 教学内容软件维护的基本概念;维护方法和过程;软件优化技巧。

软件工程第十一章面向对象设计

软件工程第十一章面向对象设计

THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。

《软件工程》教学课件 第11章 软件项目管理

《软件工程》教学课件 第11章 软件项目管理
式为组织型、半独立型或嵌入型。
下 表 是 根 据 63 个 项 目 的 数 据 统 计 结 果 , 按 照 基 本 的 COCOMO模型估算的工作量和进度。
总体类型 组织型
半独立型 嵌入型
工作量 MM=10.4(KLOG)1.05 MM=3.0(KLOG)1.12 MM=3.6(KLOG)1.20
进度 TDEV=10.5(MM)0.38 TDEV=10.5(MM)0.35 TDEV=10.5(MM)0.32
i1
其中:ai — 估计的最小行数 bi — 估计的最大行数 mi — 最可能的行数
将估算的源代码行数,乘以根据经验推算的每行源代 码所需成本,即为该软件的成本。
IBM 估算模型
1977年由Waiston 和 Felix 总结了IBM联合系统 分部(FSD)负责的60个项目的数据,利用最小二 乘法拟合,得到如下估算公式:
PERT(Program evaluation & review technique)计 划评审技术或CPM(Critical path method)关键路径法, 都是采用网络图来描述项目的进度安排。如图描述了开发 模块A、B、C的任务网络图。各边上所标注的数字为该任 务所持续的时间,数字结点为任务的起点和终点。
70
任务
月份 1 2 3 4 5 6 7 8 9 10 11 12
60
需求分析 ▲ ▲ ▲
50
总体设计
▲ ▲▲
40
详细设计
▲▲
30
编码 软件测试
▲ ▲▲
20
10
▲▲▲
0 一月
二月
三月
四月
五月
六月
进度表
2.甘特图(Gantt Chart)

软件工程智慧树知到答案章节测试2023年山东财经大学

软件工程智慧树知到答案章节测试2023年山东财经大学

第一章测试1.软件没有相应的文档,且最终不能满足用户要求是软件危机的一种表现。

()A:错B:对答案:B2.软件本身的不可见性和复杂性随规模的增加呈指数上升是产生软件危机的主要原因。

()A:错B:对答案:A3.开发软件就是写程序。

()A:错B:对答案:A4.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称()。

A:软件危机B:软件工程C:软件产生D:软件周期答案:A5.以下对软件工程描述正确地是()。

A:结合最好的技术方法。

B:经济地开发出高质量的软件并有效地维护它。

C:一门工程学科。

D:采用经过时间考验而证明正确的管理技术。

答案:ABCD6.软件生命周期中所花费费用最多的阶段是()。

A:需求分析。

B:软件总体设计。

C:软件实现。

D:软件维护。

答案:D7.软件是()。

A:计算机系统。

B:处理对象和处理规则的描述。

C:程序。

D:程序、数据及其文档的集合。

答案:D8.同螺旋模型相比,原型模型主要缺少()。

A:客户评估B:制定计划C:风险分析D:实施工程答案:C9.在软件生存周期模型中,不适应变化需求的软件开发模型是()。

A:原型模型B:瀑布模型C:螺旋模型D:增量模型答案:B10.针对高质量软件的生产的软件过程模型()。

A:RUP模型B:基于构件的模型C:净室模型D:增量模型答案:C第二章测试1.可行性研究的技术可行性是指现有技术是否可行。

()A:对B:错答案:A2.可行性研究的成本效益分析是从经济方面讨论是否可行。

()A:对B:错答案:A3.可行性分析研究的目的是()。

A:功能内聚B:项目值得开发否C:开发项目D:争取项目答案:B4.描绘物理系统的传统工具是()。

A:程序流程图B:系统流程图C:数据流程图D:软件结构图答案:B5.数据字典的基本功能是()。

A:数据维护。

B:数据通信。

C:数据定义。

D:数据库设计。

答案:C6.使用数据流图对工资系统进行需求分析建模,外部实体是()。

A:工资单B:工资系统代码C:工资数据库维护D:接受工资单的银行答案:D7.数据流图的作用包括()。

软件工程第四版课后答案

软件工程第四版课后答案

20
作业及解答(第3章)
ER模型
本问题中共有两类实体,分别是“储户”和“储蓄所”,
E2 业务员
13:07:42
F8储蓄利率
D2存款利率
19
重庆工学院计算机科学与工程学院 李梁(liliang@)
作业及解答(第3章)
F2取款单 无效取款信息 D1存款信息 F7密码 F7密码 P3.2 密码校验 P3.1 输入取款信息 F5存款信息
E1 储户
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
4
作业及解答(第1-2章)
(1)在1985年对计算机存储容量的需求,估计是
M 4080 e
0.28(19851960)
4080e 4,474,263(字)
7
如果字长为16位,则这个存储器的价格是 19851974
73,577,679条指令。 在1995年一名程序员每天可开发出30条指令,每月可开 发出600条指令,为了开发出可装满整个存储器的程序, 需要的工作量为 73577679 122 629(人月) , 600
13:07:42 重庆工学院计算机科学与工程学院 李梁(liliang@)
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
15
作业及解答(第3章)
电话号码=[校内电话号码|校外电话号码] 校内电话号码=非零数字+
3 位数字 //后面继续定义 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0 3位数字=3{数字}3 //3至3个数字 8位数字=非零数字+7位数字 7位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9]

软件工程导论第11章

软件工程导论第11章
22
【还可以把适配接口再进一步细分为转换接口和扩充接口。转换接口, 是为了克服与表示方法、数据结构或硬件特点相关的操作给重用带来 的困难而设计的,这类接口是每个类构件在重用时都必须重新定义的 服务的集合。当使用C++语言编程时,应该在根类(或适当的基类)中, 把属于转换接口的服务定义为纯虚函数。如果某个服务有多种可能的 实现算法,则应该把它当作扩充接口。扩充接口与转换接口不同,并 不需要强迫用户在派生类中重新定义它们,相反,如果在派生类中没 有给出扩充接口的新算法,则将继承父类中的算法。当用C++语言实现 时,在基类中把这类服务定义为普通的虚函数。】
4. 弱耦合 耦合:指一个软件结构内不同模块之间互连的紧 密程度。 在面向对象方法中,对象是最基本的模块,因此, 耦合主要指不同对象之间相互关联的紧密程度。 弱耦合是优秀设计的一个重要标准。
5
对象之间的耦合分为两大类: (1) 交互耦合: 对象之间的耦合通过消息连接来实现。 使交互耦合尽可能松散,应遵守下述准则: 尽量降低消息连接的复杂程度。 应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 与交互耦合相反,应该提高继承耦合程度。 通过继承关系结合起来的基类和派生类,构成系统中 粒度更大的模块。设计时应该使特殊类尽量多继承并 使用其一般化类的属性和服务,从而更紧密地耦合到 其一般化类。
13
2. 软件成分的重用级别 (1) 代码重用 源代码剪贴:最原始的重用形式。 复制或修改原有代码时可能出错,存在严重的配臵 管理问题,人们几乎无法跟踪原始代码块多次修改 重用的过程。 源代码包含:许多程序设计语言都提供包含库中 源代码的机制。配臵管理问题有所缓解,修改了库 中源代码之后,所有包含它的程序自然都必须重新 编译。 继承:利用继承机制重用类库中的类时,无须修 改已有的代码,就可以扩充或具体化在库中找出的 类,基本上不存在配臵管理问题。

第11章净室软件工程19991

第11章净室软件工程19991
(4)达到几乎零缺陷的水平。在团队的复审过程中, 每个控制结构的每个正确性条件被依次验证。每 个团队成员必须就每个条件都是正确的达成共识, 这样只有团队的每个成员均未能正确地验证某条 件时,才有可能出现错误。
2.条件loop可能以两种方式之一出现:(1)直接从init(此时 loop 条件被直接满足),或(2)通过穿过条件cont 的控制流。 因为条件cont与条件loop相同,因此,不管从哪条路径到 达它,条件loop 都为真。
3.条件cont:只有在y值被递增1后,才能遇到条件cont 。另外, 只有在条件yes也为真时,才能调用到达条件cont 的控制 流路径。因此,如果(y+1)2≤x,则y2≤x,条件cont成立。
11.3 功能规格说明
净室软件工程通过使用盒结构规格说明的方法来遵 从操作分析原则。
一个“盒”在某个细节层次上封装系统(或系统的 某些方面)。
通过逐步求精的过程,盒被精化为层次。“每个盒 规格说明的信息内容足以定义其精化,不需要依赖 任何其他盒的实现” 。
这使得分析员能够按层次划分一个系统——从顶层 的基本表示到底层实现的特定细节。
(1)增量策划。制定一个采用增量策略的项目计划, 确定每个增量的功能、预计规模、及净室开发进 度。
(2)需求收集。为每个增量开发更详细的客户级需 求描述。
11.2 净室策略
(3)盒结构规格说明。运用盒结构的规格说明方法描 述功能规格说明。遵从操作分析原则,盒结构 “在每一个精化级别上使行为、数据及过程的创 造性定义独立”。
设计求精与验证
定义入口和出口条 件。
为了证明设计的正 确性,需要证明图 中表示的条件init、 loop、cont、yes 和exit 在所有情形 下都是正确的。

第11章 软件项目管理-软件工程基础(第3版)-胡思康-清华大学出版社

第11章  软件项目管理-软件工程基础(第3版)-胡思康-清华大学出版社

第 4 页4
软件项目管理概述
软件项目管理目标
软件项目管理成功的目标包括以下几方面: ⑴ 如期完成项目 ⑵ 项目成本控制在计划之内 ⑶ 妥善处理用户的需求变动 ⑷ 保证项目质量⑸ 保持对项目进度的跟踪与控制
第11章 软件项目管理
第 5 页5
软件项目规模度量
任何软件项目都需要定量描述才能制定软件开发成本。只有把软件项目 中设计的各项因素,如软件开发时间、人员数量、开发环境的软件工具和硬 件系统、资金等资源的指标尽可能量化,才能准确估算软件产品的规模、复 杂度、工作总量。没有定量的项目将难以展开软件管理和实施过程。
❖系统的内部处理复杂吗
❖代码设计可重用吗
❖ 设计中包括转换和安 装吗
❖ 系统的设计支持不同 组织的多次安装吗
❖ 系统的实际有利于用 户的修改和使用吗
第 10 页10
软件项目规模度量
面向功能的度量
一旦计算出功能点,就可仿照LOC的方式度量软件的生产率、质量和 其它属性:
生产率 = FP/E 质量 = ER/FP 成本 = S/FP 文档 = ER/FP
第11章 软件项目管理
第 2 页2
软件项目管理概述
软件项目管理的特点
⑷ 软件产品虽然分通用软件和领域软件,但其都是“定制”的定向系统 ,目前仍无法摆脱手工开发模式。“没有完全一样的软件项目”,这不仅对 项目实施过程难以控制,而且还需要根据具体应用领域、环境等制定特殊管 理过程和内容。
⑸ 源于应用领域的复杂性和软件开发技术的复杂性,软件自身是一个复 杂系统。因而软件管理要对复杂软件系统过程做到未雨绸缪,对软件开发内 容抽丝剥茧般的细致。 ⑹ 软件项目管理需要综合各方面,特别是社会因素、精神因素、认知要素、 技术问题、领域问题、用户沟通等各项复杂内容。

第十一章 统一建模语言UML

第十一章 统一建模语言UML
软件工程(Software Engineer)
计算机科学与工程学院
11.3 用例建模
用例建模描述一个系统应该做什么,描述的 是外部参与者所理解的系统功能。构建用例模型 是通过开发者与客户或最终使用者对需求规格说 明达成的共识,明确系统的基本功能,为后阶段 的工作打下基础。 用例模型的基本组成部件是用例、参与者和 系统。用例用于描述系统的功能,也就是从外部 用户的角度,观察系统应支持哪些功能,帮助分 析人员理解系统的行为,它是对系统功能的宏观 描述。
计算机科学与工程学院 软件工程(Software Engineer)
4)依赖(Dependency) 依赖是两个模型元素间的语义连接,一 个是独立的模型元素,一个是依赖的模型 元素。 5)细化(refinement) 细化是UML中的术语,表示对事物更详 细一层的描述。两个元素A、B描述同一件 事物,它们的区别是抽象层次不同,若元素B 是在元素A的基础上的更详细的描述,则称元 素B细化了元素A,或称元素A细化成元素B。
UML 主要作者提出的目标是: 提供给用户一个易于使用和表达的可视化的建模语言,使他们能 够开发和交流有意义的模型。独立于任何开发语言。独立于任何开发 过程。简单并且可扩展,具有扩展和专有化机制,便于扩展,无需对 核心概念进行修改。提供了解建模语言的一个基本手段。支持面向对 象的设计与开发中涌现出的高级概念,例如协作、框架、模式和构件, 强调在软件开发中对架构、框架、模式和构件的重用。最佳的软件工 程实践经验的集成。有利于面向对象工具的市场成长。
张三 : 作家 姓名 : String = 张三 年龄 : Integer = 28
(b)对象图
计算机科学与工程学院
软件工程(Software Engineer)

第11章_质量概念

第11章_质量概念

对软件工程工作产品进行技术审查的成本。 数据收集和度量估算的成本。 测试和调试的成本。
质量成本
失效成本是那些如果在将产品发给客户之前或 之后没有错误就不会存在的费用。失效成本可分 为内部失效成本和外部失效成本。 内部失效成本发生在当你在发货之前发现错误 时,内部失效成本包括:



为纠正错误进行返工所需的成本。 返工时无意中产生副作用,必须对副作用加以缓解而发生的 成本。 组织为评估失效的模型而收集质量数据,由此发生的相关成 本。
质量成本

质量成本包括追求质量过程中或在履行质 量有关的活动中引起的费用以及质量不佳 引起的下游费用等所有费用。为了解这些 费用,一个组织必须收集度量数据,为目 前的质量成本提供一个基准,找到降低这 些成本的机会,并提供一个规范化的比对 依据。质量成本可分为预防成本、评估成 本和失效成本。
质量成本

ISO 9126质量因素(6个)
功能性:软件满足已确定要求的程度,由以下子属性表 征:适合性、准确性、互操作性、依从性和安全保密性。 可靠性:软件可用的时间长度,由以下子属性表征:成 熟性、容错性和易恢复性。 易用性:软件容易使用的程度,由以下子属性表征:易 理解性、易学习性和易操作性。 效率:软件优化使用系统资源的程度,由以下子属性表 征:时间特性和资源利用特性。 维护性:软件易于修复的程度,由以下子属性表征:易 分析性、易改变性、稳定性和易测试性。 可移植性:软件可以从一个环境移植到另一个环境的容 易程度,由以下子属性表征:适应性、易安装性、符合 性和易替换性。

Garvin的质量维度
耐久性。是否能够对软件进行维护或改正,而 不会粗心大意地产生料想不到的副作用?随着时 间的推移,变更会使错误率或可靠性变得更糟吗? 适用性。软件能在可接受的短时期内完成维护 和改正吗?技术支持人员能得到所需的所有信息 以进行变更和修正缺陷吗? 审美。美的东西具有某种优雅、特有的流畅和 醒目的外在,这些都是很难量化的,但显然是不 可缺少的。美的软件具有这些特征。 感知。在某些情况下,一些偏见将影响人们对 质量的感知。

软件工程各章名词解释

软件工程各章名词解释

名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。

软件工程课程目录

软件工程课程目录

第一章软件工程概述介绍软件工程概念的提出以及发展历程,并分析软件开发的本质。

软件工程概论课程介绍第二章软件过程介绍如何定义一个项目的过程,主要涉及三方面的知识:(1)要了解软件开发通常需要做哪些工作,即软件生存周期过程;(2)要了解定义过程的基准框架,即软件生存周期模型;(3)是要了解一般性的过程规划技术。

软件过程(1)-20100913软件过程(2)-20100916软件过程(3)-20100916第三章软件需求与软件需求规约介绍软件需求的定义、需求的分类、常用的需求发现技术,以及需求规约。

软件需求-20100923第四章结构化分析介绍结构化需求分析、需求验证及实例研究。

结构化分析方法-0927第五章结构化设计结构化设计:总体设计的目标及其表示、总体设计方法、设计评价准则与启发式规则、设计优化、详细设计、软件设计规格说明书、实例研究。

结构构化设计方法-总体设计0930结构化设计-详细设计和软件设计规约1011第六章面向对象方法-UML面向对象方法发展以及UML(Unified Modeling Language)的提出、表达客观事物的术语、表达关系的术语、组织信息的通用机制--包、模型表示工具。

面向对象介绍面向对象方法UML(1)面向对象方法UML(2)面向对象方法UML(3)第七章面向对象分析、设计和编程技术介绍面向对象分析、设计和编程技术。

面向对象分析模型规约面向对象设计(1)面向对象设计(2)面向对象编程第八章面向对象方法-RUPRUP(Unified Software Development Process)的作用和特点、核心工作流。

RUP-1-1207RUP-2-1210RUP-3-1214第九章软件测试软件测试目标与软件测试过程模型、软件测试技术、软件测试步骤、静态分析技术-程序正确性证明。

软件测试(1)软件测试(2)软件测试-扩展报告第十章软件工程管理软件工程管理活动;软件规模、成本和进度估算;能力成熟度模型CMM;ISO9000标准。

软件工程 第4版 第11章 软件工程管理

软件工程 第4版 第11章 软件工程管理

本章内容
11.1 软件工程管理概述 11.2 软件开发成本估算 11.3 软件工程人员组织 11.4 软件配置管理 11.5 软件质量保证 11.6 软件开发风险管理 11.7 软件工程标准与软件工程文档
这种估算方法的优点是,由于各个任务单元的成本 可交给该任务的开发人员去估计,因此估计结果比较准 确。缺点在于,由于具体工作人员往往只注意到自己职 责范围内的工作,而对涉及全局的成本。
11.2.3 COCOMO2 模型
COCOMO2 模型分为如下3 个模型,在估算软件开发工作量时,对软件细节问题考虑的详 尽程度逐渐增加。
OPTION
软件开发人员一般分为项目负责人、系统分析员、高级程序员、程序员、初级程序员、资 料员和其他辅助人员。
项目负责人需要对项目的需求和团队人员有全面的了解
系统分析员需要有概括能力、分析能力和社交活动能力
程序员需要有熟练的编程能力等 资料员和其他辅助人员负责及时登记软件工程每个阶段的文档等资料
11.3 软件工程人员组织
11.1 软件工程管理概述
02 软件工程管理的重要性
OPTION
基于软件本身的复杂性,软件工 程将软件开发划分为若干个阶段,每 个阶段完成不同的任务、采取不同的 方法。
如果软件开发管理不善,造成的 后果会很严重。因此软件工程管理非 常重要。
11.1 软件工程管理概述
03 软件工程管理的内容
OPTION
02 组织机构
OPTION
软件开发团队不能只是一个简单的集合,要求具有良好的组织机构,要具有合理的人员分 工和有效的通信,共同高效率地完成任务。
按项目划分的模式
按职能划分的模式
矩阵型模式
11.3 软件工程人员组织

软件工程导论(第11章)

软件工程导论(第11章)

3. 信息隐蔽
在面向对象方法中,信息隐蔽通过对象的封
装性实现:类结构分离了类的接口与类的实
现,从而支持了信息隐蔽。
4. 弱耦合
弱的耦合可以提高软件模块的独立性,避免 某一部分模块发生变化对其它模块有较大的影 响。
一般来说,对象间的耦合有两大类:
A.交互耦合:对象间的耦合通过信息连接来
实现。应使交互耦合尽量松散。
2. 一般—特殊结构的深度应适当
中等规模的系统中,类等级层次数应保持 为7±2。不是必要情况,不应该随意创建派生类;
3. 设计简单的类:设计小而简单的类,便于
开发和管理;
1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
4. 使用简单的协议:设计简单的类接口,发送 的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构; 6. 把设计变动减至最小。
2.
两个方向的关联都用属性实现,这种方法能 实现快速访问。
3.
用独立的关联对象实现双向关联。关联对象 不属于相互关联的任何一个类,它是独立的 关联类的实例 。
40
41
4、关联对象的实现
关联对象的实现方法取决于关联的阶数:

一对一关联:
• 关联对象可以与参与关联的任一个对象合并。

一对多关联:
• 关联对象可以与“多”端对象合并。
11.9 设计类中的服务 11.9.1 确定类中应有的服务 11.9.2 设计实现服务的方法
1. 设计实现服务的算法
1)算法复杂度;
2)容易理解、容易实现;
3)容易修改;
2. 选择数据结构 3. 定义内部类和内部操作

软件工程方法与实践知到章节答案智慧树2023年昆明理工大学

软件工程方法与实践知到章节答案智慧树2023年昆明理工大学

软件工程方法与实践知到章节测试答案智慧树2023年最新昆明理工大学第一章测试1.软件产品与物质产品有很大区别,软件产品是一种()产品。

参考答案:逻辑2.软件会逐渐退化而不会磨损,其原因在于()。

参考答案:不断的变更使组件接口之间引起错误3.软件工程要解决的问题是()。

参考答案:以上都是4.软件工程的基本要素包括方法、工具和()。

参考答案:过程5.软件一般包括以下()部分。

参考答案:文档;数据;程序;规程第二章测试1.基于计算机系统的元素包括软件、硬件、人员、数据库、文档和()。

参考答案:规程2.基于计算机的系统本身可以成为一个更大的基于计算机系统中的一个()。

参考答案:元素3.经济可行性分析中的效益包括经济效益和()效益。

参考答案:社会4.在基于计算机系统的元素中,硬件包括()。

参考答案:提供外部世界功能的电子机械设备(如传感器、马达等);提供计算能力的电子设备;支持数据流的互连设备(如网络交换器、电信设备)5.系统工程的任务包括()。

参考答案:可行性分析;识别用户的要求;系统建模和模拟;成本估算及进度安排第三章测试1.在软件生存周期中,()阶段主要任务是“弄清楚要做什么?”。

参考答案:需求分析2.通常将软件生命周期划分为系统工程、需求分析、软件设计、编码实现、软件测试、运行维护等阶段,每个阶段都有各自侧重的任务和目标,以下不属于需求分析阶段的任务是()。

参考答案:弄清楚怎么做,规划系统体系结构3.需求规格说明描述了()。

参考答案:计算机系统的功能、性能及其约束4.常用的需求分析方法包括()。

参考答案:面向对象的分析方法;面向数据结构的分析方法;面向数据流的结构化分析方法5.软件需求规格说明SRS的作用包括()。

参考答案:用于规划和控制系统的开发过程;成为用户、分析人员和设计人员之间进行理解和交流的手段;支持系统测试活动第四章测试1.软件设计是将软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息,传送给设计阶段,产生数据/类设计、体系结构设计、()、部件级设计。

软件工程第11章(3-01)

软件工程第11章(3-01)

2.编码的目的

编码的目的是使用选定的程序设计语言,把模块的过程性 描述翻译为用该语言书写的源程序。 编码产生的源程序应该正确可靠、简明清晰,而且具有较 高的效率。前两点要求是一致的,因为源代码越是清楚简 明,就越便于验证源代码和模块规格说明的一致性,也就 越容易对它进行测试和维护。
1.代码和程序遵守标准 与规范的重要性
1.2.2 编码语言的基本成分


1.数据成分 数据成分指明该语言能接受的数 据,用来描述程序中所涉及的数 据。如各种类型的变量、数组、 指针、记录等。作为程序操作的 对象,具有名称、类型和作用域 等特征。使用前要对数据的这些 特征加以说明。数据名称由用户 通过标识符命名,类型说明数据 须占用多少存储单元和存放形式, 作用域说明数据可被使用的范围。 以某语言为例,其数据构造方式 可分为基本类型和构造类型
1.2.2 编码语言的基本成分

3.控制成分 控制成分指明该语言允许的控制结构,人们可以利用这 些控制成分来构造程序中的控制逻辑。基本的控制成分 包括顺序控制结构、条件选择结构和循环结构
1.2.2 编码语言的基本成分
4.转输成分 传输成分指明该语言允许的数据传输方式,
在程序中可用它进行数据传输。 例如,Turbo C语言标准库提供了两个控 制台格式化输入、输出函数printf()和 scanf(),这两个函数可以在标准输入/输 出设备上以各种不同的格式读/写数据。 printf()函数用来向标准输出设备写数据, scanf()函数用来从标准输入设备上读数据。
1.1.4 编码途径
程序编码的一般途径有以下几种。 1.自顶向下的开发 2.自底向上的开发
3.自底向上和自顶向下相结合的开发

张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】

张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】
3.为什么说类构件是目前比较理想的可重用软构件?它有哪些重用方式? 答:(1)可重用的软构件应具备的特点: ①模块独立性强。 ②具有高度可塑性。 ③接口清晰、简明、可靠。 (2)类构件的重用方式: ①实例重用。 ②继承重用。 ③多态重用。
4.试用面向对象方法,设计本书第 2 章中给出的订货系统的例子。 答:略。
break; }
int main(){ FILE *fi; int i,inQuote; fi=fopen(“xxx.c”, “r”) if(fi==NULL) return 1; i=inQuote=0;
2/8
圣才电子书 十万种考研考证电子书、题库视频学习平台

b.有明确的定义。为使类的定义明确,分配给每个类的任务应该简单。 c.简化对象之间的合作关系。 d.不要提供太多的服务。 ④使用简单的协议 ⑤使用简单的服务 ⑥把设计变动减至最小 (2)启发规则的必要性 人们使用面向对象方法学开发软件的历史虽然不长,但也积累了一些经验。总结这些经 验得出了几条启发规则,它们往往能帮助软件开发人员提高面向对象设计的质量。

char input[Len_Max+2]; int n=sizeof(input); void CheckKeyWord(){ int i,result; for(i=0;i<n;i++) {
result=strcmp(input,Key[i]); if(result==0){ count[i]++; break; } if(result<0)
3/8
圣才电子书 十万种考研考证电子书、题库视频学习平台

5.试用面向对象方法,设计本书习题 2 第 2 题中描述的储蓄系统。 答:使用面向对象方法设计出的储蓄系统的对象模型如图 11-7 所示:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

· 开放式范型:这种范型试图以一种既具有封闭 式范型的控制性,又包含随机式范型的创新性的方式
来组织项目组。通过大量协商和基于一致意见做出的
决策,项目组成员相互协作完成工作任务。用开放式 范型组织起来的项目组很适于解决复杂问题,但是可 能没有其他类型小组的效率高。 · 同步式范型:按照对问题的自然划分,组织项 目组成员各自解决一些子问题,他们之间很少有主动 的通信需求。
11.4.2 四种组织范型 Constantine提出了软件工程小组的下述4种“组 织范型”。 · 封闭式范型:按照传统的权力层次来组织项目 组(类似于CD小组)。当开发与过去已经做过的产品相 似的软件时,这种项目组可以工作得很好,但是,在 这种封闭式范型下难以进行创新性的工作。 · 随机式范型:松散地组织项目组,小组工作依 靠小组成员发挥个人的主动性。当需要创新或技术上 的突破时,用随机式范型组织起来的项目组能工作得 很好。但是,当需要“有次序地执行”才能完成任务 时,这样的项目组就可能陷入困境。
11.3 现代程序员组
实际的“主程序员”应该由两个人来担任:一个 技术负责人,负责小组的技术活动;一个行政负责人, 负责所有非技术的管理决策。这样的组织结构如图 11.2所示。
图11.2 现代程序员组
由于程序员组的成员人数不宜过多,当软件项目 规模较大时,应该把程序员分成若干个小组,采用图 11.3所示的组织结构。该图描绘的是技术管理组织的 结构,非技术管理组织的结构与此类似。由图可以看
小组规模小,不仅可以减少通信问题,而且还有 其他好处。例如,容易确定小组的质量标准,而且用 民主方式确定的标准更容易被大家遵守;组员间关系 密切,能够互相学习等。 民主制程序员组通常采用非正式的组织方式,也 就是说,虽然名义上有一个组长,但是他和组内其他 成员完成同样的任务。在这样的小组中,由全体讨论 决定应该完成的工作,并且根据每个人的能力和经验 分配适当的任务。
上下级之间的通信。 · 控制集权式(Controlled Centralized,缩写为 CC):小组负责人管理顶层问题的解决过程并负责组内 协调。负责人和小组成员之间的通信是上下级式的。
选择软件工程小组的结构时,应该考虑下述7个项 目因素。 · 待解决的问题的困难程度; · 要开发的程序的规模(用代码行或功能点度量); · 小组成员在一起工作的时间(小组生命期);
必须改变评价程序员价值的标准,每名程序员都 应该鼓励该组其他成员找出自己编写的代码中的错误。 不要认为存在错误是坏事,而应该认为是正常的事情, 应该把找出模块中的一个错误看作是取得了一个胜利。
任何人都不能嘲笑程序员所犯的编码错误。程序员组
作为一个整体,将培养一种平等的团队精神,坚信 “每个模块都是属于整个程序员组的,而不是属于某 个人的”。一组无私的程序员将构成一个民主制程序 员组。
出,产品的实现作为一个整体是在项目经理的指导下
进行的,程序员向他们的组长汇报工作,而组长向项
目经理汇报工作。当产品规模更大时,可以增加中间
管理层次。
图11.3 大型项目的技术管理组织结构
把民主制程序员组和主程序员组的优点结合起来 的另一种方法,是在合适的地方采用分散做决定的方 法,如图11.4所示。这样做有利于形成畅通的通信渠 道,以便充分发挥每个程序员的积极性和主动性,集 思广益攻克技术难关。这种组织方式对于适合采用民 主方法的那类问题(例如,研究性项目或遇到技术难题 需要用集体智慧攻关)非常有效。
为了使少数经验丰富、技术高超的程序员在软件 开发过程中能够发挥更大作用,程序设计小组也可以 采用下一小节中介绍的另外一种组织形式。
11.2 主程序员组
美国IBM公司在20世纪70年代初期开始采用主程序 员组的组织方式。采用这种组织方式主要出于下述几 点考虑: · 软件开发人员多数比较缺乏经验; · 程序设计过程中有许多事务性的工作,例如,
CC
× ×
×
模块化程度 高 低 可靠性 高 低 支付日期 紧 松 社交 高 低
× × × ×
×
× × × × × × ×
集权式结构能够更快地完成任务,它最适于处理
简单问题。分权式的小组比起个人来,能够产生更多, 更好的解决方案,这种小组在解决复杂问题时成功的
可能性更大。因此,CD或CC小组结构能够成功地用来
解决简单的问题,而DD结构则适于解决难度较大的问 题。 小组的性能与必须进行的通信量成反比,所以开 发规模很大的项目时最好采用CC或CD结构的小组。
小组生命期长短影响小组的士气。经验表明,DD
小组结构能导致较高的士气和较高的工作满意度,因 此适合于生命期长的小组。
DD小组结构最适于解决模块化程度较低的问题, 因为解决这类问题需要更大的通信量。如果能够达到 较高的模块化程度(人们自己独自做自己的事情),则 CC或CD结构更适宜。 人们曾经发现,CC和CD小组产生的缺陷比DD小组 少,但是这些数据在很大程度上取决于小组采用的质 量保证活动。 完成同一个项目,分权式结构通常需要比集权式 结构更多的时间,不过当需要高社交性时分权式结构 是最适宜的。 历史上最早的软件项目组是控制集权式(CC)结构, 当时人们把这样的软件项目组称为主程序员组。
· 问题能够被模块化的程度;
· 对待开发的系统的质量和可靠性的要求; · 交付日期的严格程度; · 项目要求的社交(通信)程度。 表11.1概括了项目特性对项目组组织方式的影响。
表 11.1 项目特性对项目组结构的影响小组 小组类型 DD CD 项目特性 困难程度 高 × 低 × 规模 大 × 小 × 小组生命期 短 × 长 ×
大量信息的存储和更新;
· 多渠道通信很费时间,将降低程序员的生产率。
Baker描述的一个典型的主程序员组如图11.1所 示。该组由主程序员、后备程序员、编程秘书以及1~ 3名程序员组成。在必要的时候,该组还有其他领域的 专家(例如,法律专家,财务专家等)协助。
图11.1 主程序员组的结构
· 控制分权式(Controlled Decentralized,缩写 为CD):这种软件工程小组有一个固定的负责人,他协
调特定任务的完成并指导负责子任务的下级领导人的
工作。解决问题仍然是一项群体活动,但是,通过小 组负责人在子组之间划分任务来实现解决方案。子组
和个人之间的通信是平行的,但是也有沿着控制层的
民主制程序员组的一个重要特点是,小组成员完 全平等,享有充分民主,通过协商做出技术决策。因 此,小组成员间的通信是平行的,如果一个小组有n个 成员,则可能的通信信道有n(n-1)/2条。 一般说来,程序设计小组的规模应该比较小,以
2~8名成员为宜。如果项目规模很大,用一个小组不
能在预定时间内完成开发任务,则应该使用多个程序 设计小组,每个小组承担工程项目的一部分任务,在 一定程度上独立自主地完成各自的任务。系统的总体 设计应该能够保证由各个小组负责开发的各部分之间 的接口是良好定义的,并且是尽可能简单的。
第11章 组织
11.1 民主制程序员组
11.2 主程序员组 11.3 现代程序员组
11.4 软件项目组
11.5 小结
退出
11.1 民主制程序员组
有两种极端方法可用来组织程序员组,这两种组 织方法分别称为民主制程序员组和主程序员组。本节 介绍民主制程序员组,下节介绍主程序员组。 构成民主制程序员组的基本概念是“无私编程”。
图11.4 包含分散决策的组织方式
11.4 软件项目组
如前所述,程序员组的组织方式主要用于实现阶 段,当然,也适用于软件生命周期的其他阶段(当考虑 在更广阔范围的应用时,把程序员组更名为软件项目 组更恰当一些)。本节从更广阔的角度进一步讨论软件 项目组的组织方式。
11.4.1
三种组织方式
Mantei提出了下述的三种通用的项目组组织方式。 · 民主分权式(Democratic Decentralized,缩写 为DD):这种软件工程小组没有固定的负责人,“任务 协调人”是临时指定的,随后将由协调别的任务的人 取代。用全体组员协商一致的方法对问题及解决问题 的方法做出决策。小组成员间的通信是平行的。
11.5 小结
对任何软件项目而言,最关键的因素都是承担项 目的人员。必须合理地组织项目组,使项目组有较高 生产率。“最佳的”小组结构取决于管理风格、组里 的人员数目和他们的技术水平,以及所承担的项目的 难易程度。 本章具体介绍了国外比较流行的民主制程序员组、 主程序员组和现代程序员组的组织方式,讨论了不同 组织方式的优缺点和适用范围。然后又从更广阔的角 度进一步讨论了通用的软件项目组的组织结构问题。
相关文档
最新文档