软件过程改进的简介
对于软件企业来说,软件过程是整个企业最复杂、最重要的业务流程,软件产品就是软件企业的生命,改进整个企业的业务流程,最重要的还是要改进它的软件过程。
多年以来,人们认识到要想高效率、高质量和低成本地开发软件,必须以改善软件生产过程为中心,全面开展软件工程和质量管理手段。
这是世界各国软件产业都要走的路,中国软件产业之所以落后,不是因为技术落后,而是对软件生产的管理落后。
CMM就是结合了质量管理和软件工程的双重经验而制定的一套针对软件生产过程的规范。
由此可见,对软件生产过程的管理在整个软件企业的管理中起了决定性作用。
因此,从这种意义上讲,软件企业的BPR和CMM软件过程改进在实施对象是一致的。
在世界范围内,软件项目需求正以非常快的速度增长,并且这种增长看起来还远未达到目的。
这种增长已经导致软件开发活动急剧性的增长,已使得对用于构筑软件的过程,正确的说法是软件过程,得到更多的关注。
软件过程可以定义为人们用来开发和维护软件以及相关产品(如:工程计划、设计文档、规章、检测事例及用户手册)的一组活动、方法、实践及转换。
软件过程重要性的提高已经引起了对软件过程改进的要求,这就需要过程分析和评估的方法。
CMM在软件改进措施的策划上,措施计划的实施上和过程定义上都有着特使的价值。
在策划改进措施期间,具有有关其软件过程问题和经营环境的知识的软件工程组的成员可将CMM从关键过程域的目标和当前的实践相比较。
应该审查目标,管理优先级,实践运行的层次,实施每次实践对组织的价值,以及改进组织在其文化背景下一个实践的能力等方面有关的关键实践。
接下来,软件工程过程组必须确定哪些需要作过程改进,如何实现更改,以及如何获得所需要的改进。
CMM通过给有关过程改进的讨论为出发点,并且帮助揭示与通用软件工程实践所采用的那些完全不同的假定,从而对这些活动提供帮助。
在实施行动计划计划时,过程组可以用CMM 和关键实践来构造部门可操作的行动计划和定义软件过程。
软件设计的发展方向
软件开发过程是随着开发技术的演化而随之改进的。
从早期的瀑布式(Waterfall)的开发模型到后来出现的螺旋式的迭代(Spiral)开发,以后来开始兴起的敏捷开发方法(Agile),他们展示出了在不同的时代软件产业对于开发过程的不同的认识,以及对于不同类型项目的理解方法。
注意区分软件开发过程和软件过程改进之间的重要区别。
诸如像ISO15504,ISO9000,CMM,CMMI这样的名词阐述的是一些软件过程改进框架,他们提供了一系列的标准和策略来指导软件组织如何提升软件开发过程的质量、软件组织的能力,而不是给出具体的开发过程的定义。
“敏捷开发”(AgileDevelopment)是软件工程的一个重要的发展。
它强调软件开发应当是能够对未来可能出现的变化和不确定性作出全面反应的。
敏捷开发被认为是一种“轻量级”的方法。
在轻量级方法中最负盛名的应该是“极限编程”(ExtremeProgramming),简称为XP)。
而与轻量级方法相对应的是“重量级方法”的存在。
重量级方法强调以开发过程为中心,而不是以人为中心。
重量级方法的例子比如CMM、PSP、TSP。
面向侧面的程序设计(AspectOrientedProgramming),简称(AOP)被认为是软件工程的另外一个重要发展。
这里的方面指的是完成一个功能的对象和函数的集合。
在这一方面相关的内容有泛型编程(GenericProgramming)和模板。
简述软件开发工具的演变过程和原因?
软件过程的概念包含了软件生命周期里所涉及的一系列相关过程,它为管理那些软件开发过程中较难控制的活动提供了一个统一的框架。
软件过程是在软件生命周期中所实施的一系列活动的集合,活动是任务的集合,任务则起到把输入加工成输出的作用。
软件演化过程作为软件过程的一个分支,它同样也是一种软件过程,它通过对软件演化过程中的一些较难以控制的活动进行管理,试图为软件演化过程建立一个统一的流程框架。
软件演化能否取得成功在很大的程度上取决于组织所实施的软件演化过程。
因而,它对于软件的演化具有重要的意义。
同时,Osterweil提出的一个广泛被接受的观点"软件过程也是软件",软件演化过程作为软件过程的一个分支,同样,我们也可以像软件一样对其进行相关建模和编档。
软件演化是软件工程领域正逐步受到重视的研究方向,并将得到越来越多的关注。
文献从软件演化管理的角度,较为系统地讨论了软件演化过程的相关问题,包括软件演化过程元模型EPMM、软件演化过程描述语言EPDL、软件演化过程框架、软件演化过程建模方法、软件演化过程改进等。
文献还给出了一个软件演化过程的支撑工具,并提供了多个案例研究。
软件演化过程的目标就是在不违反系统约束的条件下,对软件系统的演化流程进行管理,从而使演化后的软件系统能够在功能满足用户的需求,同时它所展现出来的质量属性也维持在一个令人满意的水平上。
文献的作者认为软件演化过程应该具有如下的5个基本特征。
程序员,在开发的过程中应该注意哪些安全方面的问题
可忽视的误区 企业的软件开发能力取决于该企业的软件过程能力。
如果一个企业软件过程能力越成熟,那么该企业的软件开发能力就越有保证。
大量的实践经验表明,在体现企业软件开发能力的因素中,技术或工具并不是第一位的。
其实,许多问题不是出在不懂怎么做,而是没有安排做,做的次序不对,或不知道怎样做得更好。
目前,比照软件过程管理模型(如图一),中国的软件企业中还存在各种影响过程改进的因素和误区,主要表现在个体和组织两个方面。
在组织方面,首先,中国软件企业实施CMM往往缺乏高级管理者的支持。
其次,没有足够的SEPG资源。
从很多情况考虑,SEPG成员要比其他CMM相关组综合素质高一个层次,CMM相关组的管理素质需要比技术类组高一个层次,才能顺利开展工作。
第三,没有合适的先行者或者没有适当全局观的项目经理配合。
被组织选为先行者的人员经常说自己没有时间,由于这些人都是从各个项目中抽出来的,一般人很难有足够的权力让他们为配合CMM做工作。
最后,软件组织缺乏足够详细的项目计划和监督调整机制。
在个体方面,首先,手工作坊式的个人英雄主义情结成为实施CMM的制约。
其次,某些软件开发人员错误地认为过程管理会影响或压抑专业人员的创造性,其实这是不清楚过程的定义造成的。
第三,由于软件项目的成功更多地依赖于少数人员的杰出技术能力和项目管理能力,成功项目的经验不能得到最大限度的继承,软件生产的可重复性相对比较差。
最后,软件企业人员变更相对频繁也增加了实施CMM的难度。
“三七”法则 在过程改进总体建议方面,应该从三个方面做准备,分七步走。
首先,在组织方面的准备上,除了要求高层经理出资支持CMM改善软件过程,委托具有管理职责的人员负责CMM实施之外,须成立软件工程过程组(SEPG),研究CMM、编写/修改必要的文档并推广文档;成立软件质量保证组(SQAG),研究软件质量保证技术及过程,编写/修改必要的SQA文档并推广已编写的文档,测量和分析项目进展情况,反馈项目过程状态,准备和评审过程、计划和标准,审计指定的软件工作产品以检验其遵从性,审计软件工作过程的符合性;成立软件配置管理组(SCMG),研究软件配置管理技术及过程,编写/修改必要的SCM文档并推广已编写的文档,建立必要的工具支持。
在知识准备方面,要加强培训工作,建立内部过程评估队伍和庞大的过程改善队伍。
对各角色人员进行专项培训,普遍开展软件工程基础及CMM的培训,使每个岗位的人员都具备过程改进的意识,并掌握所必需的过程改进知识和技能。
此外,要重视对软件工程的研究,包括方法、工具和过程,加速培养过程改进的骨干队伍。
在能力准备方面,建立有效的软件项目管理,文档化且遵循软件项目管理过程,在建立管理过程中,使用组织的方针来指导项目,建立基本软件工作产品完成准则和检查单,并迅速实施,然后根据反馈意见及时修改。
坚持适当的监控机制,例如对项目进度进行跟踪而建立的例会制度,制度化的日报和周报活动。
做好实际数据收集、测量与分析工作等。
重复成功的以前项目的开发经验。
改进过程总体可以分为以下七个步骤。
确定目标:确定在一段时间内达到的改进等级。
状态诊断:把过程改进要达到的状态与目前的状态作比较,找出存在的差距。
制定计划:“凡事有计划,按计划办”不仅是CMM强调的,也是软件开发过程中应该注意的。
规程制定:过程改进的一个重要的地方就是“事事有规程,时时有记录”,这样,即使关键人走了,原来的事也能继续而不致产生过多的停顿。
过程试点:制定了规程后,要对行动计划按执行过程的情况进行适当调整。
其中,尤其要注重评审和验证,实现定期监控,注意采集度量数据。
反馈修正:总结过程试点的经验,修订规程。
过程推广:扩大应用范围。
软件过程改进实施步骤 公司的过程改进活动也是一个项目,并且是很大的项目,涉及的人员、技术和资源都很多,还要平衡现有产品或项目的进度等。
同时,它也是一个不断往复,螺旋上升的一个过程。
第一个步骤为高级经理下定决心,提供足够的资源来主持并完成前期的准备工作,这个阶段核心是评价SEPG组长的资格和资质,还包括评估培训、购买工具的预算及相应资金能否及时到位。
无论是软件商业化的过程或CMM实施的过程之中,建立规范化的易于操作的软件开发行为规范都是首先要做的工作。
但是,切记,编制规范的时间一定不能长,以10到12个工作日为宜,文档不宜过多,以5~6个规程为好(对应5个或6个关键过程域),这是第二个关键阶段。
评价标准可以是SEPG组长能够顺利、流畅地讲解其制定的规程。
在规程编制阶段必须有老板或常务副总直接领导CMM工作。
但是一定要记住,制定的过程要遵从“从实践中来,到实践中去”,同项目经理、有经验的开发人员研究、讨论,从而使SEPG组长能够及时反映工作中的问题,并且问题能够得到及时解决。
第三个步骤是制定并发布公司的评估方针和方案,包括开发体系重组过程中的激励措施,中层在此阶段必须介入,这关系着过程改进...
在软件开发过程中常见的控制软件质量的方法有哪些
以软件过程管理为核心,软件过程管理围绕软件过程改进的5个方面展开描述,循序渐进地提出软件过程改进模型,为软件开发组织提高管理能力提供了引路的"灯塔"。
本书首先描述了软件过程管理框架及其在软件过程评估中的作用,阐述了开始有效过程改进的步骤;其次确定了软件过程管理所需要的活动;接着又提出相关概念,确定开发过程和管理及控制过程所需要的技术和管理;随后介绍了对软件过程进行量化控制的方法;最后引导人们如何防患于未然,将工作重心从解决问题转移到预防问题。
软件工程过程各步骤由什么岗位的人负责
个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。
PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。
统一过程RUP软件开发的优缺点是什么
RUP 具有很多长处:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。
它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。
但同时它也存在一些不足: RUP只是一个开发过程,并没有涵盖软件过程的全部 内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。
可以说 RUP是一个非常好的开端,但并不完美,在实际的 应用中可以根据需要对其进行改进并可以用OPEN和OOSP等其他软件过程的相关内容对RUP进行补充和完善。
...