You are on page 1of 11

UNIT-I SE [KCS-601]

UNIT-1
Introduction: Introduction to Software Engineering, Software Components, Software
Characteristics, Software Crisis, Software Engineering Processes, Similarity and Differences
from Conventional Engineering Processes, Software Quality Attributes. Software Development
Life Cycle (SDLC) Models: Water Fall Model, Prototype Model, Spiral Model, Evolutionary
Development Models, Iterative Enhancement Models.
__________________________________________________________________________

Software Engineering
Software engineering is an engineering discipline that is concerned with all aspects of
software production from the early stages of system specification through to maintaining
the system after it has gone into use.
Software engineering is concerned with theories, methods and tools for professional
software development.

Definitions
IEEE defines software engineering as:
The application of a systematic,disciplined,quantifiable approach to the
development,operation and maintenance of software; that is, the application of
engineering to software.

Fritz Bauer, a German computer scientist, defines software engineering as:


Software engineering is the establishment and use of sound engineering principles in
order to obtain economically software that is reliable and work efficiently on real
machines.

Software Components
“A software component is a unit of composition with contractually
specified interfaces and explicit context dependencies only. A software component can be
deployed independently and is subject to composition by third parties.”
Software=Program+Documentation+ Operating Procedures

1 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

Documentation consists of different types of manuals are


List of documentation manuals

List of operating procedure manuals.

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
Maintenance
This aspect briefs about how well a software has the capabilities to maintain itself in the ever-
changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability

2 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

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.

• Software Ilities in Software Architecture


1) Usability
2) Reliability
3) Availability
4) Portability
5) Testability
6) Scalability
7) Flexibility
8) Reusability
9) Maintainability
10) Supportability
11) Interoperability
12) Performance
13) Security

1) Usability
It is described as how the user is utilizing a system effectively and the ease of which
users can learn to operate or control the system. The well-known principle of usability is
KISS (Keep It Simple Stupid). Software applications should be user-friendly.
2) Reliability
It is the ability of a system to continue to keep operating over time
3) Availability
It is the ratio of the available system time to the total working time it is required or
expected to function.
4) Portability
It is the ability of a software application to run on numerous platforms such as data
portability, hosting, viewing, etc.,
5) Testability
It shows how well the system or component facilitates to perform tests to determine
whether the predefined test criteria have been met.
6) Scalability
It is the ability of a system to handle the demand for stress caused by increased usage
without decreasing performance.
7) Flexibility
It is the ability of a system to adapt to future changes
8) Reusability
It is the use of existing software I more than one software with small or no change. It is a
cost-efficient and time-saving quality attribute.
9) Maintainability
It is the ability of a software application to maintain easily and support changes cost-
effectively.

3 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

10) Supportability
It is the ability of a system that satisfies necessary requirements and needs to identifying
and solving problems.
11) Interoperability
It is the ability of two or more systems to communicate or exchange data easily and to
use the data that has been exchanged.
12) Performance
It is the ability of a system in the form of responsiveness to various actions within a
certain period of time
13) Security
It is the ability of a system to resist or block malicious or unauthorized attempts that
destroy the system and at the same time provide access to legitimate users.

Software Engineering Processes


A software engineering process is the model chosen for managing the creation of
software from initial customer inception to the release of the finished product.
The chosen process usually involves techniques such as
• Analysis,
• Design,
• Coding,
• Testing and
• Maintenance
Several different process models exist and vary mainly in the frequency, application
and implementation of the above techniques

A software process model is an abstract representation of a process.


It presents a description of a process from some particular perspective. When we describe
and discuss processes, we usually talk about the activities in these processes such as
specifying a data model, designing a user interface, etc. and the ordering of these activities.
Process descriptions may also include:
Products, which are the outcomes of a process activity;
Roles, which reflect the responsibilities of the people involved in the process;
Pre- and post-conditions, which are statements that are true before and after a process activity
has been enacted or a product produced.
Software Development Life Cycle to design, develop and test high quality software.
The SDLC aims to produce a high-quality software that meets or exceeds customer
expectations, reaches completion within times and cost estimates.
SDLC is a process followed for a software project, within a software organization.
It consists of a detailed plan describing how to develop, maintain, replace and alter or
enhance specific software.
(SDLC) is a process used by the software industry
The life cycle defines a methodology for improving the quality of software and the overall
development process.
• SDLC is the acronym of Software Development Life Cycle.
• It is also called as Software Development Process.

4 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

• SDLC is a framework defining tasks performed at each step in the software development
process.

SDLC Models
There are various software development life cycle models defined and designed which are
followed during the software development process. These models are also referred as
Software Development Process Models.
Each process model follows a Series of steps unique to its type to ensure success in the
process of software development.
Following are the most important and popular SDLC models followed in the industry −
• Waterfall Model
• Iterative Model
• Spiral Model
• V-Model
• Big Bang Model
Other related methodologies are Agile Model, RAD Model, Rapid Application Development
and Prototyping Models

Waterfall Model – Design


Waterfall approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project.
In "The Waterfall" approach, the whole process of software development is divided into
separate phases.
In this Waterfall model, typically, the outcome of one phase acts as the input for the next
phase sequentially.
The following illustration is a representation of the different phases of the Waterfall Model.

The sequential phases in Waterfall model are −


Requirement Gathering and analysis −
All possible requirements of the system to be developed are captured in this phase and
documented in a requirement specification document.

5 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

System Design −
The requirement specifications from first phase are studied in this phase and the system
design is prepared. This system design helps in specifying hardware and system
requirements and helps in defining the overall system architecture.
Implementation − With inputs from the system design, the system is first developed in small
programs called units, which are integrated in the next phase. Each unit is developed and
tested for its functionality, which is referred to as Unit Testing. All these phases are cascaded
to each other in which progress is seen as flowing steadily downwards (like a waterfall)
through the phases.

