Module 1
Module 1
AND PROJECT
MANAGEMENT
Module 1
INTRODUCTION
What is it? Computer software is the product that
software professionals build and then support over the
long term.
Software engineering encompasses a process, a collection
of methods (practice) and an array of tools that allow
professionals to build high quality computer software.
Why is it important? Software is important because it
affects nearly every aspect of our lives and has become
pervasive in our commerce, our culture, and our everyday
activities.
Software engineering is important because it enables us
to build complex systems in a timely manner and with
high quality.
NATURE OF SOFTWARE
Today, software takes on a dual role. It is a product, and at
the same time, the vehicle for delivering a product.
As a product, it delivers the computing potential embodied
by computer hardware or more broadly, by a network of
computers that are accessible by local hardware.
Whether it resides within a mobile phone or operates inside
a mainframe computer, software is an information
transformer—producing, managing, acquiring, modifying,
displaying, or transmitting information that can be as
simple as a single bit or as complex as a multimedia
presentation derived from data acquired from dozens of
independent sources.
As the vehicle used to deliver the product, software acts as
the basis for the control of the computer (operating
systems) the communication of information (networks), and
the creation and control of other programs (software tools
and environments).
NATURE OF SOFTWARE
Software delivers the most important product of our time—
information. It transforms personal data (e.g., an individual’s
financial transactions) so that the data can be more useful in a local
context; it manages business information to enhance
competitiveness; it provides a gateway to worldwide information
networks (e.g., the Internet), and provides the means for acquiring
information in all of its forms.
Today, a huge software industry has become a dominant factor in
the economies of the industrialized world.
And yet, the questions that were asked of the lone programmer are
the same questions that are asked when modern computer-based
Why does it take so long to get software finished?
Why are development costs so high?
Why can’t we find all errors before we give the software to our
customers?
Why do we spend so much time and effort maintaining existing
programs?
Why do we continue to have difficulty in measuring progress as
software is being developed and maintained?
DEFINING SOFTWARE
Software is: (1) instructions (computer programs) that
when executed provide desired features, function, and
performance; (2) data structures that enable the
programs to adequately manipulate information, and (3)
descriptive information in both hard copy and virtual
forms that describes the operation and use of the
programs.
CHARACTERISTICS OF SOFTWARE.
1. Software is developed or engineered; it is not
manufactured in the classical sense.
2. Software doesn’t “wear out.”
General Principles
The First Principle: The Reason It All Exists
The Second Principle: (Keep It Simple, Stupid!)
The Third Principle: Maintain the Vision
The Fourth Principle: What You Produce, Others
Will Consume
The Fifth Principle: Be Open to the Future
The Sixth Principle: Plan Ahead for Reuse
The Seventh principle: Think!
SOFTWARE MYTHS
Software myths—erroneous beliefs about software and
the process that is used to build it—can be traced to the
earliest days of computing.
Myths have a number of attributes that make them
insidious.
Management myths.
Customer myths.
Practitioner’s myths.
A GENERIC PROCESS MODEL
a generic process framework for software engineering
defines five framework activities—communication,
planning, modeling, construction, and deployment.
In addition, a set of umbrella activities—project tracking
and control, risk management, quality assurance,
configuration management, technical reviews, and others
—are applied throughout the process.
This aspect—called process flow—describes how the
framework activities and the actions and tasks that occur
within each framework activity are organized with respect
to sequence and time.
A linear process flow executes each of the five framework
activities in sequence, beginning with communication and
culminating with deployment.
An iterative process flow repeats one or more of the
activities before proceeding to the next
A GENERIC PROCESS MODEL
An evolutionary process flow executes the activities in a
“circular” manner. Each circuit through the five activities
leads to a more complete version of the software.
A parallel process flow executes one or more activities in
parallel with other activities.
A PROCESS FRAMEWORK
What actions are appropriate for a framework activity, given
the nature of the problem to be solved, the characteristics of
the people doing the work, and the stakeholders who are
sponsoring the project?
For a small software project requested by one person (at a
remote location) with simple, straightforward requirements,
the communication activity might encompass little more than
a phone call with the appropriate stakeholder.
Therefore, the only necessary action is phone conversation,
and the work tasks (the task set) that this action
encompasses are:
1. Make contact with stakeholder via telephone.
2. Discuss requirements and take notes.
3. Organize notes into a brief written statement of
requirements.
4. E-mail to stakeholder for review and approval.
PROCESS PATTERNS
Every software team encounters problems as it moves
through the software process.
It would be useful if proven solutions to these problems
were readily available to the team so that the problems
could be addressed and resolved quickly.
A process pattern describes a process-related problem
that is encountered during software engineering work,
identifies the environment in which the problem has been
encountered, and suggests one or more proven solutions
to the problem.
Pattern Name. The pattern is given a meaningful name
describing it within the context of the software process
(e.g., Technical Reviews).
Forces. The environment in which the pattern is
encountered and the issues that make the problem visible
and may affect its solution.
PROCESS PATTERNS
Type. The pattern type is specified. Ambler [Amb98]
suggests three types:
1. Stage pattern—defines a problem associated with a
framework activity for the process. Since a framework
activity encompasses multiple actions and work tasks, a
stage pattern incorporates multiple task patterns that are
relevant to the stage.
2. Task pattern—defines a problem associated with a
software engineering action or work task and relevant to
successful software engineering practice (e.g.,
Requirements Gathering is a task pattern).
3. Phase pattern—define the sequence of framework
activities that occurs within the process, even when the
overall flow of activities is iterative in nature. An example
of a phase pattern might be Spiral Model or
Prototyping.
PROCESS PATTERNS
Initial context. Describes the conditions under which the
pattern applies. Prior to the initiation of the pattern: (1) What
organizational or team-related activities have already
occurred? (2) What is the entry state for the process? (3)
What software engineering information or project information
already exists?
Problem. The specific problem to be solved by the pattern.
Solution. Describes how to implement the pattern
successfully. It also describes how software engineering
information or project information that is available before the
initiation of the pattern is transformed as a consequence of
the successful execution of the pattern.
Resulting Context. Describes the conditions that will result
once the pattern has been successfully implemented. Upon
completion of the pattern: (1) What organizational or team-
related activities must have occurred? (2) What is the exit
state for the process? (3) What software engineering
information or project information has been developed?
PROCESS PATTERNS
Related Patterns. Provide a list of all process patterns
that are directly related to this one. This may be
represented as a hierarchy or in some other diagrammatic
form. For example, the stage pattern Communication
encompasses the task patterns: ProjectTeam,
CollaborativeGuidelines, ScopeIsolation,
RequirementsGathering, ConstraintDescription, and
ScenarioCreation.
Known Uses and Examples. Indicate the specific
instances in which the pattern is applicable. For example,
Communication is mandatory at the beginning of every
software project, is recommended throughout the software
project, and I mandatory once the deployment activity is
under way.
Process patterns provide an effective mechanism for
addressing problems associated with any software
process.
PROCESS ASSESSMENT AND
IMPROVEMENT
A number of different approaches to software process
assessment and improvement have been proposed over the past
few decades:
Standard CMMI Assessment Method for Process
Improvement (SCAMPI)—provides a five-step process
assessment model that incorporates five phases: initiating,
diagnosing, establishing, acting, and learning.
CMM-Based Appraisal for Internal Process Improvement
(CBA IPI)— provides a diagnostic technique for assessing the
relative maturity of a software organization; uses the SEI CMM as
the basis for the assessment.
SPICE (ISO/IEC15504)—a standard that defines a set of
requirements for software process assessment. The intent of the
standard is to assist organizations in developing an objective
evaluation of the efficacy of any defined software process.
ISO 9001:2000 for Software—a generic standard that applies
to any organization that wants to improve the overall quality of
the products, systems, or services that it provides. Therefore, the
standard is directly applicable to software organizations and
companies
PRESCRIPTIVE PROCESS MODEL