Top Banner
DEVELOPMENT METHODOLOGIES Development processes and methodologies 2
40

OO Development 2 - Software Development Methodologies

Oct 31, 2014

Download

Technology

Randy Connolly

Course material from my Object-Oriented Development course. This presentation discusses methodologies, development processes, the waterfall model and interative development.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OO Development 2 - Software Development Methodologies

DEVELOPMENT METHODOLOGIESDevelopment processes and methodologies

2

Page 2: OO Development 2 - Software Development Methodologies

2

ANALYSIS5

INTRODUCTION1METHODOLOGIES2MODELS AND UML3OBJECT CONCEPTS4

SOFTWARE DESIGN6

Page 3: OO Development 2 - Software Development Methodologies

Goal of Presentation3

This presentation will Review software processes and

methodologies Overview the System Development Life

Cycles process

Page 4: OO Development 2 - Software Development Methodologies

Addressing Complexity4

Problem definition

Data gathering

Problem redefinition

Finding ideas

Finding solutions

Implementation

The complexity of creating software was identified as perhaps the most important cause of software problems.

The solution to this problem, like to the solution to any problem, is to break up the process of solving it into stages. A process is a set of activities and associated

results which produce a product.

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 46.

General problem solving process

Page 5: OO Development 2 - Software Development Methodologies

Advantages of Subdivision5

Subdividing the development process results in smaller tasks that can be more easily managed.

Subdividing the development process allows techniques and skills specific to different phases to be developed and used.

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 46.

Page 6: OO Development 2 - Software Development Methodologies

Project Lifecycles6

Subdividing the process of software development produces a life cycle model. A lifecycle identifies the phases along which a

software product moves, from inception to shipping. The traditional lifecycle for information systems

is also known as the waterfall life cycle model.System Planning

Requirements Analysis

System Design

Implementation

Testing

Maintenance

Page 7: OO Development 2 - Software Development Methodologies

System Development Life Cycle

7

Although there are numerous variations, the basic SDLC phases include: System planning - defines what the new system

is intended to accomplish and how the project will be organized.

Requirements analysis - investigating and documenting in detail what the system actually should do to accomplish what is intended.

System design - specifying in detail how to implement the system using specific technology.

Implementation - creating the actual system. Testing - ensuring the implemented system meets

all of the specified requirements. Maintenance - providing needed improvements or

fixes.

Source: Satzinger and Orvik, The Object-Oriented Approach (Course Technology, 2001), p. 101-2

Page 8: OO Development 2 - Software Development Methodologies

Waterfall SDLC8

Advantages Better than ad-hoc, code-and-fix approach.

It enforces planning before coding. "plan the work, work the plan"

Provides management with predictability and a foundation for measuring progress.

Source: Satzinger and Orvik, The Object-Oriented Approach (Course Technology, 2001), p. 102

Page 9: OO Development 2 - Software Development Methodologies

Waterfall SDLC9

Disadvantages there are few visible results (other than

documents) until near the end of the lifecycle. higher risk and failure, and all-around lower

productivity. It requires a low-change, low-novelty, and low-

complexity problem. pushes many high-risk and difficult elements

toward the end of a project.

Source: Craig Larmann, Agile and Iterative Development (Addison-Wesley, 2003)

Page 10: OO Development 2 - Software Development Methodologies

Waterfall SDLC10

Disadvantages The waterfall also aggravates complexity

overload and analysis paralysis. Large steps with overwhelming degrees of

complexity are attempted. Difficult to plan accurate schedules

Source: Craig Larmann, Agile and Iterative Development (Addison-Wesley, 2003)

Page 11: OO Development 2 - Software Development Methodologies

Waterfall SDLC11

Disadvantages Difficult to fully specifying the requirements at

the beginning of the project. A great deal of time can take place between

requirements phases and the implementation phase. The more complex the project, the more requirements

change Research shows that a typical software project

experiences a 25% change in requirements

