|
Chapter 4: Development Process
About This ChapterSuccessful management of a development project requires two important qualities. The first is rigor, which ensures that a process is followed. The second is flexibility, which allows the process to adapt to a changing environment. In this chapter, we first look at two traditional models for application development: the Waterfall Model and the Spiral Model. We then discuss another model that is widely used today: the Unified Software Development Process (UP or Unified Process).The majority of this chapter is devoted to the MSF Process Model for Application Development, which we call the MSF Development Process Model. Rather than a step-by-step methodology, MSF is a structural framework that an organization can adapt to suit its particular needs. The MSF Development Process Model is the part of this framework that describes the life cycle of a successful software development project. This model allows a project team to respond to customer requests and to change product direction midcourse. It also allows a team to deliver key portions of the product faster than would otherwise be possible. The MSF Development Process Model is a flexible component of MSF that has been successfully proven in the software industry to improve project control, minimize risk, improve product quality, and increase development speed. The principles and guidelines we provide in this chapter are based on our own experience with the creation of application architectures and the implementation of enterprise applications, as well as information from the following sources:
Upon completion, you will be able to:
Models for Application DevelopmentEvery software development effort goes through a process, called a life cycle, that includes all the steps and activities that lead to the product’s initial release. It is possible to build a model of this life cycle that illustrates the activities at some level of abstraction, and that serves to establish the order in which a project specifies, implements, tests, and performs its activities. A well-built life cycle model can streamline a project and ensure that each step moves the project closer toward its goal.Modern processes for application development have evolved over time from best practices derived from very traditional processes, such as those represented by the Waterfall Model and the Spiral Model. As a way of providing background information for the rest of this chapter, we first take a look at the main characteristics of these two models. Then we look at the Unified Process and the MSF Development Process Model.
Waterfall ModelThe common metaphor of building a house is often used to describe the traditional approach to application development. The builder first gathers information from the customer about his or her needs and desires, determines what needs to be built, designs the structure, and constructs it from the plans. The builder must ensure that the building holds together and that all the components, from the electricity and plumbing to the doorbell, are fully functional. The customer then tests everything to ensure that all elements meet expectations. Even after the customer moves into the new home, the builder must occasionally come back to fix minor problems.The stages of building a house are similar to the stages of the Waterfall Model of application development. As shown in Figure 4.1, the tightly defined Waterfall Model is an orderly, highly structured process based on the following well-defined development steps:
Each step is completed and thoroughly documented before the next step can begin. Figure 4.1 Waterfall Model Strict use of the Waterfall Model is declining. Following this model causes several problems throughout the product life cycle, which are summarized below.
Spiral ModelMore recent management techniques have resulted in an iterative approach to application development known as the Spiral Model, as seen in Figure 4.2. The stages of application development that make up this model are typically characterized as:
Walker Royce in Software Project Management: A Unified Framework notes that each stage typically involves five activity phases: requirements, design, implementation, deployment, and management. The Spiral Model’s process is a continual circle through the stages of development, with each stage requiring multiple revolutions through the five phases. For example, the inception stage may require four iterations through the five RSIDM phases. The development life cycle is designed to define the product more tightly over time so that each iteration brings the product closer to the point of delivery. Figure 4.2 Spiral Model Like the Waterfall Model, the Spiral Model can run into problems, such as the following:
Unified ProcessThe information in this section is based primarily on Walker Royce’s Software Project Management: A Unified Framework (Addison-Wesley, 1998), and Ivar Jacobson, Grady Booch, and James Rumbaugh’s The Unified Software Development Process (Addison-Wesley, 1999). Although we try to summarize this model accurately, this brief discussion nevertheless reflects our interpretation of the Unified Process, which is based on our development experience. For a strict definition of the Unified Process, refer to the source texts.One commonly used model for the analysis, design, and implementation of enterprise applications is the Unified Software Development Process (Unified Process or UP). The Unified Process, which requires extensive use of the Unified Modeling Language (UML) modeling, is:
WorkflowsThe heart of the Unified Process is five core workflows that are continually executed during the four phases of the development process until the application is completed. Each completion of the five-workflow steps is called an iteration, and each iteration culminates in an internal product release. The workflow names are descriptors that simplify communication; they contain no magic or hidden meaning. These core workflows are:
The next iteration begins the cycle again with the Requirements Workflow. We will briefly summarize the main workflows of the Unified Process. Requirements The main purpose of the Requirements Workflow is to aim the iteration toward developing the right application for the customer and users. The underlying goal is to describe the application in enough detail that agreement can be reached between the customer, user, and development team on what the application can and cannot do. Information can be gathered from many sources; the project stakeholders, an existing system, or occasionally an existing requirements document created by the customer. As the team gathers the information, it develops a list of candidate requirements. These requirements can be structured with a brief name, description, status (proposed, approved, incorporated, or validated), estimated cost to implement, priority, and associated level of risk to implement the feature. The context of the application is also part of this workflow. The Unified Process suggests that the context be described using business modeling or domain modeling. Functional requirements detailing who does what to the application are noted in the use case model. It is also important to capture nonfunctional requirements regarding things such as performance, extensibility, and reliability. These nonfunctional requirements can be tagged to specific use cases as well as appended to the use case model as nonfunctional system requirements.
The team can also deliver a set of UI designs or prototypes that represent the interaction of the roles conducted by the users. Ivar Jacobson et al. summarize the high-level deliverables of the Requirements Workflow as:
Analysis During the UP’s Analysis Workflow, the application requirements are examined and described in the terms of the application’s developers. This description is a refinement and structuring of the functional requirement captured by the use case model in the Requirements Workflow. The Analysis Workflow is an interim step that serves as an abstraction of the requirements and leads to the actual design of the application. Ivar Jacobson et al. summarize the Analysis Workflow as:
The high-level deliverable of the Analysis Workflow is the architectural view of the analysis model. This view consists of:
…a collaboration within the analysis model that describes how a specific use case is realized and performed in terms of the analysis classes and their interacting analysis objects.
Design Following the analysis of the application, the lower-level Design Workflow can begin. The design classes and their behaviors are developed and assigned to one of four layers: standard user interface (presentation view), business, access, and data. The Design Workflow consists of the following activities:
At the conclusion of the Design Workflow, the application’s architecture is complete. The design model, which is the representation of the application’s physical model, is also complete. Unlike the analysis model, the design model should be maintained throughout the application’s life cycle. The design classes are fully described including their state, properties, and methods, as well as their relationship to other classes. Implementation The Unified Process is strongly based on the Spiral Model and features incremental prototyping and development until the development team is satisfied with the product and all required features are implemented. The Implementation Workflow is the actualization of the Design Workflow. There should be a one-to-one correspondence between the design classes and the code that is developed during this workflow. Each class can be compiled into an executable or many classes can be combined into a single executable, depending on the implementation language and analysis package design. The steps for this workflow, which are fed by the Design Workflow, are:
Testing The Testing Workflow verifies the expected results against the actual results of the Implementation Workflow. Testing is conducted upon conclusion of the Implementation Workflow regardless of whether the iteration’s release is internal, intermediate, or external. Through each iteration, the testing model is refined to remove obsolete test cases, generate regression test cases, and create new test cases for future builds. Test cases specify a particular way of validating the application including the conditions of the test, the required input, and expected output. Test cases should be derived from use cases. In addition to testing the application as a whole, further test cases should be executed to verify the installation on the given application platform and verify the application is correctly configured. Finally, test components can be developed to automate the execution of the test cases.
Project PhasesBecause the Unified Process is based primarily on the Spiral Model, like that model, its four phases of development are Inception, Elaboration, Construction, and Transition. Each phase strives to achieve specific goals:
Requirements and the analysis, design, and implementation architecture represent the majority of the work within the Inception and Elaboration Phases. The completion of each phase describes the application in a level of detail using the Unified Process models. In addition, movement from one phase to the next is the result of accomplishing the goal for the phase and reaching the milestone for the phase. At each phase’s major milestone, a critical go/no-go business decision is made about whether the project should continue, thus approving the next phase’s requirements for budget and schedule. These major milestones are the synchronization points between the technical portions and business portions of the project. Inception Although no specific number of iterations can be associated with the Inception Phase, typically this phase does not exceed two workflow iterations and relies primarily on the Requirements Workflow. The Inception Phase is defined strictly by its goals, which are to set the scope of what the product should do, reduce the probability that the worst project risks will materialize, and prepare the project justification via the initial business case. The four steps used to make the business case are as follows:
The Inception Phase’s milestone is the Life-Cycle Objective Milestone. Elaboration Like the Inception Phase, the Elaboration Phase is typically limited to at most two or three workflow iterations. The Elaboration Phase maintains a focus on "do-ability." The primary goals of this phase are to deliver the application architecture baseline, to estimate in some detail the cost and the schedule, and to plan for the Construction Phase. The main steps of this phase are as follows:
The Elaboration Phase’s milestone is the Life-Cycle Architecture Milestone. Construction In relation to the other phases, the Construction Phase consumes the longest time period and requires the highest resource requirements. It also requires the greatest number of workflow iterations. The Construction Phase is focused on creating the application. Its primary goal is to complete development of the application and ensure that it can begin transition to customers. This transition means the application has achieved initial operational capability and is ready to begin beta testing. Incremental development provides ongoing feature releases with each additional application build. The Construction Phase activities include the following:
The Construction Phase’s milestone is the Initial Operation Capability Milestone. Transition The Transition Phase is denoted by the initial beta release of the application to the customer and limited release to the user community. The two primary goals of this phase are to ensure that the product is ready to be released and to train users how to use the product. The additional burden placed upon the application by the user community and the application’s true environment provides the necessary testing to determine whether the development process has reached its final milestone: the Product Release Milestone. The Transition Phase activities can include the following:
IterationsAs development of the product continues through its phases, each workflow iteration brings the product closer to its final release. Iterations are continued within a specific phase until the goal for the phase has been reached. The emphasis of each iteration changes as time progresses through the four phases. Figure 4.3, which is based on a diagram in The Unified Software Development Process by Ivar Jacobson et al., shows the amount of effort needed to execute each workflow over the project’s life cycle.Figure 4.3 Workflow emphasis over the project life cycle Additionally, heavy emphasis is placed on managing the project and creating a development environment during the Inception and Elaboration Phases. Over the course of time, the amount of detail displayed within each Unified Process model grows, and the models are gradually completed. Figure 4.4, which is also based on a diagram in The Unified Software Development Process by Ivar Jacobson et al., shows that the six primary Unified Process models are almost complete by the end of the Construction Phase, though some fine tuning is usually required to finish the models during the Transition Phase. Figure 4.4 Detailed model completion over the project life cycle Ivar Jacobson et al. also note that the important consequences of a Unified Process iterative and incremental approach are as follows:
MSF Development Process ModelTraditional approaches to software development, such as the Waterfall and Spiral Models, often cannot meet the needs of today’s enterprise application development environments.With the Waterfall Model, a project progresses through sequential steps, from the initial concept through system testing. This model identifies milestones along the course of the project and uses them as transition and assessment points. This approach works well for a project in which requirements can easily be specified at the beginning, but may not work well for a complex project where requirements can change during the project’s life cycle. Additionally, practitioners of this model rely heavily on volumes of documentation and a single review process for each stage. These two Waterfall practices usually lead to overextended "analysis paralysis" and adversarial relationships between developers, customers, and users. Using the Spiral Model, the application evolves over a number of iterations. Early passes through the Spiral life cycle provide increasingly tight definitions of the product, with middle and later iterations adding features and functionality to the application. The Spiral Model seeks to confront project risks early in a software project and address them in early product releases. Due to its iterative nature, the Spiral Model supports creative adjustments along the way, thus evolving and hopefully improving the quality of product. The highly iterative Spiral process requires significant amounts of process and documentation automation to become efficient. In practice, customers and users may develop a general sense of instability because the product can change too rapidly for them to grasp. Finally, many Spiral projects lack a known ending point, so they continue to iterate indefinitely with no financial or business end within site. As shown in Figure 4.5, the MSF Development Process Model combines the strengths of these two models, providing the benefits of milestone-based planning from the Waterfall Model and the benefits of the iterative creative process from the Spiral Model. Figure 4.5 MSF Development Process Model The MSF Development Process Model has three primary traits:
Although Figure 4.5 shows the four phases as quarters, the phases do not necessarily require equal amounts of time to complete. Different business and technological environments will require different time and resource ratios for the various phases.
Phased ProcessThe MSF Development Process Model consists of four interrelated phases. Each of these phases represent deliverables for which a baseline should be established before the development process can move to the next phase of the project. The four phases and their primary tasks are:
Milestone-Driven ProcessThe MSF Development Process Model is based on milestones that are points for review and synchronization, rather than points for freezing the application or its specifications. They enable the team to assess the project’s progress and make midcourse corrections, such as adjusting the scope of the project to reflect changing customer requirements, or reacting to risks that may materialize during the course of the project.The MSF Development Process Model uses two types of milestones: major milestones and interim milestones. Each milestone, whether major or interim, is marked by one or more deliverables. Deliverables are physical evidence that the team has reached a milestone. Major Milestones Each phase of the development process culminates in an externally visible major milestone. Externally visible means that the milestone and its deliverables are visible to entities outside the project team, such as the customer or operations personnel. A major milestone is a point in time when all team members synchronize their deliverables. Additionally, those external to the project team such as the customer and users; operations, support, and help desk personnel; the distribution channel (commercial software); and other key project stakeholders, should be updated on the project status. A significant role of major milestones is to allow for a stage-by-stage assessment of the project’s viability. The project team and the customer, having reviewed the deliverables for the current phase, jointly make the decision whether or not to move into the next phase. Thus, major milestones serve to move the project from one phase to another. Interim Milestones Within each phase of the MSF Development Process Model are various interim milestones, which, like major milestones, are review and synchronization points, rather than freeze points. Unlike major milestones, however, interim milestones are internally visiblethat is, visible only to members of the project team. Interim milestones indicate early progress and break large work assignments into smaller pieces that are easier to address.
Versioned ProcessThe MSF Development Process Model is a versioned process in the sense that it is designed to be repeated during the life cycle of a given product. Each succeeding completion of the MSF Development Process Model allows for the addition of features and functionality in order to satisfy changing business requirements.
The Four MSF Phases and Their Major MilestonesEach of the four phases of the MSF Development Process Model concludes with a major milestone. In this overview, we examine each of the phases briefly with the goal of establishing the basic tasks of each phase and their relation to each other. In later chapters, we’ll explore the phases in more depth and suggest interim milestones for each one.
Envisioning PhaseThe purpose of the Envisioning Phase is to build a shared vision of the project among all the key stakeholders. This vision should include:
Defining the variables more exactly and establishing their triangulated balance is an iterative process. As analyzing, prototyping, and planning activities proceed, the team may revise the scope because of:
By creating a broad but intuitive view of the project’s goals and constraints, the Envisioning Phase begins to define the scope of the project, and sets the stage for the more formal and detailed planning effort that will come later, in the Planning Phase. Vision Approved Milestone The Envisioning Phase culminates in the Vision Approved Milestone. This first milestone represents the point at which the project team and the customer agree on the overall direction for the project, including what features and functionality the product will and will not include. Reaching this milestone meets one of the most fundamental requirements for project successunifying the project team. The team must have a clear vision of what it wants to accomplish for the customer, and must be able to state that vision in terms that will motivate both the team members and the customer. The deliverables of the Vision Approved Milestone are:
We also recommend that a prototype system be included with the deliverables for this milestone. As explained earlier, the completion of major milestones results in a synchronization between the customer and the project team, and provides an opportunity for determining whether or not to proceed. Smaller function teams, as described in Chapter 3, must also synchronize with the main project team at major milestones. The Vision Approved Milestone is the first point in the process where the individuals involved may decide that the project does not make sense and should not continue. It is imperative that everyone agrees to move forward at this point in order to prevent misunderstandings later in the project. The creation of application prototypes during the Envisioning Phase can help the team reach a clear understanding of the product vision. Vision approval signals that members of the project team, the customer, and key stakeholders agree on:
In summary, the true goal of the Envisioning Phase is to create a clear consensus on the product vision between all team members and project stakeholders. Once the product vision is understood, the team and stakeholders can agree and commit to it. Understanding, agreement, and commitment to the vision will place the team in an excellent position to move into the Planning Phase.
Next Analyzing Requirements and Defining Solution Architectures MCSD Training Kit
Last Updated: Friday, July 6, 2001 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||