软件构建中的设计

本文探讨了软件设计中的关键概念,强调了通过分解系统、保持子程序短小、实现松散耦合等方法来降低复杂度的重要性。理想的设计特征包括最小复杂度、易于维护、可移植性和层次性。此外,文章还介绍了设计构造块的启发式方法,如通过现实世界的对象进行设计,以及如何使用抽象、继承和信息隐藏等技术来创建高效、可维护的软件系统。
1)关键的设计概念
软件的首要技术使命:管理复杂度。
    在软件的架构层次上,可以通过把整个系统分解为多个系统来降低问题的复杂度。子系统间的相互依赖越少,你就越容易在同一时间里专注问题的一个小部分。精心设计的对象关系使关注相互分离,从而使你能在每个时刻只专注于一件事情。
    保存子程序的短小精悍也能帮助你减少思考的负担。在最高抽象层次上工作,也能减少人的脑力劳动。
理想的设计设计特征:
    最小的复杂度,如果你设计的方案不能让你专注于程序的一部分的话,这一设计就没有什么作用了。
    易于维护
    松散耦合,各个部分关联最小。
    可移植性
    层次性
设计的层次:
    第一层,软件系统
    第二层,分解为子系统或包。比如数据库,用户界面等。定义各个系统之间的通信规则,即一个系统怎么使用另一个系统。最简单交互一个子系统去调用另一个子系统中的子程序;稍微复杂一点就是包含另一个子系统中的类,最复杂就是继承另一个子系统的类。
    第三层,分解为类
2)设计构造块:启发式方法
    找出现实世界中的对象。使用对象进行设计的步骤:
    1 辨识对象及其属性(方法和数据)。
    2 确定可以对各个对象进行的操作。
    3 确定对象对其他对象进行的操作。对象之间最常见的关系就是包含和继承。
    4 确定对象的哪些部分为private和public。
    形成一致的抽象。当你把一个东西称为"房屋",而不是木头,玻璃的组合体时,就是用抽象了。抽象的好处就在于使你能忽略无关的细节。
    当继承能简化时就继承。当一项操作与具体子类无关时,这一操作就可以针对通用类型来进行。
    隐藏信息。信息隐藏是减少重复工作的强大技术。在设计的所有层面上,都可以通过询问改隐藏些什么来促成好的设计决策。请养成问“我该隐藏些什么的习惯”。
    找出容易改变的区域。目标应该是把不稳定的区域隔离出来,从而把变化所带来的影响限制在一个子程序,类或者包得内部。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值