You are on page 1of 36

UNIT – 1 Introduction to Software Engineering and Models

E -NOTES
IV SEM – BCA

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

21BCA2T341: SOFTWARE ENGINEERING

Unit 1: Introduction to Software Engineering and Models

Introduction - Professional software development – Software Engineering: Myths – Ethics -


Software Process Models : Waterfall Model – Prototyping Model – Spiral Model –
Incremental Model - Agile Software Development: Agile Methods – Plan Driven and Agile
development – Software Development Life Cycle Model.

Introduction

The term software engineering is composed of two words software and engineering.

Software is more than just a program code. A program is an executable code, which serves
some computational purpose. Software is considered to be a collection of executable
programming code, associated libraries, and documentation. Software, when made for a
specific requirement is called a software product.

Engineering, on the other hand, is all about developing products, using well-defined,
scientific principles and methods.

What is Software?

Software is computer programs and associated documentation. Software products may be


developed for a particular customer or may be developed for a general market.

So, we can define software engineering as an engineering branch associated with the
development of software products using well-defined scientific principles, methods, and

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

procedures. The outcome of software engineering is an efficient and reliable software


product.

In other words, software engineering is an engineering discipline that is concerned with all
aspects of software production.

IEEE defines software engineering as:

The application of a systematic, disciplined, quantifiable approach to the development,


operation, and maintenance of software.

Need of Software Engineering

The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working.

 Large Software

It is easier to construct a wall than a house or a building, likewise, the scale of the
software is so large that engineering has to step in to give it a scientific process.

 Scalability

If the software processes are not past one of the technical and engineering
concepts, it would be necessary to re-create new software to scale the existing one.

 Cost

As hardware industry has shown its skills and huge manufacturing has lowered
the price of computer and electronic hardware. But the cost of the software remains
high if the proper process is not adopted.

 Dynamic Change

If the nature of software is always changing, new enhancements need to be done


to the existing one. This is where software engineering plays a good role.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

 Quality Management

A better process of software development provides better quality software


products.

What are the key challenges facing software engineering?


Coping with increasing diversity, demands for reduced delivery times, and developing
trustworthy software.

Essential attributes of good software:


 Maintainability

Software should be written in such a way so that it can evolve to meet the changing
needs of customers. This is a critical attribute because software change is an
inevitable requirement of a changing business environment.

 Dependability and security

Software dependability includes a range of characteristics including reliability,


security, and safety. Dependable software should not cause physical or economic
damage in the event of system failure. Malicious users should not be able to access or
damage the system.

 Efficiency

Software should not make wasteful use of system resources such as memory and
processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilization, etc.
 Acceptability

Software must be acceptable to the type of users for which it is designed. This means
that it must be understandable, usable, and compatible with other systems that they
use.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Software Evolution

The process of developing a software product using software engineering principles


and methods is referred to as Software Evolution.

This includes the initial development of software and its maintenance and updates, till
desired software product is developed, which satisfies the expected requirements.

Evolution starts from the requirement gathering process. After which developers
create a prototype of the intended software and show it to the users to get their
feedback at the early stage of the software product development.

The users suggest changes, on which several consecutive updates and maintenance
keep on changing too. This process changes to the original software, till the desired
software is accomplished.

Even after the user has the desired software in hand, the advancing technology and
the changing requirements force the software product to change accordingly.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

The only feasible and economical solution is to update the existing software so that it
matches the latest requirements.

Software products

Software engineers are concerned with developing software products (i.e., software
which can be sold to a customer). There are two kinds of software products:

1. Generic Products
2. Customized (or bespoke) Products

Generic Products
These are stand-alone systems that are produced by a development organization and
sold on the open market to any customer who is able to buy them.

Examples of this type of product include software for PCs such as databases, word
processors, drawing packages, and project-management tools.

Customized (or bespoke) products


These are systems that are commissioned by a particular customer. A software
contractor develops the software especially for that customer.

Examples of this type of software include control systems for electronic devices,
systems written to support a particular business process, and air traffic control
systems.

