0% found this document useful (0 votes)
145 views14 pages

Evolution of Software Engineering - Unit1

The document discusses the evolution of software engineering from an art to an engineering discipline. It began as an art where only a few people had the secret to software development. It transitioned to a craft as standards and best practices emerged and more people learned the skills. Today, it is considered an engineering discipline as software development principles can be learned and applied systematically with established processes and methods to produce reliable results. The systematic approach of software engineering helps address issues like completing projects on time and on budget compared to when it was more of an art.

Uploaded by

Mallari Sudha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
145 views14 pages

Evolution of Software Engineering - Unit1

The document discusses the evolution of software engineering from an art to an engineering discipline. It began as an art where only a few people had the secret to software development. It transitioned to a craft as standards and best practices emerged and more people learned the skills. Today, it is considered an engineering discipline as software development principles can be learned and applied systematically with established processes and methods to produce reliable results. The systematic approach of software engineering helps address issues like completing projects on time and on budget compared to when it was more of an art.

Uploaded by

Mallari Sudha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Evolution of Software Engineering : From an Art To Engineering Discipline

Software Engineering is a systematic and cost-effective technique for Software


Development. It is an engineering approach to develop Software.

For example: If someone wants to travel from Punjab to Delhi. There are two
approaches one can follow to achieve the same result:
1. The normal approach is just to go out and catch the bus/train that is
available.
2. A systematic approach is constructed as Firstly check on Google Maps
about distance and after analyzing the timing of trains and buses online
and after that, match user’s preference suppose user have some work till
4:00 PM and trains slot are: 1:00 PM, 6:00 PM then the user will choose
6:00 PM time slot and reach Delhi.
From the above situation, one can easily analyze that Creating a systematic
Approach is more optimal and time and cost-effective as compared to a normal
approach. This will same occur while designing Software. So in Software
Engineering working on an Engineering or a Systematic approach is more beneficial.
Software Engineering is a Science that is transformed from an Art.

Software Engineering Evolution From An Art To Engineering Discipline:


Software Engineering principles have evolved over the last sixty years with the
contributions of various researchers and software professionals. From the beginning
period Software Engineering acts as an Art after that with time, it transformed into a
craft and finally to Engineering Discipline.
Let us get started with the detailed step-by-step process of the evolution of software
engineering. The following steps are discussed:
1. Software engineering as an art
2. Software engineering transition from art to craft
3. Software engineering transition from craft to an engineering discipline
1. Software Engineering As An Art:
Software Engineering as an Art means, this can be only learned by specific people
and other people’s are not allowed to work on them.
For Example: In ancient times only a few people know Gold Ornaments making.
Those who know Gold Ornaments making kept it as a secret and will reveal to his
genetic generation. So at this time, this is known as Art and during that time
accuracy was very less.
The same in Software Development, only a few people know about Software
designing and coding and at that time there is no set of rules or instruction for
software designing. And those who are able to write code efficiently and essentially
fix bugs are considered proficient and those who are not good at programming and
didn’t know about that were left wondering that how they could effortlessly write
elegant and correct code each time.

2. Software Engineering Transition from Art to Craft:


Software Engineering transformed from Art to Craft when the area of people who
know Software Designing and Coding will increase.
For Example: When the secret of Gold Ornaments making is revealed to the only
generation after generation which will increase the number of people in that Art and
will convert art into a craft where accuracy is increased.
The same in Software Engineering, the Specific Degree and P.H.D were introduced
in the Universities and some specific people will go further to learn and there is a
certain rule which must be fulfilled to take that degree. So the number of people
which increases in that area, and they start researching about it and create
Standards and Styles for Coding and Software Development which must be followed
and these Standards will help to create a less error-free software.

3. Software Engineering Transition From Craft To Engineering Discipline:


