TDD开发的全过程之分析建模

简介:
一、起因
  公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信测试。过去她们都是用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先写测试代码的方式来写代码。

















本文转自周金桥51CTO博客,原文链接:http://blog.51cto.com/zhoufoxcn/167069  ,如需转载请自行联系原作者




相关文章
|
11月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的服务器日志文件
本文介绍了PostgreSQL数据库的物理存储结构,重点讨论了服务器日志文件。通过`pg_ctl`命令启动PostgreSQL实例时,使用`-l`参数指定日志文件位置,记录数据库启动、运行及关闭过程中的关键信息。附有相关视频讲解和日志文件示例。
300 0
|
11月前
|
搜索推荐 Python
使用Python自动化生成物业通知单
本文介绍如何使用Python结合Pandas和python-docx库自动化生成物业通知单。通过读取Excel数据并填充至Word模板,实现高效准确的通知单批量制作。包括环境准备、代码解析及效果展示,适用于物业管理场景。
277 14
|
人工智能 搜索推荐 大数据
智能食品生产:自动化与定制化的食品制造
【10月更文挑战第26天】本文探讨了智能食品生产中的自动化与定制化趋势。自动化技术在原料处理、加工制造、包装和质检等环节的应用,显著提高了生产效率和产品质量。智能化技术则通过物联网、大数据、云计算和人工智能等手段,实现了更高效、精准和灵活的生产,并能满足消费者的个性化需求。虽然面临高成本、技术维护和数据安全等挑战,但政府和企业共同努力,将推动食品行业的健康和可持续发展。
|
11月前
|
运维 供应链 监控
【云故事探索】NO.12:茶百道——奶茶上云,原生的更好喝
茶百道自2008年成立,从100家门店扩展至7000多家,年销量达8亿杯。2018年起,茶百道开启全国加盟,通过数字化转型,实现供应链、运营及营销的全面升级。借助阿里云技术,优化从前端到后端的业务流程,提升用户体验,降低运营成本,显著增强了市场竞争力。
|
11月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
2491 7
|
11月前
|
Unix Linux 开发工具
git中有关old mode 100644、new mode 10075的问题解决小结
在 Git 中处理文件权限变更时,理解 `old mode 100644` 和 `new mode 100755` 的含义是解决问题的关键。通过确认变更的合理性、修改不必要的权限变更,以及配置 Git 忽略权限变更,可以有效管理文件权限,确保版本库的稳定性和一致性。
1124 3
|
弹性计算 人工智能 负载均衡
什么是阿里云服务器?云服务器的优缺点
阿里云是阿里巴巴集团的旗舰云计算品牌,它为全球各种规模的企业提供了云计算服务。阿里云服务器是阿里云的一项核心业务,它是一种可靠的云服务解决方案,具有许多优势。
1005 0
|
存储 安全 数据安全/隐私保护
关于我用无影玩游戏这件事
用无影玩游戏多是一件‘’美事‘’
9478 1
关于我用无影玩游戏这件事
|
虚拟化 Python 容器
python虚拟环境的安装和搭建
通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。
663 0
python虚拟环境的安装和搭建
|
编解码 人工智能 算法
3999元起:华为Mate 20系列正式开售
余承东用行动告诉我们那句「稳了」的含义:不仅配置到位,价格也到位。
837 0
 3999元起:华为Mate 20系列正式开售