Process

The process of object-oriented analysis and design cannot be described in a cookbook, yet it is sufficiently well defined as to offer a predictable and repeatable process for the mature software development organization. Here, we examine the analysis and design process in detail (and the overall software development process in general).
Here, I am going to explain about Macro process & Micro process. A key point in the definition of the macro and micro processes is the strong  separation of concerns between them

i) The Macro Process: The Software Development Lifecycle
The macro process is concerned with the overall software development lifecycle, The choice of lifecycle style (e.g., waterfall, iter-ative, agile, plan-driven, and so on) affects the macro process

ii) The Micro Process: The Analysis and Design Process
The micro process is concerned with specific analysis and design techniques—the techniques you use to get from requirements to implementation, and the choice of analysis and design techniques (e.g., structured, object-oriented, and so on) affects the micro process.

The Macro Process: The Software Development Lifecycle
The macro process involves the following disciplines, executed in the following relative order.
Requirements: Establish and maintain agreement with the customers and other stakeholders on what the system should do. Define the boundaries of (delimit) the system.
Analysis and design: Transform the requirements into a design of the system, which serves as a specification of the implementation in the selected implementation environment. This includes evolving a robust architecture for the system and establishing the common mechanisms that must be used by disparate elements of the system.
Implementation: Implement, unit test, and integrate the design, resulting in an executable system.
Test: Test the implementation to make sure that it fulfills the requirements (i.e., the requirements have been implemented appropriately). Validate through concrete demonstration that the software product functions as designed.
Deployment: Ensure that the software product (including the tested implementation) is available for its end users.

The following disciplines are executed throughout the lifecycle.
Project management: Manage the software development project, including planning, staffing, and monitoring the project, as well as managing the risks.

Configuration and change management: Identify the configuration items, control changes to those items, and manage configurations of those items.
Environment: Provide the software development environment, including both processes and tools that support the development team.

The Macro Process Time Dimension—Milestones and Phases
Figure 6–2 shows how milestones and iterations fit together in an iterative and incremental macro process, as well as the phases that the milestones delineate.


The Macro Process Time Dimension—Iterations
As shown in Figure 6–3, in an iterative macro process, the milestones are achieved by executing one or more iterations, and those iterations may involve activities in any and all of the disciplines. However, the relative time spent in the different disciplines varies depending on what phase the iteration occurs in


The Micro Process: The Analysis and Design Process
As shown in Figure 6–4, the analysis and design process is performed in the context of an overall software development process. The macro process drives the scope of the micro process, provides inputs to the micro process, and consumes the outputs of the micro process. Specifically, the micro process takes the requirements provided by the macro process (and any analysis and design specifications produced by previous iterations of the micro process) and produces design specifications (most notably, the architecture) that are implemented, tested, and deployed in the macro process.


In the micro process, the traditional phases of analysis and design are intentionally blurred and instead are performed at different levels of abstraction along a continuum. Analysis takes the system requirements and produces an initial solution, and design takes the results of analysis and produces a specification that can be efficiently implemented. Figure 6–5 summarizes what should be the focus of analysis and design, when done from both architectural and component perspectives.

Activities
The micro process consists of the following set of activities, which are performed for a specific scope and at a specific level of abstraction.
Identify the elements: Discover (or invent) the elements to work with. Define the object-oriented decomposition.
Define the collaborations between the elements: Describe how the identified elements collaborate to provide the system’s behavioral requirements.
Define the relationships between the elements: Define the relationships between the elements that support the element collaborations.
Define the semantics of the elements: Establish the behavior and attributes of the identified elements. Prepare the elements for the next level of abstraction.
These micro process activities are shown in Figure 6–6.
Products
the primary products of the micro process reflect the different analysis and design concerns.
- The architecture description describes the system’s architecture, including descriptions of common mechanisms. The description includes the architecturally significant aspects of the analysis/design model.
- The analysis/design model includes the analysis and design elements of the software solution and their organization, as well as the realizations that describe how the system’s behavioral requirements are realized in terms of those elements.

Figure 6–7 summarizes the relationship between the macro process, the micro process, and the micro process iterations.


Summary
Here, the software development process framework is described from two perspectives—the overall software development lifecycle (the macro process) and the analysis and design process (the micro process). The choice of lifecycle style (e.g., waterfall, iterative, agile, plan-driven, and so on) affects the macro process, and the choice of analysis and design techniques (e.g., structured, object-oriented, and so on) affects the micro process.

The purpose of the micro process is to take the requirements provided by the macro process (and possibly the analysis and design specifications produced by previous iterations of the micro process) and produce analysis and design specifications that are fed back into the macro process. Ultimately, the micro process produces specifications for the implementation that are built, tested, and deployed in the macro process.

The micro process is comprised of four key activities (identify elements, define element collaborations, define element relationships, and detail element semantics). Each iteration of the micro process involves iterating through these activities for a set of behavioral requirements at a specific level of abstraction.