我对软件开发的一点思考
但凡是搞IT的
对软件架构、设计模式、XP编程(极限编程)或是敏捷开发、代码重构
这些软件开发的思想或方法都不陌生
但是它们之间究竟有什么联系???
在实际的开发过程应该如何做???
才能构建一个好的程序……
简单来说
开发一个软件的常规做法是
先设计整个系统的总体架构
架构包含一些“层”的思想
(希望你了解“层”的好处,分“层”是我们解决问题的常用方法,不仅限在计算机领域)
再考虑各“层”采用的模式
最后是编写代码
不遵循这个过程的惨痛教训令很多计算机前辈们记忆犹新
提稍早的开发过程意义其实不大
它只会勾起我们的“痛苦”回忆
所以我们才思考新的软件开发思想~~~
在这个过程中
我们比较关注软件设计的架构和模式问题
所以花费的时间也相对多些
但XP编程(或敏捷开发)改变了这一切
它不会在设计软件的架构和采用的模式上花费太多时间
因为我们不断地体会到
即使再好的设计也会在稍后的开发过程中改变
与其这样
倒不如在开发中不断地改善和完善设计
使软件具有良好的可维护性、可扩展性和健壮性
软件架构(Software Architecture)它是一个系统的草图,是一系列抽象
它抽象的事物可以直接构成系统的组件
来指导软件各个方面工作——设计工作
软件架构的几个基本概念包括组件(元件)、连接器和配置以及任务流等
在实际项目中
组件可以是某个类或是程序集
组件之间的连接器通常为接口
将这里的“接口”理解为面向对象思想中的“接口”是狭隘的
而是类或程序集公开的、供其他类和程序集调用的方法和属性
早在六十年代时戴克斯特拉就已经涉及了结构化设计的问题
此后的Rational Software Corporation、Microsoft和卡内基梅隆大学以及加州大学埃尔文分校都做了很多研究
我们常说的“三层架构”就是软件架构的一种
设计模式(Design Pattern)是90年代由“GoF(四人帮)”提出的
“GoF”指的是四个人——Gamma、Helm、Johnson•Vlissides、Addison•Wesley
他们将建筑学的设计思想引入到计算机领域
并于1995年出版《设计模式》一书
第一次将软件的设计提升到理论高度
要注意软件架构比设计模式更加抽象
简单地说
至少软件架构不会涉及具体的类或程序集
而软件模式考虑的就是具体的类和程序集
XP编程(Extreme Programming)是由Kent•Beck于1996年提出
它属于轻量级的软件开发方法
而重构(Reflectoring)是实现XP编程的一种方法或手段
它的两位最早的拥护者是Ward•Cunningham和Kent•Beck
重构既不修正错误,又不增加新的功能
而是用于提高代码的可读性或改变代码内部的设计和结构
并删除死代码,使其在将来更容易维护
重构和XP编程是密切联系的
软件架构、设计模式和XP编程是一种软件开发思想
代码重构则是一种的方法和手段
虽然软件架构和设计模式决定软件的生死
但设计软件架构和考虑使用的模式是一个相对漫长的过程
毕竟
只有充分了解了客户需求后才能设计得当
这必然会延长软件开发的时间、增加成本
这是任何一个老总都不希望看到的~~~
所以才出现XP编程、敏捷开发
既然再好的设计都会改变
那么就在开发中不断地去改善和完善
缩短开发时间
但有一点
XP编程和重构并不意味着不再需要设计
而是在不断变化的需求中
让软件的设计去适应这些变化
软件才能具有足够的灵活性、较强的生命期
????????????????????????????
?那么作为一名开发人员、程序员 ?
?我们是应该关注软件的功能,还是软件的设计 ?
?是关注软件的功能是否满足客户当前和未来的需要 ?
?还是关注软件的设计是否满足客户当前和未来的需求 ?
????????????????????????????