In today’s world Software Engineering acts as an Engineering Discipline when
everyone can learn Software designing and coding irrespective of that they are
pursuing a degree or not.
For example: In today’s world everyone can learn Gold Ornament making and
accuracy has much more increased with the help of various machines
The same in software engineering occur where everyone can learn about Software
Development with or without pursuing any Professional Studies and accuracy of
Software Development increased with the help of Standards and improved rules
created by researchers.

A solution to the software crisis

Software Crisis is a term used in computer science for the difficulty of writing useful
and efficient computer programs in the required time .software crisis was due to
using same workforce, same methods, same tools even though rapidly increasing in
software demand, complexity of software and software challenges. With increase in
the complexity of software, many software problems arise because existing methods
were insufficient.
If we will use same workforce, same methods and same tools after fast increasing in
software demand, software complexity and software challenges, then there arise
some problems like software budget problem, software efficiency problem, software
quality problem, software managing and delivering problem etc. This condition is
called software crisis.

Causes of Software Crisis:


 The cost of owning and maintaining software was as expensive as
developing the software
 At that time Projects was running over-time
 At that time Software was very inefficient
 The quality of software was low quality
 Software often did not meet requirements
 The average software project overshoots its schedule by half
 At that time Software was never delivered
Solution of Software Crisis:
There is no single solution to the crisis.one possible solution of software crisis
is Software Engineering because software engineering is a systematic, disciplined
and quantifiable approach. For preventing software crisis, there are some guidelines:
 Reduction in software over-budget
 The quality of software must be high
 Less time needed for software project
 Experience working team member on software project
 Software must be delivered
Difference between Program and Software Product:
1. Program :
The use and need of computers is widespread in today’s world. The computer
system is however incapable of working on its own and needs certain instructions to
do anything. These instructions are provided to the computer system by a computer
programmer. A collection of instructions meant to perform a specific task, written by
a computer programmer is called a program.
2. Product :
It is made only on the request of an enterprise. The team of developers undertakes
the making of the product (called project). A software product is the finished project
which was made after performing the various software development life cycle stages.
After the completion of these stages the product comes into existence. It is then
made in more numbers, for distribution. The software product is made to solve a
specific problem.

Difference between Program and Product :

S.No. Program Product


Program contains a set of
Product is the final manufacture and
1 instructions designed to complete
production of the project.
a specific task.
It is an active entity as it is made again and
It is a passive entity as it resides
2 again for the purpose of distribution to
in the secondary memory.
users.

A product can exist for a long period of


It exists at a single place and time as long as it is tested for better
3 continues to exist until it is performance and durability. A specific
deleted. software product would stop existing if it is
destroyed or uninstalled.

It needs a lot of time to be made. There are


It can be made in relatively shorter
4 several stages (design, coding, testing,
period of time.
maintenance etc.) to form a product.

It is handled by the program


