赞
踩
(1)定义
代码行技术依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。是一种比较简单的定量估算软件估摸的方法。
(2)方法
①把实现每个功能的源程序行数累加起来,可得到实现整个软件所需要的源程序行数。
②估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别算出这3种规模的平均值后,再用下式计算程序规模的估计值:(13.1)
③程序小时用的单位是代码行数(LOC);程序大时用的单位是千行代码数(KLOC)。
(3)优点
①代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。
②有以往开发类似产品的历史数据可参考时,估计出的数值比较准确。
(4)缺点
①源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模不太合理。
②用不同语言实现同一个软件所需要的代码行数并不相同。
③不适用于非过程语言。
软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模的函数,工作量的单位通常是人月(pm)。没有一个估算模型可以适用于所有类型的软件和开发环境。
(1)例子
假设有一座陈旧的矩形木板房需要重新油漆。这项工作必须分3步完成:首先刮掉旧漆,然后刷上新漆,最后清除溅在窗户上的油漆。假设一共分配了15名工人去完成这项工作,然而工具却很有限:只有5把刮旧漆用的刮板,5把刷漆用的刷子,5把清除溅在窗户上的油漆用的小刮刀。怎样安排才能使工作进行得更有效呢?
(2)优点
①很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间。
②容易掌握、容易绘制。
(3)缺点
①不能显式地描绘各项作业彼此间的依赖关系。
②进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象。
③计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。
(1)定义
工程网络可以描绘任务分解情况以及每项作业的开始时间和结束时间,它还显式地描绘各个作业彼此间的依赖关系。
(2)表示
工程网路,如图13.2所示。
①用箭头表示作业,作业通常既消耗资源又需要持续一定时间。
②用圆圈表示事件(开始或结束),事件是明确定义的时间点,并不消耗时间和资源。
③用虚线箭头表示虚拟作业,虚拟作业是为了显式地表示作业之间的依赖关系。
现有的软件项目组的组织方式很多,通常,组织软件开发人员的方法,取决于所承担的项目的特点、以往的组织经验以及管理者的看法和爱好,主要有3种典型的组织方式。
(1)民主制程序员组
①定义
民主制程序员组中小组成员完全平等,享有充分民主,通过协商做出技术决策。即小组成员之间的通信是平行的,如果小组内有n个成员,则可能的通信信道共有n(n-1)/2条。
②要求
a.小组的人数不能太多(2~8名成员为宜)
小组规模小,可以减少通信问题、容易确定小组的质量标准、用民主方式确定的标准更容易被大家遵守、组员间关系密切、能够互相学习。
b.采用非正式的组织方式
名义上有一个组长,但是他和组内其他成员完成同样的任务。在这样的小组中,由全体讨论协商决定应该完成的工作,并且根据每个人的能力和经验分配适当的任务。
③优点
a.组员们对发现程序错误持积极的态度,有助于更快速地发现错误,提高代码质量。
b.组员们享有充分民主,小组凝聚力高、学术空气浓厚,有利于攻克技术难关。
④缺点
没有明确的权威指导开发过程,组员间将缺乏必要的协调,最终可能导致工程失败。
⑤适用性
所要开发的软件的技术难度较高时,采用民主制程序员组是适宜的。
(2)主程序员组
①定义
主程序员组用经验多、技术好、能力强的程序员作为主程序员,同时,利用人和计算机在事务性工作方面给主程序员提供充分支持,而且所有通信都通过一两个人进行。典型的主程序员组的组织形式如图13.5所示。
②核心人员及其分工
a.主程序员
既是成功的管理人员又是经验丰富、技术好、能力强的高级程序员,负责体系结构设计和关键部分的详细设计,并且负责指导其他程序员完成详细设计和编码工作。
b.后备程序员
技术熟练而且富于经验,协助主程序员工作并且在必要时接替主程序员的工作。具体工作是设计测试方案、分析测试结果及独立于设计过程的其他工作。
c.编程秘书
负责完成与项目有关的全部事务性工作。
注意:图13.5介绍的是20世纪70年代初期的主程序员组组织结构,现在的情况已经和当时大不相同了,程序员已经有了自己的终端或工作站,他们自己完成代码的输入、编辑、编译、链接和调试等工作,无须由编程秘书统一做这些工作。
③特点(优点)
a.专业化:该组每名成员仅完成他们擅长的工作。
b.层次性:主程序员指挥组员工作,并对项目全面负责
④缺点
符合主程序员、后备程序员、编辑秘书标准的人才在现实社会中并不容易雇佣到。
⑤适用性
采用主程序员组这种组织方式的程序一般具有以下几方面的特点:
a.软件开发人员多数比较缺乏经验。
b.程序设计过程中有许多事务性的工作。
c.多渠道通信很费时间,将降低程序员的生产率。
(3)现代程序员组
①主程序员由两个人共同担任
a.技术负责人
负责小组的技术活动,参与全部代码审查工作,并且对代码的各方面质量负责。
b.行政负责人
负责非技术性事务的管理决策。不参与代码审查,其职责是对程序员的业绩进行评价。
②制定针对公共职责范围内的事务的处理方案
③实行分组策略
采用分组策略,如图13.7所示。产品开发作为一个整体是在项目经理的指导下进行的,程序员向他们的组长汇报工作,而组长则向项目经理汇报工作。当产品规模更大时,可以适当增加中间管理层次。
④分散决定
在合适的地方采用分散做决定的方法,如图13.8所示。这样做有利于形成畅通的通信渠道,以便充分发挥每个程序员的积极性和主动性,集思广益攻克技术难关。
图13.6现代程序员组的结构
图13.7 大型项目的技术管理组织结构
图13.8包含分散决策的组织方式
(1)定义
软件质量是软件与明确地和隐含地定义的需求相一致的程度,即软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。
(2)特点
①软件需求是度量软件质量的基础,与需求不一致就是质量不高。
②指定的开发标准定义了指导软件开发准则,没有遵守这些准则,会导致软件质量不高。
③软件满足明确描述的需求,但不满足隐含的需求,那么软件的质量是值得怀疑的。
(3)软件质量因素与产品活动
①软件质量因素
如表13.7所示,列出了软件质量因素的简明定义。
②产品活动
可以把产品活动(倾向)分为产品运行、产品修改和产品转移。
③关系
软件质量因素和3种产品活动(倾向)之间的关系,如图13.9所示。
表13.7 软件质量因素的定义
图13.9软件质量因素与产品活动的关系
思维导图百度网盘地址
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。