Ch 1
Ch 1
Ch 1
1
Event driven programming 2023
System Design: The requirement specifications from first phase are studied in this phase and system
design is prepared. System Design helps in specifying hardware and system requirements and also
helps in defining overall system architecture.
Implementation: With inputs from system design, the system is first developed in small programs
called units, which are integrated in the next phase. Each unit is developed and tested for its
functionality which is referred to as Unit Testing.
Integration and Testing: All the units developed in the implementation phase are integrated into a
system after testing of each unit. Post integration the entire system is tested.
Deployment of system: Once the functional and non-functional testing is done, the product is
deployed in the customer environment or released into the market.
Maintenance: There are some issues which come up in the client environment. To fix those issues
patches are released. Also to enhance the product some better versions are released. Maintenance is
done to deliver these changes in the customer environment.
Waterfall Model Application
Every software developed is different and requires a suitable SDLC approach to be followed based on
the internal and external factors.
Some situations where the use ofWaterfall model is most appropriate are:
Requirements are very well documented, clear and fixed.
Product definition is stable.
Technology is understood and is not dynamic.
There are no ambiguous requirements.
Ample resources with required expertise are available to support the product.
The project is short
Advantages anddisadvantages of Waterfall Model
Advantages Disadvantages
Simple and easy to understand and use It does not allow for much reflection or revision
Easy to manage due to the rigidity of the Once an application is in the testing stage, it is
model. very difficult to go back and change something.
A schedule can be set with deadlines for No working software is produced until late during
each stage of development the life cycle.
Each phase has specific deliverables and a High amounts of risk and uncertainty.
review process. Not a good model for complex and object
Phases are processed and completed one oriented projects.
at a time. Poor model for long and ongoing projects.
2
Event driven programming 2023
Works well for smaller projects where Not suitable for the projects where requirements
requirements are very well understood. are at a moderate to high risk of changing. So risk
Clearly defined stages. and uncertainty is high with this process model.
Well understood milestones. It is difficult to measure progress within stages.
Easy to arrange tasks. Cannot accommodate changing requirements.
Process and results are well documented. Adjusting scope during the life cycle can end a
project. Integration is done as a "big-bang. At the
very end, which doesn't allow identifying any
technological or business bottleneck or
challenges early.
Prototype is a working model of software with some limited functionality. The prototype does not
always hold the exact logic used in the actual software application and is an extra effort to be
considered under effort estimation.
Prototyping is used to allow the users evaluate developer proposals and try them out before
implementation. It also helps understand the requirements which are user specific and may not have
been considered by the developer during product design.
Create prototypes of software applications i.e. incomplete versions of the software program being
developed.
A prototype typically simulates only a few aspects of, and may be completely different from, the final
product. Software prototyping is becoming very popular as a software development model, as it
enables to understand customer requirements at an early stage of development. It helps get valuable
feedback from the customer and helps software designers and developers understand about what
exactly is expected from the product under development.
3
Event driven programming 2023
Review of the Prototype: The prototype developed is then presented to the customer and the other
important stakeholders in the project. The feedback is collected in an organized manner and used
for further enhancements in the product under development
Revise and enhance the Prototype: The feedback and the review comments are discussed during
this stage and some negotiations happen with the customer based on factors like, timeand budget
constraints and technical feasibility of actual implementation. The changes accepted are again
incorporated in the new Prototype developed and the cycle repeats until customer expectations are
met.
Software Prototyping Application
Software Prototyping is most useful in development of systems having high level of user interactions
such as online systems. Systems which need users to fill out forms or go through various screens
before data is processed can use prototyping very effectively to give the exact look and feel even
before the actual software is developed. Software that involves too much of data processing and most
of the functionality is internal with very little user interface does not usually benefit from prototyping.
Prototype development could be an extra overhead in such projects and may need lot of extra efforts.
Inthe diagram above when we work incrementally we are adding piece by piece but expect that each
piece is fully finished. Thus keep on adding the pieces until it’s complete. As in the image above a
person has thought of the application. Then he started building it and in the first iteration the first
module of the application or product is totally ready and can be demoed to the customers. Likewise in
the second iteration the other module is ready and integrated with the first module. Similarly, in the
third iteration the whole product is ready and integrated. Hence, the product got ready step by step.
4
Event driven programming 2023
• The model is designed, implemented and tested incrementally (a little more is added each
time).
• Finished when satisfies all the requirements.
• Combines the elements of the waterfall model with the iterative philosophy of Prototyping.
1.1.4 Iterative
An iterative life cycle model does not attempt to start with a full specification of requirements. Instead,
development begins by specifying and implementing just part of the software, which can then be
reviewed in order to identify further requirements. This process is then repeated, producing a new
version of the software for each cycle of the model. In the diagram below when we work iteratively we
create rough product or product piece in one iteration, then review it and improve it in next iteration
and so on until it’s finished. As shown in the image above, in the first iteration the whole painting is
sketched roughly, then in the second iteration colors are filled and in the third iteration finishing is
done. Hence, in iterative model the whole product is developed step by step.
In iterative model, iterative process starts with a simple implementation of a small set of the software
requirements and iteratively enhances the evolving versions until the complete system is implemented
and ready to be deployed.
The key to successful use of an iterative software development lifecycle is rigorous validation of
requirements, and verification & testing of each version of the software against those requirements
within each cycle of the model. As the software evolves through successive cycles, tests have to be
repeated and extended to verify each version of the software.
Iterative and incremental model Application
Like other SDLC models, Iterative and incremental development has some specific applications in the
software industry. This model is most often used in the following scenarios:
5
Event driven programming 2023
Requirements of the complete system are clearly defined and understood.
Major requirements must be defined; however, some functionalities or requested
enhancements may evolve with time.
There is a time to the market constraint.
A new technology is being used and is being learnt by the development team while working
on the project.
Resources with needed skill set are not available and are planned to be used on contract basis
for specific iterations.
There are some high risk features and goals which may change in the future.
6
Event driven programming 2023
Spiral Model is very widely used in the software industry as it is in synch with the natural development
process of any product i.e. learning with maturity and also involves minimum risk for the customer as
well as the development firms. Following are the typical uses of Spiral model:
When there is a budget constraint and risk evaluation is important
For medium to high-risk projects
Long-term project commitment because of potential changes to economic priorities as the
requirements change with time
Customer is not sure of their requirements which is usually the case
Requirements are complex and need evaluation to get clarity
New product line which should be released in phases to get enough customer feedback
Significant changes are expected in the product during the development cycle
1.1.6 RAD (Rapid Application Development)
The RAD model is based on prototyping and iterative development with no specific planning involved.
The process of writing the software itself involves the planning required for developing the product.
RAD is a software development methodology that uses minimal planning in favor of rapid
prototyping. A prototype is a working model that is functionally equivalent to a component of the
product. In RAD model the functional modules are developed in parallel as prototypes and are
integrated to make the complete product for faster product delivery. Since there is no detailed
preplanning, it makes it easier to incorporate the changes within the development process. RAD
projects follow iterative and incremental model and have small teams comprising of developers,
domain experts, customer representatives and other IT resources working progressively on their
component or prototype. The most important aspect for this model to be successful is to make sure that
the prototypes developed are reusable.
Rapid Application development focuses on gathering customer requirements through workshops or
focus groups, early testing of the prototypes by the customer using iterative concept, reuse of the
existing prototypes (components), continuous integration and rapid delivery.
RAD Model Vs Traditional SDLC
The traditional SDLC follows a rigid process models with high emphasis on requirement analysis and
gathering before the coding starts. It puts a pressure on the customer to sign off the requirements
before the project starts and the customer doesn’t get the feel of the product as there is no working
build available for a long time.
The customer may need some changes after he actually gets to see the software, however the change
process is quite rigid and it may not be feasible to incorporate major changes in the product in
traditional SDLC. RAD model focuses on iterative and incremental delivery of working models to the
customer. This results in rapid delivery to the customer and customer involvement during the complete
development cycle of product reducing the risk of nonconformance with the actual user requirements.
7
Event driven programming 2023
RAD model can be applied successfully to the projects in which clear modularization is possible. If the
project cannot be broken into modules, RAD may fail. Following are the typical scenarios where RAD
can be used:
RAD should be used only when a system can be modularized to be delivered in incremental
manner.
It should be used if there’s high availability of designers for modeling
It should be used only if the budget permits use of automated code generating tools.
RAD SDLC model should be chosen only if domain experts are available with relevant
business knowledge
Should be used where the requirements change during the course of the project and working
prototypes are to be presented to customer in small iterations of 2- 3 months.
RAD is a type of incremental model. In RAD model the components or functions are developed in
parallel as if they were mini projects. The developments are time boxed, delivered and then assembled
into a working prototype. This can quickly give the customer something to see and use and to provide
feedback regarding the delivery and their requirements.
Advantages of the RAD model
Reduced development time.
Increases reusability of components
Quick initial reviews occur
Encourages customer feedback
Integration from very beginning solves a lot of integration issues
Disadvantages of RAD model
Depends on strong team and individual performances for identifying business requirements.
Only system that can be modularized can be built using RAD
Requires highly skilled developers/designers.
High dependency on modeling skills
Inapplicable to cheaper projects as cost of modeling and automated code generation is very
high.
8
Event driven programming 2023
Be on time delivery - The better way is to send the sample to the customer so that he can use that
software and give feedback. On the basis of feedback developer can take charge and developed the
software according to the need of customer.
Fix the problem - Before getting any solution of problem fix the problem which cause is customer
needs. After getting the problem we are trying to use alternate solution of that problem basis on time,
cost and risk factor.
Valuation of alternate design - When we know the need of customer then we observed much kind of
algorithms and architectural so that with the help of them we can build the software. We select that
alternate who have the quality of safety, alteration and more functional.
Selection of appropriate processmodel - Software development process model have a large area of
choice just like waterfall, prototype and spiral module are the suitable examples for this. But there is a
fact that every process is not suitable or in favor every time. So on the bases of need of software, area
of applications and most importantly risk factor should be sensible.
Minimum gap between client and developer - According to famous Dijkestra intellectual gap may be
describe, is the distance between the real world problem and the computerized solution to the problem.
If the maintenance of the software is easy then the gap willbe low. With the help of the object oriented
design and jack system of development method we can find that the structure of software which will be
near real world structure.
Design for change - The techniques or method which is used in development process of software
should have capacity of change.
Reduce tricks - We should try to reduce of those programs and code who makes compaction in that
process.
Management - In the comparisons of good technology, good management is the best option
because it helps the employees to motivate them for doing their duties in the proper way. Management
planning cannot be done for a long period because its base is time and situation which can change any
time. With a lack of resources a person who has deep knowledge of management can provide a
positive result in every case.
Right person is the base of success - For the success of any planning we need to experts, experienced
and skilled person. An expert can provide the best output with those sources who are not enough in
normal condition. On the other hand without experienced person becamefail in this condition. So
quality is the main part in the selection time of employees.
Use carefully - For getting the best output it is necessary to use different method and techniques with
carefully otherwise they provide the wrong output.
Keep updated - In the present time, this world is more progressive and competitive so to survive in the
present time it is necessary to stay updated every time for new technology and their risk factors.
9
Event driven programming 2023