SDLC - Assignment 2 Frontsheet
SDLC - Assignment 2 Frontsheet
Student declaration
I certify that the assignment submission is entirely my own work and I fully understand the consequences of plagiarism. I understand
that making a false declaration is a form of malpractice.
Grading grid
P5 P6 P7 M3 M4 M5 M6 D3 D4
❒ Summative Feedback: ❒ Resubmission Feedback:
I. Table of Contents:
Contents
I. Table of Contents: .................................................................................................................................2
II. Introduction:..........................................................................................................................................4
III. Body:..................................................................................................................................................4
Undertake the software investigation to meet the business need using appropriate software
analysis tools/techniques to carry out a software investigation and create a supporting
documentation. You may submit this task in the form a report structured with background
information, problem statements, data collection process and summary etc. ....................................6
a) Identify the stakeholders, theirs roles and interests in the case study. ...........................................6
b) Discuss the technique (s) you did use to obtain the requirements. ...............................................11
2. (P6) Analyze the requirements that you identified in Task 1 using a combination of structural and
behavioral modelling techniques that you have learnt. .........................................................................14
You will explain how Mock-up, and Wireframe are used in the project. You can use Figma to
design at least 5 interfaces of the NEI project to justify that it matches users’ requirements. .........17
You will explain which architecture (client – server, n-tier, microservices, etc.) is suitable for
the project with clear illustrations and why........................................................................................18
Then you will address which technical solution stack could be suitable to implement the
project with clear explanations. ..........................................................................................................18
Use the PHP & MySQL programming languages to implement those interfaces according to the
requirements of the specific use case (at least 2 use cases as described in P6).................................18
4. (M3) Analyse how software requirements can be traced throughout the software lifecycle........19
Reference to your task above that required some level of intensive research work analyse how
software requirements can be traced throughout the software lifecycle ..........................................19
a) Discuss sofware quality atributes that are applicable to the project. ........................................20
b) Discuss two quality assurance techniques that can help improve the sofware quality in the
project. ................................................................................................................................................25
Define Finite State Machine (FSM) and Extended State Machine Language (ESML) ..................31
Software behavioural design techniques, such as FSM and ESML, help define system
behaviour. FSM are mathematical models with finite states, like a light switch, while ESML allows
for more complexity. Behavioural tools, like Sequence and Use Case Diagrams visualise interactions
and functionality, respectively. ...........................................................................................................32
There are also various software behavioural tools, like Sequence Diagrams and Use Case
Diagrams. A sequence diagram visualises interactions between different parts of a system, for
example, the communication sequence in a login operation. Draw a SequenceDiagram showing
operations: adding, editing, deleting user information of the NEI system .........................................33
7. (M6) Differentiate between a finite state machine (FSM) and an extended FSM, providing an
application for both. ................................................................................................................................34
Finite State Machine (FMS) .........................................................................................................34
8. (D3) Evaluate the process of undertaking a systems investigation with regard to its effectiveness
in improving a software quality...............................................................................................................36
Use Of Function Design Paradigm In The Software Development Life cycle To Improve
Software Quality ..................................................................................................................................36
Conclusion. ..................................................................................................................................39
9. (D4) Discuss how the data-driven approach improves the reliability and effectiveness of software.
41
Data Driven Sofware For Improvement Of Reliability And Efectiveness Of The Sofware...........41
Improving The Dependability And Efectiveness Of The Sofware Using Data Driven Sofware ....45
V. References: ..........................................................................................................................................49
II. Introduction:
In the current digital age, software development is not only a need but also a key
factor determining the success of businesses. FPT, one of the leading companies in the
field of information technology in Vietnam, has constantly proved its important role
through building and deploying breakthrough software solutions, bringing real value to
customers and the community. Building a strong foundation is an important first step in
the software development process at FPT. From researching and applying the latest
technologies to building a flexible and innovative development environment, every effort
is directed towards the goal of creating superior software products. At FPT, customers are
always at the center of all activities. Listening to and understanding the needs of our
customers helps us create the most suitable software solutions, from enterprise
applications to high-end technology products. With a team of talented engineers and
developers, FPT constantly invests in improving technical capacity. From applying
advanced software development methodologies to using leading technology tools and
platforms, we are always at the forefront of delivering the best quality products. The
software implementation process does not stop at development but also requires
constant care and support. FPT is committed to accompanying customers from
deployment to operation, ensuring that products always operate efficiently and meet
their needs.
III. Body:
a) Identify the stakeholders, theirs roles and interests in the case study.
o Introduction
A case study is not a formal scientific research report, but it is written for a lay
audience. It should be readable and follow the general narrative that was determined in
the first step. The introduction should provide background information about the case
and its main topic. It should be short, but should introduce the topic and explain its
context in just one or two paragraphs. An ideal case study introduction is between three
and five sentences.
The case study must be well-designed and logical. It cannot contain opinions or
assumptions. The research question must be a logical conclusion based on the findings.
This can be done through a spreadsheet program or by consulting a linguistics expert.
Once you have identified the major issues, you need to revise the paper. Once you have
revised it twice, it should be well-written, concise, and logical.
Clarity in a case study introduction should be at the heart of the paper. This section
should explain why the case was chosen and how you decided to use it. The case study
introduction varies according to the type of subject you are studying and the goals of the
study. Here are some examples of clear and effective case study introductions. Read on
to find out how to write a successful one. Clarity in a case study introduction begins with
a strong thesis statement and ends with a compelling conclusion.
A good case study introduction serves as a map for the reader to follow. It should
identify the research problem and discuss its significance. It should be based on extensive
research and should incorporate relevant issues and facts. For example, it may include a
short but precise problem statement. The next section of the introduction should include
a description of the solution. The final part of the introduction should conclude with the
recommended action. Once the reader has a sense of the direction the study will take,
they will feel confident in pursuing the study further.
In the case of social sciences, case studies cannot be purely empirical. The results
of a case study can be compared with those of other studies, so that the case study’s
findings can be assessed against previous research. A case study’s results can help support
general conclusions and build theories, while their practical value lies in generating
hypotheses. Despite their utility, case studies often contain a bias toward verification and
tend to confirm the researcher’s preconceived notions.[1]
o Identify the stakeholders, theirs roles and interests
Every project has "stakeholders", forming the "human element" of the project
management paradigm. As the name implies, a project stakeholder is any individual or
entity with a "stake" in the project at hand (i.e. something to lose, and something to
gain). This "stake" drives behavior, and behavior drives results.
If you want your project to succeed, with minimal conflicts, you need to get every
stakeholder fully "engaged" and motivated. Engagement and participation instills pride
of ownership, leading to better results, delivered in a more productive manner. The
ability to "engage" begins with a full understanding of stakeholder identity and assigned
role, vested interest, accountability, and the power to influence resulting outcomes. In
procedural terms, this "understanding" is obtained through the stakeholder analysis.[2]
• Allow users to search for environmental data by location, pollutant type, and date range.
• Enable users to download environmental data in various formats (e.g., CSV, Excel).
• Provide users with tools to visualize environmental data (e.g., charts, maps).
• Implement functionalities for authorized users to upload new environmental data.
• Create functionalities for managing user accounts and access levels.
• Security: The system should be secure and protect sensitive environmental data.
• Performance: The system should be responsive and able to handle a high volume of users
and data requests.exclamation
• Scalability: The system should be scalable to accommodate future growth in data and
users.
• Availability: The system should be highly available and minimize downtime.
• Usability: The system should be user-friendly and easy to navigate for users with varying
technical skills.
• Maintainability: The system should be well-documented and easy to maintain.
• A user should be able to log in to the system using a username and password.
• The system should display a list of all products in the database.
• A user should be able to add new items to a shopping cart.
Non-Functional Requirements (NFRs), on the other hand, specify how the system
should behave. They address the quality attributes of the software, such as performance,
usability, security, and reliability. NFRs essentially answer the question "how" the system
should fulfill the functionalities defined by FRs.[5]
• FRs inform NFRs: The functionalities defined by FRs can influence the non-
functional requirements of the system. For example, a complex data processing task in an
FR might lead to an NFR that emphasizes high performance.
• NFRs can constrain FRs: NFRs can sometimes restrict the design and
implementation of FRs. For instance, a limited memory capacity (NFR) might constrain
the complexity of features (FRs) that can be implemented in the system.
b) Discuss the technique (s) you did use to obtain the requirements.
o Introduction
• Interviews: Conducting interviews with stakeholders, users, and subject matter experts
helps gather insights. Open-ended questions allow for detailed discussions about needs,
expectations, and constraints.
• Workshops: Collaborative workshops involve stakeholders, designers, and developers.
Techniques like brainstorming, storyboarding, and role-playing help identify
requirements collectively.
• Surveys and Questionnaires: Distributing surveys or questionnaires to a wider audience
provides quantitative data. These can be useful for understanding user preferences, pain
points, and priorities.
• Observations: Observing users in their natural environment helps uncover implicit
requirements. This technique is particularly valuable for understanding user workflows
and pain points.
• Prototyping: Creating low-fidelity or high-fidelity prototypes allows stakeholders to
visualize the system. Feedback from prototypes helps refine requirements iteratively.
• Use Cases and User Stories: Use cases describe interactions between actors and the
system, while user stories focus on specific user needs. Both techniques help capture
functional requirements.
• Document Analysis: Reviewing existing documents, such as business process manuals,
legacy system documentation, and regulations, helps identify relevant requirements.
• Domain Modeling: Building a domain model using concepts, relationships, and attributes
helps clarify the problem domain and identify requirements.
• Requirements Workshops: Facilitated sessions with stakeholders to elicit, analyze, and
prioritize requirements collaboratively.
• Context Diagrams and Data Flow Diagrams: Visual representations of system boundaries,
processes, and data flows aid in understanding requirements.
- One-on-one interview
Introduce yourself and summarize the project, including its scope and any
timelines. Build rapport with the person you're interviewing to gain their buy-in so they
are more likely to give you good input. Let them know the overall topics you plan to
discuss in your interview gathering session.
- Group interviews: work best with interviewees of the same job position or level,
as they are familiar with the topics at hand and what areas of opportunity exist. Having a
time constraint also generates more urgent information sharing, like scheduling the
session for only one hour versus two. Because people justify their viewpoints with
supporting evidence in front of others, you can often gain deeper insights than on a one-
on-one interview.
- Brainstorming is a common technique used early in a project because it often acts
as a starting point. With brainstorming, you gather as many ideas as possible from as
many people as possible to identify, categorize and assign tasks, opportunities and
potential solutions quickly. Brainstorming sessions work well in group settings and it is
important to take notes on generated ideas.
- A focus group is a method of market research with a set group of participants to
garner feedback. The focus group can offer input about the needs, problems or
opportunities to identify and create project requirements or they can validate and refine
ones already brought out. The focus group participants can be employees of the client or
representative of the users for this work.
- Offering a survey or questionnaire allows you to collect information from many
people in a relatively short amount of time, particularly helpful for interacting with people
in different geographic locations and also good for budget savings and time
constraints.[7]
o Conclusion.
• Holistic Approach: Consider a mix of techniques rather than relying solely on one. Each
technique provides unique insights, and combining them ensures a comprehensive
understanding of user needs.
• Stakeholder Collaboration: Engage stakeholders early and often. Their input is invaluable
for capturing diverse perspectives and aligning requirements with business goals.
• Iterative Refinement: Requirements evolve throughout the project. Regularly revisit and
refine them based on feedback, changing priorities, and new insights.
• Clear Documentation: Document requirements clearly, using standardized formats like
use cases, user stories, and domain models. Clarity reduces ambiguity and aids
communication.
• Balance Flexibility and Specificity: Strive for a balance between flexibility (to
accommodate changes) and specificity (to avoid ambiguity). Well-defined requirements
prevent scope creep.
• User-Centric Approach: Understand the end users’ context, pain points, and goals.
Empathize with their needs to create a system that truly serves them.
• You will explain how Mock-up, and Wireframe are used in the project. You
can use Figma to design at least 5 interfaces of the NEI project to justify
that it matches users’ requirements.
- Mock up and Wireframe Usage: Once you've got the structure down with wireframes,
mockups add the visual flair. This is where your design starts to look like the final product,
with colors, typography, and images.
Mastering wireframes and mockups is essential for design professionals keen on refining
their craft. They're more than steps in the design process; they're your roadmap and your
canvas. And with tools like Miro, Sketch, and Figma, you've got everything you need to
turn good ideas into great user experiences.
• Then you will address which technical solution stack could be suitable to
implement the project with clear explanations.
• Traceability
Traceability is the foundational component of an RTM. It refers to the ability to
trace or map something, in this case, individual requirements within a larger project
lifecycle. Traceability tracks project requirements, their status towards completion, and a
record of each test that has been run for each requirement.
Within the RTM model, there are three types of traceability: forward, backward,
and bidirectional.
Forward traceability – The ability to identify and outline future actions towards
requirement completion, such as tests and modifications.
Backward traceability – Backward traceability works inversely to forward
traceability by mapping test cases and project work back to specific requirements,
preventing scope creep and ensuring that no unnecessary work is completed.
The RTM proves that predetermined project requirements are met while
providing a record of any testing, issues, and completed items. By using an RTM, teams
ensure that test cases are aligned with the needs of the project.
• Introduction
d. Security: Security is the software's ability to protect itself and its data from
unauthorized access, modification, or destruction. Robust security measures are essential
for protecting sensitive information.
The following factors are used to measure Software Quality. Each attribute can
be used to measure product or service performance. These attributes can be further used
for Quality Assurance as well as Quality Control.
Quality Assurance activities are oriented towards the prevention of the
introduction of defects and Quality Control activities are aimed at detecting defects in
products and services.[8]
b) Discuss two quality assurance techniques that can help improve the
sofware quality in the project.
• Introduction
Software quality is the degree to which a software application meets its specified
requirements. High-quality software performs its intended functions without errors or
defects. Software quality is a measure of how well a software system satisfies the needs
of its users, as well as the industry standards and best practices.
Software quality is a multidimensional concept that encompasses various aspects
such as functionality, reliability, maintainability, usability, efficiency, portability, and
security. These aspects are crucial for ensuring that the software meets the needs of its
users and performs reliably and efficiently in different environments.
Software quality is achieved through various activities and processes such as
requirements analysis, design, coding, testing, and maintenance. These activities are
carried out by software developers, testers, and quality assurance professionals to ensure
that the software is developed to high standards of quality.[10]
• Conclusion
In conclusion, the success of any software project heavily relies on its adherence
to various quality attributes that ensure its effectiveness, efficiency, reliability, and
maintainability. Throughout this discussion, several key software quality attributes have
been highlighted as applicable to the project:
• Define Finite State Machine (FSM) and Extended State Machine Language
(ESML)
- Finite State Machine:
The finite state machines (FSMs) are significant for understanding the decision
making logic as well as control the digital systems. In the FSM, the outputs, as well as the
next state, are a present state and the input function. This means that the selection of the
next state mainly depends on the input value and strength lead to more compound
system performance. As in sequential logic, we require the past inputs history for deciding
the output. Therefore FSM proves very cooperative in understanding sequential logic
roles. Basically, there are two methods for arranging a sequential logic design namely
mealy machine as well as more machine. This article discusses the theory and
implementation of a finite state machine or FSM, types, finite state machine examples,
advantages, and disadvantages.
The definition of a finite state machine is, the term finite state machine (FSM) is
also known as finite state automation. FSM is a calculation model that can be executed
with the help of hardware otherwise software. This is used for creating sequential logic
as well as a few computer programs. FSMs are used to solve the problems in fields like
mathematics, games, linguistics, and artificial intelligence. In a system where specific
inputs can cause specific changes in state that can be signified with the help of FSMs.[11]
- Extended State Machine Language:
Extended State Machine Language (ESML) is a specific language used to design
and describe FSMs. It provides a formal way to represent the states, transitions, and
actions of an FSM. Think of ESML as a set of instructions for building your FSM roadmap.
• Software behavioural design techniques, such as FSM and ESML, help
define system behaviour. FSM are mathematical models with finite states,
like a light switch, while ESML allows for more complexity. Behavioural
tools, like Sequence and Use Case Diagrams, visualise interactions and
functionality, respectively.
When creating new software, many programmers find it easier to just start coding
without any prior formal plan. Experience has convinced them that there may not be a
design method appropriate for their project or that any formal planning wastes too much
time without significantly enhancing the quality of the final product. However, the
concerns for good software engineering and software quality indicate that any design
method that is simple to use and that helps create better code and documentation should
be welcomed by the majority of software practitioners.
A common approach these days is to apply design patterns when planning and
implementing a software project. A finite state machine (FSM) is one design pattern;
other patterns not discussed here include consumer/producer, message queuing,
master/slave, and so forth. A variety of design patterns could be applicable at various
stages of a software project, from the initial overall concept to the lowest level coding
phase.
This article is a brief and practical tutorial in designing software using finite state
machines. It will lead the reader from the initial design steps through the creation of
source code. The employment of an FSM model has become fairly common in many
software applications, particularly when a project specifies the use of the Unified
Modeling Language (UML).
Note however, that this writing makes no other reference to UML and requires no
exceptional knowledge other than basic programming concepts and some common
sense.[12]
• There are also various software behavioural tools, like Sequence Diagrams
and Use Case Diagrams. A sequence diagram visualises interactions
between different parts of a system, for example, the communication
sequence in a login operation. Draw a Sequence Diagram showing
operations: adding, editing, deleting user information of the NEI system
7. (M6) Differentiate between a finite state machine (FSM)
and an extended FSM, providing an application for both.
Both finite state machines (FSMs) and extended finite state machines (EFSMs) are
automata models used to represent systems with a limited set of states and transitions
between them. However, EFSMs offer some additional capabilities compared to basic
FSMs.
Here's a breakdown of the key differences:
• Analogy: Think of an FSM as a simple light dimmer with pre-set levels (low,
medium, high). An EFSM would be like a smart dimmer that adjusts based on the time of
day or room occupancy.[17]
8. (D3) Evaluate the process of undertaking a systems
investigation with regard to its effectiveness in improving
a software quality.
Software paradigm refers to method and steps, which are taken while designing
the software. Programming paradigm is a subset of software design paradigm which is
future for other a subset of software development paradigm. Software is considered to
be a collection of executable programming code, associated libraries, and
documentation. Software development paradigm is also known as software engineering,
all the engineering concepts pertaining to developments software applied. It consists of
the following parts as Requirement Gathering, Software design, Programming, etc. The
software design paradigm is a part of software development. It includes design,
maintenance, programming.
• Logic paradigm: This paradigm is based on the idea that a program is a set
of logical statements that can be used to infer new information. It is often used in
languages such as Prolog and Mercury.
• Agile model: This model is based on the idea that software development is
an iterative process, with small.[19]
Pure functions: These functions have two main properties. First, they always
produce the same output for same arguments irrespective of anything else.
Secondly, they have no side-effects i.e. they do not modify any arguments or local/global
variables or input/output streams. Later property is called immutability. The pure
function’s only result is the value it returns. They are deterministic. Programs done using
functional programming are easy to debug because pure functions have no side effects
or hidden I/O. Pure functions also make it easier to write parallel/concurrent applications.
When the code is written in this style, a smart compiler can do many things – it can
parallelize the instructions, wait to evaluate results when needing them, and memorize
the results since the results never change as long as the input doesn’t change.
• Conclusion.
Additional Considerations:
Data-driven software development accepts the central role that data in its primary
form takes in the applications that software developers create (Figure). Direct access to a
multi-model database gives developers the ability to implement the transformations they
need to accomplish. Documents are the heart and soul of information technology: two
systems exchanging XML/JSON data, and a browser receiving an HTML/JSON response
from a server or sending a JSON response back to it.
Data-driven software is a powerful tool for improving both the reliability and
effectiveness of software.[23]
Here's how:
Improved Reliability:
Enhanced Effectiveness:
Here are some specific examples of how data-driven software can be used to
improve reliability and effectiveness:
• Machine learning for anomaly detection: Anomaly detection algorithms
can analyze system logs and user behavior to identify unusual patterns that might
indicate potential failures.[28]
• User feedback analysis: Analyzing user feedback data can help identify
areas where the software is confusing or difficult to use, allowing for targeted
improvements in usability and effectiveness.[29]
Dependability:
• Proactive Maintenance: Analyzing data like system logs and crash reports can
uncover potential issues before they escalate into major failures. This allows for
preventative actions and faster bug fixes, leading to a more stable and dependable
software.[31]
• Predictive Analytics: Data analysis can predict when malfunctions might occur.
This enables proactive maintenance to be performed before failures happen,
minimizing downtime and ensuring continuous operation.[32][33]
• Data-Driven Testing: User interaction data and error patterns help prioritize
which areas require more rigorous testing. This ensures critical functionalities are
thoroughly tested, resulting in a more dependable overall system.
Effectiveness:
Specific Techniques:
• User Feedback Analysis: By analyzing user feedback data, developers can pinpoint
areas where the software is confusing or difficult to use, allowing for targeted
improvements in usability and effectiveness.
• Performance Monitoring and Optimization: Data on system performance metrics
can be used to identify bottlenecks and inefficiencies. Subsequently, optimizations
can be implemented to improve software speed and responsiveness.
Benefits:
By leveraging data effectively, developers can create software that is:
• More reliable: Proactive maintenance and early issue detection lead to a more
stable and dependable product.
• More effective: Personalized experiences and data-driven optimizations ensure
the software achieves its goals more effectively.
• Continuously improving: Data analysis provides valuable insights for ongoing
improvement and development efforts.
Conclusion:
[2] (2024) The Project Stakeholder Analysis: Roles, Interests and Influence. Available at:
https://www.ittoolkit.com/articles/stakeholder-analysis (Accessed: 01 April 2024).
[3] (2022) Functional vs Non-Functional Requirements – How to Write FRs & NFRs. Available at:
https://www.businessanalysisexperts.com/functional-vs-non-functional-requirements-what-
are-how-write/ (Accessed: 01 April 2024).
[5] (2024) What is a Requirements Traceability Matrix (RTM)? Available at: https://project-
management.com/requirements-traceability-matrix-rtm/ (Accessed: 01 April 2024).
[6] (2024) Functional and Nonfunctional Requirements: Specification and Types. Available at:
https://www.altexsoft.com/blog/functional-and-non-functional-requirements-specification-
and-types/ (Accessed: 01 April 2024).
[8] (2024) What Are The Software Quality Attributes? Available at:
https://www.softwaretestinghelp.com/what-are-the-quality-attributes/ (Accessed: 01 April
2024).
[9] (2024) Software quality models: Purposes, usage scenarios and requirements. Available at:
https://ieeexplore.ieee.org/abstract/document/5071551 (Accessed: 01 April 2024).
[10] (2024) App & Browser Testing Made Easy. Available at:
https://www.browserstack.com/guide/how-to-improve-software-quality (Accessed: 01 April
2024).
[11] (2024) Finite State Machine: Mealy State Machine and Moore State Machine. Available at:
https://www.elprocus.com/finite-state-machine-mealy-state-machine-and-moore-state-
machine/ (Accessed: 01 April 2024).
[12] (2009) Using finite state machines to design software. Available at:
https://www.embedded.com/using-finite-state-machines-to-design-software/ (Accessed: 01
April 2024).
[14] (2017) An assessment of extended finite state machine test selection criteria. Available at:
https://www.sciencedirect.com/science/article/abs/pii/S0164121216301923 (Accessed: 01
April 2024).
[19] (2023) Software paradigm and Software Development Life Cycle (SDLC). Available at:
https://www.geeksforgeeks.org/software-paradigm-and-software-development-life-cycle-
sdlc/ (Accessed: 01 April 2024).
[21] (2024) Defining Data-Driven Software Development by Eric Laquer. Available at:
https://www.oreilly.com/library/view/defining-data-driven-
software/9781492049272/ch01.html (Accessed: 01 April 2024).
[23] (2024) Data-Driven Development: Integrating Analytics into the Software Lifecycle.
Available at: https://vates.com/data-driven-development-integrating-analytics-into-the-
software-lifecycle/ (Accessed: 01 April 2024).
[24] (2024) Leveraging data-driven insights for continuous software improvement. Available
at: https://moldstud.com/articles/p-leveraging-data-driven-insights-for-continuous-software-
improvement (Accessed: 01 April 2024).
[25] (2024) Feature Flags Can Boost Data-Driven Software Development. Available at:
https://www.split.io/blog/data-driven-development-software-
engineering/#:~:text=It%20allows%20developers%20to%20assess,software%20quality%20an
d%20delivery%20speed. (Accessed: 01 April 2024).
[26] (2022) [Article 5] Predictive Failure Analytics — What Will (Probably) Happen. Available
at: https://powerfactors.com/predictive-failure-analytics-what-will-probably-happen/
(Accessed: 01 April 2024).
[27] (2023) A/B Testing: Unveiling the Power of Data-Driven Decisions. Available at:
https://www.spencertom.com/2023/11/18/a-b-testing-unveiling-the-power-of-data-driven-
decisions/ (Accessed: 01 April 2024).
[29] (2024) The importance of user feedback in software development. Available at:
https://moldstud.com/articles/p-the-importance-of-user-feedback-in-software-development
(Accessed: 01 April 2024).
[30] (2024) How to Use Performance Monitoring Tools to Optimize Your Code? Available at:
https://www.xcubelabs.com/blog/how-to-use-performance-monitoring-tools-to-optimize-
your-code/ (Accessed: 01 April 2024).
[31] (2023) Streamlining Software Development with Data-Driven Insights and Automation
Using Apexon COMPASS. Available at: https://aws.amazon.com/blogs/apn/streamlining-
software-development-with-data-driven-insights-and-automation-using-apexon-
compass/#:~:text=In%20addition%20to%20progress%20tracking,organizations%20to%20take
%20preventive%20actions. (Accessed: 01 April 2024).
[32] (2024) Failure Prediction Machine Learning: Using Machine Learning to Find Failures
Before They Occur. Available at: https://upkeep.com/learning/machine-learning-to-find-
failures/#:~:text=At%20a%20more%20advanced%20level,tasks%20before%20the%20failure%
20occurs. (Accessed: 01 April 2024).
[33] (2023) How to Enable Proactive Maintenance and Reduce BI Downtime? Available at:
https://resources.datalogz.io/how-to-enable-proactive-maintenance-and-reduce-bi-
downtime/ (Accessed: 01 April 2024).
[34] (2023) How to Use Data-Driven Insights to Drive SaaS Growth. Available at:
https://userpilot.com/blog/data-driven-insights/ (Accessed: 01 April 2024).
[35] (2024) Feature Flags Can Boost Data-Driven Software Development. Available at:
https://www.split.io/blog/data-driven-development-software-
engineering/#:~:text=Feature%20flags%20facilitate%20A%2FB,data%2Ddriven%20software%
20development%20approach. (Accessed: 01 April 2024).