系统设计之粒度控制
2017-02-14 17:30
148 查看
粒度这个词对于设计人员来说也不是什么陌生的词,粒度上通常称为粗粒度和细粒度,而这里讲的粒度控制主要指的是在系统设计的过程中如何根据需求去控制设计的范围。
粒度的把握是软件设计的关键,举例子来说吧,目前软件的市场上充斥着各种各样同功能的软件,从功能来说甚至几乎完全一样的都有很多,但在各自粒度的控制上或者说达到的程度上都是不同的,往往可以看出大型软件公司做出来的东西虽然功能相同,但其在性能、伸缩性以及友好性都大大超过同样功能的小公司做出来的东西,这就象我们在买衣服、买鞋子等等东西的时候,具有几乎同样的功能、同样的样式,但其质量却仅然不同,但萝卜青菜,各有所好,比如买登山鞋,一个不怎么经常去爬山的人用的着买双GTX那样的鞋吗?没必要,这时就会选择买一双同样功能但便宜很多的Upland之类的鞋,这就是很现实的买方。做软件就像是卖方,需要提供的是什么,最重要的就是提供客户需要的东西,那么客户到底需要什么呢,客户当然希望用最少的钱买到最好的东西,但作为卖方市场,当然希望利润越高越好,这就需要减少开发成本,缩短进度,卖方和买方本来就是一对矛盾体,可以说双方为了共同的利益需要寻找到一个平衡点,这就是软件的粒度控制,也许这个名字不怎么好,叫范围控制吧,在进行系统设计时,同样也是如此,你想想客户需要的只是一栋7层的楼,你却给它设计了一栋能承受100层楼的地基,当然,在同样价格的情况下客户是更喜欢,但在时间上客户并一定允许你投入那么多去做,而且这对于卖方来说也是不值得的,在同样满足客户需求的情况下粒度的把握就成了重点,其中有一点很重要,就是要能预知系统将来的变化,客户也许当时告诉你是要盖栋7层的楼,但随着项目进行你发现原来是要盖栋20层的楼,这个时候再推倒完全重建就很惨了,所以作为设计人员除了要有粒度控制方面的能力还需要有预知系统发展的能力。
要做到的是控制在满足需求以及将来变化的范围内的粒度的系统设计是最完美的,觉得这也是大型项目和小型项目的不同之处,有些时候其实两个项目的功能几乎完全一样,但在系统的响应、并发量、扩展的要求上却会有很多的不同,这个时候如果在小型项目中也采用大型项目的设计去做,做到当然不需否认,但在投入上呢,在回报上呢,在时间上呢,这就象要求做一个Blog系统,我想大家会做出千差万别、各种各样的,虽然功能一样。
做技术的往往在很多时候更偏向追求技术的完美、先进等等,但客户并不会关心那么的多,这个时候需要通过控制粒度来决定是否需要采用复杂具有难度的技术,技术的先进必然就带来了技术的难度、风险。
确实,一个能做大项目又能做小项目的系统设计师是最为优秀的,因为它能给出最为适合的系统架构体系设计,在系统设计上做到伸缩自如,这是很难的,极度佩服这样的人。
粒度的把握是软件设计的关键,举例子来说吧,目前软件的市场上充斥着各种各样同功能的软件,从功能来说甚至几乎完全一样的都有很多,但在各自粒度的控制上或者说达到的程度上都是不同的,往往可以看出大型软件公司做出来的东西虽然功能相同,但其在性能、伸缩性以及友好性都大大超过同样功能的小公司做出来的东西,这就象我们在买衣服、买鞋子等等东西的时候,具有几乎同样的功能、同样的样式,但其质量却仅然不同,但萝卜青菜,各有所好,比如买登山鞋,一个不怎么经常去爬山的人用的着买双GTX那样的鞋吗?没必要,这时就会选择买一双同样功能但便宜很多的Upland之类的鞋,这就是很现实的买方。做软件就像是卖方,需要提供的是什么,最重要的就是提供客户需要的东西,那么客户到底需要什么呢,客户当然希望用最少的钱买到最好的东西,但作为卖方市场,当然希望利润越高越好,这就需要减少开发成本,缩短进度,卖方和买方本来就是一对矛盾体,可以说双方为了共同的利益需要寻找到一个平衡点,这就是软件的粒度控制,也许这个名字不怎么好,叫范围控制吧,在进行系统设计时,同样也是如此,你想想客户需要的只是一栋7层的楼,你却给它设计了一栋能承受100层楼的地基,当然,在同样价格的情况下客户是更喜欢,但在时间上客户并一定允许你投入那么多去做,而且这对于卖方来说也是不值得的,在同样满足客户需求的情况下粒度的把握就成了重点,其中有一点很重要,就是要能预知系统将来的变化,客户也许当时告诉你是要盖栋7层的楼,但随着项目进行你发现原来是要盖栋20层的楼,这个时候再推倒完全重建就很惨了,所以作为设计人员除了要有粒度控制方面的能力还需要有预知系统发展的能力。
要做到的是控制在满足需求以及将来变化的范围内的粒度的系统设计是最完美的,觉得这也是大型项目和小型项目的不同之处,有些时候其实两个项目的功能几乎完全一样,但在系统的响应、并发量、扩展的要求上却会有很多的不同,这个时候如果在小型项目中也采用大型项目的设计去做,做到当然不需否认,但在投入上呢,在回报上呢,在时间上呢,这就象要求做一个Blog系统,我想大家会做出千差万别、各种各样的,虽然功能一样。
做技术的往往在很多时候更偏向追求技术的完美、先进等等,但客户并不会关心那么的多,这个时候需要通过控制粒度来决定是否需要采用复杂具有难度的技术,技术的先进必然就带来了技术的难度、风险。
确实,一个能做大项目又能做小项目的系统设计师是最为优秀的,因为它能给出最为适合的系统架构体系设计,在系统设计上做到伸缩自如,这是很难的,极度佩服这样的人。
相关文章推荐
- 系统设计之粒度控制
- 权限管理系统 页面权限粒度控制设计 GUID在数据库系统的应用
- 如何在一个系统中设计权限控制机制(3)
- 粒度细到控件的权限管理系统的设计(概要篇)
- 基于角色访问控制的权限系统设计
- Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)
- MES系统模块设计之物料控制 Material Control -- 1
- 如何在一个系统中设计权限控制机制(1)
- 开发人员的不断流动、让我们更加坚定信念,一定要控制好整个系统的底层架构、核心设计、日常质量检查工作
- 开发人员的不断流动、让我们更加坚定信念,一定要控制好整个系统的底层架构、核心设计、日常质量检查工作
- osecvs 视频会议系统设计(三): 命令控制协议协议设计
- 基于ARM的智能家居远程控制系统设计
- 中、小尺寸TFT-LCD系统时序控制模块的设计
- 基于角色访问控制的权限系统设计
- 基于UML的Blog系统分析与设计之五------边界类、控制类、实体类的设计
- VHDL温度控制系统设计
- 基于角色访问控制的权限系统设计
- 基于角色访问控制的OA系统的设计与实现
- 在系统设计中,如何控制层次的问题
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面