Extensibility is the degree to which an application can be enhanced in the future to meet changing requirements or goals. Extensibility is also known as adaptability, changeability, expandability, extendibility, and flexibility. A typical objective of an extensibility requirement is ensuring that future enhancements to an application can be easily and quickly implemented. Another objective is implementing these enhancements with a minimum of costs.

When creating extensibility requirements, it's helpful to have a full understanding of the environment your application will reside in and to try to predict in which directions the application might need to evolve in the future. This exercise must not happen in a vacuum, but must utilize the accumulated knowledge and vision of the management and user groups. You should also use any other information sources that could help provide additional direction.

Extensibility is not a recently discovered concept for the development of Web-based applications. For many years, a goal of application development has been to build systems that remain flexible and to provide and implement steps that extend the application's useful life.

Extensibility can be tightly coupled with scalability, so extensibility requirements should include the ability to enhance data, hardware, and software components.

Extensibility requirements are usually specified in terms of average person-time or cost to make the different categories of enhancements. There are usually two categories of extensibility requirements: general and specific. A general extensibility requirement might be requesting that the average amount of person-time needed to make a minor enhancement, including all testing and documentation, should not exceed one person week. A specific extensibility requirement for the Billington Pharmaceuticals case study might be extending the application so that it can still handle the expected tripling of traffic each year without exceeding 40 person days of effort.

Hardware, Software, and Network Infrastructure Requirements

The existing hardware, software, and network infrastructure might not have the capability to support your new application. Most applications are not developed from scratch or in a vacuum, so you need to develop requirements (based on the business, user, and operational requirements that have already been gathered) for integrating the new application into the existing IT environment.

The first step in this process is identifying the current infrastructure that's supporting existing applications and evaluate it against the new requirements, particularly in the PASS MADE operational requirements. Here are some areas you could investigate:

  • Because the performance potential for an application is largely constrained by the available hardware, is the current hardware infrastructure suitable for the new application?

  • Can the existing network structure support the project's testing requirements, particularly performance and scalability testing?

  • Are there any dependencies with, or effects on, other infrastructure elements, especially proprietary systems and applications?

  • Does the application require third-party software that is incompatible with the existing infrastructure?

  • Based on your availability, performance, and scalability requirements, what sort of hardware and software requirements are required?

  • Based on your requirements, is an acceptable network security infrastructure in place?

Based on the responses to these questions, you might need to expand your requirements to include possible upgrades in the organization's infrastructure. For example, you would review the overall IT infrastructure to ensure that it's mature enough to support your availability needs. You might have determined that one of your operational requirements is a fully redundant and highly available system. Your current hardware structure is set up to handle a client/server environment with availability during normal business hours. This new requirement would definitely necessitate an upgrade of your hardware.

Another issue to evaluate is that when the IT environment changes, it often has an impact on the IT application and support teams. An upgrade in hardware and software could change the IT infrastructure enough that other existing applications might be affected and need to be tested to make sure they still function. For instance, if the standard desktop operating system changes from Windows 2000 to Windows XP to support the implementation of your application, the support team needs to test the client/server applications to make sure they still work correctly. In most organizations, these are major changes that require substantial planning and communication, and they have an obvious impact on the entire IT infrastructure and the production application environment. A requirement of your project must be to ensure that this planning and communication review is accomplished.

You must also plan for your IT infrastructure to handle the future growth of your applications. Requirements to be gathered in this area mirror your requirements for scalability and include planning for increases in number of users, complexity of transactions, and availability. This requirement should also include a plan for what to do when scaling thresholds (number of concurrent users, memory usage, and storage space) have been reached.

Finally, remember that many integration issues are made simpler by using the server and infrastructure technologies available in the Microsoft .NET Framework.