闲谈软件设计方法(一)----抽象

闲谈软件设计方法(一)----抽象

在我的短文《职业程序员是否就是代码民工》http://www.feifanbbs.com/thread-978-1-1.html中提到,职业程序员不只是优秀的编码者,更应该是优秀的设计者。书店里面关于软件设计的书籍也不少,有许多国外经典的,但都是厚厚的一大本,也有许多攒字数骗钱的,看着憋气。于是,产生了一个想法,何不将我这几年软件开发的心得,结合实践经验,总结出来与大家分享呢。《闲谈软件设计方法》便在这种情况下产生了。

今天开始闲谈软件设计的第一个方法,本人写代码还行,写文章文笔就不行了,只能想到哪写到哪,希望尽可能将我的想法表达清楚。

(一)、抽象

软件不同于硬件,硬件一旦设计完成批量生产了就不会做太大的改变,而软件则会面临各种不同的新需求。一个大型软件架构的生命周期可以达到几年或十几年。所以,优秀的软件架构要适应相当长时间的各种变化。

很多人不解,现在计算机技术飞速发展,有谁能预知这么长时间内的变化呢?所以,优秀的软件架构一定要有很好的扩展性。

抽象是可扩展性设计最重要的方法。有一个原则,抽象层次低的设计一定不会有好的扩展性,反之,扩展性好的设计一定是基于高度的抽象。那么,该如何抽象呢?

我们知道,每个项目开始都是做需求分析,在分析需求时,我们其实已经在做一次抽象的工作了,这时我们将用户的需求抽象成软件概念。对于java/c++这种面向对象的编程语言来说,类就是一种抽象的思想。我们将用户的需求分解为不同的类,这是需求层面的抽象。同时,在后期的详细设计时,我们会进一步将一些公共流程、共有概念、公共数据等抽象为类,这些是软件开发层面的抽象。

而对于面向过程语言,如C语言,我们则是通过模块的划分、函数的提取等方式来达到抽象的目的。

说了这么多,就我的经验来说,抽象其实就是在软件开发的各个阶段,提取不变部分,分离变化部分。将变化的部分做成组件,将不变的部分高度抽象(剔除可能变化的部分)设计成平台。这样的设计具有高度的可扩展性。总结一下,下面的设计具有好的可扩展性。

 

 

 

这里的可扩展性体现在组件上,如果需要扩展,那么只需要对各种组件进行修改,平台不需要改动。

总之一句,我理解的抽象就是分离变与不变。而抽象的好处就是可扩展。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值