563 - The Mandvi Education Society
Institute of Computer Studies – MCA
Subject Code : 3640003
Subject Name : Software Engineering
Prepared By: Dr. Vikas S. Chomal
Software Engineering & Process
Syllabus
Software
Software Engineering
Software Engineering – A Layered Technology
Software Process
Generic Process Framework Activities
Umbrella Activities
Software
The IEEE Standard Glossary of Software engineering defines software as
computer programs, procedures, rules and possibly associated
documentation and data planning to the operation of a computer system.
In Pressman’s “Software Engineering - A practitioner’s approach”,
the definition is listed as follows –
1) Instructions (Computer Programs) when executed provide desired
results and performance.
2) Data structure that enable the programs to adequately manipulate
and,
3) Documents that describe the operations and use of the programs.
Prepared By: Dr. Vikas S. Chomal
WHAT IS SOFTWARE ENGINEERING?
Software has become critical to advancement in almost all areas of
human endeavour (effort). The art of programming only is no longer
sufficient to construct large programs. There are serious problems in
the cost, timeliness, maintenance and quality of many software
products.
Software engineering has the objective of solving these problems
by producing good quality, maintainable software, on time, within
budget. To achieve this objective, we have to focus in a disciplined
manner on both the quality of the product and on the process used
to develop the product.
Prepared By: Dr. Vikas S. Chomal
Definition
The IEEE Standard Glossary of Software Engineering
terminology defines software engineering as “The systematic
approach to the development, operations, maintenance and
refinement (modification, alteration) of software”.
According to Fritz Bauer – Software Engineering is the
establishment and use of sound engineering principles in order
to obtain economical software that is reliable and works
efficiently on real machine.
Prepared By: Dr. Vikas S. Chomal
The IEEE (93) has developed a more comprehensive definition
wherein it states:
Software Engineering is
1) the application of a systematic, disciplined, quantifiable
approach to the development, operation and maintenance of
software; that is, the approach of engineering to the software.
2) the study of approach as in (1).
Thus, the prime aim (goal) of software engineering is to
improve the quality of software products and to increase the
productivity and job satisfaction of software engineers.
Prepared By: Dr. Vikas S. Chomal
Software Engineering – A Layered Technology
Software Engineering is a layered technology. Like all other engineering
approaches, software engineering also rests on an organizational
commitment to quality.
Figure : Software Engineering – A Layered Technology
Prepared By: Dr. Vikas S. Chomal
The foundation that supports software engineering is a
quality focus’ layer. A product should meet its specification.
The basis for software engineering is the process layer.
Software engineering process holds the technology layers
together and enables rational and timely development of
computer software. Process defines a framework for a set
of key process areas that must be established for effective
delivery of software engineering technology.
Prepared By: Dr. Vikas S. Chomal
Software engineering methods provides the technical
knowledge for building software. A method encompasses a
broad array of tasks that include requirements analysis,
design, program construction, testing and support.
Software engineering tools provides automated or semi-
automated support for the process and the methods. When
tools are integrated so that information created by one
tool can be used by another, a system for support of
software development called CASE Tools (Computer Aided
Software Engineering Tools).
Prepared By: Dr. Vikas S. Chomal
The Software Process
A process is a collection of activities, actions, and tasks that
are performed when some work product is to be created.
Elements of Process
Activity: An activity strives (try hard) 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 (inflexibility) with
which software engineering is to be applied.
Prepared By: Dr. Vikas S. Chomal
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.
Prepared By: Dr. Vikas S. Chomal
The Generic Process Framework activities:
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
Communication: Before any technical work can commence, it is
critically important to communicate and collaborate with the
customer ( and other stakeholders). The intent is to understand
stakeholders’ objectives for the project and to gather
requirements that help define software features and functions.
Prepared By: Dr. Vikas S. Chomal
Planning: Any complicated journey can be simplified if a map
exists. A software project is a complicated journey, and the planning
activity creates a “map” that helps guide the team as it makes the
journey.
The map – called a software project plan – defines the
software engineering work by describing the technical tasks to be
conducted, the risks that are likely, the resources that will be
required, the work products to be produced, and a work schedule.
Prepared By: Dr. Vikas S. Chomal
Modeling: A software engineers creates a model to better
understand software requirements and the design that will achieve
those requirements.
Construction: This activity combines code generation (either
manual or automated) and the testing that is required to uncover
errors in the code.
Deployment: The software (as a complete entity or as a partially
completed increment) is delivered to the customer who evaluates the
delivered product and provides feedback based on the evaluation.
Prepared By: Dr. Vikas S. Chomal
Umbrella Activities
Umbrella activities occur throughout the software process
and focus primarily on project management, tracking, and
control.
Typical Umbrella Activities includes:
1. Software project tracking and control – allows the software
team to assess progress against the project plan and take
any necessary action to maintain the schedule.
2. Risk management – assesses risks that may effect the
outcome of the project or the quality of the product.
3. Software quality assurance - defines and conducts the
activities required to ensure software quality.
Prepared By: Dr. Vikas S. Chomal
4. Technical reviews – assesses software engineering work
products in an effort to uncover and remove errors before
they are propagated (spread) to the next activity.
5. Measurement – defines and collects process, project, and
product measures that assist the team in delivering software
that meets stakeholders’ needs; can be used in conjunction
with all other framework and umbrella activities.
6. Software configuration management – manages the effects
of change throughout the software process.
Prepared By: Dr. Vikas S. Chomal
7. Reusability management – defines criteria for work product
reuse (including software components) and establishes
mechanisms to achieve reusable components.
8. Work product preparation and production – encompasses
the activities required to create work products such as
models, documents, logs, forms, and lists.
Prepared By: Dr. Vikas S. Chomal