2.
Software Engineering
• Some realities:
• a concerted effort should be made to understand the
problem before a software solution is developed
• design becomes a pivotal activity
• software should exhibit high quality
• software should be maintainable
• The seminal definition:
• [Software engineering is] the establishment and use of sound
engineering principles in order to obtain economically
software that is reliable and works efficiently on real
machines.
1
Software Engineering
• The IEEE definition:
• Software Engineering: (1) The application of a systematic,
disciplined, quantifiable approach to the development,
operation, and maintenance of software; that is, the
application of engineering to software. (2) The study of
approaches as in (1).
2
A Layered
Technology
tools
methods
process model
a “quality” focus
Software Engineering
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 3
The Software Process
Process
• A process is a collection of activities, actions,
and tasks that are performed when some
work product is to be created.
The Software Process
• A structured set of activities required to
develop a software system.
• A software process model is an abstract representation of
a process. It presents a description of a process from some
particular perspective.
The Software Process
• An activity strives to achieve a broad objective (e.g., communication
with stakeholders) and is applied regardless of the application
domain, size of the project, complexity of the effort, or degree of rigor
with which software engineering is to be applied (group of related
tasks and actions for a major objective).
• An action (e.g., architectural design) encompasses a set of tasks that
produce a major work product (e.g., an architectural design model).
• A task focuses on a small, but well-defined objective (e.g., conducting
a unit test) that produces a tangible outcome.
Generic Software Process Framework
The Generic Software Process Activities
Communica
tion
Planning
Deploymen
t
Software
Process
Activities
Constructio Modeling
n
Process Framework Activities
• Communication – Communicate with stakeholders and customers to obtain
objectives of the system and requirements for the software.
• Planning – The software project plan has details of resources needed, tasks
and risk factors likely to occur, and schedule.
• Modelling – Architectural models and design to better understand the
problem and work towards the best solution.
• Construction – Generation of code and testing of the system to rectify
errors and ensure all specified requirements are met.
• Deployment – Entire software product or partially completed product is
delivered to the customer for evaluation and feedback.
Many different Software Processes But All
Involve
• Specification – defining what the system should do;
• Design and implementation – defining the organization of
the system and implementing the system;
• Validation – checking that it does what the customer
wants;
• Evolution – changing the system in response to changing
customer needs
Umbrella Activities
Work product
preparation and
Reusability production
management
Software project
tracking and
Software control
Configuration Umbrella
Management Activities
(SCM)
Risk management
Measurement
Software quality
Technical reviews assurance (SQA)
Umbrella Activities
• Software project tracking and control – Compare the progress of the project with the plan and
take steps to maintain a planned schedule.
• Risk management – Evaluate risks that can affect the outcome and quality of the software
product.
• Software quality assurance (SQA) – Conduct activities to ensure the quality of the product.
• Technical reviews – Assessment of errors and corrections done at each stage of activity.
• Measurement – All the measurements of the project and product features.
• Software configuration management (SCM) – Controlling and tracking changes in the software.
• Reusability management – Back up work products for reuse and apply the mechanism to achieve
reusable software components.
• Work product preparation and production – Project planning and other activities used to
create work products are documented.
Software development Process flow
• Process flow determines how activities, actions and tasks are
arranged with respect to sequence and time.
Linear process flow
• Linear process flow executes each activity in sequence.
Software development Process flow Cont’d
• Iterative process flow
Iterative process flow repeats one or more activities before
starting next.
Software development Process flow
Cont’d
• Evolutionary process flow
Evolutionary process flow carries out activities in a circular
way.
Software development Process flow
Cont’d
• Parallel process flow
Parallel process flow executes one or more activities in parallel with each
other.
Defining a framework activity
• Consider communication activity. For a small project, this
can be defined as having tasks set:
• Making a phone call with stakeholders.
• Discuss requirements and note them down.
• Organize requirements.
• Mail stakeholders for review and approval.
For large projects, this may have extended actions such as feasibility
study, elicitation of requirements, elaboration of requirements,
specification documents, validation etc.
Identifying a task set
• Task set is the actual work to be done to achieve an objective of
engineering action.
• For a small project, consider elicitation action in communication
activity, this may include.
• Prepare a list of stakeholders of the project.
• Organize a meeting for stakeholders.
• Discuss requirements.
• Finalize requirements list.
• Make a list of issues raised.
For large projects, extraneous steps may be added to elicitation such as
interviewing each stakeholder separately before the group meeting, more
techniques applied in discussing requirements…etc.