您的位置:首页 > 职场人生

5年前给我职业生涯带来重大影响力的开发架构、开发思想(软件分层架构、UML的重要性)

2010-11-20 17:15 495 查看
大家都讲,做日本外包学不到知识,只是低级的编码工作,我从来不认同这个观念,我做日本外包大概有1年多时间,
这期间也是我提高非常快的一段时间。

说实话,自从接触了日本外包后,我才觉得我自己终于变成软件人才了,脑子里懂点儿东西,有些内容了,知道什么
叫规范,什么叫质量,什么叫规模化生产,什么样的人才是软件人才,当然也见到了管理类软件开发领域的顶尖人物。

那是几年前在上海做日本外包,当时是做NEC公司的外包,我这个人喜欢研究别人的架构,多学习别人的优点,这个
架构里我做开发前后有2个多月,这期间我把这个架构理解掌握了一些。

这个是在2004年时,我参与的一个项目,5-6年的项目了,时间过得也很快啊。

废话少说,先来个架构图:



此UML设计也是我非常佩服的设计之一,也是我梦想中我希望能达到的境界。
简单扼要的介绍一下功能:

1. 页面表示层:首先说明了这个页面上会有几种操作,页面有几种状态,例如:页面加载时、查询时、审核通过时、驳
回时等等。
2. 事务控制层:这个层是负责打开关闭数据库,控制数据库事务的,例如要么一系列操作都成功,要么一系列操作都失
败回滚,
还可检查一个数据库打开于关闭之间,运算花费了多久时间,页面调用这个服务几次,是不是有重复调用现象等。
3. 商业逻辑层:这个层主要负责逻辑运算,商业逻辑代码,没有跟数据库直接打交到,纯商业逻辑控制代码。
4. 实体控制层:这个层说白了,就是数据库层,负责与数据库的存取、更新、删除、统计等功能,数据库的直接交互都
写在这个层里。
5. 数据库表层:应该是物理层吧,就是数据库里应该有哪几个表,哪几个类,会跟这些表有关系。

你可能认为,这有啥的?不是很简单的嘛?那你回答我,你的系统架构能达到这个水平嘛?页面与数据库完全无关嘛?
商业逻辑层与数据库完全无关嘛?估计,你不敢给我肯定的答复,真的严格这么分层写,那工作量是相当的大的,还是
乱八七糟的写写,效率是最高,但是不容易沉淀成果物,不容易形成积累,做了多少项目,都是来一个重新搞一个,不
会达到能重复利用的最高境界。

其实这个设计中,最厉害的之处是:
1. 设计人员,在脑子里,已经严格的将此模块进行了推演,这个页面到底需要哪几个状态,哪几个方法,哪几个类,
互相之间什么调用关系,都设计好了。
2. 次系统重视的数据库的打开关闭效率,在一个打开的连接里,做N个事项,并把这些事项,放在一个事务里,进行
事务控制,一个页面上的动作,不会
重复多次打开关闭数据库,若那样,无法放在一个事务里进行控制。
3. 这个系统的,调用线的箭头方向都标明得非常厉害,简直是佩服的境界,你可以仔细体会体会,我是事后才发现的,
真的太仔细了。
4. 这个系统可以做到多种数据库的支持,稍微做修改就可以支持多种数据库结构,或者干脆数据存放在xml文件等,
或者其他文件里。
5. 这个系统,发布时,可以将 web 服务器与数据库服务器分开来,不是在web页面里打开关闭数据库的。

不足之处:
1. 函数名没有写出来,因为是日文的项目,有时候给一个方法命名,还真闹心,若方法名都写出来了,那开发起来,
真省老多事情了。
2. 函数需要几个参数,其实都可以规定出来,例如接口一样,那写程序的人,不会容易瞎搞了,设计是好,但是写
代码的人很烂啊,他脑子里就想着,做日本外包项目学不到啥,能跳槽就跳槽,天天投简历,找面试机会,根本没
有静下心来自己体会,仔细琢磨。