An important difference between these types of software is that, in generic


products, the organization that develops the software controls the software
specification.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

For custom products, the specification is usually developed and controlled by the
organization that is buying the software. The software developers must work to that
specification.

Evolving Role of Software

Software takes dual role. It is both a product and a vehicle for delivering a product.

As a product: It delivers the computing potential embodied by computer Hardware


or by a network of computers.
As a vehicle: It is information transformer-producing, managing, acquiring,
modifying, displaying, or transmitting information that can be as simple as single
bit or as complex as a multimedia presentation. Software delivers the most important
product of our time-information.

 It transforms personal data


 It manages business information to enhance competitiveness
 It provides a gateway to worldwide information networks
 It provides the means for acquiring information.
 Dramatic Improvements in hardware performance
 Vast increases in memory and storage capacity
 A wide variety of exotic input and output options

Characteristics of software

(1) Software is developed or engineered; it is not manufactured in the classical sense.


(2) Software does not “wear out”
(3) Although the industry is moving toward component-based construction, most
software continues to be custom built.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Characteristics of good software

A software product can be judged by what it offers and how well it can be used. This
software must satisfy on the following grounds:

 Operational
 Transitional
 Maintenance
Well-engineered and crafted software is expected to have the following characteristics:

Operational
This tells us how well software works in operations. It can be measured on:
 Budget

 Usability

 Efficiency

 Correctness

 Functionality

 Dependability

 Security

 Safety
Transitional
This aspect is important when the software is moved from one platform to another:
 Portability

 Interoperability

 Reusability

 Adaptability

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Maintenance
This aspect briefs about how well a software has the capabilities to maintain itself in the
ever-changing environment:

 Modularity

 Maintainability

 Flexibility

 Scalability

In short, Software engineering is a branch of computer science, which uses well-defined


engineering concepts required to produce efficient, durable, scalable, in-budget and on-time
software products.

Applications of Software

There are many different types of application including:

System software
System software is a collection of programs written to service other programs. The systems
software is characterized by
 heavy interaction with computer hardware
 heavy usage by multiple users

 Concurrent operation that requires scheduling, resource sharing.

 complex data structures

 multiple external interfaces


E.g. compilers, editors and file management utilities

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Application software

Application software consists of standalone programs that solve a specific business need.
 It facilitates business operations or management/technical decision making.
 It is used to control business functions in real-time
E.g. point-of-sale transaction processing, real-time manufacturing process control.

Engineering/Scientific software

Engineering and scientific applications range

 from astronomy to volcanology


 from automotive stress analysis to space shuttle orbital dynamics
 from molecular biology to automated manufacturing computer aided design, system
simulation and other interactive applications.

Embedded software

 Embedded software resides within a product or system and is used to implement and
control features and functions for the end-user and for the system itself.
 It can perform limited and esoteric functions or provide significant function and
control capability.

E.g. Digital functions in automobile, dashboard displays, braking systems etc.

Product-line software

 Designed to provide a specific capability for use by many different customers.


 Product-line software can focus on a limited and esoteric marketplace (e.g., inventory
control products) or address mass consumer.

Web/Mobile applications

 This network-centric software category spans a wide array of applications and


encompasses both browser-based apps and software that resides on mobile devices.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Artificial intelligence software

 Makes use of non-numerical algorithms to solve complex problems that are not
amenable to computation or straightforward analysis.
 Applications within this area include robotics, expert systems, pattern recognition
(image and voice), artificial neural networks, theorem proving, and game playing.

Legacy Software

Legacy software are older programs that are developed decades ago. The quality of legacy
software is poor because it has inextensible design, convoluted code, poor and non-existent
documentation, test cases and results that are not achieved.

As time passes legacy systems evolve due to following reasons:

 The software must be adapted to meet the needs of new computing environment or
technology.
 The software must be enhanced to implement new business requirements.
 The software must be extended to make it interoperable with more modern systems or
database.
 The software must be rearchitected to make it viable within a network environment.

