开发一个业务逻辑复杂的系统,应该怎么样设计才能使项目的扩展性更好?

标签: 架构 网站架构 | 发表时间:2014-12-30 08:39 | 作者:Aomine
出处:http://segmentfault.com/blogs

看到一篇 好文章,收藏一下

我在知乎关于《 开发一个业务逻辑复杂的系统,应该怎么样设计才能使项目的扩展性更好?》做的回答。

既然业务逻辑复杂,那意味着项目前期的业务建模、需求分析、分析设计极为重要,直接抛开这几个阶段进入技术实施开发阶段,不管套用什么设计模式、架构模式,系统的扩展性肯定难以保证。

项目的扩展性虽然最终体现为系统架构、技术实现的扩展性,但系统扩展性的根源在于系统业务架构及业务模型的扩展性。大家经常骂xx系统烂、扩展性差,大都将原因归结为技术实现烂,但总结那些成功的大型项目或产品的最佳实践,原因都会有:某某是业务专家,对xx业务很熟悉,能够衔接业务与技术。因此一个好的项目角色中,应该有行业专家/领域专家、业务过程分析师、系统分析师、软件架构师等角色,从业务架构、信息架构、技术架构保证系统的扩展性。

具体怎样进行业务建模,搭建良好的业务架构和业务模型,从而为技术架构、信息架构、技术实现奠定良好基础,有一些较为成熟的软件开发过程可供参考。例如 RUP(Rational Unified Process,统一软件开发过程)。一个标准的RUP工作流程包括:业务建模,需求分析,分析设计,实施开发,测试,部署,配置和变更管理,项目管理,环境。当然RUP只是一个方法论,且过于庞大,大部分项目很难完整执行其过程,需要根据实际情况进行裁剪,但其方法论对于复杂业务逻辑系统的建设具有指导意义。像互联网产品设计中常用的用例分析技术就源于RUP。

因此对于题主描述的一个复杂系统,标准的过程应当在业务建模,需求分析,分析设计,实施开发,测试,部署完整过程的分析设计(与开发语言无关)或实施开发(分析设计的成果映射为具体语言,例如Java、.NET等)阶段才考虑设计模式、架构模式的引入。设计模式的使用会经历僵化->固化->优化的阶段,类似禅修中“看山是山、看水是水”的三个阶段,才能体会模式的运用之妙。

值得强调的是:如果是偏交易(例如支付、金融)的系统,在考虑扩展性时候,一定要将信息架构、信息模型的扩展性纳入到考虑范围,此类系统数据模型至关重要,也不可能频繁变动。

上面描述方法的特别适用与传统软件、系统集成等需求偏稳定的项目,对于互联网偏创新性的项目就不一定完全适用了,此类项目的现实情况如下:业务模式不确定,会不停试错,验证模式;需求不停变化,要求能够快速响应;全新的行业,没有行业专家,没有行业标杆可借鉴(至多有跨界标杆可参考);此时候,类似精益创业、Scrum之类的敏捷开发模式更适合,但对于复杂的业务而言,业务建模->需求分析->分析设计的理念仍然值得参考借鉴。

最后,最最重要的是:完美系统的架构和扩展性是管理出来的、持续重构出来的。正如各大城市马路不停翻了再修、修了再翻的命运一样,中国大部分公司后任会不停否定掉前任的架构、系统,推倒再来一遍,然后等新系统刚开发出来不久,尚未上线或上线运营一段时间后,再换一帮人继续折腾,然后。。。

总结这么多年的经历,深刻体会到:再烂的系统和架构,如果能够强化管理、持续积累、持续重构、持续完善,都能够有机会成为完美的系统,完美的系统不在于其架构的牛逼和完美,而在于:符合公司的业务模式,能够完美支撑公司业务的高速发展和市场需求的快速响应。

相关 [开发 业务 逻辑] 推荐:

开发一个业务逻辑复杂的系统,应该怎么样设计才能使项目的扩展性更好?

- - SegmentFault 最新的文章
看到一篇 好文章,收藏一下. 我在知乎关于《 开发一个业务逻辑复杂的系统,应该怎么样设计才能使项目的扩展性更好. 既然业务逻辑复杂,那意味着项目前期的业务建模、需求分析、分析设计极为重要,直接抛开这几个阶段进入技术实施开发阶段,不管套用什么设计模式、架构模式,系统的扩展性肯定难以保证. 项目的扩展性虽然最终体现为系统架构、技术实现的扩展性,但系统扩展性的根源在于系统业务架构及业务模型的扩展性.

你需要的不是重构,而是理清业务逻辑

