这周又到了我们项目小组进行详细设计的阶段了。据了解呢,不大喜欢把详细设计做的太细,以便发挥下自己的创造力(初级设计能力)。但是借鉴其他国家(如日本)的公司,详细设计不但详细到类级别,甚至每个方法都还有伪代码,这种感觉确实是太不能发挥自己的主观能动性了。不过仁者见仁,智者见智,因为一个初级的程序猿如果先是看别人的设计,然后再开始自己的设计,也许学习曲线就不会那么陡峭,日子也会过的舒服一点儿也未可知。
在这次的作业中我谈到的就是UML在项目实施中的使用心得(详细设计阶段),以及下面的一部分扩展知识:UML建模与软件开发过程模型。
UML建模技术
UML是面向对象开发中一种通用的图形化建模语言,它定义良好、易于表达、功能强大且普遍适用。面向对象的分析主要在加强对问题空间和系统任务的理解、改进各方交流、与需求保持一致和支持软件重用等4个方面表现出比其他系统分析方法更好的能力,成为主流的系统分析方法。UML的出现既统一了Booch、OMT、OOSE,以及其他方法,又统一了面向对象方法中使用的符号,并且在提出后不久就被OMG接纳为其标准之一。从而改变了数十种面向对象的建模语言相互独立且各有千秋的局面,使得面向对象的分析技术有了空前发展。它本身成为现代软件工程环境中对象分析和设计的重要工具,被视为面向对象技术的重要成果之一。
软件开发模型
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。
UML建模与软件开发过程模型
现在谈到软件开发过程,大家可能也不会陌生,学过软件工程的人都能随口说上几个软件过程模型,现在要把这两种不同的模型拿到一起来讨论,一方面是软件开发的实际需要,另一方面也是UML建模工具要和其他面向对象开发模型结合的一种必然要求。
几种和UML建模结合的几种软件开发过程模型如下:
统一过程(UP)模型:统一过程模型在和UML建模结合时,采用以用例为驱动的方式,用用例连接所有活动,每个活动都建一组模型,如业务领域模型、责任领域模型、实现模型、测试模型,每组模型中又由多个不同的角色共同协作完成,比如具有专门进行用例建模的角色和组件建模的角色等等,采用增量迭代方式建立和完善用例,并对每一次建模进行评估,在项目的计划、监控等方面并非以建模为中心,而是把建模作为统一过程的一个小部分。该模型的主要缺点是周期长、人员要求多、建模工作量大。
迭代模型:它是采用较多的小迭代来实现最终的模型,也就是说,模型图是通过一系列步骤一步一步地建起来,每一次迭代都有新信息添加到模型中来,每一次迭代都要经过评估,都是下一次迭代的输入,迭代会使系统开发的活动(需求、分析、设计和测试)执行多次,并且每次都有新的内容增加进来。这个方法有一个缺点是在迭代的后期,仍然有新的需求增加进来。
增量模型:增量模型开发每次迭代都能产生一个可执行的结果,这个结果是一个可“交付的”系统版本,每一次迭代要经过评估,并且增加了一些新的功能,增量模型主要包括分析、设计、实现、测试四个活动。该方法有一个很大缺点是到了项目迭代后期还要进行设计,会给系统带来很大的风险。
XP模型:又叫极限编程,它是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是,整个开发是以测试为驱动的,它属于小型方法,对于初级软件开发企业有效,无法站在软件过程的行列谈和UML建模结合的问题。