SoftwareEngineeringCCUTSE2013吉林省精品课程:软件工程导论CCUTSE201321.估算软件规模2.工作量估算3.进度计划4.人员组织5.质量保证6.能力成熟度模型7.软件配置管理8.能力成熟度模型主要内容吉林省精品课程:软件工程导论CCUTSE20133导言俗话说“三分技术,七分管理”俗话说“吃不穷穿不穷算计不到就受穷”俗话说“巧妇难为无米之炊”吉林省精品课程:软件工程导论CCUTSE20134软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。导言软件项目目标技术管理俗话说“三分技术,七分管理”吉林省精品课程:软件工程导论CCUTSE20135工程与项目工程:是类,是总称,项目:是对象,是实例,是一个具体的工程。导言工程项目吉林省精品课程:软件工程导论CCUTSE20136软件项目管理贯穿于软件的整个生命周期导言软件项目管理吉林省精品课程:软件工程导论CCUTSE20137什么是管理(management)?管理就是通过计划、组织和控制等一系列活动,合理地配置和使用资源,达到既定目标的过程。导言计划组织控制过程资源合理使用与配置效率质量吉林省精品课程:软件工程导论CCUTSE20138软件项目管理的内容导言时间管理人员管理配置管理质量管理吉林省精品课程:软件工程导论CCUTSE20139项目的时间管理导言估算工作量软件需求KLOCFP估算规模人月估算进度GanttPert模型模型模型吉林省精品课程:软件工程导论CCUTSE201310项目的人员管理导言民主制程序员组主程序员组现代程序员组吉林省精品课程:软件工程导论CCUTSE201311项目的质量管理导言产品运行SQA小组活动措施基于非执行的测试基于执行的测试程序正确性证明吉林省精品课程:软件工程导论CCUTSE201312软件的配置管理导言数据程序文档软件配置项变化管理×标识变化版本控制变化控制报告配置审计吉林省精品课程:软件工程导论CCUTSE201313能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。导言吉林省精品课程:软件工程导论CCUTSE201314能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。导言吉林省精品课程:软件工程导论CCUTSE201315能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。导言吉林省精品课程:软件工程导论CCUTSE201316能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。导言吉林省精品课程:软件工程导论CCUTSE201317能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。导言吉林省精品课程:软件工程导论CCUTSE2013181.代码行(KLOC/LOC)技术11.1估计软件规模出发点:依据以往开发类似产品的经验和历史数据。L=6a+4m+b---加权平均法:多名有经验的软件工程师每人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别计算出这3中规模的平均值a,b和m之后,计算L。---吉林省精品课程:软件工程导论CCUTSE2013191.代码行(KLOC/LOC)技术11.1估计软件规模L=6a+4m+b---工程师abm唐僧111312孙悟空101311沙僧91210猪八戒131714白龙马121513均值111412=611+4×14+12=13.17吉林省精品课程:软件工程导论CCUTSE2013201.代码行(KLOC/LOC)技术11.1估计软件规模优点:代码是所有软件项目的产品,且代码行易于计算。缺点:(1)代码仅是软件配置的成分之一,用代码行表示软件规模不尽合理;(2)用不同语言实现统一软件,代码行数并不相同。吉林省精品课程:软件工程导论CCUTSE2013212.功能点(FP)技术11.1估计软件规模克服代码行技术的缺点;依据软件信息域特性和软件复杂性的评测结果。用功能点(FP)为单位度量软件规模。吉林省精品课程:软件工程导论CCUTSE2013222.功能点(FP)技术11.1估计软件规模(1)信息域特性输入项数(Inp)输出项数(Out)查询数(Inq)主文件数(Maf)外部接口数(Maf)信息域吉林省精品课程:软件工程导论CCUTSE2013232.功能点(FP)技术11.1估计软件规模(1)信息域特性输入项数(Inp):用户向软件输入的项数,这些输入给软件提供面向应用的数据,不包括查询。输出项数(Out):查询数主文件数外部接口数吉林省精品课程:软件工程导论CCUTSE2013242.功能点(FP)技术11.1估计软件规模(2)估算功能点的步骤计算未调整的功能点UFP计算技术复杂性因子TCF计算功能点数FP吉林省精品课程:软件工程导论CCUTSE2013252.功能点(FP)技术11.1估计软件规模(2)估算功能点的步骤①计算未调整的功能点UFPUFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf复杂级别特性系数简单平均复杂输入系数a1346输出系数a2457查询系数a3346文件系数a471015接口系数a55710吉林省精品课程:软件工程导论CCUTSE2013262.功能点(FP)技术13.1估计软件规模(2)估算功能点的步骤②计算技术复杂性因子TCF①确定技术因素对软件规模的影响值F1~F14;0≤Fi≤5②计算技术因素对软件规模的综合影响程度DI;DI=∑Fi③计算技术复杂性因子TCF。TCF=0.65+0.01×DIi=114吉林省精品课程:软件工程导论CCUTSE2013272.功能点(FP)技术11.1估计软件规模(2)估算功能点的步骤序号Fi技术因素1F1数据通信2F2分布式数据处理3F3性能标准4F4高负荷的硬件5F5高处理率6F6联机数据输入7F7终端用户效率序号Fi技术因素8F8联机更新9F9复杂的计算10F10可重用性11F11安装方便12F12操作方便13F13可移植性14F14可维护性技术因素②计算技术复杂性因子TCF吉林省精品课程:软件工程导论CCUTSE2013282.功能点(FP)技术11.1估计软件规模(2)估算功能点的步骤③计算功能点数FPFP=UFP×TCF吉林省精品课程:软件工程导论CCUTSE2013292.功能点(FP)技术11.1估计软件规模(3)FP技术的优缺点优点:与编程语言无关,比代码行技术更加合理;缺点:在判断信息与特性复杂级别和技术因素的影响度时,主观性较大。吉林省精品课程:软件工程导论CCUTSE20133011.2工作量估计工作量单位:人月(pm)。工作量估算:是估算而不是计算,因为是事先而不是事后。工作量模型:是经验公式,是KLOC或FP的函数。模型类别:静态模型动态模型构造模型吉林省精品课程:软件工程导论CCUTSE20133111.2工作量估计1.静态单变量模型E=A+B×(ev)C其中:E:工作量A,B,C:经验常数ev:估算变量(KLOC或FP)总体结构形式吉林省精品课程:软件工程导论CCUTSE20133211.2工作量估计1.静态单变量模型①Walston_Felix模型:E=5.2×(KLOC)0.91(1)面向KLOC的估算模型②Bailey_Basili模型:E=5.5+0.73×(KLOC)1.16③Boehm简单模型:E=3.2×(KLOC)1.05④Doty模型(KLOC9时):E=5.288×(KLOC)1.047吉林省精品课程:软件工程导论CCUTSE20133311.2工作量估计1.静态单变量模型①Albrecht&Gaffney模型:E=-13.39+0.0545FP(2)面向FP的估算模型②Maston,Barnett和Mellichamp模型:E=5.587+15.12FP吉林省精品课程:软件工程导论CCUTSE20133411.2工作量估计1.静态单变量模型对于相同的KLOC或FP用不同的模型得到的结果不同,这是因为模型经验来自于有限领域和有限项目,进而适用范围有限,因此实际应用时应适当调整模型(如,修改常数)。(3)静态单变量模型的评价吉林省精品课程:软件工程导论CCUTSE20133511.2工作量估计2.动态多变量模型E=(LOC×B0.333/P)3×(1/t)4其中E是工作量;t是项目持续时间;B是特殊技术因子,当KLOC=5~15时B=0.16,当KLOC70时B=0.39;P是生产率参数,P=2000(嵌入式软件),P=10000(电信系统/系统软件),P=28000(商业应用系统)。(1)总体结构形式吉林省精品课程:软件工程导论CCUTSE20133611.2工作量估计2.动态多变量模型①是软件规模和开发时间的函数;②开发统一软件时,延长项目持续时间可降低完成项目所需的工作量。(2)模型评价吉林省精品课程:软件工程导论CCUTSE20133711.2工作量估计3.构造性成本模型:COCOMO2模型①应用系统组成模型:估算构建原型的工作量;②早期设计模型:适用于体系结构设计阶段;③后体系结构模型:适用于体系结构设计之后的开发阶段。(1)模型层次吉林省精品课程:软件工程导论CCUTSE20133811.2工作量估计3.构造性成本模型:COCOMO2模型(2)后体系结构模型其中:E是工作量a是模型系数b是模型指数fi是成本因素E=a×KLOCb×∏fii=117吉林省精品课程:软件工程导论CCUTSE20133911.3进度计划1.估算开发时间2.Gantt图3.工程网络4.估算工程进度5.关键路径6.机动时间吉林省精品课程:软件工程导论CCUTSE20134012人员组织1.民主制程序员组2.主程序员组3.现代程序员组民主制程序员组主程序员组现代程序员组吉林省精品课程:软件工程导论CCUTSE20134112人员组织1.民主制程序员组特点:地位平等,充分民主,协商决策。通信路径:n(n-1)/2规模:较小,2-8人为宜优点:积极面对程序错误,质量较高;充分民主,凝聚力高,利于攻关;实用于成员经验均丰富时。缺点:成员经验均不丰富,缺乏协调,导致失败。吉林省精品课程:软件工程导论CCUTSE20134212人员组织2.主程序员组主程序员编程秘书后备程序员程序员程序员程序员吉林省精品课程:软件工程导论CCUTSE20134312人员组织2.主程序员组主程序员编程秘书后备程序员程序员程序员程序员产生背景:IBM公司20世纪70年代初期发明。(1)软件开发人员多数比较缺乏经验;(2)程序设计过程中有许多事物性工作,如信息存储和更新;(3)多渠道通信很费时间,将降低程序员的生产率。吉林省精品课程:软件工程导论CCUTSE20134412人员组织2.主程序员组主程序员编程秘书后备程序员程序员程序员程序员特性:(1)专业化:该组每名成员仅完成他们受过专业训练的哪些工作。(2)层次化:主程序员指挥没命组员工作,并对工作全面负责。吉林省精品课程:软件工程导论CCUTSE20134512人员组织2.主程序员组主程序员编程秘书后备程序员程序员程序员程序员分工:(1)主程序员:体系结构设计、关键部分详细设计,技术指导。(2)后备程序员:协助主程序员,必要时接替主程序员。(3)编程秘书:负责事务性工作。吉林省精品课程:软件工程导论CCUTSE20134612人员组织2.主程序员组主程序员编程秘书后备程序员程序员程序员程序员缺点:(1)主程序员:是高级程序员和优秀管理者的结合体,难找。(2)后备程序员:期望与主程序员一样优秀,难找。(3)编程秘书:专业人员厌烦事务工作,难找。吉林省精品课程:软件工程导论CCUTSE20134712人员组织3.现代程序员组技术组长行政组长程序员程序员程序员(1)现代程序员组的结构技术管理非技术管理吉林省精品课程:软件工程导论CCUTSE20134812人员组织3.现代程序员组程序员程序员程序员(2)大型项目的技术管理组织结构技术管理组长程序员程序员程序员程序员程序员组长组长项目经理吉林省精品课程:软件工程导论CCUTSE2013