Software Engineering: A Layered Technology

 Any engineering approach must rest on organizational commitment to quality which


fosters a continuous process improvement culture.
 Process layer as the foundation defines a framework with activities for effective
delivery of software engineering technology. Establish the context where products
(model, data, report, and forms) are produced, milestones are established, quality is
ensured and change is managed.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

 Method provides technical how-to’s for building software. It encompasses many


tasks including communication, requirement analysis, design modelling, program
construction, testing and support.
 Tools provide automated or semi-automated support for the process and methods.

Software Engineering Layers

Software Professional Development:


 Professional software is intended for use by someone apart from its developers and is
usually developed by teams rather than individuals.

 Software engineering is intended to support professional software development, rather


than individual programming. It includes techniques that support program
specification, design, and evolution, none of which are normally relevant for personal
software development.

 A professionally developed software system is often more than a single program. The
system usually consists of a number of separate programs and configuration files that
are used to set up these programs. It may include system documentation, which
describes the structure of the system; user documentation, which explains how to use
the system, and websites for users to download recent product information.

 This is one of the important differences between professional and amateur software
development. If you are writing a program for yourself, no one else will use it and

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

you don’t have to worry about writing program guides, documenting the program
design, etc.

 However, if you are writing software that other people will use and other engineers
will change then you usually have to provide additional information as well as the
code of the program.

Software Engineering Myths


Myths are widely held but false beliefs and views which propagate misinformation and
confusion. Three types of myth are associated with software:

 Management myth
 Customer myth
 Practitioner’s myth

Management Myths
A software manager often grasps at belief in a software myth, if that belief will lessen the
pressure (even temporarily).

Myth: The available standards and procedures for software are enough.
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: Adding more programmers when the work is behind schedule can catch up.
Reality: However, as new people are added, people who were 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.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Myth: Outsourcing the software project to third party, we can relax and let that party build it.
Reality: If an organization does not understand how to manage and control software projects
internally, it will invariably struggle when it outsources software projects.

Customer Myths
In many cases, the customer 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.

Myth: General statement of objective is enough to begin writing programs, the details can be
filled in later.
Reality: Although a comprehensive and stable statement of requirements is not always
possible, an ambiguous “statement of objectives” is a recipe for disaster. Unambiguous
requirements (usually derived iteratively) are developed only through effective and
continuous communication between customer and developer.

Myth: Software is easy to change because software is flexible.


Reality: 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— resources have been committed, a design framework has been established, and
change can cause upheaval that requires additional resources and major design modification.

Practitioner’s Myths
Myths that are still believed by software practitioners have been fostered by over 60 years of
programming culture.

Myth: Once the program is written, the job has been 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.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Myth: Until the program is running, there is no way of assessing the 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 is the working program


Reality: A working program is only one part of a software configuration that includes many
elements. A variety of work products (e.g., models, documents, plans) provide a foundation
for successful engineering and, more important, guidance for software support.

Myth: Software Engineering creates voluminous and unnecessary documentation and


invariably.
Reality: Software engineering is not about creating documents. It is about creating a quality
product. Better quality leads to reduced rework. And reduced rework results in faster
delivery times.

Software Ethics
 Software engineering is carried out within a social and legal framework that limits the
freedom of people working in that area.
 As a software engineer, you must accept that your job involves wider responsibilities
than simply the application of technical skills. You must also behave in an ethical and
morally responsible way if you are to be respected as a professional engineer.
 However, there are areas where standards of acceptable behavior are not bound by
laws but by the more tenuous notion of professional responsibility. Some of these are:
Confidentiality

You should normally respect the confidentiality of your employers or clients irrespective of
whether or not a formal confidentiality agreement has been signed.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Competence

You should not misrepresent your level of competence. You should not knowingly accept
work that is outside your competence.
Intellectual property rights

You should be aware of local laws governing the use of intellectual property such as patents
and copyright. You should be careful to ensure that the intellectual property of employers
and clients is protected.
Computer misuse