Source: Craig Larmann, Agile and Iterative Development (Addison-Wesley, 2003)

Page 12: OO Development 2 - Software Development Methodologies

Waterfall SDLC12

In 1994, the DOD dropped their waterfall 2167A specification, because of abysmal failure. They now encourage an iterative process.

Source: Craig Larman, “Software Economics” presentation.

Page 13: OO Development 2 - Software Development Methodologies

Iterative Development13

The iterative or incremental approach recognizes that users and developers learn about the requirements as they progress through the development process.

Development is thus organized into a series of short, fixed-length mini-projects called iterations. Each iteration includes its own analysis, design,

implementation, and testing phases.Iteration

1

DesignCode, Test,

IntegrateAnalyze

...Iteration

2

DesignAnalyzeCode, Test,

Integrate

4 weeks (for example) 4 weeks

Source: Satzinger and Orvik, The Object-Oriented Approach (Course Technology, 2001), p. 102Source: Craig Larman, Applying UML and Patterns, 2nd Ed (Prentice Hall, 2001), p. 14-5.

Page 14: OO Development 2 - Software Development Methodologies

Iterative Development

Each iteration is thus a self-contained mini-project containing multiple activities (requirements, analysis, etc)

The goal for the end of an iteration is an iteration release, a stable, integrated and tested partially complete system.

14

Source: Craig Larmann, Agile and Iterative Development (Addison-Wesley, 2003)

Page 15: OO Development 2 - Software Development Methodologies

Iterative Development15

The Iterative SDLC is based on the successive enlargement and refinement of a system through multiple iterations/releases.

The result of each iteration is an executable but incomplete system. The system will not be ready for delivery into

production after many iterations (say 5 to 15 iterations).

Each iteration should be a production-grade subset of the final system. i.e., each iteration is not a prototype or proof of

concept, but a subset of the final system.

Source: Craig Larman, Applying UML and Patterns, 2nd Ed (Prentice Hall, 2001), p. 14-6.

Page 16: OO Development 2 - Software Development Methodologies

Iterative Development16

The system thus grows incrementally over time, iteration by iteration, with each new iteration/release embodying incremental improvements over the other. Each iteration generally tackles new

requirements and incrementally extends the systems.

Sometimes, however, an iteration may focus on improving the performance or integration of existing increments.

Page 17: OO Development 2 - Software Development Methodologies

Iterative Development17

Advantages Users do not have to wait until system is delivered

before they can gain value from it. Early risk mitigation and discovery Higher priority services added first and thus receive the

most testing. More adaptive to changing requirements

is used by current agile methods, including Scrum and XP. Disadvantages

Sometimes difficult to map user’s requirements into increments.

Most systems require basic set of facilities which are used by all parts of a system; these basic facilities may not map well into increments.

May require paradigm change for some developers

Source: Ian Sommerville, Software Engineering, 6th Edition (Addison-Wesley, 2001), p. 52-3

Page 18: OO Development 2 - Software Development Methodologies

Managing Iterative Development

18

Source: Craig Larmann, Agile and Iterative Development (Addison-Wesley, 2003)

Page 19: OO Development 2 - Software Development Methodologies

Which Iterations First?19

Two strategies: Risk-driven

Choose the riskiest, most difficult elements for the early iterations

Client-driven Client prioritizes the iterations based on

whatever they perceive to have the highest business value to them.

Page 20: OO Development 2 - Software Development Methodologies

System Development Methodologies

20

A lifecycle gives a general understanding of what system development is about but it does not give guidance on how to carry out system development.

To help develop quality information systems in a timely and manageable way, we may need a complete system development methodology.

Source: Satzinger and Orvik, The Object-Oriented Approach (Course Technology, 2001), p. 104

Page 21: OO Development 2 - Software Development Methodologies

Method and Methodology21

Method Step-by-step description of the steps involved

in doing a job Methodology

A set of general principles that guide a practitioner to the choice of a particular method suited to a specific task or project.