5 It is handled by product managers.
managers.
It does not have any resource
requirement, it only requires It needs human, technology and time
6
memory space for storing the resources to be functional.
instructions.
The main focus of the program is
The main focus of a product is its capability
7 whether is giving a specific
to solve the problem that it was made for.
desired output or not.
There are no concrete guidelines In case of product, the firm guidelines are
8
in writing a program. followed.
Software engineering discipline is the result of advancement in the field of
technology. In this section, we will discuss various innovations and technologies that
led to the emergence of software engineering discipline.
Early Computer Programming
As we know that in the early 1950s, computers were slow and expensive. Though
the programs at that time were very small in size, these computers took
considerable time to process them. They relied on assembly language which was
specific to computer architecture. Thus, developing a program required lot of effort.
Every programmer used his own style to develop the programs.
High Level Language Programming
With the introduction of semiconductor technology, the computers became smaller,
faster, cheaper, and reliable than their predecessors. One of the major
developments includes the progress from assembly language to high-level
languages. Early high level programming languages such as COBOL and
FORTRAN came into existence. As a result, the programming became easier and
thus, increased the productivity of the programmers. However, still the programs
were limited in size and the programmers developed programs using their own style
and experience.
Control Flow Based Design
With the advent of powerful machines and high level languages, the usage of
computers grew rapidly: In addition, the nature of programs also changed from
simple to complex. The increased size and the complexity could not be managed by
individual style. It was analyzed that clarity of control flow (the sequence in which
the program’s instructions are executed) is of great importance. To help the
programmer to design programs having good control flow
structure, flowcharting technique was developed. In flowcharting technique, the
algorithm is represented using flowcharts. A flowchart is a graphical representation
that depicts the sequence of operations to be carried out to solve a given problem
In order to provide clarity of control flow, the use of GOTO constructs in flowcharts
should be avoided and structured constructs-decision, sequence, and loop-
should be used to develop structured flowcharts. The decision structures are
used for conditional execution of statements (for example, if statement). The
sequence structures are used for the sequentially executed statements. The loop
structures are used for performing some repetitive tasks in the program. The use of
structured constructs formed the basis of the structured
programming methodology.
Structured programming became a powerful tool that allowed programmers to write
moderately complex programs easily. It forces a logical structure in the program to
be written in an efficient and understandable manner. Some languages such as
Ada, Pascal, and dBase are designed with features that implement the logical
program structure in the software code.
Data-Flow Oriented Design
With the introduction of very Large Scale Integrated circuits (VLSI), the computers
became more powerful and faster. As a result, various significant developments like
networking and GUIs came into being. Clearly, the complexity of software could not
be dealt using control flow based design. Thus, a new technique, namely, data-
flow-oriented technique came into existence. In this technique, the flow of data
through business functions or processes is represented using Data-flow Diagram
(DFD). IEEE defines a data-flow diagram (also known as bubble chart and work-
flow diagram) as ‘a diagram that depicts data sources, data sinks, data storage,
and processes performed on data as nodes, and logical flow of data as links
between the nodes.
Object Oriented Design
Object-oriented design technique has revolutionized the process of software
development. It not only includes the best features of structured programming but
also some new and powerful features such as encapsulation, abstraction,
inheritance, and polymorphism. These new features have tremendously helped in
the development of well-designed and high-quality software. Object-oriented
techniques are widely used these days as they allow reusability of the code. They
lead to faster software development and high-quality programs. Moreover, they are
easier to adapt and scale, that is, large systems can be created by assembling
reusable subsystems.
Explain Software Life Cycle Models

Software Development Life Cycle (SDLC) is a process used by the software


industry to design, develop and test high quality softwares. The SDLC aims to
produce a high-quality software that meets or exceeds customer expectations,
reaches completion within times and cost estimates.
 SDLC is the acronym of Software Development Life Cycle.
 It is also called as Software Development Process.
 SDLC is a framework defining tasks performed at each step in the software
development process.
 ISO/IEC 12207 is an international standard for software life-cycle processes.
It aims to be the standard that defines all the tasks required for developing
and maintaining software.

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. The life cycle defines a methodology for improving the
quality of software and the overall development process.
The following figure is a graphical representation of the various stages of a typical
SDLC.
Stage 1: Planning and Requirement Analysis
During this phase, all the relevant information is collected from the customer to
develop a product as per their expectation. Any ambiguities must be resolved in this
phase only.

Business analyst and Project Manager set up a meeting with the customer to gather
all the information like what the customer wants to build, who will be the end-user,
what is the purpose of the product. Before building a product a core understanding or
knowledge of the product is very important.

For Example, A customer wants to have an application which involves money


transactions. In this case, the requirement has to be clear like what kind of
transactions will be done, how it will be done, in which currency it will be done, etc.
Once the requirement gathering is done, an analysis is done to check the feasibility
of the development of a product. In case of any ambiguity, a call is set up for further
discussion.

Stage 2: Defining Requirements