You should not use your technical skills to misuse other people’s computers. Computer
misuse ranges from relatively trivial (game playing on an employer’s machine, say) to
extremely serious (dissemination of viruses or other malware).

Software Process Models

Software Process
A software process is a set of related activities that leads to the production of a software
product. These activities may involve the development of software from scratch in a
standard programming language like Java or C.

There are many different software processes but all must include four activities that are
fundamental to software engineering:

1. Software specification - The functionality of the software and constraints on its operation
must be defined.
2. Software design and implementation - The software to meet the specification must be
produced.
3. Software validation - The software must be validated to ensure that it does what the
customer wants.
4. Software evolution - The software must evolve to meet changing customer needs.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

The Software process model is a simplified representation of a software process. Each


process model represents a process from a particular perspective, and thus provides only
partial information about that process.

All process models can accommodate the generic framework activities, but each applies a
different emphasis to these activities and defines a process flow that invokes each framework
activity in a different manner.

The Waterfall Model

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, modelling, construction, and deployment,
culminating in ongoing support of the completed software.

The classical waterfall model is intuitively the most obvious way to develop software.
Though the classical waterfall model is elegant and intuitively obvious, it is not a practical
model in the sense that it cannot be used in actual software development projects. Thus,
this model can be considered to be a theoretical way of developing software. But all other
life cycle models are essentially derived from the classical waterfall model. So, in order to be
able to appreciate other life cycle models it is necessary to learn the classical waterfall
model.

The Waterfall Model

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Advantages
 This model is easy to understand and easy to use.
 In this model, the procedure and the results are well documented.
 It is suitable for smaller projects where requirements are precisely defined and very
well understood.
Disadvantages
 It is extremely difficult to proceed back and correct something.
 Not an efficient model for object oriented and complex projects.
 It does not provide requirement changes and requirement review.
 High amounts of uncertainty and risk.
 It is a time-consuming process.

Prototype Model

A prototyping model can be used when technical solutions are unclear to the development
team. A developed prototype can help engineers to critically examine the technical issues
associated with the product development. Often, major design decisions depend on issues
like the response time of a hardware controller, or the efficiency of a sorting algorithm, etc.
In such circumstances, a prototype may be the best or the only way to resolve the technical
issues.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

A prototype of the actual product is preferred in situations such as:

• User requirements are not complete


• Technical issues are not clear

Advantages:
 This model is flexible in design.
 It is easy to detect errors.
 We can find missing functionality easily.
 It can be reused by the developer for more complicated projects in future.
 It ensures a greater level of customer satisfaction and comfort.

Disadvantages:
 This model is costly.
 It has poor documentation because of continuously changing customer requirements.
 Customers may not be satisfied or interested in the product after seeing the initial
prototype.

Spiral Model

The Spiral model of software development is shown in below figure. The diagrammatic
representation of this model appears like a spiral with many loops. The exact number of
loops in the spiral is not fixed. Each loop of the spiral represents a phase of the software
process.

For example, the innermost loop might be concerned with feasibility study, the next loop
with requirements specification, the next one with design, and so on.

Each phase in this model is split into four sectors (or quadrants) as shown in figure. The
following activities are carried out during each phase of a spiral model.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Spiral Model

First quadrant (Objective Setting)

• During the first quadrant, it is needed to identify the objectives of the phase.
• Examine the risks associated with these objectives.

Second Quadrant (Risk Assessment and Reduction)

• A detailed analysis is carried out for each identified project risk.

• Steps are taken to reduce the risks. For example, if there is a risk that the requirements are
inappropriate, a prototype system may be developed.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Third Quadrant (Development and Validation)

• Develop and validate the next level of the product after resolving the identified risks.

Fourth Quadrant (Review and Planning)

• Review the results achieved so far with the customer and plan the next iteration around the
spiral.
• Progressively more complete version of the software gets built with each iteration around
the spiral.

The spiral model is called a Meta model since it encompasses all other life cycle models.
Risk handling is inherently built into this model. The spiral model is suitable for
development of technically challenging software products that are prone to several kinds of
risks.