defines the process and sequence of tasks that need to be completed when developing a system, along with recommended techniques for completing the tasks.

Defines a series of methods to be used.

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 555.

Page 22: OO Development 2 - Software Development Methodologies

Methodologies22

A methodology generally has two components, related to what and how: Process component - explains what tasks

to do and when to do them, spelling out the life cycle to follow and the general project management approaches to be used.

Techniques component - describes the techniques and tools that could or should be used for the tasks at hand.

Source: Satzinger and Orvik, The Object-Oriented Approach (Course Technology, 2001), p. 104

Page 23: OO Development 2 - Software Development Methodologies

Methodology Details23

What is needed in a methodology varies widely with the projects undertaken.

A decisive factor is the number of people involved. In small projects, the main modeling techniques to be

used are the most important aspect of the method. As the number of people increases, a comprehensive

methodology with a clearly defined process increases rapidly.

Another decisive factor is the use of the system: If the system being development is life critical or

mission critical then a well-defined process is necessary.

Source: Satzinger and Orvik, The Object-Oriented Approach (Course Technology, 2001), p. 104

Page 24: OO Development 2 - Software Development Methodologies

Comprehensive Methodologies

24

A comprehensive methodology should provide a clear work breakdown structure that divides the development effort into phases, steps, and tasks.

The methodology should indicate the sequence of tasks: which can be done in parallel, which can be skipped under certain circumstances, and so on.

The methodology should indicate inputs and outputs to the phases, steps, and tasks.

It should indicate the techniques and tools that should or could be used.

It should also be flexible and adaptable to the project at hand by allowing for the deleting, rearranging, and combining of steps and tasks.

Source: Satzinger and Orvik, The Object-Oriented Approach (Course Technology, 2001), p. 104

Page 25: OO Development 2 - Software Development Methodologies

Trends in Methodologies25

There are two opposing trends in methodology development: Methodologically Substantial

advocates a clearly defined and tightly managed process, emphasizing rigor, predictability, and engineering-like development.

e.g., Capability Maturity Model (CMM) and ISO 9000.

Methodological Minimalism advocates a minimal methodology with maximum

freedom on the part of the developers to adapt their approaches according to the needs of the project.

e.g., Extreme Programming, Agile Development

Page 26: OO Development 2 - Software Development Methodologies

Methodologies and Process26

Object-oriented development should also follow a well-defined software process. Remember, process is a more general term,

while methodology the more specific.

Page 27: OO Development 2 - Software Development Methodologies

Unified Software Development Process

27

Developed (1999) by the team that created UML.

Embodies best practice in system development.

Uses iterative and incremental life cycles. Adopts an iterative approach with four

main phases. Different tasks are captured in a series of

workflows.

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 109-110.

Page 28: OO Development 2 - Software Development Methodologies

Unified Software Development Process

28

Has four main phases: Inception (determining scope and purpose of project) Elaboration (requirements capturing and determining

structure of system) Construction (build the system) Transition (product installation and rollout)

Each phases has a workflow or lifecycle: Requirements Analysis Design Implementation Test

The balance of effort spent in each workflow varies from phase to phase.

Within phases there may be more than one iteration.

Page 29: OO Development 2 - Software Development Methodologies

29Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 111.

The Unified Software Development Process

Size of square indicates relative time spent on workflow in that iteration

Inception Elaboration Construction Transition

Project Phases

1 2 3 4 5 6 7 8

Iterations within each phase

Requirements

Analysis

Design

Implementation

Test

Workflows

Iteration #

Time

Page 30: OO Development 2 - Software Development Methodologies

Waterfall Life Cycle30

Requirements

Analysis

Design

Implementation

Test

Requirements

Analysis

Design

Implementation

Test

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 111.

Page 31: OO Development 2 - Software Development Methodologies

UP Phases: Inception31

Goal is to get the project off the ground by

establishing feasibility, creating a business case of benefits of project, capturing essential requirements and identifying critical risks.

