本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明!
1.管理的定义?
2.软件项目管理地位?(重要性)
3.软件项目管理过程从一组项目计划活动开始,而制定计划的基础是?
4.估算软件规模的方法有?
5.什么是代码行技术?
6.代码行技术的主要优点是?
7.代码行技术的主要缺点是?
8.功能点技术度量软件规模的单位是?
9.工作量估算模型有?
10.工作量是软件规模的函数,其通常的单位是?
11.Gantt(甘特)图是什么?
12.Gantt(甘特)图的主要优点和缺点是?
13.工程网络图是什么?
14.软件开发的人员组织方式有?分别简述每种方式的特点和优缺点?
15.软件质量是什么?
16.软件质量保证的措施主要有?
17.软件配置管理是什么?
18.基线是什么?如何才能够改变它?
19.软件配置管理主要有哪5项任务?
20.什么是能力成熟度模型(CMM)?
21.能力成熟度的五个等级,从低到高依次是?
章末小结
所谓管理,就是通过计划、组织和控制等一系列活动,合理的配置和使用各种资源,以达到既定目标的过程
软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中
制定计划的基础是工作量估算和完成期限估算
为了估算项目的工作量和完成期限,首先需要估算软件的规模
- 代码行技术
- 功能点技术
即根据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数
代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数
- 源程序仅是软件配置的一个成分,用它的规模代替整个软件的规模不太合理
- 用不同语言实现同一个软件所需要的代码行数并不相同
- 这种方法不适用于非过程语言
以功能点(FP)为单位度量软件规模
- 静态单变量模型(基本的COCOMO模型)
- 静态多变量模型(COCOMO2模型、中级结构的COCOMO)
- 动态多变量模型(putnam模型)
【注】:没有一个估算模型可以适用于所有类型的软件
人月(pm)
Gantt(甘特)图是历史悠久,应用广泛的制定进度计划的工具
主要优点:
- 能够形象地描绘任务分解的情况
- 直观简明、容易掌握与绘制
主要缺点:
- 不能显示地描绘各项作业彼此之间的依赖关系
- 进度计划的关键部分不明确,难以判定哪些部分应当是主攻和主控的对象
- 计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费
工程网络图是制定进度计划时另一种常用的图形工具,是系统分析和系统设计的强有力工具。应该同时使用Gantt图和工程网络图来制定和管理进度计划,使得他们互相补充取长补短
- 民主制程序员组
特点:小组成员完全平等,享有充分民主,通过协商做出技术决策
优点:1.组员们对发现程序错误持积极态度,这有利于更快发现错误从而导致高质量的代码
2.组员们享有充分的民主,小组有高度凝聚力,组内技术氛围浓厚利于攻克技术难关
缺点:如果组内成员技术水平不高或者是缺乏经验的新手,由于没有明确的权威指导开发工
程的进行,组员间将缺乏必要的协调,最终可能导致工程失败
- 主程序员组
特点:1.专业化 2.层次性
优点:1.有经验丰富的主程序员指导开发
2.程序员间通信均通过主程序员进行,从而降低通信成本,提高了开发生产效率
缺点:1.在许多方面是不切实际的,如主程序员不仅要有高超的技术还要有优秀的管理技术
这样的人才很难找;后背程序员更难找;编程秘书也很难找到
2.小组成员会出现不愿意发现错误的心理
- 现代程序员组
特点:优化了主程序员组,取消了主程序员大部分行政管理工作,将其分为技术负责人和
行政负责人
优点:将民主制程序员组和主程序员组的优点结合起来了
缺点:在工作开始之前必须明确划分技术组长和行政组长的管理权限,否则可能造成混乱
由于程序员组人数不宜过多,当软件项目规模较大时,应该把程序员分成若干个小组,组织结构如下图所示:
软件质量就是软件与明确地和隐含地定义的需求相一致的程度
- 基于非执行的测试(复审和评审)
- 基于执行的测试(软件测试)
- 程序正确性证明(数学方法)
软件配置管理贯穿整个生命周期,是在软件整个生命周期内的管理变化的一组活动,用来标识、控制和报告变化,确保适当地实现了变化
基线是通过了正式复审的软件配置项,可以作为进一步开发的基础。
只有通过了正式的变化控制过程才能改变它
- 标识对象
- 版本控制
- 变化控制
- 配置审计
- 状态报告
能力成熟度模型(CMM)是用于评价软件机构的软件过程能力成熟度的模型,用于帮助软件开发机构建立一个有规模的、成熟的软件过程
- 初始级
- 可重复级
- 已定义级
- 已管理级
- 优化级
软件工程包括技术和管理两方面的内容,是技术与管理紧密结合的产物。只有在科学而严格的管理之下,先进的技术方法和优秀的软件工具才能真正发挥出威力。因此,有效的管理是大型软件工程项目成功的关键。
软件项目管理始于项目计划,而第一项计划活动就是估算。为了估算项目工作量和完成期限,首先需要预测软件规模。
度量软件规模的常用技术主要有代码行技术和功能点技术。这两种技术各有优缺点。应该根据项目特点及从事计划工作的人对这两种技术的熟悉程度,选用适用的技术。
根据软件规模可以估算出完成该项目所需的工作量,常用的估算模型为静态单变量模型、动态多变量模型和 COCOMO2 模型。为了使估算结果更接近实际值,通常至少同时使用上述3 种模型中的两种。通过比较和协调使用不同模型得出的估算值,有可能得到比较准确的估算结果。成本估算模型通常也同时提供了估算软件开发时间的方程式这样估算出的开发时间是正常开发时间,经验表明,用增加开发人员的方法最多可以把开发时间减少到正常开发时间的 75%。
管理者必须制定出一个足够详细的进度表,以便监督项目进度并控制整个项目。常用的制定进度计划的工具有 Gantt 图和工程网络,这两种工具各有优缺点,通常,联合使用 Gantt 图和工程网络来制定进度计划并监督项目进展状况。
高素质的开发人员和合理的项目组组织结构,是软件项目取得成功的关键。比较典型的组织结构有民主制程序员组、主程序员组和现代程序员组 3 种,这3 种组织方式的适用场合并不相同。软件质量保证是在软件过程中的每一步都进行的活动。软件质量保证措施主要有基于非执行的测试(也称为复审)、基于执行的测试(即通常所说的测试)和程序正确性证明。软件复审是最重要的软件质量保证活动之一,它的优点是在改正错误的成本相对比较低时就能及时发现并排除软件错误。
软件配置管理是应用于整个软件过程中的保护性活动,是在软件整个生命期内管理变化的一组活动。软件配置管理的目标是,使变化能够更正确且更容易被适应,在需要修改软件时减少为此而花费的工作量。
能力成熟度模型(CMM)是改进软件过程的有效策略。它的基本思想是,因为问题是管理软件过程的方法不恰当造成的,所以采用新技术并不会自动提高软件生产率和软件质量,应该下大力气改进对软件过程的管理。事实上对软件过程的改进不可能一蹴而就。因此,CMM 以增量方式逐步引人变化,它明确地定义了 5 个成熟度等级,一个软件开发组织可以用一系列小的改良性步骤迈入更高的成熟度等级。
反反复复,扎扎实实;念念不忘,必有回响!