Advantages
1. Risk handling is one of important advantages of the Spiral model, it is best development
model to follow due to the risk analysis and risk handling at every phase .

2. It is good for large and complex projects.

3. It is good for customer satisfaction. We can involve customers in the development of


products at early phase of the software development.

Disadvantages

1. It is not suitable for small projects as it is expensive.


2. It is much more complex than other SDLC models. Process is complex.
3. Too much dependable on Risk Analysis and requires highly specific expertise.
4. Difficulty in time management. As the number of phases is unknown at the start of the
project, so time estimation is very difficult.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Incremental Model
The incremental process model is also known as the Successive version model.

First, a simple working system implementing only a few basic features is built and then that
is delivered to the customer. Then thereafter many successive iterations/ versions are
implemented and delivered to the customer until the desired system is released.

Requirements of Software are first broken down into several modules that can be
incrementally constructed and delivered. At any time, the plan is made just for the next
increment and not for any kind of long-term plan. Therefore, it is easier to modify the version
as per the need of the customer.

Incremental Model

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Advantages

1. Prepares the software fast.


2. Clients have a clear idea of the project.
3. Changes are easy to implement.
4. Provides risk handling support, because of its iterations.

Disadvantages

1. A good team and proper planned execution are required.


2. Because of its continuous iterations the cost increases.

Agile Development Model

The meaning of Agile is swift or versatile. "Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks into
smaller iterations, or parts do not directly involve long term planning. The project scope and
requirements are laid down at the beginning of the development process. Plans regarding the
number of iterations, the duration and the scope of each iteration are clearly defined in
advance.

Agile Development Model

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Phases of Agile model


1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback

1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project. Based
on this information, you can evaluate technical and economic feasibility.

2. Design the requirements: When you have identified the project, work with stakeholders
to define requirements. You can use the user flow diagram or the high-level UML diagram to
show the work of new features and show how it will apply to your existing system.

3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a working
product. The product will undergo various stages of improvement, so it includes simple,
minimal functionality.

4. Testing: In this phase, the Quality Assurance team examines the product's performance
and looks for the bug.

5. Deployment: In this phase, the team issues a product for the user's work environment.

6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Advantages

1. Frequent Delivery

2. Face-to-Face Communication with clients.


3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.

Disadvantages

1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.

2. Due to the lack of proper documentation, once the project completes and the developers
allotted to another project, maintenance of the finished project can become a difficulty.

Agile Methods
All Agile methodologies mentioned below share the same core values and principles, but
they may differ in their implementation and specific practices. Agile development requires a
high degree of collaboration and communication among team members, as well as a
willingness to adapt to changing requirements and feedback from customers.

 Extreme Programming (XP)


 Scrum
 Crystal
 Feature Driven Development (FDD)
 Lean Development
 Unified Process
 Dynamic Systems Developments Method (DSDM)

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Agile methods are incremental development methods that focus on rapid development,
frequent releases of the software, reducing process overheads, and producing high-quality
code. They involve the customer directly in the development process.

Scrum
Scrum is aimed at sustaining strong collaboration between people working on complex
products, and details are being changed or added. It is based upon the systematic interactions
between the three major roles:
 Scrum Master
 Product Owner
 The Team.

Scrum Framework at a Glance

Scrum Master is a facilitator who arranges daily meetings, tracks the backlog of work to
be done, records decisions, measures progress against the backlog, and communicates with
customers and management outside of the team.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

The whole team attends the daily meetings, which are sometimes ‘stand-up’ meetings to
keep them short and focused. During the meeting, all team members share information,
describe their progress since the last meeting, problems that have arisen, and what is planned
for the following day. This means that everyone on the team knows what is going on and, if
problems arise, can replan short-term work to cope with them. Everyone participates in this
short-term planning—there is no top down direction from the Scrum master.

Product Owner, usually a customer or other stakeholder, is actively involved throughout the
project, conveying the global vision of the product and providing timely feedback on the job
done after every sprint.

