Data WareHouse by AJAYKINIK


									Chapter 6: Process                                           

What is a Successful Projects:
  • A successful software project is one whose deliverables -satisfy and possibly
      exceed the customer's expectations
  • It is one that was developed in a timely and economical fashion.
  • It is one that is resilient to change and adaptation.

By this measure, we have observed two traits that are common to virtually all of the
successful object-oriented systems
   • The existence of a Strong architectural vision
   •    The application of a well-managed iterative and incremental development life

1) Architectural Vision:
    • A system that has a sound architecture is one that has conceptual integrity and,
       "conceptual integrity is the most important aspect to be considered in system
    • The architecture of an object-oriented software system encompasses its class and
       object structure, organized in terms of distinct layers and partitions. In some
       ways, the architecture of a system is largely irrelevant to its end users.
    • However, having a "clean internal structure" is essential to constructing a system
       that is understandable, can be extended and reorganized, and is maintainable
       and testable
    •   Furthermore, it is only through having a clear sense of a system's architecture
       that it becomes possible to discover common abstractions and mechanisms.
    • Good architectures tend to be object-oriented.
Attributes of good software architecture:
    • They are constructed in well-defined layers of abstraction
    • There is a clear separation of concerns between the interface and implementation
       of each layer.
    • The architecture is simple
Distinction between strategic and tactical architectural decisions:
    • A strategic decision is one that has sweeping architectural implications, and so
       involves the organization of the architecture’s higher-level structures.
    • A tactical decision has only local architectural implications, and so usually only
       involves the details of an abstraction's interface and implementation.
Chapter 6: Process                                                  

2) Iterative and Incremental Life Cycle:
    • An iterative and incremental development life cycle is the direct opposite of the
        traditional waterfall life cycle, and so represents neither a strictly top-down nor a
        bottom-up process.
    • The process that leads to the successful construction of object-oriented
        architectures tends to be both iterative and incremental.
    • The process is incremental in the sense that each pass through an
        analysis/design/evolution cycle leads us to gradually refine our strategic and
        tactical decisions, ultimately converging upon a solution that meets the end
        user's real (and usually unstated) requirements.

Towards a Rational Design Process:
There are five distinct levels of process maturity
   •   Initial: The development process is unplanned ( ad hoc) and often disordered (chaotic).
       Organizations can progress by introducing basic project controls.

   •   Repeatable: The organization has reasonable control over its plans and commitments.

   •   Defined: The development process is reasonably well-defined, understood, and

   •   Managed: The organization has quantitative measures of its process.

   •   Optimizing: The organization has in place a well-tuned process that consistently yields
       products of high quality in a predictable, timely, and cost-effective manner.

The Micro Development Process:
   • To a large extent, the micro process represents the daily activities of the individual
      developer or a small team of developers.
   • Micro process is successively refined by the macro process.
   • From the perspective of the engineer, the micro process offers guidance in making the
      tactical decisions.
   • From the perspective of the architect, the micro process offers a framework for evolving
      the architecture and exploring alternative designs.
   • In the micro process, the traditional phases of analysis and design are intentionally
Chapter 6: Process                                                    

The micro process tends to track the following activities:
   •   Identify the classes and objects at a given level of abstraction.
   •   Identify the semantics of these classes and objects.
   •   Identify the relationships among these classes and objects.
   •   Specify the interface and then the implementation of these classes and objects.

Identifying Classes and Objects:
1) Purpose:
    •   The purpose of identifying classes and objects is to establish the boundaries of the
       problem at hand.

   •   Helps in decomposition of the system

2) Products:
    • The central product of this step is a data dictionary that is updated as development

   •   As development proceeds, and especially as the dictionary grows, it becomes necessary
       to formalize the repository.

   •   In its more formal variations, a data dictionary serves as an index into all the other
       products of the development process.

   Advantages of data dictionary:
   • Maintaining a dictionary helps to establish a common and consistent vocabulary that
     can be used throughout the project.
