Module - 1 Notes - SEPM (21CS61)
Module - 1 Notes - SEPM (21CS61)
MODULE – 1
SYLLABUS
Software and Software Engineering: The nature of Software, The unique nature of
WebApps, Software Engineering, The software Process, The software Engineering
practice, The software myths, How it all starts
SESSION - 1
● 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.
1
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
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.
In both our focus is high quality. Both activities are dependent on people, but
the relationship between people and work accomplished are different. Software
costs are concentrated in engineering. This means that software projects cannot
be managed as if they were manufacturing projects.
Hardware exhibits relatively high failure rates early in its life (design or
manufacturing defects); defects are corrected and the failure rate drops to a
steady-state level for some period of time. As time passes, however, the failure
rate rises again as hardware components suffer from the cumulative effects of
dust, vibration, abuse, temperature extremes, and many other environmental
maladies. Stated simply, the hardware begins to wear out.
2
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
During its life, software will undergo change. As changes are made, errors will
be introduced, causing the failure rate curve to spike as shown in the “actual
curve”. Slowly the minimum failure rate level begins to rise—the software is
deteriorating due to change.
3
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Hundreds of thousands of computer programs fall into one of the seven broad
application domains discussed in the preceding subsection. Some of these are
state of- the-art software—just released to individuals, industry, and
government. But other programs are older, in some cases much older.
4
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
As time passes, legacy systems often evolve for one or more of the following
reasons:
Questions
5
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
SESSION - 2
In the early days of the World Wide Web, websites were just a set of linked
hypertext files which presented information using text and limited graphics. The
augmentation of HTML by development tools like Java, XML enabled web
engineers to provide computing capability along with informational content.
Web-based systems and applications (WebApps) are sophisticated tools that not
only present stand-alone information but also integrate databases and business
applications.
● Concurrency: A large number of users may access the WebApp at one time.
● Unpredictable load. The number of users of the WebApp may vary by orders
of magnitude from day to day.
● Performance: If a WebApp user must wait too long, he or she may decide to
go elsewhere.
● Availability: Although the expectation of 100 percent availability is
unreasonable, users of popular WebApps often demand access on a 24/7/365
basis.
6
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
3. Software Engineering
In order to build software that is ready to meet the challenges of the twenty-first
century, you must recognize a few simple realities:
These simple realities lead to one conclusion: software in all of its forms and
across all of its application domains should be engineered.
● The foundation for software engineering is the process layer. The software
engineering process is the glue that holds the technology layers together and
7
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
A process is not a rigid prescription for how to build computer software. Rather,
it is an adaptable approach that enables the people doing the work (the software
team) to pick and choose the appropriate set of work actions and tasks. The
intent is always 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.
8
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
● Construction: This activity combines code generation and the testing that is
required to uncover errors in the code.
These five generic framework activities can be used during the development of
small, simple programs, the creation of large Web applications, and for the
engineering of large, complex computer-based systems.
Questions
1 Define WebApps.
2 Summarize on the common attributes for WebApps.
3 Define software engineering.
4 Explain the layers in software engineering.
5 Define Software Process.
6 Mention the activities in a generic process framework.
9
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
SESSION - 3
10
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
6. Software Myths
Software myths are erroneous beliefs about software and the process that is used
to build it. We categorize myths from three different perspectives.
Management myths:
Myth: We already have a book that’s full of standards and procedures for
building software. Won’t that provide my people with everything they need to
know?
Reality: The book of standards may very well exist, but is it used? Are software
practitioners aware of its existence? Does it reflect modern software engineering
practice? Is it complete? Is it adaptable? Is it streamlined to improve time-to-
delivery while still maintaining a focus on quality? In many cases, the answer to
all of these questions is “no.”
Myth: If we get behind schedule, we can add more programmers and catch up
(sometimes called the “Mongolian horde” concept).
Reality: Software development is not a mechanistic process like manufacturing.
As new people are added, people who are working must spend time educating
the newcomers, thereby reducing the amount of time spent on productive
development effort. People can be added but only in a planned and well
coordinated manner.
11
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Myth: If I decide to outsource the software project to a third party, I can just
relax and let that firm build it.
Reality: If an organization does not understand how to manage and control
software projects internally, it will invariably struggle when it out-sources
software projects.
Customer myths.
Myth: A general statement of objectives is sufficient to begin writing
programs—we can fill in the details later.
Reality: Although a comprehensive and stable statement of requirements is not
always possible, an ambiguous “statement of objectives” is a recipe for disaster.
Myth: Software requirements continually change, but change can be easily
accommodated because software is flexible.
Reality: It is true that software requirements change, but the impact of change
varies with the time at which it is introduced. When requirements changes are
requested early (before design or code has been started), the cost impact is
relatively small. However, as time passes, the cost impact grows rapidly.
Practitioner’s myths:
Myth: Once we write the program and get it to work, our job is done.
Reality: Someone once said that “the sooner you begin ‘writing code,’ the
longer it’ll take you to get done.” Industry data indicate that between 60 and 80
percent of all effort expended on software will be expended after it is delivered
to the customer for the first time.
Myth: Until I get the program “running” I have no way of assessing its quality.
Reality: One of the most effective software quality assurance mechanisms can
be applied from the inception of a project—the technical review.
Myth: The only deliverable work product for a successful project is the working
program.
Reality: A working program is only one part of a software configuration that
includes many elements.
Myth: Software engineering will make us create voluminous and unnecessary
documentation and will invariably slow us down.
Reality: Software engineering is not about creating documents. It is about
creating a quality product. Better quality leads to reduced rework.
12
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Questions
13
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
SESSION - 4
PROCESS MODELS
8. Generic Process Model:
● A process was defined as a collection of work activities, actions, and tasks
that are performed when some work product is to be created.
● Each of these activities, actions, and tasks reside within a framework or model
that defines their relationship with the process and with one another.
● A generic process framework for software engineering defines five
framework activities — communication, planning, modeling, construction,
and deployment.
● Each framework activity is populated by a set of software engineering actions.
● Each software engineering action is defined by a task set that identifies the
work tasks that are to be completed, the work products that will be produced,
the quality assurance points that will be required, and the milestones that will be
used to indicate progress.
● One important aspect of the software process 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.
14
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
To properly execute any one of these activities as part of the software process, a
key question that the software team needs to ask is:
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. The
work tasks that this action encompasses are:
If the project was considerably more complex with many stakeholders, each
with a different set of requirements, the communication activity might have six
distinct actions: inception, elicitation, elaboration, negotiation, specification,
and validation.
Process Patterns
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. Stated in more general terms, a process pattern provides you with a
template - a consistent method for describing problem solutions within the
context of the software process. By combining patterns, a software team can
solve problems and construct a process that best meets the needs of a project.
Pattern Name. The pattern is given a meaningful name describing it within the
context of the software process (e.g., TechnicalReviews).
15
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Forces. The environment in which the pattern is encountered and the issues that
make the problem visible and may affect its solution.
Type. The pattern type is specified. Ambler [Amb98] suggests three types:
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?
16
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Resulting Context. Describes the conditions that will result once the pattern has
been successfully implemented. Upon completion of the pattern:
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 is
mandatory once the deployment activity is under way.
17
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Questions
18
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
SESSION - 5
Prescriptive process models were originally proposed to bring order to the chaos
of software development. Software engineering work and the product that it
produces remain on “the edge of chaos.”
All software process models can accommodate the generic framework activities,
but each applies a different emphasis to these activities and defines a process
low that invokes each framework activity in a different manner.
● The waterfall model is the oldest paradigm for software engineering. the
problems that are sometimes encountered when the waterfall model is applied
are:
1. Real projects rarely follow the sequential flow that the model proposes.
Although the linear model can accommodate iteration, it does so indirectly. As a
result, changes can cause confusion as the project team proceeds.
2. It is often difficult for the customer to state all requirements explicitly. The
waterfall model requires this and has difficulty accommodating the natural
uncertainty that exists at the beginning of many projects.
3. The customer must have patience. A working version of the program(s) will
not be available until late in the project time span. A major blunder, if
undetected until the working program is reviewed, can be disastrous.
4. The linear nature of the classic life cycle leads to “blocking states” in which
some project team members must wait for other members of the team to
complete dependent tasks. In fact, the time spent waiting can exceed the time
spent on productive work.
19
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
20
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
● The core product is used by the customer (or undergoes detailed evaluation).
● As a result, a plan is developed for the next increment. The plan addresses the
modification of the core product to better meet the needs of the customer and
the delivery of additional features and functionality.
● This process is repeated following the delivery of each increment, until the
complete product is produced.
● Early increments are stripped-down versions of the final product, but they do
provide capability that serves the user and also provide a platform for evaluation
by the user.
21
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Questions
22
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
SESSION - 6
Prototyping
● A customer defines a set of general objectives for software, but does not
identify detailed requirements for functions and features.
● In other cases, the developer may be unsure of the efficiency of an algorithm,
the adaptability of an operating system, or the form that human-machine
interaction should take.
● In these, and many other situations, a prototyping paradigm may offer the
best approach. Although prototyping can be used as a stand-alone process
model, it is more commonly used as a technique that can be implemented
within the context of any one of the process models.
● The prototyping paradigm assists you and other stakeholders to better
understand what is to be built when requirements are fuzzy.
◆ You meet with other stakeholders to define the overall objectives for the
software, identify whatever requirements are known, and outline areas
where further definition is mandatory.
23
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
24
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
25
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
● Unlike other process models that end when software is delivered, the spiral
model can be adapted to apply throughout the life of the computer software.
● The spiral model uses prototyping as a risk reduction mechanism but, more
importantly, enables you to apply the prototyping approach at any stage in the
evolution of the product.
Questions
26
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
SESSION - 7
Concurrent Models
The concurrent development model, sometimes called concurrent engineering,
allows a software team to represent iterative and concurrent elements of any of
the process models described in this chapter.
Concurrent modeling defines a series of events that will trigger transitions from
state to state for each of the software engineering activities, actions, or tasks.
27
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Component-Based Development
The component-based development model incorporates many of the
characteristics of the spiral model. It is evolutionary in nature, demanding an
iterative approach to the creation of software. However, the component-based
development model constructs applications from prepackaged software
components.
The formal methods model encompasses a set of activities that leads to formal
mathematical specification of computer software. Formal methods enable you to
specify, develop, and verify a computer-based system by applying a rigorous,
mathematical notation. A variation on this approach, called cleanroom software
engineering, is currently applied by some software development organizations.
When formal methods are used during development, they provide a mechanism
for eliminating many of the problems that are difficult to overcome using other
software engineering paradigms. Ambiguity, incompleteness, and inconsistency
can be discovered and corrected more easily—not through ad hoc review, but
through the application of mathematical analysis. When formal methods are
used during design, they serve as a basis for program verification and therefore
enable you to discover and correct errors that might otherwise go undetected.
28
SOFTWARE ENGINEERING AND PROJECT MANAGEMENT [21CS61]
Although not a mainstream approach, the formal methods model offers the
promise of defect-free software. Yet, concern about its applicability in a
business environment has been voiced:
When concerns cut across multiple system functions, features, and information,
they are often referred to as crosscutting concerns. Aspectual requirements
define those crosscutting concerns that have an impact across the software
architecture.
Questions
********
29