The Team is a cross-functional and self-organizing group of people that is responsible for
the product implementation. It should consist of up to 7 team members, in order to stay
flexible and productive.

Plan-Driven and Agile Development


In a plan driven approach, iteration occurs within activities with formal documents used to
communicate between stages of the process. For example, the requirements will evolve and,
ultimately, a requirements specification will be produced. This is then an input to the design
and implementation process.
In an agile approach, iteration occurs across activities. Therefore, the requirements and the
design are developed together, rather than separately.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

A plan-driven software process can support incremental development and delivery.


It is perfectly feasible to allocate requirements and plan the design and development phase as
a series of increments.
An agile process is not inevitably code-focused and it may produce some design
documentation.
The agile development team may decide to include a documentation ‘spike’, where, instead
of producing a new version of a system, the team produce system documentation.

To decide on the balance between a plan-based and an agile approach, we have to answer a
range of technical, human, and organizational questions:

1. Is it important to have a very detailed specification and design before moving to


implementation? If so, you probably need to use a plan-driven approach.

2. Is an incremental delivery strategy, where you deliver the software to customers and get
rapid feedback from them, realistic? If so, consider using agile methods.

3. How large is the system that is being developed? Agile methods are most effective when
the system can be developed with a small co-located team who can communicate informally.
This may not be possible for large systems that require larger development teams so a plan-
driven approach may have to be used.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

4. What type of system is being developed?


5. What is the expected system lifetime?
6. What technologies are available to support system development?
7. How is the development team organized?
8. How good are the designers and programmers in the development team?

In reality, the issue of whether a project can be labelled as plan-driven or agile is not
very important. Ultimately, the primary concern of buyers of a software system is whether
or not they have an executable software system that meets their needs and does useful things
for the individual user or the organization.

Software Development Life Cycle Model (SDLC)

What is SDLC?
A software development life cycle model (also called process model) is a descriptive and
diagrammatic representation of the software life cycle.
A life cycle model represents all the activities required to make a software product transit
through its life cycle phases. It also captures the order in which these activities are to be
undertaken.

Thus, no matter which life cycle model is followed, the basic activities are included in all life
cycle models though the activities may be carried out in different orders in different life
cycle models.

During any life cycle phase, more than one activity may also be carried out. For example, the
design phase might consist of the structured analysis activity followed by the structured
design activity.
SDLC divides the life cycle into the following phases as shown in figure:

 Feasibility Study

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

 Requirements Analysis and Specification


 Design
 Coding and Unit Testing
 Integration and System Testing
 Maintenance

Feasibility Study

The main aim of feasibility study is to determine whether it would be financially and
technically feasible to develop the product.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

At first project managers or team leaders try to have a rough understanding of what is
required to be done by visiting the client side. They study different input data to the system
and output data to be produced by the system. They study what kind of processing is needed
to be done on these data and they look at the various constraints on the behavior of the
system.

After they have an overall understanding of the problem they investigate the different
solutions that are possible. Then they examine each of the solutions in terms of what kind of
resources required, what would be the cost of development and what would be the
development time for each solution.

Requirement Analysis & Specification

The aim of the requirements analysis and specification phase is to understand the exact
requirements of the customer and to document them properly. This phase consists of two
distinct activities, namely

 Requirements gathering and analysis, and


 Requirements specification

The goal of the requirements gathering activity is to collect all relevant information from
the customer regarding the product to be developed. This is done to clearly understand the
customer requirements so that incompleteness and inconsistencies are removed.

The requirements analysis activity is begun by collecting all relevant data regarding the
product to be developed from the users of the product and from the customer through
interviews and discussions. For example, to perform the requirements analysis of a business
accounting software required by an organization, the analyst might interview all the
accountants of the organization to ascertain their requirements.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

During this activity, the user requirements are systematically organized into a Software
Requirements Specification (SRS) document.

Design

The goal of the design phase is to transform the requirements specified in the SRS
document into a structure that is suitable for implementation in some programming
language. In technical terms, during the design phase the software architecture is derived
from the SRS document.

Coding and Unit Testing

