`

[转]一个软件设计的全过程(基于UML)

阅读更多

一个软件设计的全过程(基于UML)

            文/陈刚 at 2006年4月12日 from www.ChenGang.com.cn


前段时间把一个界面框架完成了,今天基于这个框架开发一个小模块,在这里把这个模块设计的全过程记录下来,希望大家讨论并指正。

一、起因

公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信测试。过去她们都是用MC4J直接调用公司服务器的MBean服务来模拟进行测试,以验证我们整个系统平台。这种测试主要是检查收发短信是否正常,而我的要做的工作就是,让她们在测试的时候更方便更直观。

二、需求

我和测试员陈MM(也就是软件的使用者)约定了一个时间,大家一起来讨论这个软件的需求。

1、首先,我大概了解了一下她们的测试工作,知道我要做个什么东东。

2、然后我回去思考了一下,再次找她详细了解其测试的具体步骤,并在一张白纸上以UML用例图的方式,记录下需求的功能。用例是什么?用例就是需求,就是你的软件应该具有的功能,当然用例图只是概括性的对功能进行了描述。

3、最后,我坐在我的电脑前开始用MagicDraw UML来画用例图(我不喜欢用Rose,那玩意太笨重了,界面友好性也不好)。在画用例图的时候,我发现了一些隐含的功能,这些是陈MM在和我做需求时没有考虑到的(注:开发者应该为用户挖掘隐含需求)。我和陈MM一一确定了这些我新发现的需求,最后得到如下的用例图。

(1)手机前台测试操作的用例图(说明:include是指某用例包含(include)子用例)

[用例]手机.jpg
 (2)后台管理
[用例]后台管理.jpg


三、界面设计

接下来是界面设计。既然是手机模拟,我很自然就拿我的motorola手机的操作界面来做参考。不过这里应该注意到,手机操作环境和电脑操作环境不尽相同(比如说电脑有鼠标,还有键盘可以输入文字),所以没有必要唯妙唯肖的完全模枋,还是以使用者操作方便为主。

界面设计是很重要的一步,不要一上来就写程序,一定要先做到心中有个大概,否则返工的可能性就很大。而且,把界面拿出来给客户看,客户也就能做到心中有数,还能尽早提出一些新需求和意见来。千万不要等到软件做完了再拿给客户看,到时客户看了如果要修改,那就做太多白费工了。

由于软件界面相对简单,陈MM基本没有提修改意见,但这不是个好兆头。不过极限编程就是要拥抱变化不是^_^。咱不怕她改,只要大致的界面她能定下来就行了。

界面我喜欢用Visio来画,当然也听说有人喜欢用VB来快速构建界面原型的,看个人喜好了。整个界面如下:
[界面设计]手机.jpg



这个是后台管理界面
[界面设计]号码管理.jpg



四、类图

类图反映了软件的数据模型。在设计数据模型,我参考了界面设计图和用例图,找出一个个的类。然后参照用例图的一个个功能,设计出了各类的属性和方法。设计初始的类图当然不可能很详细,但至少应该看到个大概。有错误不要紧,后期可以慢慢修正,但大体关系就算定下来了。

Neil(公司CTO,一个40岁左右的真正的资深程序员)说:看一个软件的设计主要看两个类:类图和时序图。类图确定了软件数据模型的静态关型,时序图则是数据模型的动态关系。

类图如下,看英文大致可以知道类/属性/方法的含义和作用了,就不一一介绍了。


[类图].jpg



五、时序图

时序图是本文最后一个图,时序图表明了用例图中各功能的实现方案,同时也反应了类图中各类的交互关系。以后程序的逻辑和时序图基本一致。不过,有些人会去画得很详细的时序图,详细到都快赶上伪代码级别了,我觉得这没必要。我把时序图看做反映自己思路的大概过程,所以也就画个大概。

我认为时序图要简洁易懂,这样以后你的后继维护者,拿到这个软件的时序图(当然也包括用例图、类图),就能明白你的大概设计思路。另外,画时序图也能整理自己的思路,同时还可以对类图的设计进行验证。在画这个时序图的过程中,我就纠正了在类图中的几处考虑不周的地方。

总结:时序图可以(1)整理思路(2)验证类的设计(3)是很好的软件文档,对维护者理解代码很有帮助。

这里仅给出其中几个时序图(实际上我也没有把用例都画完,有些类似的简单的,就忽略了)

(1)新增一个手机号码
[时序图]add phone number.jpg

(2)关机
[时序图]power off.jpg
(3)开机
[时序图]power on.jpg
(4)发送短信
[时序图]send message.jpg



到这里设计阶段就完成了,用时一天。下一步是编码,将应用TDD先写测试代码的方式来写代码,下次再介绍了。


作者简介

陈刚,广西桂林人,著作有《Eclipse从入门到精通》
您可以通过其博客了解更多信息和文章:http://www.ChenGang.com.cn
版权声明:本博客所有文章仅适用于非商业性转载,并请在转载时注明出处及作者的署名。

分享到:
评论

相关推荐

    一个软件设计的全过程(基于UML) 推荐

    一个软件设计的全过程(基于UML) 手把手教程 推荐

    基于UML的软件设计全过程

    UML是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。本文将要介绍一个基于UML的软件设计全过程,希望能对你有所帮助。

    基于UML的软件设计全过程.pdf

    基于UML的软件设计全过程.pdf

    基于UML的图书馆管理系统分析与设计

    UML(统一建模语言)是面向对象建模语言的标准,它可以对任何具有静态结构和动态行为的系统进行建模,它的主要作用是帮助用户进行面向的描述和建模,它可以描述软件从需求分析到软件实现和测试的全过程。标准建模语言...

    《UML面向对象需求分析与建模教程--基于uml2.5标准》 邹盛荣主编 书号:978-7-03-044467-7 科学出版社 2015 第二章.ppt

    本书主要介绍基于UML2.5标准系统建模的基本理论、软件分析与设计方法,书中加强了软件案例的UML示例说明,以提高学生的软件分析与设计水平,进一步托展学生分析问题、解决问题的能力,达到培养“厚基础、宽口径、会...

    一个软件设计的全过程(基于UML)

    前段时间把一个界面框架完成了,今天基于这个框架开发一个小模块,在这里把这个模块设计的全过程记录下来,希望大家讨论并指正。一、起因公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信测试...

    面向对象分析与设计UML2.0(PDF)

    本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了透彻的讨论。首先阐述了面向对象软件项目的基本概念,然后基于广泛使用的方法,介绍了使用...

    基于UML的人力资源管理系统建模

    全面管理员工劳动合同的签订、变更、续订、中止、接触全过程。并针对不同时期,不同的合同版本,提供版本管理,以及对于到期合同提供自动提示。 (7)招聘管理。对编制招聘计划、发布招聘信息、采集应聘信息、招聘甄选...

    UML面向对象需求分析与建模教程 9787030444677 邹盛荣 科学出版社 ---2015.09出版

    本书主要介绍基于UML2.5标准系统建模的基本理论、软件分析与设计方法,书中加强了软件案例的UML示例说明,以提高学生的软件分析与设计水平,进一步托展学生分析问题、解决问题的能力,达到培养“厚基础、宽口径、会...

    面向对象系列之一:《面向对象分析与设计》(UML2.0版) part1

    本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了透彻的讨论。首先阐述了面向对象软件项目的基本概念,然后基于广泛使用的方法,介绍了使用...

    面向对象分析与设计(UML.2.0版).pdf-part2

    著,俞志翔 译 <br>【出版社】清华大学出版社 <br>【ISBN】7302125465 <br>【出版日期】2006年04月 <br>本书详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。...

    面向对象分析与设计(UML.2.0版).pdf-part1

    著,俞志翔 译 <br>【出版社】清华大学出版社 <br>【ISBN】7302125465 <br>【出版日期】2006年04月 <br>本书详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。...

    面向对象分析与设计(UML.2.0版).pdf-part3

    著,俞志翔 译 <br>【出版社】清华大学出版社 <br>【ISBN】7302125465 <br>【出版日期】2006年04月 <br>本书详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。...

    面向对象分析与设计(UML.2.0版)

    本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了透彻的讨论。首先阐述了面向对象软件项目的基本概念,然后基于广泛使用的方法,介绍了使用...

    面向对象系列之一:《面向对象分析与设计》(UML2.0版) part2

    本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了透彻的讨论。首先阐述了面向对象软件项目的基本概念,然后基于广泛使用的方法,介绍了使用...

    《大象 Thinking In UML》pdf版(带书签)卷1/3

    在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的...

    《大象 Thinking In UML》pdf版(带书签)卷2/3

    在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的...

    大象Thinking In UML.pdf (Part1)

    在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的...

    《大象 Thinking In UML》pdf版(带书签)卷3/3

    在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的...

    大象Thinking In UML.pdf (Part3)

    在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的...

Global site tag (gtag.js) - Google Analytics