Department : MCA
Semester : IV
Subject : Principles of Software Engineering
Paper : 21
Faculty : Avinash Kumar
Syllabus covered in this blog:
S/W Development principles: Agile, Adaptive and RAD
Modern Principles of
Software Development
There are some modern principles for the development of
software. By following these modern principles we can develop an efficient
software meeting all the requirements of a customer.
To develop a proper software one should follow the following 10 principles of software development:
- Architecture
first approach:
In this approach over the
main aim is to build a strong architecture for our software. All the
ambiguities and flaws are being identified during the very trivial phase. Also,
we can take all the decisions regarding the design of the software which will
enhance the productivity of our software.
- Iterative
life cycle process:
An iterative life cycle
process we repeated the process again and again to eliminate the risk factors.
An iterative life cycle we mainly have four steps requirement gathering,
design, implementation, and testing. All these steps are repeated again and
again until we mitigate the risk factor. Iterative life cycle process is important
to alleviate risk at an early stage by repeating the above-mentioned steps
again and again.
- Component
Based Approach:
In component-based
approach is a widely used and successful approach in which we reuse the
previously defined functions for the software development. We reuse the part of
code in the form of components. Component-based UI Development Optimizes the
Requirements & Design Process and thus is one of the important modern
software principle.
- Change
Management system:
Change Management is the
process responsible for managing all changes. The main aim of change management
is to improve the quality of software by performing necessary changes. All
changes implemented are then tested and certified.
- Round
Trip Engineering:
In round trip engineering
code generation and reverse engineering take place at the same time in a
dynamic environment. Both components are integrated so that developers can
easily work on both of them. In round trip engineering, the main characteristic
is automatic update of artifacts.
- Model
Based Evolution:
Model-based evolution is
an important principle of software development. A model-based approach supports
the evolution of graphics and textual notions.
- Objective
Quality Control:
The objective of quality
control is to improve the quality of our software. It involves Quality
management plan, Quality metrics, Quality checklist, Quality baseline, and
Quality Improvement measures.
- Evolving
levels of details:
Plan intermediate
releases in groups of usage scenarios with evolving levels of details. We must
plan an incremental realize in which we have an evolving level of use case,
architecture, and details.
- Establish
a configurable process:
Establish a configurable
process that is economically scalable. One single process is not suitable for
all the development so we must use a configurable process which can deal with
various applications.
- Demonstration
Based approach:
In this approach, we
mainly focus on demonstration. It helps to the increase the productivity and
quality of software by representing a clear description about problem domain,
approaches used and the solution implanted.
Agile Software Development
Agile is a time-bound, iterative approach to
software delivery that builds software incrementally from the start of the
project, instead of trying to deliver all at once.
In Agile development, Design and Implementation are
considered to be the central activities in the software process. Design and
Implementation phase also incorporate other activities such as requirements
elicitation and testing into it.
In this approach, iteration occurs across activities.
Therefore, the requirements and the design are developed together, rather than separately.
The allocation of requirements and the design planning and development as
executed in a series of increments.
In contrast with the conventional model, where
requirements gathering needs to be completed in order to proceed to the design
and development phase, it gives Agile development an extra level of flexibility.
An agile process focuses more on code development rather than documentation
Principles Agile Software
Development
The Agile Alliance defines twelve lightness principles
for those that need to attain agility.
- Our highest priority is to satisfy the client through
early and continuous delivery of valuable computer software.
- Welcome dynamical necessities, even late in
development. Agile processes harness modification for the customer’s
competitive advantage.
- Deliver operating computer software often, from a
pair of weeks to a couple of months, with a preference to the shorter
timescale.
- Business individuals and developers should work along
daily throughout the project.
- The build comes around actuated people. offer them
the setting and support they have, and trust them to urge the task done.
- the foremost economical and effective methodology of convincing
info among a development team is face-to-face speech.
- Working computer software is the primary live of
progress.
- Agile processes promote property development. The
sponsors, developers, and users got to be able to maintain a relentless
pace indefinitely.
- Continuous attention to technical excellence and
smart style enhances nimbleness.
- Simplicity—the art of maximizing the number of work not
done—is essential.
- the most effective architectures, necessities, and
styles emerge from self– organizing groups.
- At regular intervals, the team reflects on a way to
become simpler, then tunes and adjusts its behavior consequently.
Advantages:
- Deployment of software is quicker and thus helps in increasing the trust of the customer.
- Can better adapt to rapidly changing requirements and respond faster.
- Helps in getting immediate feedback which can be used to improve the software in the next increment.
- People – Not Process. People and interactions are given a higher priority rather than process and tools.
- Continuous attention to technical excellence and good design.
Disadvantages:
- In case of large software projects, it is difficult to assess the effort required at the initial stages of the software development life cycle.
- The Agile Development is more code focused and produces less documentation.
- Agile development is heavily depended on the inputs of the customer. If the customer has ambiguity in his vision of the final outcome, it is highly likely for the project to get off track.
- Face to Face communication is harder in large-scale organizations.
- Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it’s a difficult situation for new programmers to adapt to the environment.
Adaptive Software Development
Adaptive Software Development is a method to build complex software and system. It focuses on human collaboration and self-organization.
Adaptive Software Development Life Cycle incorporates three phases namely:
1. Speculation:
During this phase project is
initiated and planning is conducted. The project plan uses project initiation
information like project requirements, user needs, customer mission statement
etc, to define set of release cycles that the project wants.
2.
Collaboration:
It is the complex part
of Adaptive Software Development as it needs the workers to be motivated. It collaborates communication
and teamwork but emphasizes individualism as individual creativity plays a
major role in creative thinking. People working together must trust each others
to
·
Criticize without
animosity,
·
Assist without
resentment,
·
Work as hard as possible,
·
Possession of skill set,
·
Communicate problems to
find effective solution.
3.
Learning:
The workers may have overestimate of their own understanding
of the technology which may not lead to the desired result. Learning helps the
workers to increase their level of understanding over the project in the
following three ways:
·
Focus groups
·
Technical reviews
·
Project postmortem
Advantages of adaptive software
development
- A better and stronger overall end product.
- Increased transparency between developers and customers.
- A user-first approach which leads to a more intuitive piece of software.
- Higher likelihood of on-time (or early!) delivery, thanks to the repeating three-step process which allows potential problems to be identified and solved early.
Disadvantages of adaptive software
development drawbacks
- Extensive testing can lead to higher project costs.
- The level of user involvement required can be difficult to resource.
- An emphasis on constant product iteration and feedback can lead to burnout.
Hence Adaptive Software Development works better where teams
can be
dedicated solely to a single project.
RAD Model
Rapid Application Development Model was introduced by IBM during 1980’s. RAD Model is generally
based on the prototype model and iterative approach. This model is used to
completing the process of software product developing in a very short time.
The entire project is divided into various small modules and each module is allocated to different party to finish the working of the small modules. After that, all the smaller modules are combined together to obtain the final project. If your project can be divided into many parts or modules then the Rapid application development model is used.
The entire project is divided into various small modules and each module is allocated to different party to finish the working of the small modules. After that, all the smaller modules are combined together to obtain the final project. If your project can be divided into many parts or modules then the Rapid application development model is used.
The process of RAD model
is building the Rapid prototype and deliver it to the clients and taking the
reviews from them . If customer is satisfied then SRS document is created and
designing phase is start.
Phases
in RAD model
Requirement
Analysis:
There are various approaches which is used in requirement planning like
brainstorming , task analysis ,form analysis ,user scenario etc. This phase
consists plan or designing of each module which contains data, methods and
other resources.
Customer
Evaluation:
In this phase, developer evaluates the customer satisfaction by
delivering the prototype and taking the reviews from them. If the customer is
satisfied then developer starts implementation.
Construction:
Prototype is refining and all the modification ,correction and
improvements is done in this phase. This phase helps us to convert the process
and modules into the final working product.
Cut
Over:
This is the last stage of the RAD model. In this phase, all the
independent modules are evaluated separately .The tools and sub-parts of
product makes the testing of the product very easy.
Advantages
of RAD model
·
RAD model completes the project in a
short period of time.
·
The progress and development of project
can be check on various stages.
·
This model uses the powerful techniques
and tools.
·
Reduce cost because fewer developers
are needed.
·
Prototype is delivered to the customer
so the customer is satisfied.
·
It has more flexibility and
adaptability to acquire the new requirements.
·
Reusability of the components is
increased.
Disadvantages
of RAD model
·
Team leader must to do work with
developers to complete the work on time.
·
Customer involvement is needed.
·
There are no reusable component are
used to lead the failure of the project.
·
This model works only when the
requirements are clearly specified.
·
This model can be more complex if
prototype is refined again and again.
·
RAD model is not suitable for short
projects.
Applications of RAD model
· This model should be used for a system
with known requirements and requiring short development time.
· It is also suitable for projects where
requirements can be modularized and reusable components are also developed.
· The model can also be used when already
existing system components can be used in developing a new system with minimum
changes.
· This model can only be used if the
teams consist of domain experts. This is because relevant knowledge and ability
to use powerful techniques is a necessity.
· The model should be chosen when the budget
permits the use of automated tools and techniques required.
No comments:
Post a Comment