Professional Documents
Culture Documents
Let us first understand what software engineering stands for. The term is made 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 collection of executable programming code,
associated libraries and documentations. Software, when made for a specific requirement is
called software product.
Engineering on the other hand, is all about developing products, using well-defined, scientific
principles and methods.
Software engineering is an engineering branch associated with development of software product
using well-defined scientific principles, methods and procedures. The outcome of software
engineering is an efficient and reliable software product.
Definitions
Another measure is the amount of storage space the program requires for
execution. Often these two measures are inversely related, that is, increasing the
execution efficiency causes a decrease in the space efficiency. This relationship is
known as the space-time tradeoff. When it is not possible to design a software
product with efficiency in every aspect, the most important resources of the
software are given priority.
Define testing?
Testing is a process of executing a program with the intent of finding of an
error.
This method is named so because the software program, in the eyes of the tester, is like a black
box; inside which one cannot see.
A tester, without knowledge of the internal structures of a website, tests the web
pages by using a browser; providing inputs (clicks, keystrokes) and verifying the
outputs against the expected outcome.
Validation is the process of evaluating the final product to check whether the software meets the
business needs. In simple words the test execution which we do in our day to day life are actually
the validation activity which includes smoke testing, functional testing, regression testing,
systems testing etc
Difference between software Verification and Validation:
Verification
Validation
or not.
Execution of code is not comes under
Verification.
Each phase produces deliverables required by the next phase in the life cycle. Requirements are
translated into design. Code is produced according to the design which is called development
phase. After coding and development the testing verifies the deliverable of the implementation
phase against requirements.
There are following six phases in every Software development life cycle model:
Requirement gathering and analysis: Business requirements are gathered in this phase. This
phase is the main focus of the project managers and stake holders. Meetings with managers,
stake holders and users are held in order to determine the requirements like; Who is going to use
the system? How will they use the system? What data should be input into the system? What
data should be output by the system? These are general questions that get answered during a
requirements gathering phase. After requirement gathering these requirements are analyzed for
their validity and the possibility of incorporating the requirements in the system to be
development is also studied.
Finally, a Requirement Specification document is created which serves the purpose of guideline
for the next phase of the model.
Design: In this phase the system and software design is prepared from the requirement
specifications which were studied in the first phase. System Design helps in specifying hardware
and system requirements and also helps in defining overall system architecture. The system
design specifications serve as input for the next phase of the model.
In this phase the testers comes up with the Test strategy, where they mention what to test, how to
test.
Implementation / Coding: On receiving system design documents, the work is
divided in modules/units and actual coding is started. Since, in this phase the code
is produced so it is the main focus for the developer. This is the longest phase of the
software development life cycle.
Deployment: After successful testing the product is delivered / deployed to the customer for
their use.
As soon as the product is given to the customers they will first do the beta testing. If any changes
are required or if any bugs are caught, then they will report it to the engineering team. Once
those changes are made or the bugs are fixed then the final deployment will happen.
Maintenance: Once when the customers starts using the developed system then
the actual problems comes up and needs to be solved from time to time. This
process where the care is taken for the developed product is known as
maintenance.
Waterfall Model
Waterfall model is the simplest model of software development paradigm. It says the all the
phases of SDLC will function one after another in linear manner. That is, when the first phase is
finished then only the second phase will start and so on.
This model assumes that everything is carried out and taken place perfectly as planned in the
previous stage and there is no need to think about the past issues that may arise in the next phase.
This model does not work smoothly if there are some issues left at the previous step. The
sequential nature of model does not allow us go back and undo or redo our actions.
This model is best suited when developers already have designed and developed similar software
in the past and are aware of all its domains.
The Waterfall Model was first Process Model to be introduced. It is also referred to as a linearsequential life cycle model. It is very simple to understand and use. In a waterfall model, each
phase must be completed fully before the next phase can begin. This type of model is basically
used for the for the project which is small and there are no uncertain requirements. At the end of
each phase, a review takes place to determine if the project is on the right path and whether or
not to continue or discard the project. In this model the testing starts only after the development
is complete. In waterfall model phases do not overlap.
Diagram of Waterfall-model:
It is easy to manage due to the rigidity of the model each phase has specific
deliverables and a review process.
In this model phases are processed and completed one at a time. Phases do not overlap.
Waterfall model works well for smaller projects where requirements are very well
understood.
Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-thought out in the concept stage.
Not suitable for the projects where requirements are at a moderate to high risk of
changing.
This model is used only when the requirements are very well known, clear and fixed.
Technology is understood.
Very less customer enter action is involved during the development of the product. Once the
product is ready then only it can be demoed to the end users.
Iterative Model
This model leads the software development process in iterations. It projects the process of
development in cyclic manner repeating every step after every cycle of SDLC process.
The software is first developed on very small scale and all the steps are followed which are taken
into consideration. Then, on every next iteration, more features and modules are designed, coded,
tested and added to the software. Every cycle produces a software, which is complete in itself
and has more features and capabilities than that of the previous one.
After each iteration, the management team can do work on risk management and prepare for the
next iteration. Because a cycle includes small portion of whole software process, it is easier to
manage the development process but it consumes more resources.
Advantages of Iterative model:
In iterative model we can only create a high-level design of the application before we
actually begin to build the product and define the design solution for the entire product.
Later on we can design and built a skeleton version of that, and then evolved the design
based on what had been built.
In iterative model we are building and improving the product step by step. Hence we can
track the defects at early stages. This avoids the downward flow of the defects.
In iterative model we can get the reliable user feedback. When presenting sketches and
blueprints of the product to users for their feedback, we are effectively asking them to
imagine how the product will work.
In iterative model less time is spent on documenting and more time is given for
designing.
Costly system architecture or design issues may arise because not all requirements are
gathered up front for the entire lifecycle
Major requirements must be defined; however, some details can evolve with time.
Incremental Method
Consider in the above picture, there is one square that has to develop with features F1, F2, F3
and F4. In the Incremental Model all the four features will be divided into four different small
squares called modules (M1, M2, M3 and M4).Once the first module (M1) is developed, it gets
delivered to the client and later on after development of second module M2 integrated with
module M1. Gradually we develop other modules M3 and M4 and keep on integrating until
complete square gets ready or developed.
Advantages of Incremental model:
Generates working software quickly and early during the software life cycle.
This model is more flexible less costly to change scope and requirements.
Easier to manage risk because risky pieces are identified and handled during itd
iteration.
Needs a clear and complete definition of the whole system before it can be broken down
and built incrementally.
This model can be used when the requirements of the complete system are clearly defined
and understood.
Major requirements must be defined; however, some details can evolve with time.
Spiral Model
One of the most flexible SDLC methodologies, the Spiral model takes a cue from the Iterative
model and its repetition; the project passes through four phases over and over in a spiral until
completed, allowing for multiple rounds of refinement. This model allows for the building of a
highly customized product, and user feedback can be incorporated from early on in the project.
But the risk you run is creating a never-ending spiral for a project that goes on and on.
The spiral model is similar to the incremental model, with more emphasis placed on
risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering
and Evaluation. A software project repeatedly passes through these phases in
iterations (called Spirals in this model). The baseline spiral, starting in the planning
phase, requirements are gathered and risk is assessed. Each subsequent spirals
builds on the baseline spiral.
Planning Phase: Requirements are gathered during the planning phase. Requirements like
BRS that is Bussiness Requirement Specifications and SRS that is System Requirement
specifications.
Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and alternate
solutions. A prototype is produced at the end of the risk analysis phase. If any risk is found
during the risk analysis then alternate solutions are suggested and implemented.
Engineering Phase: In this phase software is developed, along with testing at the end of the
phase. Hence in this phase the development and testing is done.
Evaluation phase: This phase allows the customer to evaluate the output of the project to date
before the project continues to the next spiral.
V model
The major drawback of waterfall model is we move to the next stage only when the previous one
is finished and there was no chance to go back if something is found wrong in later stages. VModel provides means of testing of software at each stage in reverse manner.
At every stage, test plans and test cases are created to verify and validate the
product according to the requirement of that stage. This makes both verification
and validation go in parallel. This model is also known as verification and validation
model.