You are on page 1of 19

Object-oriented Analysis and Design

Stages in a Software Project
•Requirements Writing
Understanding the Client’s environment and needs.

Identifying the concepts (classes) in the problem domain and their static associations

Identifying “solution domain” classes and mapping the functionality into these classes

Constructing and individually testing the classes that compose the system.

•System Integration and Testing
Testing the system as a whole and doing corrective maintenance

Adapting the system to a changing environment to extend its useful life

or implement each phase of the project before beginning the next. Requirements Analysis Design Implementation Integration and Testing Maintenance .The Waterfall Lifecycle Approach Thoroughly clarify. The subsequent phase is based upon the design documentation previously developed. record.

Speculative decisions increase and compound.The Waterfall Lifecycle Approach Problems with the Waterfall Approach Large steps are taken in which many decisions are made without the benefit of feedback. . There is low adaptability for incorporating either design or implementation concepts “learned” in the development process into the project. Requirements and Design decisions. are frozen in place. High risk or difficult problems are tackled late. once established.

The Unified Process The Unified Process is a software development process or methodology that above all promotes Iterative Development. •Early feedback. The result of each iteration is an executable. Benefits of iterative development include: •Early mitigation of high risks •Early visible progress. •Learning within an iteration. user engagement. •Managed complexity – no compounding of complexity by postponing the implementation phase. leading to a system that more nearly meets the needs of the various stakeholders. The system may need many iterations before it is ready for production. but incomplete system. and adaptation. .

. Technical staff – whose concern is producing a well-engineered product within the constraints of the project. but it less suited for producing project reports that indicate the status of the project and the completion of well-defined phases of the work important to management. delivery dates. Due dates can be set. profit margin.Management of a Software Project There are two groups involved with the management of a software project: “Management” – whose concern is resource allocation. Management likes “benchmarks” exemplified in the Waterfall approach. The iterative process as emphasized in UP is a better approach for engineering a software product. etc. and resources allocated to each phase of the project. and project management documents can be completed according to a schedule.

. Each iteration period has its own development plan. but rather tasks or requirements from the iteration should be removed and added to the next iteration cycle. If all the planned activities cannot be completed during an iteration cycle. Iteration lengths of between two to six weeks are recommended.Timeboxing Management of a UP project. the completion date should not be extended. Iterations are “timeboxed” or fixed in length.

Concrete decisions about what will be accomplished within the iteration cycle have to be made. Prioritization and Decisiveness – Short time-boxed iterations force a team to make decisions regarding the priority of the work and the risks involved. If the immediate deadline is only short weeks away. Team Satisfaction – Short.“Work expands to fill the time available for its completion” Distant or fuzzy completion dates exacerbate this effect. . Parkinson’s Law -. If the end date for the next cycle is only two weeks away.Advantages of Time-boxing Timeboxing provides four clear advantages over using more distant completion dates for major phases of the project. Stakeholder confidence – When the team makes a commitment to producing something tangible within a short period of time. it forces the team to focus and make important decisions immediately. there is no time to be vague. stakeholders develop a greater sense of confidence in the team and satisfaction with the company. time-boxed iterations lead to a quick and repeating sense of accomplishment and closure.

identification of most requirements and scope.The Unified Process The UP organizes work and iterations across four major phases Inception – approximate vision. iterative implementation of the core architecture. more realistic estimates. scope. resolution of high risks. but a feasibility phase Elaboration – refined vision. business case. Transition – beta tests and deployment . A pahse where the core architecture is iteratively designed and implemented Construction – iterative implementation of the remaining lower risk and easier elements. vague estimates. preparation for deployment. NOT a requirements phase.

iteration Release The end of each iteration is a minor release Final release .The Unified Process phase phase Inc. Elaboration Construction Trans.

Disciplines are a set of work activities (and related artifacts) within one subject area such as requirements analysis. and an iteration will incorporate many different Disciplines.The Unified Process UP Disciplines The UP groups related work activities into Disciplines. . A single discipline such as requirements analysis occurs in varying degrees across many iterations.

Disciplines Discipline Business Modeling Relative Effort Iterations Requirements Design Implementation Test Deployment Change Management Project Management Inception Elaboration Construction Transition .

UML tools will be used within the various disciplines during each iteration. . but just a standard for visualizing and documenting the artifacts of software systems that is used during OOA/OOD. It is NOT object-oriented analysis and design.What About UML? UML is a standard diagramming notation.

Agile Processes The Agile Manifesto Individuals and interactions Working software Customer collaboration Responding to change over over over over processes and tools comprehensive documentation contract negotiation following a plan .

9. The best architectures. 5. Give individuals the environment and support they need to get job done. developers. and users should be able to maintain a constant pace indefinitely 10. 6. and designs emerge from self-organizing teams. At regular intervals. Customers and developers work together daily. requirements. and trust them to do it. Simplicity – the art of maximizing the amount of work NOT done – is essential. Agile processes harness change for the customer’s competetive advantage. 3. the team reflects on how to become more efficient and adapts accordingly. even late in development. Agile processes promote sustainable development. . 13. Satisfy the customer through early and continuous delivery of valuable software Welcome changing requirements. Working software is the primary measure of progress. 11. Deliver working software frequently. 8. Continuous attention is paid to technical excellence and good design. The sponsors. 7.Agile Principles 1. Build projects around motivated individuals. 12. 4. The most effective way of conveying information to and within a group is face-to-face. 2.

Alternative Methodologies The UP is an “agile process”. Other Examples of an Agile Approach include: •Boehm’s Spiral Development Process •Incremental Development •Extreme Programming The product is developed and delivered incrementally . It allows the development team to adapt to changes in requirements or technology that occur during the development process.

alternatives. benchmarks S/W Product Requirements design Detailed design Requirement validation Integration and test plan Design V&V Code Plan next phase Service Unit test Integration test Acceptance test Develop. resolve risks Requirements plan LifeConcept of cycle plan operation Development plan Simulations.Boehm’s Spiral Model Determine objectives. verify next level product . and constraints Risk analysis Risk analysis Risk analysis Risk analysis Prototype 3 Prototype 2 REVIEW Prototype 1 Operational Prototype Evaluate alternatives. models. identify.

New code is integrated into the entire system as soon as it is “checked-in”. Extreme Programming also emphasizes continuous integration. •Write a small test •Write a piece of the code •Make it pass the test •Repeat until unit is is complete. Write a unit test before writing the code to be tested. Extreme Programming (EP) emphasizes “test-first programming”. .What’s the Difference? How do these various agile processes differ? The difference is mainly one of emphasis.

A representation of the difference between UP and EP The Unified Process Specification Design Extreme Programming Code Test Iterations Build. test. and integrate the units into the system .

and do not scale up beyond specialized domains very readily. Formal methods require specialized expertise. implementation.Formal Methods The software requirements specification is refined into a detailed formal specification which is represented in a mathematical notation. The development processes – design. into a program. . unit testing – are replaced by a transformational development process where the formal specification is refined. through a series of transformations.