A prototype may be developed and refined until users’ requirements are met when the prototype is used as the operational system or as a basis for the development of the operational system using conventional methods. Prototyping is used to better identify current requirements. Further, though evolutionary prototyping consists of continually updating an existing information system to meet new requirements, it does so when they arise. Again, these are current requirements. More recent excitement has been generated regarding object oriented methods (de Champeaux and Faure, 1992; Walker, 1992). These may offer more maintainable systems and increases in productivity through code reuse among other means. But object-oriented methods also do not address future analysis. The same can be said of artificial intelligence approaches, such as the “requirements apprentice” (Reubenstein, 1991), and formal executable specification languages, such as PAISLEY (Zave, 1991).
It is impractical to create a “new” methodology which will solve all the future and maintainability problems. Indeed, solving the maintenance problem may imply creating other problems such as cost overruns, delays, uncertainty, and software instability. The paper offers something akin to a framework or part of a “code of good practice” for the developers, to ensure that future considerations and flexibility are major considerations throughout the development of an information system. Various considerations can be incorporated into the lifecycle of any IS development methodology.
In the analysis stage, examine the main motivations for having an information system. State and challenge the assumptions about the information system and its environment. Identify the urgency of the IS. Consider future requirements, identifying what is likely to change using an appropriate technique from those discussed above. Identify tradeoffs for different courses of action. Identify areas of single-point control.