oo分析的过程是理解需求,分析业务的过程。没有了oo分析能很好的了解你要做的业务吗?这是我这两天进行一个模块分析后,想到的一个问题。虽然进行oo的分析设计已经很长时间了,但是这次才让我感到oo分析还意味着什么。
这两天来到新公司负责一个手机充值的功能,适应了几天做了点东西之后头头跟我说了句咱要加入手机支付的功能。当我用期待的眼光寻求需求文档的时候,头头慷慨的跟我口头说了一边需求,头头是这样跟我说的“我们现在要加入一种充值方式就是手机充值,跟XXXX公司合作的,他们上行通知我们,然后我们返回结果给他,之后发送下行给他们,他们会返回处理结果,成功后我们需要记录用户的充值信息,把金额加入用户的帐户,后台可能需要配置手机充值的类型和一些相关的查询操作”大体明白之后,他跟我说“其实不是很复杂,对你来说很简单的。你可以写一个action接受他们的上行,然后记录下来,去调用他们的下行,成功后记录下来就可以了,后台管理的需求你要自己想一想,自己设计一下”。
以前在做分析设计的时候,需求都是比较完整的了,吃透需求后,可以发现系统中可以变化的部分,可扩展的部分,这样在进行分析和设计的时候就可以多考虑一些,这些看起来都是值得去进行设计的。但是这次的需求看起来似乎很简单,如果按头头说的写个action,再写点别的东西就可以满足需求了。但是我还是固执的用仅有的时间做了这次分析。
首先我对需求进行了一些分析,按习惯第一点是要把领域对象找出来。但是对于这样比较抽象的需求来说,抽象领域对象似乎不是很容易。抽象领域对象的时候发现了很多系统的细节问题。比如以后换了合作公司怎么办?对于不同类型的支付方式可能要采取不同的方法,包月用户怎么续费?怎样记录用户的流水和钱包的更改?有一些问题似乎太过于细节了,可以先放到后面,通过需求和简单的分析,反复之后,找到了三个领域对象,用户,手机支付,用户钱包。手机支付我想可以更加抽象一些,理解成为支付方式。这样的话,以后也可以对现有的支付方式进行重构。
之后由于时间紧迫就开始了用uml进行对象的设计。考虑到要记录用户的流水和钱包的计算还有一些关于手机充值的记录,所以将支付方式和信息记录进行了独立的处理以求达到解藕,支付方式中有不同的实现,手机支付或者支付宝等等,支付方式中有代理类。代理类依赖于信息记录,可以接受一个支付方式的对象。这样我既可以通过代理类直接记录支付的情况,也可以不用代理类,手动的记录支付情况。信息记录用到的是装饰模式,对不同的信息记录方式都可以进行功能的叠加。考虑到性能的问题,要对上行进行队列处理,所以手机支付是一个抽象类,依赖于手机消息队列。不同的合作伙伴可以有自己的实现。进行了这些分析之后,我把对于一些问题的疑惑跟头头商量之后,得到了一些答复,一些细节的需求问题也就有了眉目了。
大体的设计就是这个样子的了,有的地方也还不是很好,但是通过这次的分析,可以放你更清楚的看到需求,理解系统中可能出现的变化的地方。oo设计可以让你有更好的结构,让你的代码可维护,可扩展,但还有一点就是可以帮你理解需求,发现系统中变化的部分。另外设计是需要不断的反思,不断的重构的,不断的讨论的。我想如果了没有这种设计行为,只是简单的完成工作,不是一个程序员应该有的职业希望。对于一个很简单的需求,我们其实也可以发现他变化的地方,分析之后才能感到对他值得不值得设计。在我进行设计手机支付的时候也想过,这个值得考虑那么多吗?其实整个的分析过程才让我感觉到,这也是一种挖掘需求的过程。
oo分析的过程是也理解需求,分析业务的过程。
分享到:
相关推荐
虽然在分析过程中,用例之间可能存在扩展、实现或继承等关系,但这并不影响它们在业务层面上的独立性。 2. 可观测性与意义:用例的结果对参与者来说应该是明显且有意义的。例如,登录系统对用户有实际价值,而输入...
面向对象(Object-Oriented, OO)开发过程是一种软件开发的方法论,它强调将现实世界中的实体抽象为对象,通过对象之间的交互来实现系统功能。UML(Unified Modeling Language)是一种标准化的统一建模语言,用于...
首先,章节引入了面向对象分析(OOA),这是系统分析过程中的一个重要部分,通过对象建模来识别和理解系统环境中的对象及其相互关系。在OOA中,研究现有的对象以判断其是否适合复用或改造,同时定义新的对象以构建...
在软件开发过程中,需求分析与设计是至关重要的步骤,它们为整个项目的成功奠定了基础。本主题将探讨"结构化与面向对象的需求分析与设计",深入理解这两种不同的方法及其在现代软件工程中的应用。 首先,让我们关注...
面向对象(OO)过程是一种软件开发方法,它以对象为中心,强调封装、继承和多态等核心概念。在OO过程中,UML(统一建模语言)作为一种强大的建模工具,被广泛用于描述和规划系统的设计和实现。《OO过程与UML应用》...
本知识体系主要围绕“OO软件工程”展开,包括了系统分析、需求理解和系统设计三个关键阶段。 首先,系统分析是软件开发的第一步,它涉及到对问题域的理解和建模。在“OO系统分析.doc”中,我们可能详细了解到如何...
综上所述,实战OO涵盖了软件开发的多个重要方面,从系统的部署与实施到具体的建模技术,再到问题域理解和需求分析,都是构建高质量面向对象系统的关键步骤。掌握这些知识点,不仅能够提升个人的编程技能,还能提高...
《完美的软件需求分析文档》是一份为初学者量身打造的指南,旨在提供全面而详细的指导,帮助读者理解和创建高效的需求分析文档。需求分析文档是软件开发过程中的关键环节,它定义了软件产品的预期功能、性能和用户...
通过对美乐乐的财务数据进行分析,可以为其他创业者提供借鉴,理解如何在初创阶段实现收支平衡,以及在扩张过程中如何保持健康的财务状况。 通过这份《美乐乐OO案例分析》,大学生和创业者不仅能学习到如何构建一个...
总的来说,OO过程和UML是软件开发中不可或缺的工具,它们帮助团队有效地理解和表达复杂的业务需求,管理项目风险,以及构建高质量的软件产品。通过深入理解这些概念,开发者能够更好地参与到软件生命周期的各个阶段...
"过程总结"部分可能回顾了整个软件开发流程,包括需求收集、分析、设计、实现、测试和维护等各个阶段,为读者提供了对整个开发生命周期的全面理解。 "部署与实施"章节则关注软件上线前的准备工作,如配置管理、系统...
软件过程是指软件开发的生命周期,包括需求获取、分析、设计、实现、测试和维护等阶段。OOA&D强调在这些阶段中采用面向对象的方法。它强调理解问题域,定义对象和它们之间的关系,并创建一个反映业务流程的模型。 ...
OO分析的核心概念包括对象、类、继承和通信。对象是具有状态和行为的实体,类是对具有相同特性的对象的抽象。继承和泛化是实现代码重用和层次化设计的机制,而封装则通过信息隐蔽技术限制了对象内部状态的访问。面向...
- 在过程改进的不同阶段,如需求分析、方案设计、文档编写等环节,都需要灵活运用合适的分析方法。 - 考虑到不同项目的特点,分析方法的选择也需要适当调整。 ### 五、结论 面向对象分析方法为软件开发和过程改进...
RUP(统一过程)是一种迭代和增量的软件开发过程框架,它强调以架构为中心,包含了需求、分析、设计、实现、测试等多个阶段。RUP建模过程通常包括以下步骤:初始化、inception、elaboration、construction和...
构建交互模型的过程是一个由粗到细、由抽象到具体的渐进细化过程。首先,基于用例描述和前期分析的结果,识别出涉及的关键对象和消息流。接着,为每个用例绘制顺序图,重点描绘对象之间的交互逻辑和控制流程。对于...