天外有天,由于我亲身经历了此项目的开发过程,给我的体会很深,让我学到了很多,这个架构若是今天拿出来了,
没多大意义,大家都能好理解了,但是在好多年前,还算是理念很先进的,并且这个项目还有很多很多架构外值得
学习的地方,我想陆续发表几个文章,分享给大家。



将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。

posted on 2009-05-02 19:49 不仅仅是通用权限设计 阅读(3005) 评论(22) 编辑 收藏



评论

1563171

#1楼  回复 引用 查看  就是三层架构
ui,bll,dal

2009-05-02 19:52 | 恒星的恒心

#2楼  回复 引用 查看 

NEC同事,呵呵……
2009-05-02 20:08 | hhshuai

#3楼  回复 引用 

大一点的项目哪有不分层的
2009-05-02 20:42 | sshh[未注册用户]

#4楼  回复 引用 查看 

就是把事务从数据访问层提升到业务层了,如果系统事务处理比较多的话,这样还是挺好的。

现在项目一般都这些分层写的,博主你看叶子时间长了,换个地方看看森林吧…… 还估计,我可以满怀信心的给你个肯定的答复。 如果是一个空杯子,到什么环境下都可以装到东西的。
2009-05-02 20:47 | 杜建宇

#5楼[楼主]  回复 引用 查看 

主要是,这是很多年前的东西了,现在才发表的确是没啥大不了的。
但是这个项目里有一系列的让人大开眼界的东西,这只是一小小部分。

我自己是不怎么厉害,主要是我学习了很多很多大师的思想,所以
我自己也很有信心,而且一直做开发工作也有很多年了,我会
多看看,多学习学习别人的优点的。没有学习提高的方向了日子
也无聊了,我也只做.NET开发,日常生活中,除了写程序研究软
件也没多少其他兴趣爱好,大部分精力都放在研究软件项目上了。
2009-05-02 20:59 | 吉日嘎拉

#6楼  回复 引用 

的确在04年我还想不到这些,

当时还在念书呢
2009-05-02 22:47 | Wa haha[未注册用户]

#7楼  回复 引用 

当然还有美国人写的一本书,专门研究关于5层MIS系统的框架,并且可以将其5层分别置于不同的服务器中。以提供可变的服务提供能力,根据需求增加或减少某层的服务器个数来达到负载平衡。

