(AN AUTONOMOUS UNIT OF RANCHI UNIVERSITY FROM 2009)
- Prakash Kumar, Dept. of CA
-Archana Kumari, Dept. of CA
-Raju Manjhi, Dept. of CA
-Raju Manjhi, Dept. of CA
__________________________________________________________________________________
Iterative and Incremental Model
Software Engineering:
Software engineering is the establishment and use of engineering
principle to obtain economically software i.e. reliable and work efficient on
real machine.
According to IEEE Software engineering is the application of a systematic
discipline and quantifiable approach to the development, operation and
maintenance of software.
Software engineering is a layered technology
1) Tools
2) Method
3) Process
4) Quality
1. Quality:-The
bedrock that supports Software engineering is quality focus.
2. Process:-The
foundation of Software engineering is process layer that holds the technology
layer to enable rational and timely development of computer system.
3.Method:-The method provide
technology “how do’s for building software”.
4.Tools: - The total provides automated or semi
automated for the process and method.
Software: -
Software is-
1. Introduction when executed provides
desired features and performance.
2. Data structure that enable program
to manipulate information.
3.
Document that describe the operation and use of the program.
FEATURES /
CHARACTERISTIC SOFTWARE
1.
Software is developed and engineered.
2.
Software does not wear out.
3.
Generally it is customized.
4.
Software is flexible.
5. Re-usability of component
6.
Maintainability.
Category of
software
1.
System software
2.
Application software
3.
Engineering & Scientific software.
4.
Enabled software
5.
Web application software
6.
Artificial intelligence software.
Enabled Software: - Enabled software
resides within a product or system and use to implement and control feature and
functions for the end of user for the system of itself.
Need of Software Engineering
The
need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working.
- Large software –
When the size of software becomes large
engineering has to step to give it a scientific process.
- Scalability- If the software
process were not based on scientific and engineering concepts, it would be
easier to re-create new software than to scale an existing one.
- Cost- As hardware
industry has shown its skills and huge manufacturing has lower down the
price of computer and electronic hardware. But the cost of software
remains high if proper process is not adapted.
- Dynamic Nature- The always
growing and adapting nature of software hugely depends upon the
environment in which user works.
- Quality
Management- Better
process of software development provides better and quality software
product.
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 software has the capabilities to maintain itself
in the ever-changing environment:
- Modularity
- Maintainability
- Flexibility
- Scalability
Thus,
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.
Essential Attributes
of a good software
Software component
A
software component is a software element that conforms to a component model and
can be independently deployed and composed without modification according to a
composition standard. A component model defines specific interaction and
composition standards. A component model implementation is the dedicated set of
executable software elements required to support the execution of components
that conform to the model. A software component infrastructure is a set of
interacting software components designed to ensure that a software system or
subsystem constructed using those components and interfaces will satisfy
clearly defined performance specifications. These definitions demonstrate the
important relationship between a software component infrastructure, software
components, and a component model.
Software process
A software process is a set of activities that leads to the
production of a software product. These activities may involve the development of
software from scratch in a standard programming language like Java or C.
Increasingly, however, new software is developed by extending and modifying
existing systems and by configuring and integrating off-the-shelf software or
system components.
Software processes are complex and, like all intellectual
and creative processes, rely on people making decisions and judgments.
Although there are many software processes, some fundamental
activities are common to all software processes:
1. Software specification: The functionality of the software and
constraints on its operation must be defined.
2. Software design and implementation: The software to
meet the specification must be produced.
3. Software
validation: The software must be validated to ensure that
it does what the customer wants.
4. Software evolution:
The
software must evolve to meet changing customer needs.
Software process models
Waterfall Model:
Description
The waterfall Model is a linear
sequential flow. In which progress is seen as flowing steadily downwards (like
a waterfall) through the phases of software implementation. This means that any
phase in the development process begins only if the previous phase is complete.
The waterfall approach does not define the process to go back to the previous
phase to handle changes in requirement. The waterfall approach is the earliest
approach and most widely known that was used for software development.
The usage
Projects which not focus on
changing the requirements, for example, projects initiated from request for
proposals (RFPs), the customer has a very clear documented requirements
Advantages and Disadvantages
Advantages
|
Disadvantages
|
§ Easy to explain to the users.
§ Structures approach.
§ Stages and activities are well
defined.
§ Helps to plan and schedule the
project.
§ Verification at each stage
ensures early detection of errors/misunderstanding.
§ Each phase has specific
deliverables.
|
§ Assumes that the requirements
of a system can be frozen.
§ Very difficult to go back to
any stage after it finished.
§ A little flexibility and
adjusting scope is difficult and expensive.
§ Costly and required more time,
in addition to the detailed plan.
|
V-Shaped Model
Description
It is an extension of the
waterfall model, Instead of moving down in a linear way, the process steps are
bent upwards after the implementation and coding phase, to form the typical V
shape. The major difference between V-shaped model and waterfall model is the
early test planning in the V-shaped model.
The usage
§
Software
requirements clearly defined and known
§
Software
development technologies and tools are well-known
Advantages and Disadvantages
Advantages
|
Disadvantages
|
§ Simple and easy to use
§ Each phase has specific
deliverables.
§ Higher chance of success over
the waterfall model due to the development of test plans early on during the
life cycle.
§ Works well for where
requirements are easily understood.
§ Verification and validation of
the product in early stages of product development.
|
§ Very inflexible, like the
waterfall model.
§ Adjusting scope is difficult
and expensive.
§ The software is developed
during the implementation phase, so no early prototypes of the software are
produced.
§ The model doesn’t provide a
clear path for problems found during testing phases.
§ Costly and required more time,
in addition to detailed plan
|
Prototyping Model
Description
It refers to the activity of
creating prototypes of software applications, for example, incomplete versions
of the software program being developed. It is an activity that can occur in
software development. It used to visualize some component of the software to
limit the gap of misunderstanding the customer requirements by the development
team. This also will reduce the iterations may occur in waterfall approach and
hard to be implemented due to the inflexibility of the waterfall approach. So,
when the final prototype is developed, the requirement is considered to be
frozen.
It has some types, such as:
§
Throwaway
prototyping: Prototypes that are eventually discarded rather than becoming a
part of the finally delivered software
§
Evolutionary
prototyping: prototypes that evolve into the final system through an iterative
incorporation of user feedback.
§
Incremental
prototyping: The final product is built as separate prototypes. At the end, the
separate prototypes are merged in an overall design.
§
Extreme
prototyping: used at web applications mainly. Basically, it breaks down web
development into three phases, each one based on the preceding one. The first
phase is a static prototype that consists mainly of HTML pages. In the second
phase, the screens are programmed and fully functional using a simulated
services layer. In the third phase, the services are implemented
The usage
§
This
process can be used with any software developing life cycle model. While this
shall be chosen when you are developing a system has user interactions. So, if
the system does not have user interactions, such as a system does some
calculations shall not have prototypes.
Advantages and Disadvantages
Advantages
|
Disadvantages
|
§ Reduced time and costs, but
this can be a disadvantage if the developer loses time in developing the
prototypes.
§ Improved and increased user
involvement.
|
§ Insufficient analysis· User confusion
of prototype and finished system.
§ Developer misunderstanding of
user objectives.
§ Excessive development time of
the prototype.
§ Expense of implementing
prototyping
|
Spiral Model (SDM)
Description
It is combining elements of both
design and prototyping-in-stages, in an effort to combine advantages of
top-down and bottom-up concepts. This model of development combines the
features of the prototyping model and the waterfall model. The spiral model is
favored for large, expensive, and complicated projects. This model uses many of
the same phases as the waterfall model, in essentially the same order,
separated by planning, risk assessment, and the building of prototypes and
simulations.
The usage
It is used in the large applications and systems which
built-in small phases or segments.
Advantages and Disadvantages
Advantages
|
Disadvantages
|
§ Estimates (i.e. budget,
schedule, etc.) become more realistic as work progressed because important
issues are discovered earlier.
§ Early involvement of developers.
§ Manages risks and develops the
system into phases.
|
§ High cost and time to reach the
final product.
§ Needs special skills to
evaluate the risks and assumptions.
§ Highly customized limiting
re-usability
|
Iterative and Incremental Model
Description
It is developed to overcome the
weaknesses of the waterfall model. It starts with an initial planning and ends
with deployment with the cyclic interactions in between. The basic idea behind
this method is to develop a system through repeated cycles (iterative) and in
smaller portions at a time (incremental), allowing software developers to take
advantage of what was learned during the development of earlier parts or
versions of the system.
It can consist of mini waterfalls or mini V-Shaped
model
The usage
It is used in shrink-wrap application and large
system which built-in small phases or segments. Also, can be used in a system
has separated components, for example, ERP system. Which we can start with the
budget module as a first iteration and then we can start with inventory module
and so forth.
Advantages and Disadvantages
Advantages
|
Disadvantages
|
§ Produces business value early
in the development lifecycle.
§ Better use of scarce resources
through proper increment definition.
§ Can accommodate some change
requests between increments.
§ More focused on customer value
than the linear approaches.
§ Problems can be detected
earlier.
|
§ Requires heavy documentation.
§ Follows a defined set of
processes.
§ Defines increments based on
function and feature dependencies.
§ Requires more customer
involvement than the linear approaches.
§ Partitioning the functions and
features might be problematic.
§ Integration between iteration
can be an issue if this is not considered during the development.
|
Agile Model
Description
It is based on iterative and
incremental development, where requirements and solutions evolve through
collaboration between cross-functional teams.
Scrum Agile Model
The usage
It can be used with any type of the project, but it
needs more engagement from the customer and to be interactive. Also, it can be
used when the customer needs to have some functional requirement ready in less
than three weeks and the requirements are not clear enough.
Advantages and Disadvantages
Advantages
|
Disadvantages
|
§ Decrease the time required to
avail some system features.
§ Face to face communication and
continuous inputs from customer representative leaves no space for guesswork.
§ The end result is the
high-quality software in the least possible time duration and satisfied
customer.
|
§ Scalability.
§ The ability and collaboration
of the customer to express user needs.
§ Documentation is done at later
stages.
§ Reduce the usability of
components.
§ Needs special skills for the
team.
|
Software
Development Life Cycle
Software
Development Life Cycle, SDLC for short, is a well-defined, structured sequence
of stages in software engineering to develop the intended software product.
SDLC Activities
SDLC
provides a series of steps to be followed to design and develop a software
product efficiently. SDLC framework includes the following steps:
Communication
This
is the first step where the user initiates the request for a desired software
product. The user contacts the service provider and tries to negotiate the
terms, submits the request to the service providing organization in writing.
Requirement Gathering
This
step onwards the software development team works to carry on the project. The
team holds discussions with various stakeholders from problem domain and tries
to bring out as much information as possible on their requirements. The
requirements are contemplated and segregated into user requirements, system
requirements and functional requirements. The requirements are collected using
a number of practices as given - Software
Engineering
studying the existing or obsolete system and
software,
conducting interviews of users and developers,
referring to the database or
collecting answers from the questionnaires.
Feasibility Study
After
requirement gathering, the team comes up with a rough plan of software process.
At this step the team analyzes if software can be designed to fulfill all
requirements of the user, and if there is any possibility of software being no
more useful. It is also analyzed if the project is financially, practically,
and technologically feasible for the organization to take up. There are many
algorithms available, which help the developers to conclude the feasibility of
a software project.
System Analysis
At
this step the developers decide a roadmap of their plan and try to bring up the
best software model suitable for the project. System analysis includes
understanding of software product limitations, learning system related problems
or changes to be done in existing systems beforehand, identifying and
addressing the impact of project on organization and personnel etc. The project
team analyzes the scope of the project and plans the schedule and resources
accordingly.
Software Design
Next
step is to bring down whole knowledge of requirements and analysis on the desk
and design the software product. The inputs from users and information gathered
in requirement gathering phase are the inputs of this step. The output of this
step comes in the form of two designs; logical design, and physical design.
Engineers produce meta-data and data dictionaries, logical diagrams, data-flow
diagrams, and in some cases pseudo codes.
Coding
This
step is also known as programming phase. The implementation of software design
starts in terms of writing program code in the suitable programming language
and developing error-free executable programs efficiently.
Testing
An
estimate says that 50% of whole software development process should be tested.
Errors may ruin the software from critical level to its own removal. Software
testing is done while coding by the developers and thorough testing is
conducted by testing experts at various levels of code such as module testing, Software Engineering program testing, product testing, in-house testing, and
testing the product at user’s end. Early discovery of errors and their remedy
is the key to reliable software.
Integration
Software
may need to be integrated with the libraries, databases, and other program(s).
This stage of SDLC is involved in the integration of software with outer world
entities.
Implementation
This
means installing the software on user machines. At times, software needs
post-installation configurations at user end. Software is tested for
portability and adaptability and integration related issues are solved during
implementation.
Operation and Maintenance
This phase confirms the software operation in
terms of more efficiency and less errors. If required, the users are trained
on, or aided with the documentation on how to operate the software and how to
keep the software operational. The software is maintained timely by updating
the code according to the changes taking place in user end environment or
technology. This phase may face challenges from hidden bugs and real-world
unidentified problems.
No comments:
Post a Comment