DevOps on cloud TCS 651
Unit-01
An introduction to Software Engineering, SDLC, Agile Framework, An introduction to DevOps,
Gain insights of the DevOps environment, DevOps Vs Agile, DevOps Ecosystem.
Software Engineering
Software engineering is an engineering approach for software development.
We can alternatively view it as a systematic collection of past experience. The experience
is arranged in the form of methodologies and guidelines.
A small program can be written without using software engineering principles.
But if one wants to develop a large software product, then software engineering
principles are indispensable to achieve a good quality software cost effectively.
Without using software engineering principles it would be difficult to develop large
programs.
In industry it is usually needed to develop large programs to accommodate multiple
functions.
A problem with developing such large commercial programs is that the complexity and
difficulty levels of the programs increase exponentially with their sizes.
For example, a program of size 1,000 lines of code has some complexity. But a program
with 10,000 LOC is not just 10 times more difficult to develop,
but may as well turn out to be 100 times more difficult unless software engineering
principles are used.
,Program Vs Software Product
Programs are developed by individuals for their personal use. They are therefore, small
in size and have limited functionality but software products are extremely large.
In case of a program, the programmer himself is the sole user but on the other hand, in
case of a software product, most users are not involved with the development.
In case of a program, a single developer is involved but in case of a software product, a
large number of developers are involved. For a program, the user interface may not be
very important, because the programmer is the sole user.
On the other hand, for a software product, user interface must be carefully designed and
implemented because developers of that product and users of that product are totally
different.
,Life Cycle Model
A software 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.
In other words, a life cycle model maps the different activities performed on a software
product from its inception to retirement.
The need for a software life cycle model
The development team must identify a suitable life cycle model for the particular project
and then adhere to it.
Without using of a particular life cycle model the development of a software product
would not be in a systematic and disciplined manner.
A software life cycle model defines entry and exit criteria for every phase. A phase can
start only if its phase-entry criteria have been satisfied.
So without software life cycle model the entry and exit criteria for a phase cannot be
recognized.
Without software life cycle models (such as classical waterfall model, iterative waterfall
model, prototyping model, evolutionary model, spiral model etc.) it becomes difficult for
software project managers to monitor the progress of the project.
Different life cycle models
Many life cycle models have been proposed so far. Each of them has some advantages as
well as some disadvantages. A few important and commonly used life cycle models are as
follows:
Classical Waterfall Model
Iterative Waterfall Model
Prototyping Model
Evolutionary Model
Spiral Model
, Classical Waterfall Model
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.
Classical waterfall model divides the life cycle into the following phases:
Feasibility Study
Requirements Analysis and Specification
Design
Coding and Unit Testing
Integration and System Testing
Maintenance
Short comings of Classical Waterfall Model
The classical waterfall model is an idealistic one since it assumes that no development
error is ever committed by the engineers during any of the life cycle phases.
However, in practical development environments, the engineers do commit a large
number of errors in almost every phase of the life cycle.
The source of the defects can be many: oversight, wrong assumptions, use of
inappropriate technology, communication gap among the project engineers, etc.
Unit-01
An introduction to Software Engineering, SDLC, Agile Framework, An introduction to DevOps,
Gain insights of the DevOps environment, DevOps Vs Agile, DevOps Ecosystem.
Software Engineering
Software engineering is an engineering approach for software development.
We can alternatively view it as a systematic collection of past experience. The experience
is arranged in the form of methodologies and guidelines.
A small program can be written without using software engineering principles.
But if one wants to develop a large software product, then software engineering
principles are indispensable to achieve a good quality software cost effectively.
Without using software engineering principles it would be difficult to develop large
programs.
In industry it is usually needed to develop large programs to accommodate multiple
functions.
A problem with developing such large commercial programs is that the complexity and
difficulty levels of the programs increase exponentially with their sizes.
For example, a program of size 1,000 lines of code has some complexity. But a program
with 10,000 LOC is not just 10 times more difficult to develop,
but may as well turn out to be 100 times more difficult unless software engineering
principles are used.
,Program Vs Software Product
Programs are developed by individuals for their personal use. They are therefore, small
in size and have limited functionality but software products are extremely large.
In case of a program, the programmer himself is the sole user but on the other hand, in
case of a software product, most users are not involved with the development.
In case of a program, a single developer is involved but in case of a software product, a
large number of developers are involved. For a program, the user interface may not be
very important, because the programmer is the sole user.
On the other hand, for a software product, user interface must be carefully designed and
implemented because developers of that product and users of that product are totally
different.
,Life Cycle Model
A software 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.
In other words, a life cycle model maps the different activities performed on a software
product from its inception to retirement.
The need for a software life cycle model
The development team must identify a suitable life cycle model for the particular project
and then adhere to it.
Without using of a particular life cycle model the development of a software product
would not be in a systematic and disciplined manner.
A software life cycle model defines entry and exit criteria for every phase. A phase can
start only if its phase-entry criteria have been satisfied.
So without software life cycle model the entry and exit criteria for a phase cannot be
recognized.
Without software life cycle models (such as classical waterfall model, iterative waterfall
model, prototyping model, evolutionary model, spiral model etc.) it becomes difficult for
software project managers to monitor the progress of the project.
Different life cycle models
Many life cycle models have been proposed so far. Each of them has some advantages as
well as some disadvantages. A few important and commonly used life cycle models are as
follows:
Classical Waterfall Model
Iterative Waterfall Model
Prototyping Model
Evolutionary Model
Spiral Model
, Classical Waterfall Model
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.
Classical waterfall model divides the life cycle into the following phases:
Feasibility Study
Requirements Analysis and Specification
Design
Coding and Unit Testing
Integration and System Testing
Maintenance
Short comings of Classical Waterfall Model
The classical waterfall model is an idealistic one since it assumes that no development
error is ever committed by the engineers during any of the life cycle phases.
However, in practical development environments, the engineers do commit a large
number of errors in almost every phase of the life cycle.
The source of the defects can be many: oversight, wrong assumptions, use of
inappropriate technology, communication gap among the project engineers, etc.