chapter 1 software development best practices. topic outline software engineering process symptoms...

36
Chapter 1 Software Development Best Practices

Upload: valerie-craig

Post on 11-Jan-2016

225 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Chapter 1

Software Development Best Practices

Page 2: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Topic Outline

• Software Engineering Process• Symptoms and Root Causes of Software Development

Problems• Software Best Practices

1. Develop software iteratively

2. Manage requirements

3. Use component-based architectures

4. Visually model software

5. Continuously verify software quality

6. Control changes to software

Page 3: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Software Engineering Process

• A disciplined approach to assigning and managing tasks and responsibilities in a development organization

• Its goal is to produce a software that is:– Within a predictable schedule and budget– High-quality– Correspondent to the needs of its end users

Page 4: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Software Engineering Process

• People involved in software development:

– Project managers– Developers– Qualities engineers– Process engineers– Method specialists– System engineers– Analysts

Page 5: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Value of Software

• Software helps drive the growth of the world's economy.• Software-intensive products help:

– Cure the sick– Give voice to the speechless– Mobility to the impaired– Opportunity to less able– Etc.

• Therefore, software is an indispensable part of our modern world.

Page 6: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Value of Software

• Good news for software professionals:– Worldwide economies depend increasingly on software.– Society demands are expanding in size, complexity, distribution, and

importance.

• Bad news:– Expansion of these systems limits of what we know how to develop.– Trying to advance legacy systems to modern technology leads to

technical and organizational problems– Businesses demand increased productivity and improved quality

with faster development and deployment.– Supply of qualified development personnel is not keeping pace with

the demand.

Page 7: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Symptoms of SW Development Failure

• Inaccurate understanding of end-user needs• Inability to deal with changing requirements• Modules that don't fit together• Software that's hard to maintain or extend• Late discovery of serious project flaws• Poor software quality• Unacceptable software performance• Team members in each other's way, making it impossible

to reconstruct who changed what, when, where, and why• An untrustworthy build-and-release process

Page 8: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Root Causes of SW Development Problems

• Ad hoc requirements management• Ambiguous and imprecise communication• Brittle architectures• Overwhelming complexity• Undetected inconsistencies in requirements, designs,

and implementations• Insufficient testing• Subjective assessment of project status• Failure to attack risk• Uncontrolled change propagation• Insufficient automation

Page 9: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Software Best Practices

• Treat root causes of problems to eliminate symptoms.• To develop and maintain quality software in a repeatable

and predictable fashion

• Successful organizations use best practice as follows:1. Develop software iteratively

2. Manage requirements

3. Use component-based architectures

4. Visually model software

5. Continuously verify software quality

6. Control changes to software

Page 10: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Waterfall Lifecycle

RequirementsAnalysis

Design

Code and Unit Testing

Subsystem Testing

System Testing

RISK

TIME

Page 11: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

An Iterative and Incremental Process

Page 12: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Iterative Software Development

• It offers solutions to the root causes of the software development problem:

1. Serious misunderstandings are made evident early in the lifecycle (when it’s possible to react to them).

2. It enables and encourages user feedback so as to elicit the system’s real requirements.

3. The development team is forced to focus on those issues that are most critical to the project and are shielded from those issues that distract them from the project's real risks.

4. Continuous, iterative testing enables an objective assessment of the project’s status.

Page 13: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Iterative Software Development

• It offers solutions to the root causes of the software development problem: (Continued)

5. Inconsistencies among requirements, designs, and implementations are detected early.

6. The workload of the team, especially the testing team, is spread more evenly throughout the project’s lifecycle.

7. The team can leverage lessons learned and therefore can continuously improve the process.

8. Stakeholders in the project can be given concrete evidence of the project’s status throughout its lifecycle.

Page 14: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Manage Requirements

• The challenge of managing the requirements is how to deal with the change of requirements during the life of a software process.

– It is hard to completely and exhaustively state a system's requirements before the start of development.

– as a new or evolving system changes, a user's understanding of the system's requirements also changes.

A requirement is a condition or capability a system must have.

Page 15: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Manage Requirements

• The active management of requirements encompasses three activities:

– Eliciting, organizing, and documenting the system's required functionality and constraints

– Evaluating changes to these requirements and assessing their impact

– Tracking and documenting trade-offs and decisions

Page 16: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Manage Requirements

• It offers solutions to the root causes of the software development problems:

– A disciplined approach is built into requirements management.– Communications are based on defined requirements.– Requirements can be prioritized filtered, and traced.– An objective assessment of functionality and performance is

possible.– Inconsistencies are detected more easily.– With tool support, it is possible to provide a repository for a

system’s requirements, attributes, and traces, with automatic links to external documents.

Page 17: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Use Component-Based Architectures

• Software system is viewed from different perspectives.• Each of stakeholder looks at that system in a different

way at different times over the project's life.• Those people include:

– End users– Analysts– Developers, – System integrators– Testers– Technical writers– Project managers

Page 18: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Use Component-Based Architectures

• A system's architecture facilitates decision-making about:

– Organization of a software system – Selection of the structural elements and their interfaces by which

the system is composed– Their behavior, as specified by the collaborations among those

elements – Composition of these structural and behavioral elements into

progressively larger subsystems– Architectural style that guides this organization: these elements

and their interfaces, their collaborations, and their composition.

Page 19: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Use Component-Based Architectures

