天天看点

我对软件开发的一点思考

但凡是搞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编程和重构并不意味着不再需要设计

而是在不断变化的需求中

让软件的设计去适应这些变化

软件才能具有足够的灵活性、较强的生命期

????????????????????????????

?那么作为一名开发人员、程序员                                    ?

?我们是应该关注软件的功能,还是软件的设计                  ?

?是关注软件的功能是否满足客户当前和未来的需要            ?

?还是关注软件的设计是否满足客户当前和未来的需求         ?

????????????????????????????

继续阅读