Chapter 6: Process                                                     

   •    A dictionary can serve as an efficient vehicle for browsing through all the elements of a

   •    A data dictionary permits architects to take a global view of the project.

3) Activities in micro development process:
    • The identification of classes and objects involves two activities:

Discovery and invention

4) Milestones and Measures:
    • Construction of a stable data dictionary at the beginning is very difficult.

   •    We don't expect to complete or freeze this dictionary until very late in the development

   •    A measure of goodness, therefore, is that the dictionary is not changing wildly each time
        we iterate through the micro process. A rapidly changing dictionary is a sign either that
        the development team has not yet achieved focus, or that the architecture is in some way

Identifying the Semantics of Classes and Objects:
1) Purpose:
    • The purpose of identifying the semantics of classes and objects is to establish the
        behavior and attributes of each abstraction identified in the previous phase.

2) Products:
    • There are several products that flow from this step. The first is a refinement of the data
       dictionary, whereby we initially attach responsibilities to each abstraction.

    •   Object diagrams and interaction diagrams are also produced.

3) Activities:
    • There are three activities associated with this step: storyboarding, isolated class design,
        and pattern scavenging.

   •    Story boarding represents top down identification of semantics.

   •    Isolated Classes represents bottom up identification of semantics.

   •    Pattern scavenging, recognizes the importance of commonality.
Chapter 6: Process                                                     

4) Milestones and Measures:
    • The main thing to be achieved includes the identification of sufficient, primitive, and
       complete set of responsibilities and/or operations for each abstraction (concept).

Identifying the Relationships among Classes and Objects:
1) Purpose:
    • The purpose of identifying the relationships among classes and objects is to solidify the

2) Products:
    • Class diagrams, object diagrams, and module diagrams are the primary products.

   •    During analysis, we produce class diagrams that state the associations among
        abstractions, and the operations and attributes for certain abstractions
   •    During analysis, we also produce object diagrams and consider the interplay between
        classes and objects.

3) Activity:
    • There are three activities associated with this step: the specification of associations, the
        identification of various collaborations, and the refinement of associations.

4) Milestones and Measures:
    • Specification of semantics and relationships among certain interesting abstractions.

   •    Measures of goodness include cohesion, coupling, and completeness.

Implementing Classes and Objects:
1) Purpose:
    •   During analysis, the purpose of implementing classes and objects is to provide a
       refinement of existing abstractions sufficient to unveil new classes and objects at the next
       level of abstraction, which we then feed into the following iteration of the micro process.
2) Products:
     • Decisions about the representation of each abstraction and the mapping of these
        representations to the physical model that derive the products.

3) Activities:
    • There is one primary activity associated with this step:

    •   The selection of the structures and algorithms that provide the semantics of the
        abstractions we identified earlier in the micro process.
Chapter 6: Process                                                  

    •   The first three phases of the micro process focus upon the outside view of our
        abstractions, this step focuses upon their inside view.

4) Milestones and Measures:
    • During analysis, we successfully complete this phase once we have identified all the
       interesting abstractions necessary to satisfy the responsibilities of higher-level
       abstractions identified during this pass through the micro process.

   •    During design, we successfully complete this phase when we have an executable or
        near-executable model of our abstractions.


The Macro Development Process:
   • The macro process serves as the controlling framework for the micro process.
   • The macro process represents the activities of the entire development team on the scale
      of weeks to months at a time.
   • Many elements of the macro process are simply sound software management practice,
      and so hence they apply equally to object-oriented as well as non-object-oriented
   • These include basic practices such as configuration management, quality assurance,
      code walkthroughs, and documentation.
Chapter 6: Process                                                     

In the macro process, the traditional phases of analysis and design are to a large extent retained,
and the process is reasonably well ordered.
• Establish the core requirements for the software (conceptualization).
• Develop a model of the system's desired behavior (analysis).
• Create architecture for the implementation (design).
• Evolve the implementation through successive refinement (evolution).
• Manage post delivery evolution (maintenance).

