软件设计不同时期的关注点分离(2010-04-26)

这段时间在给一个软件的第N期开发和其之前版本的性能优化,所以有点忙,一直也没得闲写点东西。在本次文章中我围绕现有系统开发的一些感想,希望结合自身的想法给大家说说,希望对大伙有所帮助,同时也希望得到各位朋友的多多指教。
本次重点说下在软件设计和开发过程中应该注意的一些我认为十分重要的问题,希望大家予以借鉴。
在我看来,软件设计应该分成不同阶段,不同时期,在不同的设计阶段,我们的关注点是有很大程度不同的。这里我先声明一下,我说的软件设计的三个阶段更多的是针对中小型软件系统而言的,对于大型软件系统而言,应该根据时间、金钱、人员、项目内容等条件进行相应阶段的增减。对于大型系统而言,由于其内容多、服务多、功能更加复杂、抽象层次更高,所以希望朋友们结合实际情况进行关注点分离。
我个人认为软件设计的三个阶段应分为:系统架构设计阶段、分布式各层结构设计阶段、服务实现详细设计阶段。
1、系统架构设计阶段:
这个阶段是整个系统抽象层次最高的地方,一般来讲这个阶段是分布式设计和开发的核心阶段,指导这个阶段设计的思想是分布式思想。其实在系统架构设计阶段,已经有了很多好的、成形的分布式架构。比如说现在最流程的MVC三层架构,java中的SSH。我个人用.Net居多,我喜欢使用四层或者五层结构思想来设计系统架构,之前的文章中我也对三层以上的架构有所说明,喜欢的朋友可以去看看,这里我就不再重复了。这样做的目的是能够让各层的对象各尽其职,并且使得系统具有较强的弹性、可以增加软件设计的易理解性以及开发代码的可读性,也可以帮助设计人员更好的梳理业务和相关逻辑。
2、分布式各层结构设计阶段:
主要是针对各个层内部结构设计而言的,主要是定义容器、接口、实体类等和其相应的管理策略,这里也可以充分的使用设计模式来解决相关逻辑和结构的问题。本阶段的主旨是抛弃实现、重视定义。设计人员应当完全跳出OP思维,抛开实现方式,充分使用OOAD的指导思想,我们设计的关注点应该是各层中容器、每个对象的名称、权限、方法、实行、声明等内容。设计人员不应该考虑实现方式方法,也不行考虑实现的时间,使用黑盒思想关注参数与输出值的结构即可。简单的几个例子,我们在学习画素描的时候老师都教过一种素描方法,先确定好要画人物的四肢、五官的基本位置,当人物的所有结构都确定了在详细地画每一个部分如眼、耳等。画画如此,软件设计亦如此,设计抽象,设计结构,设计实现也是依次来进行的。分布式各层结构设计阶段十分重要,它在设计环节的中间,有承上启下的作用,也是设计模式完美体现的阶段。在此阶段我简单地总结一下我们在设计时需要注意的、需要关注的点。
(1)如何设计从而体现出,阶段一种分布式的优点
(2)设计通用容器、对象、组建、接口、模块
(3)根据业务设计整个系统的抽象体系和结构体系的策略
(4)通过设计适配器或者适配层来增加和体现架构的弹性
(5)如何合理使用设计模式来更好的体现OO设计原则,充分使用设计模式
(6)软件系统的稳定的,分布式不同层的支持性
3、软件详细设计阶段:
在阶段2时,系统的结构已经成型,所以这个阶段设计就可以根据一些非开发的因素进行增减,还比如可以仅对一些复杂的实现进行详细设计,这个设计是OP的,我们可以画流程图、状态图,写伪代码等。对于一些简单的实现可以等到具体开发时在进行设计。这个阶段也可以设计出相应的单元测试用例。
我本次主要是指出软件设计的三个阶段,其中阶段2是十分主要的,但是我们一般在进行软件设计时,是没有阶段2的,所以我们的设计人员十分容易陷入细节,进行OP设计。其实通过我上面对三个阶段的说明能够看出,其实软件设计就是一个对现实世界抽象的过程。根据软件的量级、规模、负责性,可以一步一步地将现实抽象成系统。我之所以喜欢软件设计很大一部分就是我十分喜欢这个过程,也十分享受这个过程,有趣、好玩、又有艺术性。希望大家在进行软件设计时就像听肖邦的音乐一样,欣赏它、喜欢它。我觉得反正都是工作,为什么不高高兴兴的津津有味的挣钱呢!
呵呵,祝朋友们天天都工作愉快!

转载于:https://www.cnblogs.com/realzjy/archive/2012/02/10/2345495.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值