Once the requirement analysis is done the next step is to clearly define and
document the product requirements and get them approved from the customer or
the market analysts. This is done through an SRS (Software Requirement
Specification) document which consists of all the product requirements to be
designed and developed during the project life cycle.
Stage 3: Designing the Product Architecture
SRS is the reference for product architects to come out with the best architecture for
the product to be developed. Based on the requirements specified in SRS, usually
more than one design approach for the product architecture is proposed and
documented in a DDS - Design Document Specification.
Stage 4: Building or Developing the Product
In this stage of SDLC the actual development starts and the product is built. The
programming code is generated as per DDS during this stage. If the design is
performed in a detailed and organized manner, code generation can be
accomplished without much hassle.
Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to generate
the code. Different high level programming languages such as C, C++, Pascal, Java
and PHP are used for coding. The programming language is chosen with respect to
the type of software being developed.
Stage 5: Testing the Product
This stage is usually a subset of all the stages as in the modern SDLC models, the
testing activities are mostly involved in all the stages of SDLC. However, this stage
refers to the testing only stage of the product where product defects are reported,
tracked, fixed and retested, until the product reaches the quality standards defined
in the SRS.
Stage 6: Deployment in the Market and Maintenance
Once the product is tested and ready to be deployed it is released formally in the
appropriate market. Sometimes product deployment happens in stages as per the
business strategy of that organization. The product may first be released in a limited
segment and tested in the real business environment (UAT- User acceptance
testing).

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:
Waterfall model is the very first model that is used in SDLC. It is also known as the
linear sequential model.
In this model, the outcome of one phase is the input for the next phase.
Development of the next phase starts only when the previous phase is complete.

 First, Requirement gathering and analysis is done. Once the


requirement is freeze then only the System Design can start. Herein,
the SRS document created is the output for the Requirement phase
and it acts as an input for the System Design.
 In System Design Software architecture and Design, documents which
act as an input for the next phase are created i.e. Implementation and
coding.
 In the Implementation phase, coding is done and the software
developed is the input for the next phase i.e. testing.
 In the testing phase, the developed code is tested thoroughly to detect
the defects in the software. Defects are logged into the defect tracking
tool and are retested once fixed. Bug logging, Retest, Regression
testing goes on until the time the software is in go-live state.
 In the Deployment phase, the developed code is moved into production
after the sign off is given by the customer.
 Any issues in the production environment are resolved by the
developers which come under maintenance.

Advantages of the Waterfall Model:


 Waterfall model is the simple model which can be easily understood
and is the one in which all the phases are done step by step.
 Deliverables of each phase are well defined, and this leads to no
complexity and makes the project easily manageable.
Disadvantages of Waterfall model:
 Waterfall model is time-consuming & cannot be used in the short
duration projects as in this model a new phase cannot be started until
the ongoing phase is completed.
 Waterfall model cannot be used for the projects which have uncertain
requirement or wherein the requirement keeps on changing as this
model expects the requirement to be clear in the requirement gathering
and analysis phase itself and any change in the later stages would lead
to cost higher as the changes would be required in all the phases.

Iterative Model:
Iterative Model

In this Model, you can start with some of the software specifications and develop the
first version of the software. After the first version if there is a need to change the
software, then a new version of the software is created with a new iteration. Every
release of the Iterative Model finishes in an exact and fixed period that is called
iteration.

The Iterative Model allows the accessing earlier phases, in which the variations
made respectively. The final output of the project renewed at the end of the Software
Development Life Cycle (SDLC) process.

When to use the Iterative Model?

1. When requirements are defined clearly and easy to understand.


2. When the software application is large.
3. When there is a requirement of changes in future.

Advantages:
1. Testing and debugging during smaller iteration is easy.
2. A Parallel development can plan.
3. It is easily acceptable to ever-changing needs of the project.
4. Risks are identified and resolved during iteration.
Disadvantage(Cons) of Iterative Model:

1. It is not suitable for smaller projects.


