The critical challenge in developing a large integrated system is the same as the critical challenge in developing any system: figuring out what the real goals and requirements are, and what is to be sacrificed in order to get there. The costs, complexities, and additional problems that arise when systems become very large, or when the integration requirements become more stringent, are sufficiently major that the decision to build such a system should be justified on the basis of real requirements.
Once the decision to build a large and integrated system has been made, and the necessary resources for planning, building prototypes and tools, examining design issues, and actually building the system have been secured, the short-term implications of a variety of questions that really make sense only in the long term must be considered. Each of these questions and issues poses a significant challenge for which there are no clear answers that are right for all cases. Those discussed in this paper that directly affect the development process itself include the choice of the operating base, the language of implementation, organization of the system, and how stability and growth are to be managed and accommodated over time. More user-related issues include documentation, command languages, presentation and output, and how to permit users to extend the system when needed. A final design concern is how to contain damage resulting from incorrect decisions, which are inevitable no matter how much care is taken. The challenges are nearly overwhelming, but can and must be met.