1) Purpose:
    • Conceptualization seeks to establish the core requirements for the system.

    •   For any truly new piece of software, or even for the novel adaptation of an existing
        system, there exists some moment in time where, in the mind of the developer, the
        architect, the analyst, or the end user, there springs forth an idea for some application.

2) Products:
    • Prototypes (example) are the primary products of conceptualization.

3) Activity:
    • Activities Conceptualization is by its very nature an intensely creative activity.

   •    New ideas can spring from virtually any source: end users, user groups, developers,
        analysts, the marketing team, and so on.

4) Milestones and Measures:
   •    Completion of a prototype.

1) Purpose:
    • As Mellor states, "the purpose of analysis is to provide a description of a problem.
    • The description must be complete, consistent, readable, and review able by diverse
       interested parties.
    • In analysis, we seek to model the world by identifying the classes and objects (and their
       roles, responsibilities, and collaborations) that: form the vocabulary of the problem
2) Products:
    • Object diagrams are generated to illustrate the semantics of each scenario more
Chapter 6: Process                                                     

   •    In addition to object diagrams, we will also include class diagrams (to show the
        associations among the object's classes) and finite state machines (to show the life cycle
        of certain important objects.

3) Activities:
    • Two primary activities that are associated with analysis: domain analysis and scenario

   •    Domain analysis seeks to identify the classes and objects that are common to a particular
        problem domain.

   •    Scenario planning is the central activity of analysis.

4) Milestones and Measures:
    • We successfully complete this phase when we have developed and signed off on
       scenarios for all fundamental system behaviors.

   •    Measures of goodness include completeness and simplicity.

1) Purpose:
    • The purpose of design is to create architecture for the evolving implementation, and to
       establish the common tactical policies that must be used by dissimilar elements of the

2) Products:
   •    There are two primary products of design: a description of the architecture, and
        descriptions of common tactical policies.

   •    The architecture of an object-oriented system encompasses its class and object structure.

   •    Common tactical policies include localized mechanisms that appear throughout the

3) Activities:
    • There are three activities associated with design: architectural planning, tactical design,
        and release planning.

    •   Architectural planning involves devising the layers and partitions of the overall system.

    •   Tactical design involves making decisions about various common policies.

    •   Release planning sets the stage for architectural evolution.
Chapter 6: Process                                                     

4) Milestones and Measures:
    • We successfully complete this phase when we have validated the architecture through a
       prototype and through formal review.

    •   The primary measure of goodness is simplicity.

1) Purpose:
    • The purpose of the evolutionary phase is to grow and change the implementation
       through successive refinement.

2) Products:
    • The primary product of evolution is a stream of executable releases representing
       successive refinements to the initial architectural release.

    •   Secondary products include behavioral prototypes that are used to explore alternative
        designs or to further analyze the dark corners of the systems' functionality.

3) Activities:
    • Two activities are associated with evolution:

    •   Application of the micro process, and

    •   Change management.

4) Milestone and Measure:
    • We stop this phase when the functionality and quality of the release are sufficient.

    •   Measure is based on the change of architectural interface and tactical policies.

1) Purpose:
    • Maintenance is the activity of managing post delivery evolution.

    •   More localized changes are made to the system as new requirements are added and
        lingering (persisting) bugs stamped out.

2) Products
    • Since maintenance is in a sense the continued evolution of a system, its products are
       similar to those of the previous phase.

3) Activities:
Chapter 6: Process                                                   

    •   Maintenance involves activities that are little different than those required during the
        evolution of a system. Especially if we have done a good job in the original architecture,
        adding new functionality or modifying some existing behavior will come naturally.

4) Milestones and Measures:
    • The milestones of maintenance involve continued production releases, plus
        intermediate bug releases.

To top