Our development policy provides a framework for the life cycle processes of software,
including acquisition, supply, development, operation, maintenance, and disposal. The
standard describes the processes, activities, and tasks required for the development and
maintenance of software. The necessary elements of the policy include:
1. Planning
Software requirements definition and management
Project planning and control
Risk management
2. Development
Software design
Software construction
Software integration
Software testing
Software installation and acceptance
Transition to operation
3. Operation
Operation and maintenance
Software configuration management
Problem resolution
4. Disposal
Software disposal
5. Support Processes
Documentation
Quality assurance
Verification and validation
Joint review
Audit
Planning:
This phase is focused on defining the scope of the project, identifying stakeholders
and their requirements, and developing a plan to guide the software development
process. The planning phase is critical to the success of the project, as it lays the
foundation for all subsequent activities.
The planning phase includes the following activities:
1. Software Requirements Definition and Management: This activity involves
identifying the requirements of the software being developed, and managing
those requirements throughout the project. This includes defining the functional
and non-functional requirements of the software, as well as any constraints or
assumptions that may impact the development process.
2. Project Planning and Control: This activity involves developing a plan to
guide the software development process. The plan should include a schedule, a
budget, and a list of resources required for the project. The plan should also
include a risk management strategy to identify and manage potential risks to
the project.
3. Risk Management: This activity involves identifying and managing risks to the
software development project. Risks can include anything that may impact the
success of the project, such as technical challenges, resource constraints, or
changes in project scope.
The planning phase is typically completed before any development work begins. The
outputs of the planning phase include a software requirements document, a project
plan, and a risk management plan. These documents serve as a roadmap for the
development team and provide a basis for measuring progress throughout the
software development life cycle. It is important to note that the planning phase is not
a one-time activity, and the plans and risk management strategy should be updated
throughout the project as needed.
Development:
This phase is focused on the actual development and creation of the software, based
on the requirements and plans established in the planning phase. The development
phase is where the design, construction, and testing of the software take place.
The development phase includes the following activities:
1. Software Design: This activity involves designing the software architecture
and identifying the components that make up the software. The design should
be based on the requirements established in the planning phase, and should
take into account any constraints or assumptions identified during the planning
phase.
2. Software Construction: This activity involves writing the code that makes up
the software, based on the design established in the previous activity. This
includes testing the code to ensure it meets the requirements established in the
planning phase.
3. Software Integration: This activity involves integrating the various
components of the software into a single, cohesive system. This includes testing
the integration to ensure it works as expected and meets the requirements
established in the planning phase.
4. Software Testing: This activity involves testing the software to ensure it works
as expected and meets the requirements established in the planning phase.
Testing should be both functional (testing to ensure the software performs as
expected) and non-functional (testing to ensure the software meets
performance, security, and other requirements).
5. Software Installation and Acceptance: This activity involves installing the
software in the target environment and verifying that it meets the requirements
established in the planning phase. This includes user acceptance testing, where
end-users test the software to ensure it meets their needs.
6. Transition to Operation: This activity involves transitioning the software from
development to operation. This includes documenting the software, training
end-users, and preparing the software for ongoing maintenance and support.
The development phase is typically the longest phase in the software development
life cycle, and involves significant collaboration between the development team and
other stakeholders. The outputs of the development phase include the final software
product, as well as documentation related to the design, testing, and installation of
the software.
Operations:
This phase is focused on the ongoing maintenance and support of the software
product that was developed in the previous phases. The operations phase is critical to
ensure that the software continues to function as expected and meets the needs of
end-users.
The operations phase includes the following activities:
1. Software Maintenance: This activity involves making changes and updates to
the software product to fix any defects, improve performance, or add new
features. Maintenance can be corrective (fixing defects), adaptive (adapting the
software to changing requirements), or perfective (improving the software's
functionality or performance).
2. Software Operation: This activity involves the day-to-day operation of the
software in its target environment. This includes monitoring the software to
ensure it is performing as expected, and taking action if any issues are
identified.
3. Software Support: This activity involves providing support to end-users of the
software product. This can include answering questions, providing training, and
troubleshooting any issues that end-users may encounter.
4. Software Retirement: This activity involves retiring the software product
when it is no longer needed. This includes removing the software from the
target environment and archiving any documentation related to the software.
The operations phase is a critical phase in the software development life cycle, as it
ensures that the software product continues to meet the needs of end-users and
remains functional over time. The outputs of the operations phase include updated
software versions, maintenance and support documentation, and retirement
documentation. It is important to note that the operations phase is ongoing, and
maintenance and support should be provided as long as the software product is in
use.
Disposal
Disposal phase does not include a specific "disposal" phase as part of the software
development life cycle. Instead, the activities related to retiring the software product
are included in the operations phase, which is the final phase of the software
development life cycle.
The retirement activities in the operations phase are focused on removing the
software product from the target environment and archiving any documentation
related to the software. This includes activities such as:
1. Removing the software product from the target environment: This
involves uninstalling the software product and removing any associated data
from the target environment.
2. Archiving software documentation: This involves archiving any
documentation related to the software product, including design
documentation, testing documentation, and user documentation. This
documentation may be needed for future reference or to support any legal or
regulatory requirements.
3. Disposing of hardware: If the software product was installed on specific
hardware, then disposing of that hardware may be necessary. This may involve
following specific procedures for the disposal of electronic waste, depending on
local regulations.
It is important to note that the disposal of the software product and associated
hardware is typically only performed when the software is no longer needed. In some
cases, the software may be retired or replaced, but the hardware may continue to be
used for other purposes. In these cases, the disposal of the hardware may not be
necessary.
Overall, the retirement activities in the operations phase of the software development
life cycle are focused on ensuring that the software product and associated
documentation are properly archived and disposed of, if necessary, in a manner that
meets any legal or regulatory requirements.
Support processes
The support processes are a set of processes that support the core processes of the
software development life cycle. These processes are designed to ensure that the
software development activities are carried out effectively and efficiently, and that
the resulting software product is of high quality and meets the needs of end-users.
The support processes are organized into the following categories:
1. Configuration Management: This process involves the management of the
software product and its related documentation throughout the software
development life cycle. Configuration management ensures that the software
product is identified and tracked, and that changes to the software and
associated documentation are managed and controlled.
2. Quality Assurance: This process involves the activities that are performed to
ensure that the software product meets the specified requirements and is of
high quality. Quality assurance activities include reviews, testing, and audits to
identify defects, verify that the software meets requirements, and ensure that
the software development process is carried out in a consistent and effective
manner.
3. Verification and Validation: This process involves the activities that are
performed to ensure that the software product meets the specified
requirements and is of high quality. Verification and validation activities include
reviews, testing, and analysis to verify that the software meets requirements,
validate that the software is fit for use, and ensure that the software is reliable
and maintainable.
4. Documentation: This process involves the creation and maintenance of
documentation related to the software development life cycle, including
requirements, design, testing, and user documentation. Documentation ensures
that stakeholders have a clear understanding of the software product, its
development, and its intended use.
5. Configuration Management Infrastructure: This process involves the
creation and maintenance of the infrastructure needed to support configuration
management, including tools and processes for identifying and tracking the
software product, managing changes, and controlling access to the software
and related documentation.
The support processes are essential for ensuring that the core processes of the
software development life cycle are carried out effectively and efficiently. They
provide the necessary tools, processes, and infrastructure to support the development
of high-quality software products that meet the needs of end-users.
Agile:
1. Our development team has implemented an Agile software development
process to improve the efficiency, quality, and speed of software delivery.
2. Agile System Our Agile system consists of the following key elements:
2.1 Agile Framework Our Agile framework is based on the Scrum methodology,
which is a popular Agile framework for software development. The Scrum
methodology is a lightweight framework that emphasizes collaboration, flexibility,
and continuous improvement.
2.2 Scrum Roles Our Scrum team consists of the following roles:
Product Owner: responsible for defining and prioritizing the product
backlog, ensuring that the development team has a clear understanding of
the product vision, and making decisions about the product.
Scrum Master: responsible for facilitating the Scrum process, removing any
obstacles that hinder the development team's progress, and ensuring that
the team follows the Scrum framework.
Development Team: responsible for designing, developing, testing, and
delivering software that meets the product vision.
2.3 Scrum Artifacts Our Scrum team uses the following Scrum artifacts:
Product Backlog: a prioritized list of features, enhancements, and bugs
that need to be developed to meet the product vision.
Sprint Backlog: a subset of the product backlog that contains the features
and enhancements that will be developed during the current sprint.
Sprint Goal: a clear and concise objective that defines what the
development team will accomplish during the current sprint.
Sprint Review: a meeting held at the end of each sprint to review the sprint
results and receive feedback from stakeholders.
Sprint Retrospective: a meeting held at the end of each sprint to reflect on
the sprint process and identify areas for improvement.
2.4 Scrum Ceremonies Our Scrum team follows the following Scrum ceremonies:
Sprint Planning: a meeting held at the beginning of each sprint to plan the
sprint goals, define the sprint backlog, and estimate the effort required to
complete the work.
Daily Scrum: a short meeting held every day to synchronize the
development team's activities and identify any obstacles that may hinder the
sprint progress.
Sprint Review: a meeting held at the end of each sprint to review the sprint
results and receive feedback from stakeholders.
Sprint Retrospective: a meeting held at the end of each sprint to reflect on
the sprint process and identify areas for improvement.
3. Agile Implementation Our Agile implementation includes the following
steps:
3.1 Backlog Management Our product owner maintains the product backlog, which
is a prioritized list of features, enhancements, and bugs that need to be developed
to meet the product vision. The product backlog is reviewed and refined regularly
to ensure that it reflects the current product vision and priorities.
3.2 Sprint Planning Our Scrum team holds sprint planning meetings to plan the
sprint goals, define the sprint backlog, and estimate the effort required to complete
the work.
3.3 Sprint Execution Our development team works together to complete the sprint
backlog items, ensuring that the work is completed according to the sprint goals
and meets the team's quality standards.
3.4 Sprint Review Our Scrum team holds sprint review meetings to review the
sprint results and receive feedback from stakeholders.
3.5 Sprint Retrospective Our Scrum team holds sprint retrospective meetings to
reflect on the sprint process and identify areas for improvement.
4. Conclusion Our Agile system provides an effective framework for
developing software that meets the product vision, while providing the
flexibility to adapt to changing requirements and market conditions. By
implementing our Agile system, we aim to improve the quality, efficiency,
and speed of software development, while promoting collaboration and
communication between development team and product owners.
Testing:
Our software development team recognises the importance of having a standardized
testing process for our products. A standardized process ensures that our software is
consistently tested, resulting in a higher quality end product. This document outlines
the testing process that has been implemented for our development team.
Testing Strategy: Our testing strategy is based on a combination of manual and
automated testing. The testing process is divided into two phases: functional testing
and non-functional testing.
Functional Testing: Functional testing focuses on the features and functionality of
the software. This phase includes the following types of testing:
1. Unit Testing: Developers write unit tests to ensure that their code works as
expected. These tests are automated using testing frameworks like JUnit or
NUnit.
2. Integration Testing: Integration testing ensures that different components of
the software work together correctly. Integration tests are automated and are
usually executed after unit tests.
3. System Testing: System testing verifies that the software meets the specified
requirements. This testing is done manually, and the test cases are
documented.
Non-Functional Testing: Non-functional testing focuses on the performance and
reliability of the software. This phase includes the following types of testing:
1. Performance Testing: Performance testing ensures that the software
performs well under different load conditions. We use tools like JMeter to
automate performance testing.
2. Security Testing: Security testing verifies that the software is secure and that
sensitive data is protected. This testing is done manually and through
automated tools like OWASP ZAP.
3. Usability Testing: Usability testing verifies that the software is easy to use
and that the user interface is intuitive. This testing is done manually, and the
test cases are documented.
Test Plan: Before any testing is done, a test plan is created. The test plan outlines
the scope of the testing, the testing strategy, and the resources required. The test
plan is reviewed and approved by the development team, quality assurance team,
and management.
Test Cases: Test cases are created for each feature of the software. The test cases
are designed to test the functionality and non-functionality of the software. The test
cases are reviewed and approved by the development team and quality assurance
team.
Test Execution: The test cases are executed by the quality assurance team. The test
results are documented, and any defects found are logged in the defect tracking
system.
Defect Tracking: A defect tracking system is used to track defects found during
testing. The defect tracking system ensures that all defects are documented,
prioritized, and fixed before the software is released.
Conclusion: This standardized testing process ensures that our software is
thoroughly tested and meets the specified requirements. The process also ensures
that any defects are found and fixed before the software is released.