The next phase is started only after the defined set of goals are achieved for previous phase
and it is signed off, so the name "Waterfall Model". In this model, phases do not overlap.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is tested
for any faults and failures.
Deployment of system − Once the functional and non-functional testing is done; the product
is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the
defined set of goals are achieved for previous phase and it is signed off, so the name
"Waterfall Model". In this model, phases do not overlap.

Advantages of Waterfall model


This model is simple to implement also the number of resources that are required for it is
minimal.
• The requirements are simple and explicitly declared; they remain unchanged during
the entire project development.
• The start and end points for each phase is fixed, which makes it easy to cover
progress.
• The release date for the complete product, as well as its final cost, can be determined
before development.
• It gives easy to control and clarity for the customer due to a strict reporting system.
Disadvantages of Waterfall model
In this model, the risk factor is higher, so this model is not suitable for more significant and
complex projects.
• This model cannot accept the changes in requirements during development.
• It becomes tough to go back to the phase. For example, if the application has now shifted
to the coding phase, and there is a change in requirement, It becomes tough to go back
and change it.

6 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

• Since the testing done at a later stage, it does not allow identifying the challenges and
risks in the earlier phase, so the risk reduction strategy is difficult to prepare.
• Prototype Model

The prototype model requires that before carrying out the development of actual software, a
working prototype of the system should be built. A prototype is a toy implementation of the
system. A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as
compared to actual software. In many instances, the client only has a general view of what is
expected from the software product. In such a scenario where there is an absence of detailed
information regarding the input to the system, the processing needs, and the output requirement,
the prototyping model may be employed.

Steps of Prototype Model


1. Requirement Gathering and Analyst
2. Quick Decision
3. Build a Prototype
4. Assessment or User Evaluation
5. Prototype Refinement
6. Engineer Product
Advantage of Prototype Model
1. Reduce the risk of incorrect user requirement
2. Good where requirement are changing/uncommitted
3. Regular visible process aids management
4. Support early product marketing
5. Reduce Maintenance cost.
6. Errors can be detected much earlier as the system is made side by side.
7 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

Disadvantage of Prototype Model


1. An unstable/badly implemented prototype often becomes the final product.
2. Require extensive customer collaboration
o Costs customer money
o Needs committed customer
o Difficult to finish if customer withdraw
o May be too customer specific, no broad market
3. Difficult to know how long the project will last.
4. Easy to fall back into the code and fix without proper requirement analysis, design,
customer evaluation, and feedback.
5. Prototyping tools are expensive.
6. Special tools & techniques are required to build a prototype.
7. It is a time-consuming process.

Iterative Enhancement Model


This model has the same phases as the waterfall model, but with fewer restrictions. Generally the
phases occur in the same order as in the waterfall model, but they may be conducted in several
cycles.
Useable product is released at the end of the each cycle, with each release providing additional
functionality.
_ Customers and developers specify as many requirements as possible and prepare a SRS
document.
_ Developers and customers then prioritize these requirements
_ Developers implement the specified requirements in one or more cycles of design,
implementation and test based on the
defined priorities.
Iterative Enhancement Model

Models do not deal with uncertainly which is inherent to software projects.

8 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

Important software projects have failed because project risks were neglected & nobody was
prepared when something unforeseen happened.
Barry Boehm recognized this and tired to incorporate the “project risk” factor into a life cycle
model.
The result is the spiral model, which was presented in 1986.

The radial dimension of the model represents the cumulative costs. Each path around the spiral is
indicative of increased costs. The angular dimension represents the progress made in completing
each cycle. Each loop of the spiral from X-axis clockwise through 360o represents one phase.
One phase is split roughly into four sectors of major activities.
_ Planning: Determination of objectives, alternatives & constraints.
_ Risk Analysis: Analyze alternatives and attempts to identify and resolve the risks involved.
_ Development: Product development and testing product.
_ Assessment: Customer evaluation

Advantages
o High amount of risk analysis
o Useful for large and mission-critical projects.
Disadvantages
o Can be a costly model to use.
o Risk analysis needed highly particular expertise
o Doesn't work well for smaller projects.

RAD (Rapid Application Development) Model

RAD is a linear sequential software development process model that emphasizes a concise
development cycle using an element based construction approach. If the requirements are well
understood and described, and the project scope is a constraint, the RAD process enables a
development team to create a fully functional system within a concise time period.
9 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

RAD (Rapid Application Development) is a concept that products can be developed faster and of
higher quality through:
o Gathering requirements using workshops or focus groups
o Prototyping and early, reiterative user testing of designs
o The re-use of software components
o A rigidly paced schedule that refers design improvements to the next product version
o Less formality in reviews and other team communication
Advantage of RAD Model
o This model is flexible for change.
o In this model, changes are adoptable.
o Each phase in RAD brings highest priority functionality to the customer.
o It reduced development time.
o It increases the reusability of features.
Disadvantage of RAD Model
o It required highly skilled designers.
o All application is not compatible with RAD.
o For smaller projects, we cannot use the RAD model.
o On the high technical risk, it's not suitable.
o Required user involvement.

Agile 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.

Each iteration is considered as a short time "frame" in the Agile process model, which typically
lasts from one to four weeks. The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery time requirements. Each
iteration involves a team working through a full software development life cycle including
planning, requirements analysis, design, coding, and testing before a working product is
demonstrated to the client.

10 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut
UNIT-I SE [KCS-601]

Advantage(Pros) of Agile Method:


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(Cons) of Agile Model:
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.

11 Software Engineering [KCS-601] : Department of Computer Science & Engineering, DVSIET, Meerut

You might also like