19
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance 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. Testing the system as a whole and doing corrective maintenance Adapting the system to a changing environment to extend its useful life

Download It

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Download It

Object-oriented Analysis and Design

Stages in a Software Project

•Requirements Writing

•Analysis

•Design

•Implementation

•System Integration and Testing

•Maintenance

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.

Testing the system as a whole and doing corrective maintenance

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

Page 2: Download It

The Waterfall Lifecycle Approach

Thoroughly clarify, record, or implement each phase of the project before beginning the next. The subsequent phase is based upon the design documentation previously developed.

Requirements

Analysis

Design

Implementation

Integration and Testing

Maintenance

Page 3: Download It

The Waterfall Lifecycle Approach

Problems with the Waterfall Approach

Large steps are taken in which many decisions are made without the benefit of feedback.

Requirements and Design decisions, once established, are frozen in place.

High risk or difficult problems are tackled late.

Speculative decisions increase and compound.

There is low adaptability for incorporating either design or implementation concepts “learned” in the development process into the project.

Page 4: Download It

The Unified Process

The Unified Process is a software development process or methodology that above all promotes Iterative Development.

The result of each iteration is an executable, but incomplete system. The system may need many iterations before it is ready for production.

Benefits of iterative development include:

•Early mitigation of high risks

•Early visible progress.

•Early feedback, user engagement, and adaptation, leading to a system that more nearly meets the needs of the various stakeholders.

•Managed complexity – no compounding of complexity by postponing the implementation phase.

•Learning within an iteration.

Page 5: Download It

Management of a Software Project

There are two groups involved with the management of a software project:

“Management” – whose concern is resource allocation, delivery dates, profit margin, etc.

Technical staff – whose concern is producing a well-engineered product within the constraints of the project.

Management likes “benchmarks” exemplified in the Waterfall approach. Due dates can be set, and resources allocated to each phase of the project, and project management documents can be completed according to a schedule.

The iterative process as emphasized in UP is a better approach for engineering a software product, 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.

Page 6: Download It

Timeboxing

Iterations are “timeboxed” or fixed in length.

Management of a UP project.

Iteration lengths of between two to six weeks are recommended.

Each iteration period has its own development plan.

If all the planned activities cannot be completed during an iteration cycle, the completion date should not be extended, but rather tasks or requirements from the iteration should be removed and added to the next iteration cycle.

Page 7: Download It

Advantages of Time-boxing

Timeboxing provides four clear advantages over using more distant completion dates for major phases of the project.

Parkinson’s Law -- “Work expands to fill the time available for its completion” Distant or fuzzy completion dates exacerbate this effect. If the end date for the next cycle is only two weeks away, it forces the team to focus and make important decisions immediately.

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, there is no time to be vague. Concrete decisions about what will be accomplished within the iteration cycle have to be made.

Team Satisfaction – Short, time-boxed iterations lead to a quick and repeating sense of accomplishment and closure.

Stakeholder confidence – When the team makes a commitment to producing something tangible within a short period of time, stakeholders develop a greater sense of confidence in the team and satisfaction with the company.

Page 8: Download It

The Unified Process

The UP organizes work and iterations across four major phases

Inception – approximate vision, business case, scope, vague estimates.

Elaboration – refined vision, iterative implementation of the core architecture, resolution of high risks, identification of most requirements and scope, more realistic estimates.

Construction – iterative implementation of the remaining lower risk and easier elements, preparation for deployment.

Transition – beta tests and deployment

NOT a requirements phase, but a feasibility phase

A pahse where the core architecture is iteratively designed and implemented

Page 9: Download It

The Unified Process

Inc. Elaboration Construction Trans.

phase phase

iteration

Final releaseRelease

The end of each iteration is a minor release

Page 10: Download It

The Unified Process

UP Disciplines

The UP groups related work activities into Disciplines. Disciplines are a set of work activities (and related artifacts) within one subject area such as requirements analysis.

A single discipline such as requirements analysis occurs in varying degrees across many iterations, and an iteration will incorporate many different Disciplines.

Page 11: Download It

Disciplines

Discipline Iterations

Business Modeling

Requirements

Design

Implementation

Test

Deployment

Change Management

Project Management

Inception Elaboration Construction Transition

Relative Effort

Page 12: Download It

What About UML?

UML is a standard diagramming notation. It is NOT object-oriented analysis and design, but just a standard for visualizing and documenting the artifacts of software systems that is used during OOA/OOD.

UML tools will be used within the various disciplines during each iteration.

Page 13: Download It

Agile Processes

The Agile Manifesto

Individuals and interactions

Working software

Customer collaboration

Responding to change

over processes and tools

over comprehensive documentation

over contract negotiation

over following a plan

Page 14: Download It

Agile Principles1. Satisfy the customer through early and continuous delivery of valuable software

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competetive advantage.

3. Deliver working software frequently.

4. Customers and developers work together daily.

5. Give individuals the environment and support they need to get job done, and trust them to do it. Build projects around motivated individuals.

6. The most effective way of conveying information to and within a group is face-to-face.

7. Working software is the primary measure of progress.

8. Agile processes promote sustainable development.

9. The sponsors, developers, and users should be able to maintain a constant pace indefinitely

10. Continuous attention is paid to technical excellence and good design.

11. Simplicity – the art of maximizing the amount of work NOT done – is essential.

12. The best architectures, requirements, and designs emerge from self-organizing teams.

13. At regular intervals, the team reflects on how to become more efficient and adapts accordingly.

Page 15: Download It

Alternative Methodologies

The UP is an “agile process”. It allows the development team to adapt to changes in requirements or technology that occur during the development process.

Other Examples of an Agile Approach include:

•Boehm’s Spiral Development Process

•Incremental Development

•Extreme Programming

The product is developed and delivered incrementally

Page 16: Download It

Boehm’s Spiral ModelDetermine objectives, alternatives, and constraints

Evaluate alternatives, identify, resolve risks

Develop, verify next level productPlan next phase

REVIEW

Requirements plan Life-cycle plan

Risk analysis

Risk analysis

Risk analysis

Development plan

Integration and test plan

Requirement validation

Prototype 2

Proto-type 3

Concept of operation

Proto-type 1

S/W

Requirements

Simulations, models, benchmarks

Service

Product design

Design V & V

Opera-tional Prototype

Risk analysis

Detailed design

Code

Unit testIntegration test

Acceptance test

Page 17: Download It

What’s the Difference?

How do these various agile processes differ?

The difference is mainly one of emphasis.

Extreme Programming (EP) emphasizes “test-first programming”. Write a unit test before writing the code to be tested.

•Write a small test

•Write a piece of the code

•Make it pass the test

•Repeat until unit is is complete.

Extreme Programming also emphasizes continuous integration. New code is integrated into the entire system as soon as it is “checked-in”.

Page 18: Download It

A representation of the difference between UP and EP

Specification

Design

Code

Test

Iterations

The Unified Process Extreme Programming

Build, test, and integrate the units into the system

Page 19: Download It

Formal Methods

The software requirements specification is refined into a detailed formal specification which is represented in a mathematical notation.

The development processes – design, implementation, unit testing – are replaced by a transformational development process where the formal specification is refined, through a series of transformations, into a program.

Formal methods require specialized expertise, and do not scale up beyond specialized domains very readily.