A software life cycle model (also termed process model) is a
pictorial and diagrammatic representation of the software life cycle. A life
cycle model represents all the methods required to make a software product transit
through its life cycle stages. It also captures the structure in which these
methods are to be undertaken.
Stage 1: Feasibility
Study in Software
Engineering is a study to evaluate feasibility of proposed project or system. A feasibility study is carried out based on many purposes to analyze whether a software product will be right in terms of development, implantation,
contribution of project to the organization etc.
Types of Feasibility
Study : The
feasibility study mainly concentrates on below five mentioned areas:
1.Technical Feasibility
– In Technical
Feasibility current resources both hardware software along with required
technology are analyzed/assessed to develop project. This technical feasibility
study gives report whether there exists correct required resources and
technologies which will be used for project development.
2. Operational
Feasibility – In
Operational Feasibility degree of providing service to requirements is analyzed
along with how much easy the product will be to operate and maintain after
deployment.
3.. Economic Feasibility
– In Economic Feasibility study cost and benefit
of the project is analyzed. Means under this feasibility study a detail
analysis is carried out what will be cost of the project for development which
includes all required cost for final development like hardware and software
resource required, design and development cost and operational cost and so on.
4.
Legal Feasibility – In Legal Feasibility study project is analyzed in
legality point of view. This includes analyzing barriers of legal
implementation of project, data protection acts or social media laws, project
certificate, license, copyright etc.
5.
Schedule Feasibility – In Schedule Feasibility Study mainly timelines/deadlines
is analyzed for proposed project which includes how many times teams will take
to complete final project which has a great impact on the organization as
purpose of project may fail if it can’t be completed on time.
Stage
2: Requirement Analysis : Requirement
analysis is the most important and fundamental stage in SDLC. It is performed
by the senior members of the team with inputs from the customer, the sales
department, market surveys and domain experts in the industry. This information
is then used to plan the basic project approach and to conduct product
feasibility study in the economical, operational and technical areas. Software
requirement means requirement that is needed by software to increase quality of
software product. These requirements are generally a type of expectation of
user from software product that is important and need to be fulfilled by
software. Analysis means to examine something in an organized and specific
manner to know complete details about it.
1. Problem Recognition :
The main aim of requirement analysis is to fully understand main objective of requirement that includes why it is needed, does it add value to product, will it be beneficial, does it increase quality of the project, does it will have any other effect.
2. Evaluation and Synthesis :
Evaluation means judgement about something whether it is worth or not and synthesis means to create or form something. Here are some tasks are given that is important in the evaluation and synthesis of software requirement :
- To define all functions of software that necessary.
- To define all data objects that are present externally and are easily observable.
- To evaluate that flow of data is worth or not.
- To fully understand overall behavior of system that means overall working of system.
- To identify and discover constraints that are designed.
- To define and establish character of system interface to fully understand how system interacts with two or more components or with one another.
3. Specification:
The software
requirement specification (SRS) which means to specify the requirement whether
it is functional or non-functional should be developed. The organization of an
SRS is as follows:
1. Purpose
- Definitions
- Background
- System
overview
- References
2. Overall description
(i) Product
perspective
- System
Interfaces
- User
interfaces
- Hardware
interfaces
- Software
interfaces
- Communication
Interfaces
- Memory
constraints
(ii) Design
constraints
- Operations
- Site
adaptation requirements
(iii) Product functions
(iv) User characteristics
(v) Constraints, assumptions and dependencies
3. Specific requirements
(i) External interface requirements
(ii)Performance requirements
(iii)Logical database requirement
(iv)Software system attributes
- Reliability
- Availability
- Security
- Maintainability
- Portability
(v) Functional requirements
- Functional
partitioning
- Functional
description
- Control
description
(vi) Environment characteristics
- Hardware
- Peripherals
- Users
(vii) Other
4. Review:
After developing the SRS, it must be reviewed to check whether it can be improved or not and must be refined to make it better and increase the quality.
Stage 3: Software Design Process
The design phase of software development deals with transforming the customer requirements as described in the SRS documents into a form implementable using a programming language. The software design process can be divided into the following three levels of phases design:
1. Interface Design
2. Architectural Design
3. Detailed Design
Interface Design:
Interface
design is the specification of the interaction between a system and its
environment. this phase proceeds at a high level of abstraction with respect to
the inner workings of the system i.e, during interface design, the internals of
the systems are completely ignored and the system is treated as a black box.
Attention is focused on the dialogue between the target system and the users,
devices, and other systems with which it interacts.
Interface design should include the
following details:
A precise description of events in the
environment, or messages from agents to which the system must respond.
- A precise description of the events or messages that the system must produce.
- Specification of the data, and the formats of the data coming into and going out of the system.
- Specification of the ordering and timing relationships between incoming events or messages, and outgoing events or outputs.
Architectural Design:
Architectural design is the specification of the major components of a system, their responsibilities, properties, interfaces, and the relationships and interactions between them. In architectural design, the overall structure of the system is chosen, but the internal details of major components are ignored.
Issues in architectural design include:
- Gross decomposition of the systems into major components.
- Allocation of functional responsibilities to components.
- Component Interfaces
- Component scaling and performance properties, resource consumption properties, reliability properties, and so forth.
- Communication and interaction between components.
Detailed Design:
Design
is the specification of the internal elements of all major system components,
their properties, relationships, processing, and often their algorithms and the
data structures.
- Decomposition of major system components into program units.
- Allocation of functional responsibilities to units.
- User interfaces
- Unit states and state changes
- Data and control interaction between units
- Data packaging and implementation, including issues of scope and visibility of program elements
- Algorithms and data structures
Stage 4: Development or Coding:
Coding is the process of transforming the design of a system into a computer language format. This coding phase of software development is concerned with software translating design specifications into the source code. It is necessary to write source code & internal documentation so that conformance of the code to its specification can be easily verified. Coding is done by the coder or programmers who are more independent people than the designer. The goal is not to reduce the effort and cost of the coding phase, but to cut to the cost of a later stage. The cost of testing and maintenance can be significantly reduced with efficient coding.
Goals of Coding
- To translate the design of system into a computer language format: The coding is the process of transforming the design of a system into a computer language format, which can be executed by a computer and that perform tasks as specified by the design of operation during the design phase.
- To reduce the cost of later phases: The cost of testing and maintenance can be significantly reduced with efficient coding.
- Making the program more readable: Program should be easy to read and understand. It increases code understanding having readability and understandability as a clear objective of the coding activity can itself help in producing more maintainable software.
Stage 5: Software Testing :
Software Testing is a method to check whether the actual software product matches expected requirements and to ensure that software product is Defect free. It involves execution of software/system components using manual or automated tools to evaluate one or more properties of interest. The purpose of software testing is to identify errors, gaps or missing requirements in contrast to actual requirements.
What are the benefits of Software Testing?
Cost-Effective:
It is one of the important advantages of software testing. Testing any IT project on time helps you to save your money for the long term. In case if the bugs caught in the earlier stage of software testing, it costs less to fix.
Security:
It is the most vulnerable and sensitive benefit of software testing. People are looking for trusted products. It helps in removing risks and problems earlier.
Product quality:
It is an essential requirement of any software product. Testing ensures a quality product is delivered to customers.
Customer Satisfaction:
The main aim of any product is to give satisfaction to their customers. UI/UX Testing ensures the best user experience.
Software Maintenance is the process of modifying a software product after it has been delivered to the customer. The main purpose of software maintenance is to modify and update software applications after delivery to correct faults and to improve performance.
Need for Maintenance – Software Maintenance must be performed in order to:
- Correct faults.
- Improve the design.
- Implement enhancements.
- Interface with other systems.
- Accommodate programs so that different hardware, software, system features, and telecommunications facilities can be used.
- Migrate legacy software.
- Retire software.