Focus on requirements and analysis workflows.

Deliverables are a problem/vision statement document,

initial use case model (10% complete), business case document, initial architecture, simple prototypes, project plan.

Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 33-4.

Inception is aboutinitiating the project

Page 32: OO Development 2 - Software Development Methodologies

UP Phases: Elaboration32

Goal is to capture up to 80% of the functional requirements in use

cases, create detailed plan for construction phase, create initial executable architectural baseline (i.e., initial system) that will evolve and grow in next phase.

Focus on requirements, analysis, and design workflows. Implementation and test workflows also become important

toward the end of the phase on in so far that one constructs and tests the initial baseline.

Deliverables are Use Case model, UML static model, UML dynamic model,

updated project plan, and executable architectural baseline.

Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 34-5.

Elaboration is aboutcreating a partial butworking version of thesystem (the executablearchitectural baseline)

Elaboration isperhaps the mostcritical phase, and forthis reason, most ofthis course isfocused on it.

Page 33: OO Development 2 - Software Development Methodologies

UP Phases: Construction33

Goal is to complete all requirements, analysis, and design, and to

evolve the architectural baseline into the final system. Key issue is maintaining the integrity of the system

architecture (i.e., not to cut corners, but maintain proper design).

Focus on implementation and testing workflows, with secondary

effort made on completing requirements, analysis and design. Deliverables

The software product, the completed UML model, a test suite, and user manuals.

Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 36.

Construction evolvesthe executablearchitectural baselineinto a completeworking system.

Page 34: OO Development 2 - Software Development Methodologies

UP Phases: Transition34

Goal Starts when beta testing is complete and the

system is deployed. Goal is thus to fix bugs and prepare for the rollout.

Focus on testing workflows (as well on

implementation in that bugs have to be fixed). Deliverables

The software product, user manuals, and user support plan.

Source: Arlow and Neustadt, UML and the Unified Process (Addison-Wesley, 2002), p. 37-8.

Transition is aboutdeploying thecompleted system intothe user community

Page 35: OO Development 2 - Software Development Methodologies

Workflows: Requirements

35 Workflow Techniques Key Deliverables

Requirements Requirements Elicitation

Use Case Modelling

Prototyping

Use Case Model

Requirements List

Prototypes

Glossary

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 112.

Page 36: OO Development 2 - Software Development Methodologies

Workflows: Analysis

36Workflow Techniques Key Deliverables

Analysis Collaboration Diagrams

Class and Object Models

Analysis Modelling

Analysis Models

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 112.

Page 37: OO Development 2 - Software Development Methodologies

Workflows: Design37

Workflow Techniques Key Deliverables

Design Class and Object Modelling

Interaction Modelling

State Modelling

Design Patterns

Deployment Modelling

Component Modelling

Package Modelling

Architectural Modelling

Design Models

Overview Design and Implementation Architecture

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 112.

Page 38: OO Development 2 - Software Development Methodologies

Workflows: Implementation38

Workflow Techniques Key Deliverables

Implementation Programming

Component Re-use

Database DDL

Programming Idioms

Executable System

Documentation

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 112.

Page 39: OO Development 2 - Software Development Methodologies

Workflows: Testing39

Workflow Techniques Key Deliverables

Testing Programming

Test Procedures

Tested System

Source: Bennett, McRobb, and Farmer, Object-Oriented Systems Analysis and Design (McGraw Hill, 2002), p. 112.

Page 40: OO Development 2 - Software Development Methodologies

O-O Methodologies40

The previous process is not a complete methodology. Most larger software companies have their own

methodology that you must work within and follow. Most current methodologies are based upon the Unified

Software Development Process. In this course, we will not be following a specific

methodology. We will try to follow, in spirit, the Unified Software

Development Process. Due to time-constraints, we will not be able to realistically

follow all the phases and increments. Inception ElaborationConstruction Transition1 2 3 4 5 6 7 8

Requirements

Analysis

Design

Implementation

Test