`

设计的困惑

    博客分类:
  • DDD
阅读更多

最近一段时间都在看ddd和up,个人感觉使用up进行项目的管理开发,运用ddd进行领域建模,在设计阶段,运用tdd进行驱动开发,这应该是一个比较理想的开发模式,但好的东西在项目的开发中不一定会得到充分的运用。

比如up中强调的迭代开发,细化阶段经过5-8次迭代,每次迭代3周,要完成确定整体需求的90%,完成20%左右的成品代码的编写,项目风险最高、最核心的业务的需求和设计已经确定并有部分实现,剩下的在构造和移交阶段去完成。每次一迭代中又是按照ddd进行领域驱动建模,通过tdd来测试驱动开发。但是在实际开发中,很多情况是客户并不知道他需要什么,需求十分模糊,甚至只有不到一百个字的需求,需求的不断深化和挖掘需要大量的沟通和时间,而这一点首先是客户不一定做到,在客户的传统思想中,你先拿出一个整体方案看看再说,也就是系统的需求分析文档,有了需求分析文档,再看看你的概要设计,等详细设计出来后,才给你打钱。客户需求的挖掘和up强调的迭代开发是吻合的,而客户的思维是见着东西才给钱又和迭代开发的每次迭代出一个可运行的产品相矛盾,因为客户没有更多的耐心,等你一点一点去捏泥人。我记得在一本国外大师写的书中提到过盖房子的故事,一个公司选两家设计公司给他们设计房子,第一家公司一去就拿来之前才做好的一个非常不错的建设方案,有成品、有图纸,看上去效果也不错;另一家公司没有给出图纸,也没有太多承诺,它要求看客户的建设场地和需求,根据客户的需求重新量身定做一套设计方案,确保设计出来的东西就是客户想要的东西。这位大师强调说,最后取胜的一定是后面一家公司,因为他把需求放到了第一位,相对而言风险更低,成功的机会更大,前一家公司虽然有一个不错的设计方案,而且有成品展示,但是别人认为好的东西,客户不一定就认为好,用在别处成功的东西,用在这里不一定就一样会成功,所以从这点考虑,这家公司必败无疑。

我很赞同这位大师的观点,但是在国内,似乎很多公司都会选择第一家公司为自己做设计,因为他们往往没有自己的明确的需求,很多时候很容易被一些先入为主的观念所左右,所以大多数情况下,他们很轻易的相信他们所看见的,而不一定是仔细考虑他们真正想要什么,这是一个十分突出的问题!

其次,迭代开发对团队的要求很高,它需要团队成员对涉及的领域知识十分熟悉,甚至是精通领域概念,这样才能在每次迭代中做到游刃有余,而这一点上有很多公司也是望而却步,他们常常会说:这东西看上去不错,但是我们不会去用!

再次,说一个具体的问题。就是对象和关系不匹配的问题,在设计领域模型的时候,我们从面向对象的角度去分析实体、值对象,分析关联,隔离领域、确定聚合,随着对领域的不断深入理解,我们会去不断的精华模型,去改善设计,是设计更加柔性,使结构更加合理。但在对象的持久化的问题上,很多时候我们不愿意去使用hiberante这样的ormapping工具,担心hibernate在某些方面(比如性能上),不如原生sql来得高效,多数情况是使用自己开发的中间件,对jdbc进行封装,对分布式数据进行一些处理,这个时候关系模型的设计显得越发的重要,有部分重要的业务甚至放到了数据库中去存储过程实现。关系模型和对象模型在粒度上不同,导致不匹配的问题比比皆是,最终选择了一个折中的方案,看上去成了一个类一张表的样子,在使用对象的时候,对象的导航也成了一件代价巨大的事情,因为没有了hibernate这样的ormapping工具,使得从数据库中查询来的数据无法自动封装成对象,这样对象模型中的对象导航就成了一副空架子,设计的时候虽然是面向对象的东西,但真正实现起来有逐渐回到了面向过程的老路上来,这种感觉十分痛苦!

如何解决上述存在的问题呢,这是最近一直困扰我的问题,请大伙谈谈自己的看法!

2
1
分享到:
评论
4 楼 kingsun1980 2008-07-17  
>ddd有讲一定要用orm工具吗?
orm可以提高开发的效率,很多时候绕了一大圈做的工作实际上orm工具已经实现了,而且实现的比自己写的要优雅很多
>有讲一个项目只能采用一种方式(面向对象)开发吗?有讲所有层次的东西都只能面向对象吗
凡事没有绝对,我们都是在不断探讨开发中遇到的一些难题,想从根本上寻找一个解决问题的有效办法,面向对象的思想不是万能的,但在分析阶段我认为应该是放到第一位的。我厌倦一开始就从数据库入手的设计,像是着了魔一样,这是一种面向过程的固定思维,需要纠正
3 楼 kingsun1980 2008-07-17  
>怀疑是否真的明白并深入了解up过程和ddd
我是在学习ddd和up
正努力在项目中使用
思考中的困惑,希望和大家探讨
2 楼 hyhongyong 2008-07-17  
怀疑是否真的明白并深入了解up过程和ddd!

客户要求什么,不会直接影响到采用什么开发方法的(除非是特别重要的项目,比如火箭用的软件,还是瀑布开发的好)
迭代开发完全可以快速构建原型来深入了解需求。
如果第一家公司拿着已有的东西,同时要求客户对比自己看需求是什么,为什么不用第一家呢?

ddd有讲一定要用orm工具吗?有讲一个项目只能采用一种方式(面向对象)开发吗?有讲所有层次的东西都只能面向对象吗?
1 楼 xiaotian_ls 2008-07-17  
国人的思维方式和西方人不同,不能完全照搬那些看上去比较好的东西,要根据项目具体的情况和客户方面来选择,好的方便的拿来就用。国内习惯照搬和模仿,尤其对行业系统来说,因此做第一个项目肯定最难,后续的项目如果业务相似可以使用迭代开发。

相关推荐

    上海住宅景观设计困惑呼吁.docx

    上海住宅景观设计面临着一系列的困惑和问题,这些问题不仅关乎设计本身的质量,还直接影响到生态环境的保护和居民的生活质量。以下是对这些困惑的详细分析和解释: 1. 生态冠名滥用:很多新建绿地和住宅区打着...

    Java的GUI设计

    经典而又实用的Java的GUI设计,可以帮助你解决Java的GUI设计困惑。

    业务办公困惑ppt模板下载

    这款模板专门针对企业工作场景设计,旨在解决在日常办公中可能遇到的困惑,如信息整理、工作汇报、项目提案等难题。 首先,模板的设计风格应该与企业的品牌形象保持一致,这款"业务办公"模板考虑了这一点,提供了...

    完美版资料商住楼住宅部分消防设计审查的困惑.doc

    【消防设计审查困惑】 在商住楼的消防设计审查中,存在一个主要的困惑,即商住楼住宅部分应按照住宅标准设计还是与商业部分一起作为公共建筑进行设计。这个问题的关键在于不同分类会直接影响消防设计的各项指标,如...

    《妞妞的困惑》教学设计.pdf

    《妞妞的困惑》教学设计.pdf

    解决FPGA入门的困惑 FPGA设计者的5项基本功.doc

    在FPGA设计领域,入门阶段可能会遇到很多困惑。然而,正如《佟林传》中的主人公通过基础训练成就非凡,FPGA设计者也需要掌握五项基本技能:仿真、综合、时序分析、调试和验证。这些技能是专为FPGA设计者而设,不同于...

    农村小学数学课后作业布置的困惑及思考.pdf

    农村小学数学课后作业布置的困惑及思考.pdf

    物业管理中的四个困惑.docx

    许多问题源于开发商的设计缺陷,如地下管道堵塞,但业主往往将责任归咎于物业,要求他们解决。物业在处理这些问题时,尽管付出了努力,但往往无法满足所有人的期待,导致业主满意度下降,甚至引发拒交物业费的情况。...

    UI设计(用户界面设计) 教案

    一个好的结构设计应该使目录体系清晰,语词定义直观,例如,西门子手机设置闹钟的例子,"重要记事"的分类就让用户感到困惑。 2. 交互设计(Interactive Design)侧重于提升产品的易用性。设计师需要考虑用户的使用...

    普通高校程序设计课程及实践环节改革落脚点之困惑.pdf

    本文主要探讨了普通高校程序设计课程及实践环节改革中的困惑。在当前高等教育环境下,尽管计算机及相关专业的毕业生众多,但真正从事编程工作的人却相对较少,更多毕业生的工作涉及到计算机系统的运维和信息系统的...

    破解内部审计的困惑与问题--课后测试.docx

    控制活动是指企业或组织对风险的控制和防范,包括内部控制的设计、实施和监督等。 信息系统与沟通是指企业或组织的信息系统和沟通机制,影响着企业或组织的内部控制的有效性和效率。 监督与检查是指企业或组织对...

    主题“上小学”所引起的困惑.doc

    随着孩子们即将结束幼儿园生活,步入小学的大门,教师们往往会设计一系列主题活动,帮助孩子们适应即将到来的变化。"上小学"便是这样一种旨在激发幼儿入学愿望并帮助他们理解小学生活的活动。然而,在实践过程中,...

    优质资料(2021-2022年收藏)商住楼住宅部分消防设计审查的困惑.doc

    【消防设计审查的困惑】 商住楼是一种特殊的建筑类型,底部为商业空间,上部为住宅区。在消防设计审查中,如何处理商住楼住宅部分的消防要求是一大挑战。根据《高规》(高层民用建筑设计防火规范)2005版,商住楼被...

    交互设计的思想,交互设计的思想

    - **效率问题**:糟糕的交互设计会导致用户使用产品时感到困惑和沮丧,从而降低工作效率。例如,在Windows操作系统中寻找特定文件可能会变得极其繁琐。 - **软件种族隔离**:不同软件之间缺乏良好的兼容性和互操作性...

    用户界面设计需注意的九大要点

    它要求设计师避免过于繁杂的内容,不要让用户感到困惑和疲劳。 简洁的设计可以提高用户的效率和满意度,避免用户感到疲劳和困惑。同时,简洁的设计也可以提高设计的可读性和可理解性。 3. 一致性:一致性是良好的...

    抓住本源 触发心灵——读李松林教授《深度学习设计:模板与示例》有感(小学英语教师国培).docx

    困惑处是指教学设计中制造困惑、创造困惑的地方。例如,在单词的记忆、语音教学、语法教学等困惑无时不在。如何帮助学生记单词?如何解决不讲发音规则又要让学生掌握语音?如何做到不讲语法又要让学生掌握语法?这些...

    WEB设计禁忌电子资源设计

    避免过于复杂或混乱的设计布局,这会导致用户感到困惑,难以找到所需信息。简洁的设计风格,如扁平化设计,可以有效地减少用户的认知负担。 其次,色彩搭配是WEB设计中的重要元素。过度使用鲜艳的颜色可能会使页面...

Global site tag (gtag.js) - Google Analytics