可惜我忘记书名了 :(
2009-05-02 23:30 | yindf[未注册用户]

#8楼  回复 引用 

你写的东西很泛泛,没什么实质意义。
架构实际有很多东西,你图中没什么且不足以指导开发和限制。
讲了等于没讲。
2009-05-03 08:05 | zhouyukeji[未注册用户]

#9楼  回复 引用 

说真的, 真没有看出楼主写的啥东西
2009-05-03 08:49 | with[未注册用户]

#10楼  回复 引用 

希望楼主能讲解一下各个层内部的具体实现的东西
2009-05-03 09:48 | xiaoxin1[未注册用户]

#11楼  回复 引用 

五年了你还在为这个感慨,看来做日本外包是学不到太多东西
2009-05-03 13:11 | 过客12[未注册用户]

#12楼  回复 引用 查看 

我不否认日本的技术比我们先进,很多日本人做的系统设计比我们确实好(我不怕拍砖,不敢承认更是最大的悲哀),也不否认做日本外包的中国员工中确实有许多优秀的让我仰慕的人才!
但是,那些优秀的人才,也被同样优秀的日本老板拉拢的紧紧的。我什么就招不到这些核心的精英呢?
还是但是,我面过不下100个从日本外包出来的(从一毕业就进日本外包公司的那些人,中途进去的不算)。礼貌性的,我给他面试时间也就15分钟。走人。
后来,直接跟HR说,只要是一毕业就进入日本外包公司或日本住中国公司的投的简历,不要发给我,你们自己看着办!
不要骂我不尊重人才,作为一个管理者,你不可能花时间去从上几千份的简历当中找一个千里马。考虑成本和效率,我情愿错过这匹千里马!
2009-05-03 14:16 | 南疯

#13楼  回复 引用 查看 

呵呵,任何一本书都可以学到这些的
2009-05-03 14:30 | Jeff Chen

#14楼  回复 引用 

好像那个存储过程的随笔也是lz写的吧

每一个架构都有其使用的场景,脱离场景而阐述架构,没有多大实际作用。

lz是否把系统的使用场景详细阐述一下,同时也说一下该架构一些不适用的地方。

把事务控制放在商业逻辑层之上,如果系统并发量很大,这个.......
2009-05-03 15:49 | 我也是路过[未注册用户]

#15楼  回复 引用 

不是有意要匿名回复,主要是觉得让我招聘的同事看到了有商我们团队的和气!所以选择匿名回复!

平心说,这个架构确实有很多可取之处,但也并非博主文章如此的夸夸奇谈!

同时需要请教博主几个问题,类似如下的说法

4. 这个系统可以做到多种数据库的支持,稍微做修改就可以支持多种数据库结构,或者干脆数据存放在xml文件等,
或者其他文件里。
5. 这个系统,发布时,可以将 web 服务器与数据库服务器分开来,不是在web页面里打开关闭数据库的。
......

我觉得没有太多新奇之处吧?支持多数据库,这个看过Petshop的人都会吧,或者说多看看论坛里的文章自己也能写吧!

下一个,我想我们做上有些流量的网站都会这么做吧!至于在页面中打开连接估计这是北大青鸟人的家常便饭吧!

其他的不一一叙述!
觉得说的了就没意思了!
要学习架构 学会Petshop 看看Discuz 学习学习Subtext等等等等
或许看完了收获比这更多吧
2009-05-03 22:00 | 闲话遭板砖[未注册用户]

#16楼  回复 引用 

更正一点,关于说北大青鸟人的家常便饭!

这是针对相关性的群体,并非北大青鸟全部学员
2009-05-03 22:02 | 闲话遭板砖[未注册用户]

#17楼  回复 引用 查看 

--引用--------------------------------------------------
yindf: 当然还有美国人写的一本书,专门研究关于5层MIS系统的框架,并且可以将其5层分别置于不同的服务器中。以提供可变的服务提供能力,根据需求增加或减少某层的服务器个数来达到负载平衡。

可惜我忘记书名了 :(
--------------------------------------------------------

您说的应该是
Business C# Objects 2ND
2009-05-03 22:57 | C Ser

#18楼  回复 引用 

我很想知道四五年过去之后,现在楼主看到什么开发架构、开发思想会被深刻影响。

我相信每一个初学编程的人第一次看到Hello world编译成功的时候都跟楼主曾经有过同样的惊喜。不过好像没有见谁把 Hello world 摆到博客园首页去……
2009-05-04 00:22 | 真的被你累到[未注册用户]

#19楼  回复 引用 查看 

我在IBM GDC
呵呵 同行,非常同意你的观点,
外包工作中最容易学到的就是项目的管理,和质量意识
而这些知识是跨行业受用的财富
所以,我即将创业,也非常感谢公司给我参与外包工作的经验。
2009-05-04 09:44 | Vince

#20楼  回复 引用 查看 

这个设计是不错的,比较精巧的地方应该是在于UML画图和将事务处理提升一个层上吧?

至于其分层设计现在看来倒不新鲜,不知道他们现在的设计是什么样,但估计应该不是这个笨拙的5层设计了。应该会抽象的更好。
2009-05-04 18:09 | 黑羽飘舞

#21楼  回复 引用 查看 

其实这张图里,重要的不是分层什么的,重要的是画的很直观,并且美观。各部分的关系都很清晰。即使一个完全不懂得分层的人来做,应该也能看懂其中的含义。并知道该如何编码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