Spiral Model is a risk-driven software development process model with the amalgamation of waterfall model and iterative model. Spiral Model helps to implement software development elements of several process models for the software project based on unique risk patterns ensuring efficient development process.
Spiral model each phase in software engineering initiates with a design goal and ends with the client reviewing the progress. The development process in Spiral model in SDLC, starts with a small set of necessity and goes through each development phase for those set of requirements. The software engineering team enhances functionality for the additional requirement in every-increasing spirals until the application is ready for the production phase. The below figure very well explain Spiral Model:
Spiral Model Phases
Spiral Model Phases
Activities corresponding each phase
Planning
This phase includes guessing the cost, schedule and resources for the iteration. It also involves understanding the system requirements for continuous communication between the system analyst and the customer
Risk Analysis
Risk Analysis is the Identification of potential risk is done while risk mitigation strategy is planned and finalized
Engineering
The phase includes testing, coding and deploying software at the customer site
Evaluation
This phase concern Evaluation of software by the customer. Similarly, take account of identifying and monitoring risks such as schedule slippage and cost overrun
phase activities
Spiral Model Usage:
Spiral methodology is useful for medium to high-risk projects
When necessities are undecided and complex, Spiral model in SDLC is useful
Where modifications may require at any time
When risk and costs evaluation is important
Where long term project commitment is not feasible due to changes in economic priorities
For a large project spiral model in software engineering is used.
When releases are required to be frequent, spiral methodology is used
When creation of a prototype is applicable
When there is a budget constraint and risk evaluation is important.
For medium to high-risk projects.
Advantages and Disadvantages of Spiral Model
Advantages
Disadvantages
At a later stage Additional functionality or changes can be done.
Risk of not meeting the schedule or budget
Cost estimation becomes easy due to prototype building is done in small fragments
Spiral development works best for large projects only also demands risk assessment expertise
It is Continuous or repeated development helps in risk management
For its smooth operation spiral model protocol needs to be followed strictly
The Development is fast and features are added in a systematic way in Spiral development
In This model the Documentation is more as it has intermediate phases
There is always a space for customer feedback
Spiral software development is not advisable for smaller project, it might cost them a lot.
Changing requirements can be accommodated.
Management is more complex
Users see the system early.
Spiral model process is complex.
The risky parts can be developed earlier which helps in better risk management.
Spiral may go on indefinitely. Large number of intermediate stages requires excessive documentation.
The Basics of Software Quality Attributes: Software Quality Attributes are features that facilitate the measurement of performance of a software product by Software Testing professionals and include attributes such as availability, interoperability, correctness, reliability, learnability, robustness, maintainability, readability, extensibility, testability, efficiency, and portability. High scores in Software Quality Attributes enable software architects to guarantee that a software application will perform as the specifications provided by the client.
Availability This attribute is indicative as to whether an application will execute the tasks it is assigned to perform. Availability also includes certain concepts that relate to software security, performance, integrity, reliability, dependability, and confidentiality. In addition, top-notch availability indicates that a software-driven system will repair any operating faults so that service outage periods would not exceed a specific time value.
Interoperability Software-driven systems could be required to communicate and act in tandem to solve certain tasks. Interoperability describes the ability of two systems to engage in the exchange of information via certain interfaces. Therefore, Software Quality Assurance engineers must examine the interoperability attribute in terms of both syntactic and semantic interoperability.
Performance This attribute pertains to the ability of a software-driven system to conform to timing requirements. From a testing point of view, it implies that Software Testing engineers must check whether the system responds to various events within defined time limits. These events may occur in the form of clock events, process interruptions, messages, and requests from different users, and others.
Testability Software testability indicates how well a software-driven system allows Software Testing professionals to conduct tests in line with predefined criteria. This attribute also assesses the ease with which Software Quality Assurance engineers can develop test criteria for a said system and its various components. Engineers can assess the testability of a system by using various techniques such as encapsulation, interfaces, patterns, low coupling, and more.
Security This attribute measures the ability of a system to arrest and block malicious or unauthorized actions that could potentially destroy the system. The attribute assumes importance because security denotes the ability of the system to protect data and defend information from unauthorized access. Security also includes authorization and authentication techniques, protection against network attacks, data encryption, and such other risks. It is imperative for Software Testing professionals to regularly conduct updated security checks on systems.
Usability Every software-driven system is designed for ease of use to accomplish certain tasks. The attribute of usability denotes the ease with which users are able to execute tasks on the system; it also indicates the kind of user support provided by the system. The most well-known principle for this property is KISS (Keep It Simple Stupid). In addition, Software Quality Assurance engineers must test software to check whether it supports different accessibility types of control for people with disabilities. Usability has a critical and long standing bearing on the commercial fortunes of a software application or package.
Functionality This attribute determines the conformity of a software-driven system with actual requirements and specifications. Most Software Testing professionals view this attribute as crucial and a foremost requirement of a modern application, and would therefore advocate the performance of tests that assess the desired functionality of a system in the initial stages of Software Testing initiatives.