Software Engineering UNIT-I(as Per New Syllabus)
Software Engineering UNIT-I(as Per New Syllabus)
SOFTWARE ENGINEERING
UNIT- I
Unit-1
PART-A
Computer Software is the product that software Professionals build and then
support over the long term. We have to build computer software by applying an agile,
adaptable process that leads to a high quality result that meets the needs of the people who
will use the product. A framework provides for building computer software, called
Software Engineering.
THE EVOLVING ROLE 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.
Whether it resides within a cellular phone or operates inside a mainframe computer,
software is an information transformer—producing, managing, acquiring, modifying,
displaying, or transmitting information.
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).
The lone programmer of an earlier era has been replaced by a team of software
specialists, each focusing on one part of the technology required to deliver a complex
application. And yet, the same questions asked of the lone programmer are being asked
when modern computer-based systems are built:
• Why does it take so long to get software finished?
• Why are development costs so high?
• Why can't we find all the errors before we give the software to our customers?
• Why do we spend so much time and effort for maintaining existing programs?
• Why do we continue to have difficulty in measuring progress as software is
being developed and maintained?
These, and many other questions, are a manifestation of the concern about software and
the manner in which it is developed—a concern that has lead to the adoption of software
engineering practice.
Definitions of Software -
Software Characteristics :
• Although the industry is moving toward component based construction, most software
continues to be custom built.
• Artificial intelligence software - Expert systems, pattern recognition (image and voice),
artificial neural networks and game playing.
• Ubiquitous computing software - Wireless networks
SOFTWARE MYTHS :
Software myths — beliefs about software and the process that is used to build it.
Myths have a number of attributes. For instance, they appear to be reasonable statements
of fact (sometimes containing elements of truth), they have an intuitive feel.
Management myths. Managers with software responsibility, are often under pressure
to maintain budgets, keep schedules from slipping, and improve quality.
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.”
Customer myths. A customer who requests computer software believes myths about
software because software managers and practitioners do little to correct misinformation.
Myths lead to false expectations (by the customer) and, ultimately, dissatisfaction with the
developer.
Practitioner’s myths. Myths that are still believed by software practitioners have been
fostered by over 50 years of programming culture. During the early days, programming
was viewed as an art form.
Myth: Once we write the program and get it to work, our job is done.
Reality: 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. Software reviews
are a “quality filter” that have been found to be more effective than testing for
finding certain classes of software defects.
Myth: The only deliverable work product for a successful project is the working
program.
PART-B
These five generic framework activities can be used during the development of
small, simple programs, the creation of large Web applications, and complex computer-
based systems. The details of the software process will be quite different in each case, but
the framework activities remain the same.
In general, umbrella activities are applied throughout a software project and help a
software team to manage and control progress, quality, change, and risk.
Typical umbrella activities include:
Software project Allows the software team to assess progress against the project
tracking and control plan and take any necessary action to maintain the schedule.
Risk management Assesses risks that may affect the outcome of the project or the
quality of the product.
Software quality Defines and conducts the activities required to ensure software
assurance quality.
Technical reviews Assesses software engineering work products in an effort to
uncover and remove errors before they are propagated to the next
activity.
Measurement Defines and collects process, project, and product measures that
assist the team in delivering software that meets stakeholders’
needs.
Software Manages the effects of change throughout the software process.
configuration
management
Reusability Defines criteria for work product reuse (including software
management components) and establishes mechanisms to achieve reusable
components.
Work product Encompasses the activities required to create work products such
preparation and as models, documents, logs, forms, and lists.
production
A process adopted for one project might be significantly different than a process
adopted for another project. Among the differences are
• Overall flow of activities, actions, and tasks and the
interdependencies among them
• Degree to which actions and tasks are defined within each framework activity
• Degree to which work products are identified and required.
• Manner in which quality assurance activities are applied
• Manner in which project tracking and control activities are applied
• Overall degree of detail and rigor with which the process is described
• Degree to which the customer and other stakeholders are involved with the project
• Level of autonomy given to the software team
• Degree to which team organization and roles are prescribed
When these process models are applied, the intent is to improve system quality, to
make projects more manageable, to make delivery dates and cost more predictable, and to
guide teams of software engineers as they perform the work required to build a system.
Unit-1
PART-C
PROCESS MODELS :
Each framework activity have a set of software engineering actions, and each
action define a task set that identifies the work and work products to be accomplished to
meet the development goals. The work products are the programs, documents, and data
that are produced as a consequence of the activities and tasks defined by the process.
Each process model prescribes a process flow (also called a work flow)—that is,
the manner in which the process elements are interrelated to one another.
The waterfall model, sometimes called the classic life cycle, suggests a systematic,
sequential approach to software development that begins with customer specification of
requirements and progresses through planning, modeling, construction, and deployment.
The waterfall model is the oldest paradigm for software engineering. However,
over the past three decades, criticism of this process model has caused even ardent
supporters to question its efficacy. Among the problems that are sometimes encountered
when the waterfall model is applied are:
• Real time 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.
• It is often difficult for the customer to state all requirements explicitly. The waterfall
model requires this and has difficulty in accommodating the natural uncertainty that exists
at the beginning of many projects.
• 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.
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. Today, software work is fast-paced and subject to a never-ending stream of changes
(to features, functions, and information content). The waterfall model is often
inappropriate for such work. However, it can serve as a useful process model in situations
where requirements are fixed and work is to proceed to completion in a linear manner.
• SPIRAM MODEL :
The spiral model is an evolutionary software process model that couples the
iterative nature of prototyping with the controlled and systematic aspects of the waterfall
model. It provides the potential for rapid development of increasingly more complete
versions of the software.
The spiral development model is a risk-driven process model generator that is used
to guide multi-stakeholder concurrent engineering of software intensive systems. It has
two main distinguishing features. One is a cyclic approach for incrementally growing a
system’s degree of definition and implementation while decreasing its degree of risk. The
other is a set of anchor point milestones for ensuring stakeholder commitment to feasible
and mutually satisfactory system solutions.
Using the spiral model, software is developed in a series of evolutionary releases.
During early iterations, the release might be a model or prototype. During later iterations,
increasingly more complete versions of the engineered system are produced.
A spiral model is divided into a set of framework activities defined by the software
engineering team. The first circuit around the spiral might result in the development of a
product specification; subsequent passes around the spiral might be used to develop a
prototype and then progressively more sophisticated versions of the software. Each pass
through the planning region results in adjustments to the project plan. Cost and schedule
are adjusted based on feedback derived from the customer after delivery.
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. Therefore, the first
circuit around the spiral might represent a “concept development project” that starts at the
core of the spiral and continues for multiple iterations until concept development is
complete. If the concept is to be developed into an actual product, the process proceeds
outward on the spiral and a “new product development project” commences. The new
product will evolve through a number of iterations around the spiral. Later, a circuit around
the spiral might be used to represent a “product enhancement project.” In essence, the
spiral, when characterized in this way, remains operative until the software is retired. There
are times when the process is dormant, but whenever a change is initiated, the process
starts at the appropriate entry point (e.g., product enhancement).
The spiral model is a realistic approach to the development of large-scale systems
and software. The spiral model demands a direct consideration of technical risks at all
stages of the project and, if properly applied, should reduce risks before they become
problematic.
Evolutionary software processes do not establish the maximum speed of the
evolution. If the evolutions occur too fast, without a period of relaxation, it is certain that
the process will fall into chaos. On the other hand if the speed is too slow then productivity
could be affected .