Development Model
The development model is the "glue" that allows all the sub-models to work together, and provides a formal definition of the process and resources used to develop an application. Some of the questions this model answers are:
-
Who should work on what part of the overall development problem?
-
In what order should sub-model tasks be performed (logical object design, usability testing, database design, programming, testing, and so on), and how should progress be measured?
-
How many employees are assigned to the project, what are their skills, and what specialized activities should be employed to optimize the development efficiency and final quality of the deliverables?
-
How should the project be managed and coordinated with other projects?
-
How important is software reuse and componentization? (This influences coordination, the importance of standards, the time spent on design, and the value of a general-purpose architecture.)
-
How should work in progress be shared and promoted for other developers and testers to use?
-
How should the application be deployed into the final production environment?
-
How will administration be managed?
-
How will updates be deployed?
The development model itself is separated into two relatively independent sub-models, the development process model, which addresses issues of planning, scheduling, and milestones, and the development role model, which is concerned with the organization, coordination, and management of development teams.
How the development model interacts with other models
As the Enterprise Application Model shows, the development model permeates all of the Enterprise sub-models, guiding the process of development among them and coordinating their requirements and deliverables.
In this respect, there are no "typical" interactions, because you must account for every design and implementation decision in the development model.
How the Internet affects the development model
Examples of the way the Internet has impacted the development model include:
-
A great increase in the importance of server-based (UI-less) logic.
-
Increased complexity and resource requirements for testing and debugging complex, multi-user, distributed, continuously-running applications.
-
An emphasis on the value of location-independent components, and all the processes involved in their development, coordination, and sharing.
-
Extension of the developer/programmer roles to include the roles of author and publisher.
-
The creation of a strong commercial demand for a universal, scalable, component-oriented enterprise application architecture.
For more information The development model is explored in greater depth in Chapter 2, "Enterprise Development Teams and Processes."