COS 202 Note
COS 202 Note
Characteristics of Software
1) Software is engineered, not manufactured: Software development and
hardware development are two different activities. A good design is a
backbone for both the activities. Quality problems that occur in hardware
manufacturing phase can not be removed easily. On the other hand, during
software development process such problems can be rectified. In both the
activities, developers are responsible for producing qualitative products.
2) Software does not wear out: In the early stages of the hardware
development process, the failure rate is very high because of manufacturing
defects. But after correcting such defects the failure rate gets reduced. The
failure rate remains constant for some period of time and again it starts
increasing because of environmental maladies (extreme temperature, dusts,
and vibrations).
On the other hand software does not get affected by such environmental
maladies. Hence ideally it should have an "idealized curve". But due to some
undiscovered errors the failure rate is high and drops down as soon as the
errors get corrected.
Hence in failure rating of software the "actual curve" is as shown below:
During the life of software if any change is made, some defects may get
introduced.
This causes the failure rate to be high. Before the curve can return to its
original steady state another change is requested and again the failure rate
becomes high.
• Thus the failure curve looks like a spike. Thus frequent changes in software
cause it to deteriorate.
Another issue with software is that there are no spare parts for software.
If a hardware component wears out it can be replaced by another component
but it is not possible in case of software.
Therefore software maintenance is more difficult than hardware maintenance.
4. On time delivery - It is very difficult to predict the exact time on which the
software can be completed. But a systematic development of software can
lead to meeting the given deadline.
7. Ease of reuse - Use the same software in different systems and software.
Environments reduce development costs and also improve reliability. Hence
reusability of developed software is an important property.
Waterfall Model
The waterfall model is also called the linear sequential model or Classic life
cycle model.
It is the oldest software development paradigm. This software development
model suggests a systematic, sequential approach to software development.
The software development starts with the requirement gathering phase. Then
progressing through analysis, design, coding, testing, maintenance and
update.
Phases of The Waterfall Model
1. Planning
2. Requirement
3. Software System Design
4. Implementation
5. Testing
6. Product Release
7. Maintenance and Updates
The project team creates a small prototype of the final software for the users.
This version is used to get feedback from the users and also check usability
and feasibility of the design. If there are any issues that came into light while
using the prototype, they are noted down and fixed. Such issues do not make
it to the final software product. Such a method is used when you are not sure
of what your users might like or not like. This gieves the development team a
chance to perform risk analysis before putting the original product out in the
market. In prototyping, you are involved throughout the development and
design process. This way, the users will clearly understand the requirements
of the product. Furthermore, the prototypes are meant to be discarded once
they have been tested. Yet it is not uncommon when a prototype after testing
and development is upgraded to the final product.
Phases of Prototyping
1. Establish prototype objective
2. Define prototype functionality
3. Develop prototype
4. Evaluate prototype
Advantages of Prototyping
1. Here, errors can be detected easily
2. You can create a better solution with user feedback
Disadvantages of Prototyping
1. The complexity of the product may increase
2. The process may become time consuming
Agile Software Development Model
The agile approach is the most popular software development
methodology(i.e system development methodology). This is due to the fact
that it is highly dynamic and iterative which leads to fewer errors in the final
software product. In fact, according to a survey by Goatfilm, agile has been
considered the best development model. This model is the exact opposite of
the waterfall model. Agile means fast and flexible and the methodology takes
on it’s name. The development team can easily make changes to the initial
plans. Infact this methodology is for almost all projects. In agile development
model, you do not need a complete list of requirements, you can explore and
find out more as you go along. You do not have to develop all the
functionalities at once, you can develop some features and check the user
response before taking a step ahead. This will save you from putting too much
effort that might go to waste. Agile processes follow a flexible and iterative
approach in which there is constant user involvement to in order to understand
their mindset, carry out a project risk assessment and bring about project
improvement. Scrum, crystal, agile modelling(AM) extreme programming(EP)
are some examples of agile methods. Agile development model is also known
as the iterative model.
Phases of Agile Development Model
1. Requirement
2. Design
3. Development
4. Testing
5. Deployment
6. Feedback and Validation
7. Plan the next phases
Evolutionary Model
It is also called successive version model or incremental model. At first, a
simple working model is built. Subsequently, it undergoes functional
improvement and we keep on adding more functionalities until the desired
system is built.
Applications
1. Large projects where you can easily find modules for incremental
implementation, often used when the customer wants to start using the
core features rather than waiting for the full software.
2. Also used in object oriented software development because the system
can be easily portioned into units of objects.
Advantages
1. User gets a chance to experiment partially developed software
2. Reduce the errors because the core models gets tested
thoroughly
3. The model is less expensive compared to others
Disadvantages
1. It is difficult to divide the problem into several versions that will be
acceptable to the customer which can be incrementally implemented
and delivered
2. The process can be time consuming
3. It requires planning even for future updates.