The essense of the software atchitecture

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} -->

The architect seems a hot job in software industry.     About the role or responsibility,there are a lot of definition.  For me, I’d like to make things as simple as possible.     So my definition is not complicated. I think the main responsibility of an architect is to sketch the high level perspective of the whole system. In other words, the architect has the ability to divide the whole system into available modules, and make sure the individual module takes a clear, and, in best case, orthometric responsibility. Further, after the division, there is a simple interaction among modules,then  modules can be combined as needed.In a word, an architect master the technology of dividing and combining.  To be strict, it is not only a technology, but an art design. The architect is originally from the architecture industry, where an architect is called an artist often. What is the difference between art and engineering? Engineering means repeatable,  reusable and the flow is strict. Art,       however, is creative ,filled with personality and the flow is optionally. 

 

The software design is very similar to architecture design. It has to follow some engineering principles, such as open& close,  inverse dependency. Meanwhile, it is also branded by the style of an architect. Each architect has his own taste, more or less, different with others.

 

My style is simple+extensible. I always keep the interface simple and properly extensible.

The responsibility of an module is supposed to be clean and simple, so on interface, it is supposed to present the same style. The simple also means the semantic of the interface is firm and, consequently, the interface is testable. That is the key of the interface design of an module. Make it testable!!! No matter how you change the implementation, keep the interface and the make it testable as it did.  

Extensible is hard to master.  We have to balance between poor-design and over-design. The

extensible contains the experience of  an atchitect. In most cases, it is experience dependent. My suggestion is keep the proper extensible, and avoid the over-extensible. Let’s welcome the changes when they come. Do not expect the first design can accommodate all the new changes. Which is impossible for ever.

       Ok, keep in mind ,keep it simple and properly extensible.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值