The purpose of the coding and unit testing phase (sometimes called the implementation
phase) of software development is to translate the software design into source code. Each
component of the design is implemented as a program module.

The end-product of this phase is a set of program modules that have been individually tested.

During this phase, each module is unit tested to determine the correct working of all the
individual modules.

Integration and System Testing

Integration of different modules is undertaken once they have been coded and unit tested.
During the integration and system testing phase, the modules are integrated in a planned
manner.

Integration is normally carried out incrementally over a number of steps. During each
integration step, the partially integrated system is tested and a set of previously planned
modules are added to it. Finally, when all the modules have been successfully integrated and
tested, system testing is carried out.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

The goal of system testing is to ensure that the developed system conforms to its
requirements laid out in the SRS document.

System testing usually consists of three different kinds of testing activities:

α – Testing: It is the system testing performed by the development team.

β – Testing: It is the system testing performed by a friendly set of customers.

Acceptance testing: It is the system testing performed by the customer himself after the
product delivery to determine whether to accept or reject the delivered product.

Maintenance
Maintenance of a typical software product requires much more than the effort necessary to
develop the product itself. Maintenance involves performing any one or more of the
following three kinds of activities:

 Correcting errors that were not discovered during the product development phase.
This is called corrective maintenance.

 Improving the implementation of the system, and enhancing the functionalities of the
system according to the customer’s requirements. This is called perfective
maintenance.

 Porting the software to work in a new environment. For example, porting may be
required to get the software to work on a new computer platform or with a new
operating system. This is called adaptive maintenance.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

Question Bank

Two Marks

1. What is Software?
2. Define Software Engineering.
3. What are the attributes of good software?
4. What is SDLC?
5. What is Software process?
6. Mention the types of Software process models.
7. List down the characteristics of software.
8. What do you mean by evolving role of software?
9. What is the need of software engineering?
10. List the applications of software or categories of software.
11. What is legacy software?
12. What is software product? Mention the types of software products.
13. Write the importance of software professional development.
14. Draw a diagram for software engineering layers.
15. Write shortly on software engineering ethics.
16. Write about waterfall model?
17. Mention the advantages of waterfall model.
18. What are the disadvantages of waterfall model?
19. What is prototyping model?
20. What are the advantages of prototyping model?
21. What are the disadvantages of prototyping model?
22. Write about spiral model?
23. Mention the situation to use spiral model?
24. Write the advantages and disadvantages of spiral model?
25. What is incremental model?
26. Write the advantages and disadvantages of incremental model?

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

27. What is agile development model?


28. What are the advantages and disadvantages of agile model/
29. Differentiate waterfall model and agile model.
30. Mention the examples of agile models.
31. What do you mean by plan-driven model?
32. What are the phases of SDLC?
33. What is feasibility study? Mention the types of feasibility study.
34. What is the goal of Requirement analysis and specification?
35. What is system design?
36. What is system testing?
37. State the three types of system testing.
38. What is Unit testing?
39. What is integrated testing?
40. What is acceptance testing?
41. What is Maintenance in SDLC?
42. What are the types of maintenance?
43. State any two differences between plan-driven and agile model.
44. What is the role of Scrum Master?
45. What do you mean by ‘Sprint’?

Five Marks
1. Discuss the characteristics of good software.
2. Write short notes on software myth.
3. Discuss on software engineering ethics.
4. Explain the software engineering layered technology.
5. Explain the software applications or broad categories of software.
6. Discuss on software evolution.
7. Explain waterfall model with neat diagram.
8. Explain the prototyping model with neat diagram.
9. Explain the spiral model with neat diagram.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.


Unit – 1 Introduction to Software Engineering and Models

10. Explain the incremental model with neat diagram.


11. Explain the agile development model.
12. Compare the plan-driven model and agile model.
13. Write short notes on agile principles.
14. Explain the SDLC and its phases with neat diagram.
15. Explain the Scrum framework in detail.

Prepared By Dr. M. Balamurugan, Kristu Jayanti College, Bangalore.

You might also like