Good application design begins with planning and research. It is important that you keep up with technologies as they evolve and provide new features and improved performance. The application in this scenario, the Corporate Media Library (CML), benefited greatly from the developers' survey of the available documentation. The process of deciding which technologies to incorporate and which to exclude began well before a single line of code was written. In addition to the resources listed in the Bibliography, the developers of the CML used the information available on the following Microsoft Web sites:
A good plan requires a clear understanding of the problem you are trying to solve. You need to define your users and what functions they will need to access in an application. You need to decide how your application will be administered. You need to know how many concurrent users will access the application. Does the application need to be available to customers outside your organization, or merely to your employees internally? Will the employees need dial-up connections to the application? What hardware resources do your users have? How do license agreements for the software products you extend affect how you can deploy the application? The list of questions grows even in the final stages of development. Even if you do not have answers to all the questions immediately, the clearer you can be about them early in the development process, the better.
The answers to the preceding questions will differ with every application you develop. However, every application needs to begin with a clear statement of your business problem, an analysis of your resources, and a clear understanding of the requirements your application must fulfill. The following topics discuss the planning process that the Fitch & Mather (F & M) Corporation followed for the CML:
Finally, your planning should even begin to look beyond designing, coding, and deploying to maintaining and supporting your application. Planning for support needs to be included in the earliest phases of development. Microsoft developed the Component Object Model technologies and the Windows® Distributed interNet Applications Architecture (Windows DNA) framework with this consideration in mind. By dividing software into components and tiers, you lay the groundwork for maintainability and extensibility. As technologies change, you can simply build new components for your application rather than redesign it from scratch, as you must with a more "monolithic" application. This reduced development effort greatly decreases total cost of ownership.