22
Software Engineering Software Engineering Introduction (The Process)

Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Embed Size (px)

Citation preview

Page 1: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Software EngineeringSoftware Engineering

Introduction (The Process)

Page 2: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

ObjectivesObjectives

To define software engineering

To introduce a range of software engineering process models

To recap the properties and benefits of an Object Orientated approach

Page 3: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Software Engineering DefinedSoftware Engineering Defined

Def: The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines

Def: The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software

Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available

Page 4: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Software EngineeringSoftware Engineering

a “quality” focusa “quality” focus

process modelprocess model

methodsmethods

toolstools

A Layered TechnologyA Layered Technology

Focus: the underlying philosophy Process: high level framework Methods: technical tasks for building software Tools: automated or semi-automated support (CASE)

Page 5: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Remember:Remember:

High quality = project timelinessHigh quality = project timeliness

Why?Why?

Less rework!Less rework!

The Primary Goal: High QualityThe Primary Goal: High Quality

Page 6: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Process: Generic PhasesProcess: Generic Phases

1. Definition (“what”): Establish what the requirements of the system are

Use system engineering, project planning, requirements analysis

2. Development (“how”): Establish how the system is to be realized – design and build

Use software design, code generation, testing

3. Support: Handle changes as the software environment evolves

Must handle four types of changes: correction, adaptation, enhancement, prevention

4. This process is complemented by a number of umbrella activities

Page 7: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Umbrella ActivitiesUmbrella Activities

Software project management Formal technical reviews Software quality assurance Software configuration management Document preparation and production Reusability management Measurement Risk management

Page 8: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Process Model: AdaptabilityThe Process Model: Adaptability

the framework activities of a process model will always be applied on every project

BUT the tasks (and degree of rigor) for each activity will

vary based on: the type of project (an “entry point” to the model) characteristics of the project common sense judgment concurrence of the project team

Page 9: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Fractal ModelThe Fractal Model

All stages of a software process coexist simultaneously at some level of detail

Practical processes attempt to bring order to this chaos

statusquo

problemdefinition

technicaldevelopment

solutionintegration

statusquo

Page 10: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Linear (Waterfall) ModelThe Linear (Waterfall) Model

Adapted from conventional engineering cycle Oldest and most widely used (+) Works if requirements are well understood; (-) doesn’t handle

iteration well, needs up front requirements, customers must be patience

analysis design code test

System/informationengineering

Page 11: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Prototyping ModelThe Prototyping Model

Early versions of the software are for demonstration and refinement purposes. They are meant to be discarded.

(+) users get a feel for the system, developers learn how to build the real thing; (-) customer may imagine that the prototype is final, initial

quick fix choices may be carried over to later development

listento

customerbuild/revisemock-up

customertest-drivesmock-up

Page 12: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The RAD ModelThe RAD Model

Rapid Application Development (RAD) uses component-based (4GL) techniques and requires well defined requirements

(+) rapid (60-90 days), (-) requires commitment from all parties, sufficient human resources, the right type of application

businessmodeling

datamodeling

processmodeling

applicationgeneration

testing&

turnover

businessmodeling

datamodeling

processmodeling

applicationgeneration

testing&

turnover

businessmodeling

datamodeling

processmodeling

applicationgeneration

testing&

turnover

team #1team #2 team #3

60 - 90 days

Page 13: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Evolutionary ModelsEvolutionary Models

Many systems evolve over time.

A process which develops increasingly more complete versions of the software is called for.

Unlike sequential because of iteration

Unlike prototyping because don’t throw away

Page 14: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Incremental ModelThe Incremental Model

Deliver increasing functionality at each increment. First iteration is the core. (+) manages risk, deals well with staffing problems, (-) can be slow

increment 2

increment 3

increment 4

increment 1

delivery of1st increment

delivery of2nd increment

delivery of3rd increment

delivery of4th incrementcalendar time

analysis design code test

analysis design code test

analysis design code test

analysis design code test

Page 15: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Spiral (Boehm) ModelThe Spiral (Boehm) Model

Each turn has 3-6 task regions. Unlike incremental model software development requires the entire spiral

(+) considers entire software life cycle, good for large scale projects, (-) requires risk assessment expertise, not as widespread

Customer Communication

PlanningRisk Analysis

Engineering

Construction and ReleaseCustomerEvaluation

Page 16: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Component-Based (OO) ModelThe Component-Based (OO) Model

Similar to spiral but uses pre-packaged classes wherever possible (+) emphasises reuse, (-) must design with further reuse in mind

look-upclasses

in library

extractclasses

if available

engineerclasses

if unavailable

constructnth iteration

of system

put newclasses

in library

OO analysisOO designOO programmingOO testing

identifycandidateclasses

Customer Communication

Planning Risk Analysis

Customer Evaluation

Engineering, Construction & Release

Page 17: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Other Process ModelsOther Process Models

Concurrent process model: recognizes that different stages of the project (analysis, design, coding) will have achieved different states (e.g. under development, awaiting changes, done, etc.)

Formal methods: the process to apply when a mathematical specification is to be developed

Cleanroom software engineering: emphasizes error detection before testing. A variation of formal methods.

Page 18: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The Object Oriented ParadigmThe Object Oriented Paradigm

Object technologies reuse faster software development and higher quality

Object oriented software is easier to maintain because the structure is inherently decoupled

Employ the component-based process model to identify re-usable components

For some systems, there may be an obvious mapping from real world entities to system objects

Page 19: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

The OO MindsetThe OO Mindset

problem domainproblem domain

objectsobjects

Page 20: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

ClassesClasses

object-oriented thinking begins with the definition of a class often defined as: template

generalized description

pattern

“blueprint” ... describing a collection of similar items

a metaclass (also called a superclass) is a collection of classes

Classes bundle together attributes (data), methods (algorithms) and messages (communication)

once a class of items is defined, a specific instance of the class can be created (an object)

Page 21: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Inside ObjectsInside Objects

sender object

attributes:

methods:

receiver object

attributes:

methods:

message: [receiver, operation, parameters]

message:

[sender, return value(s)]

Page 22: Software Engineering Introduction (The Process). Objectives lTo define software engineering lTo introduce a range of software engineering process models

Key OO ConceptsKey OO Concepts

Encapsulation: Data and operations on the data are packaged together. This enables: reuse of the object as a system component. information hiding where the user is shielded from internal

implementation details. simpler communication

Inheritance: A subclass inherits the attributes and methods of its superclass and can extend them. This enables: Easy extension for reuse But beware of multiple inheritance

Polymorphism (overloading): A number of different operations in different classes (often sharing a super-class) can have the same name. This enables: Further decoupling of communication