• Software architecture is concerned with:

– Structure and behavior– Usage– Functionality– Performance– Resilience– Reuse– Comprehensibility – Economic– Technologic constraint– Aesthetic

Page 20: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Use Component-Based Architectures

• Building resilient architectures enables:

– Degrees of reuse– Offer a clear division of work among teams of developers– Isolate hardware and software dependencies that may be subject

to change– Improve maintainability

Page 21: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Use Component-Based Architectures

• Commercial Component-Base Development (CBD)– Microsoft’s Component Object Model (COM)– Object Management Group’s (OMG) Common Object Request

Broker Architecture (CORBA)– Sun Microsystems’ Enterprise JavaBeans (EJB)

• Components make reuse possible on larger scale by enabling system to be composed from – existing parts– off-the-shelf third-party parts– a few new parts.

Page 22: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

A Component-Based Software Architecture

Page 23: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Use Component-Based Architectures

• Using components-based architectures offers solutions to the root causes of the software development problems:

– Components facilitate resilient architectures.– Modularity enables a clear separation of concerns among

elements of a system that are subject to change.– Reuse is facilitated by leveraging standardized frameworks (such

as COM+, CORBA, and EJB) and commercially available components.

– Components provide a natural basis for configuration management.

– Visual modeling tools provide automation for component-based development.

Page 24: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Visually Model Software

• Why using models?– We cannot comprehend complex systems in their entirety.– Model helps development team visualize, specify, construct, and

document the structure and behavior of a system's architecture.– Members of the development team can unambiguously

communicate their decisions to one another.

• Visual modeling also helps to maintain consistency among a system's artifacts: – its requirements, designs, and implementations.

A model is a simplification of reality that completely describes a system from a particular perspective.

Page 25: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Modeling a System from Different Perspectives

Page 26: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Visually Model Software

• Modeling software visually offers solutions to the root causes of the software development problems:

– Use-cases and scenarios unambiguously specify behavior.– Models unambiguously capture software design.– Non-modular and inflexible architectures are exposed.– Detail can be hidden when necessary.– Unambiguous designs reveal their inconsistencies more readily.– Application quality starts with good design.– Visual modeling tools provide support for UML modeling.

Page 27: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Continuously Verify Software Quality

Software problems are 100 to 1,000 times more expensive to find and repair after deployment than beforehand.

COST

TIME

Page 28: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Continuously Verify Software Quality

• It's important to assess continuously the quality of a system with respect to its:– functionality, – reliability, – application performance, – and system performance.

• Verifying a system's functionality involves creating tests for each key scenario, each of which represents some aspect of the system's desired behavior.

• As software is developed iteratively, tests are performed at every iteration.

Page 29: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Continuously Verify Software Quality

• Verifying software quality offers solutions to the root causes of software development problems:

– Project status assessment is made objective, not subjective, because test results, not paper documents, are evaluated.

– This objective assessment exposes inconsistencies in requirements, designs, and implementations.

– Testing and verification are focused on areas of highest risk, thereby increasing the quality and effectiveness of those areas.

– Defects are identified early, radically reducing the cost of fixing them.– Automated testing tools provide testing for functionality, reliability,

and performance.

Page 30: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Control Changes to Software

• A key challenge to developing software-intensive systems is to cope with developers organized into teams.

• In the absence of disciplined control, the development process rapidly degenerates into chaos.

Page 31: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Control Changes to Software

• Coordinating activities and artifacts of developers and teams involves establishing repeatable workflows for managing changes to software.

• Coordination allows a better allocation of resources based on the project's priorities and risks.

• Coordination actively manages the work on those changes across iterations.

• Coordinating iterations and releases involves establishing a tested baseline at the completion of each iteration.

Page 32: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Control Changes to Software

• Controlling changes to software offers solutions to the root causes of software development problems:

– The workflow of requirements changes is defined and repeatable.

– Change requests facilitate clear communications.– Isolated workspaces reduce interference among team members

working in parallel.– Change rate statistics provide good metrics for objectively

assessing project status.– Workspaces contain all artifacts, which facilitates consistency.– Change propagation is assessable and controlled.– Changes can be maintained in a robust, customizable system.

Page 33: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

The Rational Unified Process

• Roles of Software Development Process:

– Provide guidance as to the order of a team’s activities.

– Specify which artifacts should be developed and when they should be developed.

– Direct the tasks of individual developers and the team as a whole.

– Offer criteria for monitoring and measuring the project’s products and activities.

Page 34: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

The Four Ps

• People

• Project

• Product

• Process in Software Development

Page 35: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Adopting Well-Defined Process

• It helps:– Make business sustainable– Improve each new project.– Increase the efficiency and productivity of the organization.

Mature organizations that employ a well-defined process can

develop complex systems in a repeatable and predictable way.

Page 36: Chapter 1 Software Development Best Practices. Topic Outline Software Engineering Process Symptoms and Root Causes of Software Development Problems Software

Summary

• Building quality software in a repeatable and predictable fashion is hard.

• There are a number of symptoms of common software development problem, and these symptoms are the observable results of the root causes.

• To strike at the root causes of these software development problems, use software development best practices:– Develop software iteratively.– Manage requirements.– Use component-based architectures.– Visually model software.– Continuously verify software quality.– Control changes to software.

• Unified Process brings these best practices together in a form that is suitable for a wide range of projects and organizations.