一、起因
公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信测试。过去她们都是用MC4J直接调用公司服务器的MBean服务来模拟进行测试,以验证我们整个系统平台。这种测试主要是检查收发短信是否正常,而我的要做的工作就是,让她们在测试的时候更方便更直观。
二、需求
我和测试员陈MM(也就是软件的使用者)约定了一个时间,大家一起来讨论这个软件的需求。
1、首先,我大概了解了一下她们的测试工作,知道我要做个什么东东。
2、然后我回去思考了一下,再次找她详细了解其测试的具体步骤,并在一张白纸上以UML用例图的方式,记录下需求的功能。用例是什么?用例就是需求,就是你的软件应该具有的功能,当然用例图只是概括性的对功能进行了描述。
3、最后,我坐在我的电脑前开始用MagicDraw UML来画用例图(我不喜欢用Rose,那玩意太笨重了,界面友好性也不好)。在画用例图的时候,我发现了一些隐含的功能,这些是陈MM在和我做需求时没有考虑到的(注:开发者应该为用户挖掘隐含需求)。我和陈MM一一确定了这些我新发现的需求,最后得到如下的用例图。
(1)手机前台测试操作的用例图(说明:include是指某用例包含(include)子用例)
(2)后台管理
三、界面设计
接下来是界面设计。既然是手机模拟,我很自然就拿我的motorola手机的操作界面来做参考。不过这里应该注意到,手机操作环境和电脑操作环境不尽相同(比如说电脑有鼠标,还有键盘可以输入文字),所以没有必要唯妙唯肖的完全模枋,还是以使用者操作方便为主。
界面设计是很重要的一步,不要一上来就写程序,一定要先做到心中有个大概,否则返工的可能性就很大。而且,把界面拿出来给客户看,客户也就能做到心中有数,还能尽早提出一些新需求和意见来。千万不要等到软件做完了再拿给客户看,到时客户看了如果要修改,那就做太多白费工了。
由于软件界面相对简单,陈MM基本没有提修改意见,但这不是个好兆头。不过极限编程就是要拥抱变化不是^_^。咱不怕她改,只要大致的界面她能定下来就行了。
界面我喜欢用Visio来画,当然也听说有人喜欢用VB来快速构建界面原型的,看个人喜好了。整个界面如下:
这个是后台管理界面
四、类图
类图反映了软件的数据模型。在设计数据模型,我参考了界面设计图和用例图,找出一个个的类。然后参照用例图的一个个功能,设计出了各类的属性和方法。设计初始的类图当然不可能很详细,但至少应该看到个大概。有错误不要紧,后期可以慢慢修正,但大体关系就算定下来了。
Neil(公司CTO,一个40岁左右的真正的资深程序员)说:看一个软件的设计主要看两个类:类图和时序图。类图确定了软件数据模型的静态关型,时序图则是数据模型的动态关系。
类图如下,看英文大致可以知道类/属性/方法的含义和作用了,就不一一介绍了。
五、时序图
时序图是本文最后一个图,时序图表明了用例图中各功能的实现方案,同时也反应了类图中各类的交互关系。以后程序的逻辑和时序图基本一致。不过,有些人会去画得很详细的时序图,详细到都快赶上伪代码级别了,我觉得这没必要。我把时序图看做反映自己思路的大概过程,所以也就画个大概。
我认为时序图要简洁易懂,这样以后你的后继维护者,拿到这个软件的时序图(当然也包括用例图、类图),就能明白你的大概设计思路。另外,画时序图也能整理自己的思路,同时还可以对类图的设计进行验证。在画这个时序图的过程中,我就纠正了在类图中的几处考虑不周的地方。
总结:时序图可以(1)整理思路(2)验证类的设计(3)是很好的软件文档,对维护者理解代码很有帮助。
这里仅给出其中几个时序图(实际上我也没有把用例都画完,有些类似的简单的,就忽略了。
(1)新增一个手机号码
(2)关机
(3)开机
(4)发送短信
到这里设计阶段就完成了,用时一天。下一步是编码,将应用TDD先写测试代码的方式来写代码。
分享到:
相关推荐
Martin,作为敏捷开发的权威和实践者,通过《敏捷软件开发:原则、模式与实践》一书,向读者展示了一系列核心原则、模式和实践经验,旨在解决软件开发人员、项目经理及软件项目领导在开发过程中面临的问题。...
《.Net 完全开发流程》是一本专为.NET开发者提供的指南,主要涵盖了从项目启动到最终交付的全过程。英文版的书籍虽然语言上有一定的挑战,但对于深入理解.NET开发技术而言,无疑是一份宝贵的资源。这本书的核心内容...
本书全面覆盖了从项目规划、设计、编码、测试到部署的全过程,旨在帮助读者掌握C#在实际软件工程中的核心技能。 首先,项目开发的起点是需求分析。在C#软件项目中,这通常涉及到与客户或利益相关者的沟通,理解他们...
在这个过程中,学生通常会被分配一个具体的项目,以模拟真实的软件开发环境,从需求分析、设计、编码到测试,全方位地体验软件生命周期。 在大学软件开发课程设计中,学生可能会遇到以下关键知识点: 1. **需求...
这款工具提供了全面的模型驱动开发环境,帮助开发者实现从需求分析到系统架构设计,再到代码生成和测试的全过程管理。"Essentials of Rational Software Architect"则涵盖了使用该工具的核心概念和技术。 在...
《软工导论》是一门深入探讨软件工程基础与实践的课程,旨在引导学生理解软件开发的全过程,从需求分析到系统设计,再到编码、测试和维护。这门课程是计算机科学与技术专业的重要组成部分,它帮助学生建立起系统性的...
《软件工程》是一门深入探讨软件开发全过程的学科,涵盖了从需求分析、设计、编码、测试到维护的各个阶段。交通大学的这套课件为学习者提供了详尽且系统的知识体系,不仅讲解了基础理论,还结合实例进行了分析,旨在...
非程序员第51期刊物中的“测试驱动开发全攻略”章节可能包含了TDD的基本原理、实践步骤以及如何将其融入日常开发流程中。 ### 3. UML工具发展趋势 统一建模语言(UML)是一种用于软件工程的标准化建模语言。非...
《软件工程》是由齐治昌编著的第三版教材,这本书深入浅出地探讨了软件开发的全过程,包括软件需求分析、设计、实现、测试以及维护等各个环节。作为一本重要的IT知识参考资料,它覆盖了软件工程的基础理论和实践方法...
【软件工程】是一门涉及软件开发全过程的学科,它涵盖了从需求分析、设计、编码、测试到维护的各个阶段。本课程的期末考试主要考察学生对软件工程基本概念、方法和实践的理解,以及运用这些知识解决实际问题的能力。...
《软件工程学》是计算机科学领域的一个重要分支,它涵盖了软件开发的全过程,包括需求分析、设计、编码、测试和维护。以下是对该主题的详细阐述: 1. 需求分析:这是软件工程的第一步,也是至关重要的一步。在这个...
首先,"软件工程"是整个课程的基础,它涉及到软件开发的全过程,包括需求分析、设计、编码、测试和维护。理解软件工程的基本原则和方法,有助于开发者在项目管理、质量保证和团队协作方面做出明智的决策。 "设计...
《软件工程》是计算机科学与技术领域的一门核心课程,主要研究如何有效地进行软件开发、维护和管理。...通过深入学习,我们可以更好地理解和实践软件工程的全过程,从而在实际工作中发挥更大的效能。
首先,软件工程是一门涉及软件开发全生命周期的学科,它包括需求分析、设计、编码、测试和维护等多个阶段。在这些阶段中,每一个步骤都需要严谨的方法和工具支持。通过学习这份教案,我们可以了解到如何有效地管理...
- **定义**:软件工程是一种系统性的方法,用于软件产品的开发、运行、维护等全过程。 - **目标**: - 提高软件产品的质量。 - 控制成本。 - 按时交付。 - 提升软件的可维护性和可扩展性。 **1.3 软件工程的...
现代软件工程是一门涵盖软件开发全过程的学科,它包括需求分析、设计、编码、测试以及维护等多个阶段。这个领域的知识广泛而深入,涉及到项目管理、软件质量保证、敏捷开发、模型驱动工程等多个方面。以下是对现代...