2. More Resources may be required.
3. Design can be changed again and again because of imperfect requirements.
4. Requirement changes can cause over budget.
5. Project completion date not confirmed because of changing requirements.

Evolutionary Model:
Evolutionary model is also referred to as the successive versions model and
sometimes as the incremental model. In Evolutionary model, the software
requirement is first broken down into several modules (or functional units) that can
be incrementally constructed and delivered (see Figure 5).
The development first develops the core modules of the system. The core modules
are those that do not need services from the other modules. The initial product
skeleton is refined into increasing levels of capability by adding new functionalities in
successive versions. Each evolutionary model may be developed using an iterative
waterfall model of development.

Evolutionary Development of a Software Product


The evolutionary model is shown in Figure 6. Each successive version/model of
the product is a fully functioning software capable of performing more work than the
previous versions/model.
The evolutionary model is normally useful for very large products, where it is easier
to find modules for incremental implementation.
Evolutionary model is used when the customer prefers to receive the product in
increments so that he can start using the different features as and when they are
developed rather than waiting all the time for the full product to be developed and
delivered.

Advantages:
 In evolutionary model, a user gets a chance to experiment partially
developed system.
 It reduces the error because the core modules get tested thoroughly.
Disadvantages:
 Sometimes it is hard to divide the problem into several versions that
would be acceptable to the customer which can be incrementally
implemented and delivered.

Prototype Model:
The prototype model is a model in which the prototype is developed prior to the
actual software.

Prototype models have limited functional capabilities and inefficient performance


when compared to the actual software. Dummy functions are used to create
prototypes. This is a valuable mechanism for understanding the customers’ needs.

Software prototypes are built prior to the actual software to get valuable feedback
from the customer. Feedbacks are implemented and the prototype is again reviewed
by the customer for any change. This process goes on until the model is accepted by
the customer.
Once the requirement gathering is done, the quick design is created and the
prototype which is presented to the customer for evaluation is built.

Customer feedback and the refined requirement is used to modify the prototype and
is again presented to the customer for evaluation. Once the customer approves the
prototype, it is used as a requirement for building the actual software. The actual
software is build using the Waterfall model approach.

Advantages of Prototype Model:


 Prototype model reduces the cost and time of development as the
defects are found much earlier.
 Missing feature or functionality or a change in requirement can be
identified in the evaluation phase and can be implemented in the
refined prototype.
 Involvement of a customer from the initial stage reduces any confusion
in the requirement or understanding of any functionality.
Disadvantages of Prototype Model:
 Since the customer is involved in every phase, the customer can
change the requirement of the end product which increases the
complexity of the scope and may increase the delivery time of the
product.

Spiral Model
The Spiral Model includes iterative and prototype approach.
Spiral model phases are followed in the iterations. The loops in the model represent
the phase of the SDLC process i.e. the innermost loop is of requirement gathering &
analysis which follows the Planning, Risk analysis, development, and evaluation.
Next loop is Designing followed by Implementation & then testing.

Spiral Model has four phases:


 Planning
 Risk Analysis
 Engineering
 Evaluation
(i) Planning:
The planning phase includes requirement gathering wherein all the required
information is gathered from the customer and is documented. Software requirement
specification document is created for the next phase.

(ii) Risk Analysis:


In this phase, the best solution is selected for the risks involved and analysis is done
by building the prototype.

For Example, the risk involved in accessing the data from a remote database can be
that the data access rate might be too slow. The risk can be resolved by building a
prototype of the data access subsystem.
(iii) Engineering:
Once the risk analysis is done, coding and testing are done.

(iv) Evaluation:
Customer evaluates the developed system and plans for the next iteration.

Advantages of Spiral Model:


 Risk Analysis is done extensively using the prototype models.
 Any enhancement or change in the functionality can be done in the
next iteration.
Disadvantages of Spiral Model:
 The spiral model is best suited for large projects only.
 The cost can be high as it might take a large number of iterations which
can lead to high time to reach the final product.

You might also like