Chapter-2
Software Process
Topics Covered
Layered Technology
Software Process Framework
Generic Process Framework Activities
Umbrella Activities
Overview
What? A software process – as a framework for the
tasks that are required to build high-quality software.
Who? Managers, software engineers, and customers.
Why? Provides stability, control, and organization to an
activity
Steps? A handful of activities are common to all
software processes, details vary.
Work product? Programs, documents, and data.
Software Engineering – Layered Technology
Software Engineering – Layered Technology
A quality Focus
Every organization is rest on its commitment to quality.
Total quality management, Six Sigma, or similar
continuous improvement culture and it is this culture
ultimately leads to development of increasingly more
effective approaches to software engineering.
The bedrock that supports software engineering is a
quality focus.
QUALITY/ SOFTWARE QUALITY
Software quality is the degree of conformance to
explicit or implicit requirements and expectations.
Explicit: clearly defined and documented
Implicit: not clearly defined and documented but indirectly
suggested
Requirements: business/product/software requirements
Expectations: mainly end-user expectations
Definition by IEEE
— The degree to which a system, component, or process meets
specified requirements / customer or user needs or
expectations.
Software Quality:
— The totality of functionality and features of a software product
that bear on its ability to satisfy stated or implied needs.
SOFTWARE QUALITY DIMENSIONS
Accessibility:
— The degree to which software can be used comfortably by a
wide variety of people, including those who require assistive
technologies like screen magnifiers or voice recognition.
Compatibility:
— The suitability of software for use in different environments like
different Operating Systems, Browsers, etc.
Concurrency:
— The ability of software to service multiple requests to the same
resources at the same time.
Efficiency:
— The ability of software to perform well or achieve a result
without wasted energy, resources, effort, time or money.
SOFTWARE QUALITY DIMENSIONS
Functionality:
— The ability of software to carry out the functions as specified or
desired.
Install ability:
— The ability of software to be installed in a specified environment.
Localizability:
— The ability of software to be used in different languages, time
zones etc.
Maintainability:
— The ease with which software can be modified (adding features,
enhancing features, fixing bugs, etc)
Performance:
— The speed at which software performs under a particular load.
Portability:
— The ability of software to be transferred easily from one location to
SOFTWARE QUALITY DIMENSIONS
Reliability:
— The ability of software to perform a required function under
stated conditions for stated period of time without any errors.
Scalability:
— The measure of software’s ability to increase or decrease in
performance in response to changes in software’s processing
demands.
Security:
— The extent of protection of software against unauthorized
access, invasion of privacy, theft, loss of data, etc.
Testability:
— The ability of software to be easily tested.
Usability:
— The degree of software’s ease of use.
QUALITY/ SOFTWARE QUALITY
A product should meet its specification.
This is problematical for software systems.
Customer quality requirements (efficiency, reliability, etc.)
Developer quality requirements (maintainability, reusability, etc.)
Users (usability, efficiency, etc.), and etc.
Software Engineering – Layered Technology
Process:
It’s a foundation layer for software engineering.
It’s define framework for a set of key process areas
(KRA) for effectively manage and deliver quality
software in a cost effective manner
The processes define the tasks to be performed and
the order in which they are to be performed
Software Engineering – Layered Technology
Process:
A software development methodology (also known as
a system development methodology, software
development life cycle, software development process,
software process) is a division of software
development work into distinct phases (or stages)
containing activities with the intent of better planning
and management.
Software Engineering – Layered Technology
• Purpose of process is to deliver software in a timely
manner and with sufficient quality to satisfy those who
have sponsored its creation and those who will use it.
• The methodology may include the pre-definition of
specific deliverables and artifacts that are created and
completed by a project team to develop or maintain an
application.
Software Engineering – Layered Technology
Methods:
It provide the technical how-to's for building software.
Methods encompass a broad array of tasks that
include requirements analysis, design, program
construction, testing, and support.
There could be more than one technique to perform a
task and different techniques could be used in different
situations.
Software Engineering – Layered Technology
Tools:
Provide automated or semi-automated support for the
process, methods and quality control.
When tools are integrated so that information created
by one tool can be used by another, a system for the
support of software development, called computer-
aided software engineering (CASE)
Process Framework
Process framework
Why process
A process defines who is doing what, when and how to
reach a certain goal.
To build complete software process.
Identified a small number of framework activities that
are applicable to all software projects, regardless of
their size or complexity.
It encompasses a set of umbrella activities that are
applicable across the entire software process.
Generic Process Framework Activities
Communication:
— Heavy communication with customers, stakeholders, team
— Encompasses requirements gathering and related activities
Planning:
— Workflow that is to follow
— Describe technical task, likely risk, resources will require, work
products to be produced and a work schedule.
Modeling:
— Help developer and customer to understand requirements
(Analysis of requirements) & Design of software
Construction
— Code generation: either manual or automated or both
— Testing – to uncover error in the code.
Deployment:
— Delivery to the customer for evaluation
— Customer provide feedback
Umbrella Activities
Software project tracking and control
— Assessing progress against the project plan.
— Take adequate action to maintain schedule.
Formal technical reviews
— Assessing software work products in an effort to uncover and
remove errors before goes into next action or activity.
Software quality assurance
— Define and conducts the activities required to ensure software
quality.
Software configuration management
— Manages the effects of change.
Umbrella Activities
Document preparation and production
— Help to create work products such as models, documents, logs,
form and list.
Reusability management
— Define criteria for work product reuse
— Mechanisms to achieve reusable components.
Measurement
— Define and collects process, project, and product measures
— Assist the team in delivering software that meets customer’s
needs.
Risk management
— Assesses risks that may effect that outcome of project or