Professional Documents
Culture Documents
Engineering
Introduction
06/30/09
Mzuzu university
Topics
Understanding software
Issues in software industry
Software engineering concepts
Ethics in software engineering
06/30/09
Mzuzu university
software
Software is a combination of
computer program
data
documentation(system,user)
Types of software
Generic
Custom
Embedded
06/30/09
Mzuzu university
Categories of Software
By development
Generic
Custom
Embedded
Processing focus
Data processing-Transforming,arranging and storing
data
Real Time Processing-Control processes/devices in
real time
06/30/09
Mzuzu university
Issues in software
System Software
Application software
Embedded software
Product Line Software
Web Applications
Artificial Intelligence
Scientific software
Net Sourcing
Open source
Ubiquitous computing
06/30/09
Mzuzu university
Software Crisis
was used to describe the impact of rapid increases in
computer power and the complexity of the problems which
could be tackled.
It refers to the difficulty of writing correct, understandable, and
verifiable computer programs.
The root causes complexity, expectations, and change.
06/30/09
Mzuzu university
Software Crisis
Symptoms
Unmanageable
Over budget
Late
Poor quality
06/30/09
Mzuzu university
Software Engineering
Advances in hardware capability have enabled increasingly
complex software. Our ability to intellectually manage this
complexity has always lagged the advances in software
complexity.
Software engineers continually require better tools.
CASE (Computer Assisted Software Engineering) tools.
Intellectual tools -- Software engineering techniques.
06/30/09
Mzuzu university
Definition
The establishment and use of sound engineering
principles in order to obtain economically software that
is reliable and works efficiently on real machines. (Fritz
Bauer, at the First NATO Conference on Software
Engineering, 1969)
engineering principles - it is a disciplined effort
economically ... reliable .... efficiently ... it has built in
quality
real machines solves a user problem
06/30/09
Mzuzu university
06/30/09
Mzuzu university
10
06/30/09
Mzuzu university
11
06/30/09
Mzuzu university
12
06/30/09
Mzuzu university
13
06/30/09
Mzuzu university
14
Self
S/W engineers shall participate in lifelong
learning regarding the practice of the
profession and promote an ethical approach
to the practice of the profession.
06/30/09
Mzuzu university
15
Summary
Software engineering involves modelling and
documenting system requirements and solutions.
06/30/09
Mzuzu university
16
Software
Software Engineering
Engineering
Software
Software Process
Process
06/30/09
Mzuzu university
17
Software Process
Objectives
Understanding software process
Activities present in every software
process
Process models, and their strengths and
weaknesses
06/30/09
Mzuzu university
18
Process Model
A software process model is an
abstract representation of the
development process.
Consists of a structured set of activities
required to build software.
It presents a description of a process
from a particular perspective.
06/30/09
Mzuzu university
19
Types of Models
Descriptive
Describes the history of how a particular
system was developed.
Used as a basis for understanding and
improving s/w process.
Used for building prescriptive models.
06/30/09
Mzuzu university
20
Prescriptive Model
Prescribes how software should be
developed.
Used as guidelines to organize and
structure how s/w activities should be
performed, and in what order.
06/30/09
Mzuzu university
21
Evolutionary development
Specification, development and validation are
interleaved.
Specialised Models
Component based software Engineering
The system is assembled from existing components.
Agile Models
Mzuzu university
22
06/30/09
Mzuzu university
23
Waterfall Model
Also called Classic Life
cycle.
Requirements
Engineering
Requirements well
defined(fixed) and stable.
Software
Design
Phases
Requirements Engineering
software design
Maintenance
Maintenance
06/30/09
Mzuzu university
24
Drawbacks
Real projects are iterative.
Difficult for customer to state all
requirements explicitly.
Requires customer patience.
Blocking state.
06/30/09
Mzuzu university
25
Drawbacks
Inflexible partitioning of the project into distinct stage
makes it difficult to respond to changing customer
requirements.
Therefore, this model is only appropriate when the
requirements are well-understood and changes will be
fairly limited during the design process.
Few business systems have stable requirements.
The waterfall model is mostly used for large systems
engineering projects.
06/30/09
Mzuzu university
26
Evolutionary prototype
Objective is to work with customers and to evolve a final
system from an initial outline specification. Should start
with well-understood requirements and add new features
as proposed by the customer.
06/30/09
Mzuzu university
27
Prototyping
Customer defines a general objective of the software without
identifying details.
Feedback from prototypes is used to refine requirements for
the software.
Iteration is used to tune prototypes to satisfy customer needs,
while enabling the developer to better understand what needs
to be done.
Used with systems with a considerable emphasis on user
interface and user interaction.
Users and designers must be well aware of the prototyping
approach and its pitfalls.
should be planned and controlled.
06/30/09
Mzuzu university
28
Prototyping
Outline
description
06/30/09
Specification
Initial Version
Development
Intermediate
Version
Validation
Final version
Mzuzu university
29
Prototypes
Advantages
The resulting system is easy to use and maintain.
User needs are better accommodated
The design is of higher quality
The development incurs less effort.
Problems are detected earlier
Disadvantages
The resulting system harder to maintain.
The performance of the resulting system is worse.
The design is of less quality
The development incurs more effort.
The approach requires more experienced team members
06/30/09
Mzuzu university
30
Spiral Model
Proposed be Boehm (BOE88).
Evolutionary model with iterative nature of prototyping and systematic
aspects of waterfall model.
Process is represented as a spiral rather than as a sequence of
activities with backtracking.
Each loop in the spiral represents a phase in the process.
No fixed phases such as specification or design - loops in the spiral
are chosen depending on what is required.
Risks are explicitly assessed and resolved throughout the process.
06/30/09
Mzuzu university
31
Model sectors
Objective setting
Specific objectives for the phase are identified.
Planning
The project is reviewed and the next phase of the
spiral is planned.
06/30/09
Mzuzu university
32
Spiral Model
06/30/09
Mzuzu university
33
06/30/09
Mzuzu university
34
Assign
requirements
to
increments
Define outline
Specification
Develop
system
increment
Validate
increment
Design System
Architecture
Integrate
Increment
Validate
System
System Incomplete
06/30/09
Mzuzu university
35
06/30/09
Mzuzu university
36
RAD Model
Life cycle activities
Requirements planning
User design
Construction
Cut over
Use Joint requirements planning and Joint application Design
Joint requirements planning workshops
to get requirements
Mzuzu university
37
RAD Model
Disadvantages
Requires sufficient human resources
Requires dedication
System need to be properly modularised
Not for high performance systems
Should not be used when technical risks are high.
06/30/09
Mzuzu university
38
Process stages
Requirements Engineering
System design with reuse
Component analysis/Qualification
Adaptation
Assembly and integration.
Evolution and maintenance
This approach is becoming increasingly used as
06/30/09
Mzuzu university
component standards have
emerged.
39
Formal Model
The approach follows the waterfall model
but use formal language to engineer the
software.
Requirements Engineering.
Formal Specification Requirements are
specified mathematically.
Formal Transformation The requirements
are refined until converted to a real
program.
06/30/09
Mzuzu university
40
Software
Engineering
Process
Activities
06/30/09
Mzuzu university
41
Software Process
A set of activities whose goal is the
development or evolution of software.
Software Specification-what the system
should do and constraints.
Software design and Implementationproduction of the software.
Software Validation-Checking if what the
customer needs.
Software Evolution-Changing the s/w in
response to changing demands.
06/30/09
Mzuzu university
42
Software Specification
Process of establishing what services are required and
the constraints on the systems operation and
development.
Requirements Engineering
Feasibility study;
Requirements elicitation and analysis;
Requirements documentation;
Requirements validation.
06/30/09
Mzuzu university
43
Software Engineering
Feasibility Study
Requirements
Elicitation and
Analysis
Requirements
Specification
Feasibility
Report
Requirements
Validation
System Models
User and Requirements
Specification
Requirements
Document
06/30/09
Mzuzu university
44
Implementation
Translate this structure into an executable
program;
Mzuzu university
45
06/30/09
Mzuzu university
46
Architectural
Design
Architectural
specification
06/30/09
Abstract
Design
Abstract
Specification
Component
Design
Data
structure
Design
Component
specification
Data
Structure
Specification
Mzuzu university
Interface
Design
Interface
specification
Algorithm
Design
Algorithm
Specification
47
Programming
Translating a design into a program and
removing errors from that program.
Programming is a personal activity - there
is no generic programming process.
Programmers carry out some program
testing to discover faults in the program
and remove these faults in the debugging
process.
06/30/09
Mzuzu university
48
Software Validation
Verification and validation (V & V) is
intended to show that a system conforms to
its specification and meets the requirements
of the system customer.
Involves checking and review processes and
system testing.
System testing involves executing the
system with test cases that are derived from
the specification of the real data to be
processed by the system.
06/30/09
Mzuzu university
49
Testing Stages
Component or unit testing
Individual components are tested independently;
Components which may be functions or objects
or coherent groupings of these entities.
System testing
Testing of the system as a whole. Testing of
emergent properties is particularly important.
Acceptance testing
Testing with customer data to check that the
system meets the customers needs.
06/30/09
Mzuzu university
50
Software Evolution
Software is flexible and can change.
As requirements change through
changing business circumstances,
the software that support the
business must change.
06/30/09
Mzuzu university
51
Software Evolution
Define System
Requirements
Assess
Existing System
Propose System
Changes
Existing System
06/30/09
Modify System
New System
Mzuzu university
52
06/30/09
53
06/30/09
54
06/30/09
55
56
What is agility
Agility is dynamic, content specific, aggressively change
embracing and growth oriented [Steven Goldman et al]
57
What is agility?
Agility emphasizes the importance of rapid
delivery of operational software and deemphasizes importance of intermediate work
products
Agility can be applied to any software process
as long as the project team is allowed to
streamline tasks and conduct planning in way
that eliminate non-essential work products
06/30/09
58
Agility Principles - 1
Highest priority is to satisfy customer through early
and continuous delivery of valuable software
Welcome changing requirements even late in
development, accommodating change is viewed as
increasing the customers competitive advantage
Delivering working software frequently with a
preference for shorter delivery schedules (e.g. every
2 or 3 weeks)
Business people and developers must work together
daily during the project
06/30/09
59
Agility Principles - 2
Build projects around motivated individuals, given
them the environment and support they need, trust
them to get the job done
Face-to-face communication is the most effective
method of conveying information within the
development team
Working software is the primary measure of progress
Agile processes support sustainable development,
developers and customers should be able to continue
development indefinitely
06/30/09
60
Agile Process
Based on three key assumptions
1. It is difficult to predict in advance which
requirements or customer priorities will change
and which will not
2. For many types of software design and
construction activities are interleaved
(construction is used to prove the design)
3. Analysis, design, construction and testing are not
as predictable from a planning perspective as
one might like them to be
06/30/09
61
Agile Process
Agile processes must be adapted
incrementally to manage
unpredictability
Incremental adaptation requires
customer feedback based on evaluation
of delivered software increments
(executable prototypes) over short time
periods
06/30/09
62
Agility Principles - 3
Continuous attention to technical excellence
and good design enhances agility
Simplicity (defined as maximizing the work
not done) is essential
The best architectures, requirements, and
design emerge from self-organizing teams
At regular intervals teams reflects how to
become more effective and adjusts its
behaviour accordingly
06/30/09
63
64
65
Extreme Activities
Framework activities
Planning
user stories created and ordered by customer value
Design
simple OO designs preferred
Difficult design problem is solved using spike solution.
CRC cards and design prototypes are only work products
encourages use of refactoring
Coding
emphasizes use of pairs programming to create story
code
continuous integration and smoke testing is utilized
06/30/09
66
XP Activities
Testing
focuses on unit tests to exercise stories
unit tests created before coding are implemented
using an automated testing framework to
encourage use of regression testing
integration and validation testing done on daily
basis
acceptance tests focus on system features and
functions viewable by the customer
06/30/09
67
XP Process
User stories
values
Acceptance test criteria
iteration plan
Design
Simple design
CRC Cards
Refactoring
Planning
Coding
Pair programming
Release
Software
increment
Velocity
computed
06/30/09
Test
Unit testing
Continuous integration
Acceptance test
68
69
Collaboration
requires teamwork from a jelled team
joint application development is preferred
requirements gathering approach
minispecs created
06/30/09
70
06/30/09
71
72
Business study
establishes functional and information
requirements needed to provide business value
73
Implementation
latest iteration placed in operational
environment
06/30/09
74
Scrum Principles
Small working teams used to maximize
communication and minimize overhead
Process must be adaptable to both technical and
business challenges to ensure best product produced
Process yields frequent increments that can be
inspected, adjusted, tested, documented and built on
Development work and people performing it are
partitioned into clean, low coupling partitions
Testing and documentation is performed as the
product is built
Ability to declare the product done whenever required
06/30/09
75
Scrum - 1
Backlog
prioritized list of requirements or features that
provide business value to customer
items can be added at any time
Sprints
work units required to achieve one of the backlog
items
must fit into a predefined time-box(30 days)
affected backlog item are frozen.
06/30/09
76
Scrum - 2
Scrum meetings
15 minute daily meetings
what was done since last meeting?
what obstacles were encountered?
what will be done by the next meeting?
Demos
deliver software increment to customer for
evaluation
06/30/09
77
06/30/09
78
79
Plan by feature
features assessed based on priority, effort, technical issues,
schedule dependencies
06/30/09
80
Build by feature
class owner translates design into source code and performs
unit testing
integration performed by chief programmer
06/30/09
81
FDD Process
06/30/09
82
Agile Modeling - 1
Practice-based methodology for effective modeling
and documentation of software systems in a lightweight manner
Modeling principles
Model with a purpose
Use multiple models
Travel light (only keep models with long-term value)
Content is more important than representation
Know the models and tools you use to create them
Adapt locally
06/30/09
83
Agile Modeling - 2
Requirements gathering and analysis modeling
Work collaboratively to find out what customer wants to do
Once requirements model is built collaborative analysis
modeling continues with the customer
Architectural modeling
Derives preliminary architecture from analysis model
Architectural model must be realistic for the environment and
must be understandable by developers
06/30/09
84