- - 研发管理 - ITeye博客
最近我遇到了一位以前公司的同事. 他提到了数年前我在那个公司曾经开发过的项目. 他说这个项目现在已经变成了“职业杀手”. 基本上,任何接触过这个“职业杀手”项目的人最终都会离开这个公司. 如果公司想让名下的程序员人数>0,唯一的办法就是花数月时间完全重构这个系统. 首先,在我离开这个公司前,这个系统的单元测试覆盖率已经达到了85%,所以,不要责备我.

[技术讨论]京东产品业务逻辑错误分析

- - CSDN博客推荐文章
双十一,很多人都剁了手,而作为一个程序员,更多的是看到了业务逻辑层的问题,当然,有些问题是为了让用户愿意进入,而不一定是必须花钱,比如在第一次双十一的时候的红包叠加使用,就可以让我实际当时只花了几块钱买到了一张32g的闪迪的TF卡,嗯,双十一活动价格是160,转手120卖掉了. 而因为淘宝本身的物流问题和各种假货以及欺诈行为,我已经很少在淘宝上购买东西了,而更多的转向了京东,主要是因为京东的售后服务确实对于一二线城市的人来说比较便利,三线城市也覆盖了很多.

逻辑入门

- snowflip - Pure Pleasure - Reborn
你好,笑来,我想我问关于逻辑学方面的书籍有什么比较值得推荐的吗. 其实,我总觉得很多人缺的不是逻辑训练,而是“自省”训练,以及“道义”教育. Beyond Feelings,这是我当年的启蒙书籍(是我边读边敲做成电子版的). 想明白(系列)分类里的文章,建议你看看. TTC出过一个24讲的”Argumentation”,到Google上搜索“TTC+Argumentation”就可以找到.

苹果的逻辑

- Jacky - It Talks-魏武挥的blog
玩iPad也有大半年了,有一件事我一直不会,那就是删应用. 我知道长按一个图标会出现一个大叉,点击这个大叉能有“删除”的功能. 但我一直疑惑的是,究竟是删除了这个图标呢,还是真地删除了这个应用. 由于iTunes会同步应用回去,在我删了几次并被同步回去以后,我便一直认定,这只是在删除图标,就像windows桌面上删除一个快捷一样(我同步iPad一般是在睡觉的时候让电脑自己干,故而没有认真观察过).

周报的逻辑

- Shell Wang - 坏脾气的小肥
最近新同事加入很多,按照我的要求,入职半年内需要发送周报给我,半年后自己选择是否仍需发送. 行业内可能大部分的人都认为,周报就是流水账,是主管显示权力的手段. 最后还就真把它给搞成了一封流水账,或寥寥数语. 在职场中,有一条冷酷定律,叫做“如果主管不知道你做了某件事情,相当于你就没有做过这件事情. ”听上去不近人情,其实完全符合实用逻辑.

“脏话”的逻辑

- 星云 - 左岸读书_blog
脏话属于避讳之词,因此书面资料对说脏话的起源记录也很少,即使现在,很多词典也并不收录不敬之词,人们自然也没有多少关于说脏话的研究. 心理研究者认为,说脏话和孩子的啼哭很相似. 在幼儿时期,哭叫是一种可以接受的表达情感和释放压力和焦虑的方式. 随着儿童的长大(特别是男孩),西方社会的文化并不鼓励他们哭喊,特别是在公共场合.

足球的逻辑

- Race forward! - 学而时嘻之
最近看世界杯有感,本文试图提供一个关于现代足球的“统一理论”. 我并不是一个真正的球迷,但进行了一点思考,查了一点资料,不吐不快,乃做此文. 这个理论不是什么标新立异的一家之言,而是想从客观科学的角度,谈谈现代足球应该怎么踢. 我将避免零碎的规律总结,而是尽量使用逻辑推理的办法去“推导”这套理 论,且看我说的对也不对.

模式与逻辑

- - 所有文章 - UCD大社区
有一次我在豆瓣提到,逻辑并不是最重要的,有朋友就很激动反对. 确实,在许多理性的人看来,逻辑几乎是最重要的东西. 其实,我并没有想过否定逻辑的价值,只是对于逻辑的看法,经历了一个肯定-否定-肯定的过程. 在我看来,人类有许多智慧是存在于右脑的,右脑有一个非常重要的功能就是模式的判断和识别(参考《非理性市场与蜥蜴式大脑思维》),善用这一点,常常能极大的提高自己的能力.

平台的逻辑

- - 胡泳的BLOG
              平台的逻辑.                      胡泳 郝亚洲. 这是一个言必称“平台”的商业语境,尤其是当平台和“商业模式”、“公司战略”联系在一起的时候. 但笔者想在这里首先纠正这两大认识误区,平台既不是“商业模式”,也不是“公司战略”,而是一种天然属性. 这种天然属性客观存在,但是能否展现出来却和主体的意愿、能力、外界的环境有很大关系,也即,企业需不需要做平台,有没有能力做平台和做平台的时机.