论文部分内容阅读
60年代中期到70年代中期软件的开发由于缺乏实践的指导而产生“软件危机”。于是80年代初以来,软件过程被广泛讨论。人们试图通过各种模型、规范、方法、和约束米控制、管理软件的开发活动。 早先对软件过程的讨论集中在重载过程上。重载过程引入约束来控制软件开发活动。这些约束用来减少变化,控制变化。但是变化在实践中被证明是不可避免的,相反特别对于中小型软件项目来说,这些过程约束往往使得开发活动笨重繁琐,不同程度上降低了团队的响应能力。这些由于引入过程而带来的额外的成本是中小型软件项目不愿接受的。 2001年初,敏捷联盟诞生,随之涌现出许多优秀的轻载软件开发方法。包括:SCRUM、Crystal、特征驱动软件开发(Feature Driven Development)、自适应软件开发(Adaptive Software Development)以及极限编程(eXtream Programming)。这些软件开发方法都具有适应变化,灵活,需求驱动,以人为中心,重实质轻形式的特点。为软件过程的科学管理提供了新的思路。 然而,敏捷的软件开发(Agile Software Development,简称ASD)方法大都没有量化的过程改进机制。如何使开发方法更加贴近具体的组织应用于具体的工程并没有一个很好的方案。对于讲究快速迭代,高效开发“务实”的ASD来说,用传统的软件度量手段去量化过程特性成本太高。没有具体的数据作指导,过程的改进和量身定做就只能停留在体验式和实践式,而不是客观的从实际数据上分析得到。这样的改进过程并非基于客观数据,所以往往具有高风险和高成本的缺点,事倍功半容易走弯路。 同时,ASD的实践也缺少支撑工具。一方而是由于市面上软件过程工具大多在活动控制和约束方面提供功能,这正是ASD要避免的。另一方面ASD的特点要求工具尽可能轻便,灵活,易于使用并具有针对性。所以特别为ASD所用并能显著提高生产效率的工具至今还没有看到。但是,ASD是有其自身的特点,针对这些特点如果能开发出一套支撑工具,还是可以在软件开发的效率,软件产品的可靠性上带米很大的帮助。比如,由于ASD接受变化,频繁的更改使得测试在ASD中的比重多过于传统的开发过程。对于自动测试的支持将会大大提高ASD开发效率,并且可以解决很大一部分因为手工测试而带米的一系列问题。 在本文中,作者试图针对ASD的特性,开发山一套适应ASD要求的辅助工具,解决ASD暴露出米的问题,改善和提高ASD的开发效率和产品质量。本文首先提出泛度量的概念,探索在产品开发阶段,产品的开发属性和产品质量之间关系,并探讨这些属性的零成本收集方法。这样,这些数据就能客观地成为相关软件开发组织改进过程的依据,并能进一步应用于各种度量模型来完成各种相应的功能。其次,也是本文的重点,提出了面向对象的软件自动测试的方法。应用于此方法来提高ASD开发效率和开发品质,并特别针对ASD的实践特性提出规范驱动开发(Spec Driven Development,SDD)的方法。最后,本文介绍了在Visual Studio.net 2003上设计实现的支持上述方法的工具软件(SolidDev)。