分类:
2008-10-15 16:32:43
那些在团队环境下有能力开发和维护高质量软件的开发人员在今天的技术驱动的经济里有着巨大的需求。工作在团队环境下的开发人员所面临的排在第一位的挑战是阅读和理解其他开发人员的软件。本文试图帮助软件开发团队来克服这个挑战。
本文举出了使得软件开发团队更加有效并且更加高质量的五大习惯。首先,本文描述了这样一些商业团队给于软件开发团队以及他们所开发的软件的要求。接着,本文解释了状态更换逻辑和行为逻辑之间的重要的区别。最后,本文将要示例五个使用客户帐户情形作为案例研究的习惯。
业务对开发人员提出的要求
业务团队的工作是要决定往软件里加入什么新的功能,同时确保新的功能对业务来说是最有利的。在这里,“新的功能”是指一个新的产品或者对一个已存在产品的额外的功能提升。换句话说,业务团队决定了哪些新的特性会帮助软件产品赚更多的钱。决定上那些新的功能的关键因素是实现这些新的功能所需要的成本。如果实现的成本超过了潜在的价值,那么新的功能将不会实现在软件产品里。
业务团队要求软件开发团队以最低的成本开发新的功能。它同时也要求软件开发团队在给产品增加新的功能的时候,不会随着时间的过去而增加新的成本。而且,每一次业务团队请求开发新的功能,他们要求增加新的功能的同时不会丢失旧的功能。随着时间的过去,软件将产生足够多的功能,业务团队将要求使用文档来描述软件提供的当前功能。然后,业务团队将使用这些文档来决定下一个新的功能。
软件开发团队通过开发“易于理解”的软件来最佳的满足这些要求。“难于理解”的软件将导致整个开发过程的无效。这些无效增加了软件开发的成本,并且将导致意想不到的已经实现的功能的丢失。增加了开发人员的开发时间,和错误的软件文档的交付。通过改变业务团队的需求,这些无效能够被减少,将复杂的转化为简单的、“易于理解”的软件。
引入关键概念:状态和行为
开发易于理解的软件开始于创建一个拥有状态和行为的对象。“状态”是指在方法调用之间保持的对象的数据。一个对象能够在它的实例变量中临时的保持它的状态,或者通过保存到一个永久的数据源的方式保持。一个永久的数据源可以是数据库或者Web服务。“状态改变的方法”典型的是通过获取数据或从远程数据源取得和放置数据的方式管理一个对象的数据。“行为”是一个对象在“状态”的基础上回答问题的能力。“行为方法”回答问题不用改变状态,并且在应用中通常指的是业务逻辑。
案例研究:CustomerAccount对象
下面的ICustomerAccount接口定义了一个对象必须实现的用来管理用户帐户的方法。它定义了产生一个活跃账户的能力,载入一个已经存在客户账户状态、校验潜在用户的用户名和密码、校验一个账户是否为活跃账户能够购买产品等功能。
public interface ICustomerAccount {
//State-changing methods
public void createNewActiveAccount()
throws CustomerAccountsSystemOutageException;
public void loadAccountStatus()
throws CustomerAccountsSystemOutageException;
//Behavior methods
public boolean isRequestedUsernameValid();
public boolean isRequestedPasswordValid();
public boolean isActiveForPurchasing();
public String getPostLogonMessage();
}
[1]