博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件设计不同时期的关注点分离(2010-04-26)
阅读量:4956 次
发布时间:2019-06-12

本文共 1744 字,大约阅读时间需要 5 分钟。

这段时间在给一个软件的第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

你可能感兴趣的文章
xml publisher根据条件显示或隐藏列
查看>>
shell 中的 eval 及 crontab 命令
查看>>
.net基础初学Android
查看>>
织梦CMS 忘记后台管理员密码的一种解决方法
查看>>
vue之路由传参
查看>>
Qt Creator插件Todo
查看>>
Linux下Apache配置HTTPS功能
查看>>
Python知乎热门话题爬取
查看>>
2014.01.05php之运算符使用
查看>>
ACM_折线中点
查看>>
【笔记】网易微专业-Web安全工程师-04.WEB安全实战-1.DVWA部署
查看>>
ZOJ 3369 Saving Princess
查看>>
Unity2018 Package Manager消失的解决办法
查看>>
js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可)...
查看>>
Javaweb项目中文乱码
查看>>
CSUOJ-1979 古怪的行列式(模拟)
查看>>
Vue2.x directive自定义指令
查看>>
高低价促销法PK天天平价
查看>>
提示让IE8以下版本的浏览器去更新浏览器
查看>>
C#与mySql实战七:在界面中输入参数;
查看>>