软件产品设计方法论
发布时间:2011-05-04 发布人:admin
“我认为计算机科学至关重要的是保持‘计算’的趣味性,在她刚刚兴起的时候,它的确非常有趣。当然,用户也常常为之买单;过了一段时间,我们开始认真的对待客户的抱怨,于是我们认为自己应该为计算机成功地,无错地完美运行负责。我却不这么想。我认为我们应该努力的是延伸计算机的功能,让它们有新的发展方向,让我们的屋子充满趣味。”------契约式设计之父:Bertrand Meyer
置身于软件行业的人们都要努力寻找一个难以把握的平衡点:产品足够的好,以至于它不会在诸如评估等阶段就被否定掉,同时也不追求十全十美,精雕细凿,否则会因为时间和金钱的因素无法达到预期目标。
构建大型的,让人满意的系统的唯一方法是不要持续地复杂化,必须保持对复杂化的控制力。
禁止对对象字段进行直接的存取,转而必须在对完成这项工作的简单过程的封装基础上进行。对象技术中的动态绑定机制完全能够提供人们想要的,比重载更好的灵活性。
正在构建大型系统的人,天天面对的中心议题是:如何剔除不必要的,人为的,自找的复杂性,并控制好剩下的,无可避免的复杂性。
复杂性可以分成两类:必然的复杂性,它要求我们必须通过优化组织,分析隐藏信息和模块化等手段找到办法来解决;另一类是人为的复杂性,我们应该通过简化要解决的问题来消除之。
设计协同工作的组件:
* 更多的注意力放在整个库的架构上,而不是某个组成部分的设计。
* 如何设计一个库才能让它协调一至,它的众多象一个难题所包含的各方面因素的可变元素怎样才能协调工作。
契约式设计:
* 主要目的是尽可能准确的规定软件元素彼此通讯时的彼此的义务和权利,从而有效的组织通讯,进而帮助我们构造出更好的软件。
* 我们就将商业中的契约概念应用的软件系统中。
* 前置条件是客户端的义务,业务规则的描述。
* 后置条件是服务端的义务,功能的具体处理流程;
* 类不变式是一种刻画类和类实例的基本的一致性和完整性的方法;
* 依据这些概念,在你开发软件的时候,不要仅仅注意实现的具体化,也应该按照契约规定的方式提供一些更加抽象的功能-----可以从几个方面大大的增加你软件开发的经验。
置身于软件行业的人们都要努力寻找一个难以把握的平衡点:产品足够的好,以至于它不会在诸如评估等阶段就被否定掉,同时也不追求十全十美,精雕细凿,否则会因为时间和金钱的因素无法达到预期目标。
构建大型的,让人满意的系统的唯一方法是不要持续地复杂化,必须保持对复杂化的控制力。
禁止对对象字段进行直接的存取,转而必须在对完成这项工作的简单过程的封装基础上进行。对象技术中的动态绑定机制完全能够提供人们想要的,比重载更好的灵活性。
正在构建大型系统的人,天天面对的中心议题是:如何剔除不必要的,人为的,自找的复杂性,并控制好剩下的,无可避免的复杂性。
复杂性可以分成两类:必然的复杂性,它要求我们必须通过优化组织,分析隐藏信息和模块化等手段找到办法来解决;另一类是人为的复杂性,我们应该通过简化要解决的问题来消除之。
设计协同工作的组件:
* 更多的注意力放在整个库的架构上,而不是某个组成部分的设计。
* 如何设计一个库才能让它协调一至,它的众多象一个难题所包含的各方面因素的可变元素怎样才能协调工作。
契约式设计:
* 主要目的是尽可能准确的规定软件元素彼此通讯时的彼此的义务和权利,从而有效的组织通讯,进而帮助我们构造出更好的软件。
* 我们就将商业中的契约概念应用的软件系统中。
* 前置条件是客户端的义务,业务规则的描述。
* 后置条件是服务端的义务,功能的具体处理流程;
* 类不变式是一种刻画类和类实例的基本的一致性和完整性的方法;
* 依据这些概念,在你开发软件的时候,不要仅仅注意实现的具体化,也应该按照契约规定的方式提供一些更加抽象的功能-----可以从几个方面大大的增加你软件开发的经验。
- 上一篇:如何解决初级软件项目经理的常见错误
- 下一篇:已经是最后一篇了