Software Engineering Module I
Software Engineering Module I
• An important reason for developing a prototype is that it is impossible to “get it right” at first
attempt. One must plan to throw away the software in order to develop a good software later
as advocated by Brooks[1975].
Prototyping Model
• Software is developed through two major activities: Prototype construction and
iterative waterfall-based software development.
Prototype Development: It starts with initial requirement gathering phase. A
quick design is carried out and prototype is built. Developed prototyped is
submitted to the customer for evaluation. Based on the customer feedback, the
requirements are refined and the prototype is suitably modified. This cycle of
obtaining the customer feedback and modifying the prototype continues till the
customer approves the prototype.
Iterative Development: Once the customer approves the prototype, the actual
software is developed using iterative waterfall approach. In spite of the
availability of a working prototype, the SRS document is usually needed to carry
out traceability analysis, verification and test case design during the later phase.
Prototyping Model
Prototyping Model
• Even though the construction of a throwaway prototype might involve
incurring additional cost, for systems with unclear customer requirements and
for systems with unresolved technical issues, the overall development cost
usually turns out to be lower compared to an equivalent system developed
using the iterative waterfall model.
• By constructing the prototype and submitting it for user evaluation, many
customer requirements get properly defined and technical issues get resolved
by experimenting with the prototype.
• Strength: This model is most appropriate for projects that suffer from technical
and requirements risks.
• Weakness :It is not appropriate for the project for which risks can only be
identified after the development is underway.
Incremental Development Model
Incremental Development Model
• It is also known as successive version model and sometimes as the
incremental model.
• A simple working system with few basic features is built first and delivered
to the customer. Over many successive iterations successive versions are
implemented and delivered to the customer until the desired system is
realized.
• The requirements of the software are first broken down into several
modules or features that can be incrementally constructed and delivered.
• Plan is made for next increment and no long term plans are made. Hence, it
becomes easier to accommodate change requests from the customers.
• The development team first understand to develop the core features of the system which do not
invoke any services from other features.
• Non-core features need services from core features.
• Once the initial core features are developed, these are refined into increasing level of capability by
adding new functionalities in successive versions.
• Each incremental version is usually developed using an iterative waterfall model of development.
• As each successive version of the software is constructed and delivered to the customer, the customer
feedback is obtained on the delivered version and these feedback are incorporated in the next version.
• Each delivered version of the software incorporates additional features over the previous version and
also refines the features that were already delivered to the customer.
• After requirement gathering and specification , the requirements are split into several versions.
Starting with core(version1), in each successive increment, the next version is constructed using an
iterative model of development and deployed at the customer site.
• After n version full software is deployed.
Incremental Development Model
Advantages:
• Error Reduction: The core modules are used by the customer from
the beginning and therefore these get tested thoroughly. This reduces
chances of errors in the core modules of the final product leading to
greater reliability of the software.
• Incremental Resource deployment: This model obviates the need for
customer to commit large resources at one go for development of the
system. It also saves the developing organization from deploying large
resources and man power for a project in one go.
Evolutionary Model
Evolutionary Model
• In this model, software developed over a number of increments with successive
refinement till realised a full software.
• The requirement, plan, estimates and solution evolve over the iterations. Hence it is
also known as design a little, build a little, test a little, deploy a little model.
Advantage:
• Effective elicitation of actual cutomer requirements:
• Easy handling of change request.
Disadvantage:
• Feature division into incremental parts can be non-trivial
• Ad hoc design
Application: Object oriented software development projects and for large size projects.
Rapid Application
Development(RAD)
• This model has the features of both prototypes model and
incremental development model.
The major goals:
• To decrease the time taken to cost incurred to develop the software.
• To limit the cost of accommodating change requests.
• To reduce the communication gap between the customer and the
developers.
RAD Model
• Only through the process commenting on installed application that
the exact requirements can be brought out.
• The changes are incorporated through subsequent maintenance
efforts.
• This made the cost of accommodating the changes extremely high
and it usually took a long time to have a good solution in place that
could reasonably meet the requirements of the customers.
• RAD model minimize this cost by inviting and incorporating customer
feedback on successively developed and refined prototypes.
RAD Model
• Development takes place with a series of short cycles or iterations called one time
box.
• In each iteration, enhance the implemented functionality by small amount.
• During each time box, a quick and dirty prototype-style software for some
functionality is developed.
• The customer evaluates the prototype and gives the feedback on the specific
improvements that may be necessary.
• The prototype is refined based on the customer feedback and resue of existing code.
• The development team include a customer representative to clarify the requirements.
It reduces the communiction gap between both party. Team consists of 5-6 members.
• It also uses specialized tools for visual style of development and use of reusable
components.
Application of Rad Model
• Customized software:
• Non-Critical Software:
• Highly constrained project scheduled:
• Large size software:
Unsuitable for RAD model
• Generic product
• Requirement for optimal performance
• Lack of simiar products
• Monolithic entity
AGILE Development Models
• Capers Jones carried out the research invloving 800 real life software
development projects and concluded that on the average 40% of the
requirements arrive after the development has already begun.
• In mid-1990s, the agile model was designed to adapt change request
quickly. It also reome the the activities that may not be necessary for
a specific project to avod waste of time and effort.
• Agile model refers a group of development process having a subtle
difference among themselves with similar characteristics.
• Some popular agile models are: Crystal, Atern, Feature-drien
development, Scrum, XP, lean development, Unified process
Agile Model
• In this model requirements divide into many small parts that can be incrementally
developed.
• Each incremental part is developed over an interation and intended to be small so that easily
manageable which is lasting for 2 weeks.
• The end date does not change. The delivery date is called sarcosanct.
• Reduction of functionality during a time box may occur on necessary.
• A cental principle of the agile model is frequent the delivery of each increment to the
customer after each time box .
• Stakeholders and customer representative review the progress made and re-evaluate the
requirements.
• It allows face to face communication over written documents .
• Team size is 5-9. and advise for small project. But large project, it may perfom through
several braches of different locations with help of videoconferencing communication.
High lights of Agile Model
• As per the menifesto of 2001:
• Working software over comprehensive document
• Frequent delivery of incremental version of the software to customer .
• Change request on requirement are encouraged
• Problem sort out through face to face discussion
• It also deploys pair programming.
Advantages:
• Faster work due to informal communication with tacit knowledge.
Disadvantage: Lack of document leaves confusion that create difficulty to take
decision like design decision by external eperts
• Maintenance become a problem
Extreme Programming
• It is proposed by Kent back in 1999. Its pholosophy: If something is known to be beneficial, why not put it to constant
use.
Some Activities that practice in XP
• Coding: Drawing diagram will transformed to code, scriptinga web based system & choosing alternative
solutions .
• Code review: It Suggest pair programming.
• Testing: XP suggests test-driven development(TDD) to continually write and execute test cases.
• Incremental Development:Helps to get customer feedback. It suggests that the team should come up
with new increments every few days.
• Simplicity:Once the simplest thing works, other aspects can be introduced through refactoring.
• Design:Every body should design daily. This can be achieved through refactoring , wherby a working
code is improved for efficiency and maintainability.
• Integration Testing: Developers should achieve continuous integration by building and performing
integration testing several times a day.
• Feedback: It argue that frequent contact with customer makes the development effective.
XP (Extreme Programming) model
• XP is based on frequent release (Iteration) during which the developers implement
“User Stories”.
• On the basis of the user story, the project team proposes a” metaphor”-a common
vision of how the system would work.
• The development team may decide to construct a spike for some feature.
• Spike is very simple program that is constructed to explore the suitability of a solution
being proposed. Spike is like a prototype.
• Applicability of extreme programming model.
• Projects involving new techology or research projects.
• Small Projects: Extreme programming was proposed in the context of small teams as
face to face meeting easier to achieve.
• XP is not suitable for stable requirement projects and safety critical system.
Scrum
• In this model, problem is divided into small parts that can be incrementally developed and
delivered over time boxes that are called sprints.
• Software get develop over a series of manageable chunks.
• Each sprint typically takes couple of weeks.
• At the end of the each sprint, stakeholders and team members meet to assess the progress made
and stakeholders suggest to the development team for any changes of features that may already
being developed and overall improvement that may feel necessary.
• Here, the team members assume three fundamental roles-software owner, scrum master and
team member.
• Software owner is responsible for communicating the customer vision of the software to the
development team.
• The scrum master acts as a liaison between the software owner & the team to facilitate the
development work.
SPIRAL Model
• The number of loops of spiral is not fixed that vary in different project.
• Each loop of the spiral is called a phase of the software process.
• Over each loop, features of the product are elaborated & analysed & risks at that point of
time are identified that resolved by pototyping.
• Each phase is split into four sectors (quadrants).
• In the first quadrant: Few features are identified, objectives are investigated, elaborated and
analysed. Also alternative solutions are for the phase under consideration are proposed.
• Second Quadrant: Supports coping up with risks by providing the scope to build a prototype
at every phase of software development.
• Third Quadrant: Develop the next level of the software.
• Fourth Quadrant: Reviewing the the results of the stages traveres so far and plan forthe next
iteration of the spiral
SPIRAL Model
• The radius of the spiral at any point represents the cost incurred in the
project so far. The angular dimension represents the progress made so far in
the currentphase.
• In this model, the project manager dynamically determine the number of
phases as the project progresses.
• To mkae the project more efficient, the different features of the software that
can be developed through parallel cycles are identified.
• For project having many unknown risks, spiral model would be most
appropriate development model to follow.
• It is not suitable for outsoured project.
• It is also called meta model since it subsumes all the lifecycles model.
SPIRAL Model
Comparion of different Life Cycle
Models
• Classical water fall model is the basic model that provide feedback path in
iterative waterfall model suitable for well understood project.
• The prototyping model is suitable for projects for which either the user
requirements or the technical aspects are not well understood.
• Evolutionary development is suitable for large problems which can be
decomposed into a set of modules for incremental development. example object
oriented development projects.
• Spiral model is suitable for development of technically challenging and large
software that are prone to several kinds of risks. If risks are difficult to anticipate
at the beginning, than spiral model is used.
• The important advantage of incremental model is that it reduces the customer’s
trauma of getting used to an entirely new system.
Thank You