好久没有更新了,不找原因和借口。博客还是要定时总结更新,下面是之前总结的读书内容,很早之前都编辑好了,一直躺在随笔中没有发布出来,发出来,激励自己,不断前进。。。
关于OOAD:
伟大软件的简易3步骤:
- 确认你的软件做客户要它做的事。
- 运用基本的OO原则来增加软件的灵活性
- 努力实现可维护、可重用的设计。
关于需求:
好的需求确保你的系统如客户预期的那样运作。
确认需求涵盖了系统的所有用例。
运用用例找出客户忘了告诉你的事。
用例将揭露任何不完整、遗漏的需求,你可能需要将它们加到你的系统中。
关于OO原则
将变化之处封装起来
对接口编程,而不是实现
应用程序的每一个类只有一个理由改变
类是关于行为与功能的。
类应该允许为扩展而开放,禁止为修改而关闭(OCP)
通过将共同之处抽取出来并置于单一地方来避免重复的程序代码(DRY)
系统里的每一个对象都应该具有单一的职责,所有对象的服务都应该聚焦在实现该职责上(SRP)
子类型必须能够替换其基类型(LSP)
关于分析与设计:
设计良好的软件容易改变和扩展
使用封装与继承这样的基本OO原则来确保你的软件有灵活性。
如果设计没有灵活性,就改变它!别与坏设计妥协,即使那是你自己的坏设计,要改就是要改。
确保你的每一个类都具有内聚性
每一个类都应该聚焦在把一件事情做得很好上。
随着软件的设计生命周期的展开,要持续努力提高内聚性。
解决大问题:
聆听客户,找出他们要你构建什么
用户客户理解的语言组合功能列表
确认你的功能是客户真正想要的东西
运用用例图(以及用例)创建系统的蓝图
将大系统分解成许多较小的部分
将设计模式运用到系统中较小的部分
运用基本的OOAD原则为每一个较小的部分设计程序
编程实践:
契约式编程为你与软件用户同意遵守的软件行为建立一个共同的协议。
防御性编程不信任其它软件,进行广泛的错误及数据检查以确保其它软件不会给你不良的或不安全的信息。
开发方式:
用例驱动开发在进行应用程序的任何其它事情之前先取出系统的单一用例,并且聚焦在实现整个用例的程序代码上,包括它所有的场景。
功能驱动开发在进行应用程序的任何其它事情之前先把焦点放在单一功能上,并且为该功能的所有行为编码。
测试驱动开发在为功能编码之前先为功能型片段编写测试场景,接着编写软件以通过所有测试。
良好的软件开发通常在开发周期的不同阶段,结合所有这些开发模型。
软件生命周期
功能列表 用例图 分解问题 需求 领域分析 初步设计 实现 交付
------------------------------------------+----------------------------------------------------------------------+-〉
1.确认你的软件做客户要它做的事 |2.运用基本的OO原则来增加软件的灵活性 | 3.努力实现可维护、可重用的设计