Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
54 views

SDLC - Assignment 2 Frontsheet

Uploaded by

trinhbs00389
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views

SDLC - Assignment 2 Frontsheet

Uploaded by

trinhbs00389
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

ASSIGNMENT 2 FRONT SHEET

Qualification BTEC Level 4 HND Diploma in Computing

Unit number and title Unit 7: Software Development Life Cycle

Submission date 01/04/2024 Date Received 1st submission 08/04/2024

Re-submission Date Date Received 2nd submission

Student Name Nguyen Huu Tri Student ID BS00389

Class SE06203 Assessor name Truong Quoc Khanh

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.

Student’s signature Nguyen Huu Tri

Grading grid
P5 P6 P7 M3 M4 M5 M6 D3 D4
❒ Summative Feedback: ❒ Resubmission Feedback:

Grade: Assessor Signature: Date:

Internal Verifier’s Comments:


Signature & Date:

I. Table of Contents:

Contents
I. Table of Contents: .................................................................................................................................2

II. Introduction:..........................................................................................................................................4

III. Body:..................................................................................................................................................4

1. (P5) Undertake a software investigation to meet a business need. .................................................6

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

FRs (Functional Requirements) for NEI project: ........................................................................................9

NFRs (Non-Functional Requirements) for NEI project: .............................................................................9

b) Discuss the technique (s) you did use to obtain the requirements. ...............................................11

- One-on-one interview .................................................................................................................12

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

a. Use Case Diagram for the whole system. ....................................................................................14

b. Use Case specification for 2 Use cases. .......................................................................................15

c. Context Diagram for the whole system.......................................................................................15

d. Data Flow Diagram – Level 0 for the whole system. ...................................................................16

e. ERD for the whole system. ..........................................................................................................17


3. (P7) Discuss, using examples, the suitability of software behavioural design techniques. ............17

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

5. (M4) Discuss two approaches to improving software quality.........................................................20

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

6. (M5) Analyse a range of software behavioural tools and techniques. ...........................................31

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

Extended Finite State Machine ...................................................................................................34

Diference Between Finite And Extended Finite State Machine ..................................................34

8. (D3) Evaluate the process of undertaking a systems investigation with regard to its effectiveness
in improving a software quality...............................................................................................................36

Definition Of Function Design Paradigm .....................................................................................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

Definition Of Data Driven Sofware ..............................................................................................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

IV. Evaluation and conclusions: ................................................................................................................47

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:

1. (P5) Undertake a software investigation to meet a


business need.

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.

a) Identify the stakeholders, theirs roles and interests in the case study.

o Introduction

The structure of a case study introduction is different from the general


introduction of a research paper. The main purpose of the introduction is to set the stage
for the rest of the case study. The problem statement must be short and precise to convey
the main point of the study. Then, the introduction should summarize the literature
review and present the previous case studies that have dealt with the topic. The
introduction should end with a thesis statement.

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]

- Effective decision-making: By considering the perspectives of various stakeholders, you


can make well-rounded choices that take into account potential impacts.
- Improved collaboration: When stakeholders feel their interests are heard and addressed,
they are more likely to cooperate and contribute positively.
- Mitigating risks: Proactive communication with stakeholders can help identify and
address potential issues before they escalate.

o Requirement definition of the project ( FRs and NFRs)

Functional Requirements (FRs) are the backbone of most software development


projects. They are what your product will do for users, and what makes people want to
use it.
FRs are the “detailed what” of a solution. They include the functions and
associated data that a solution, feature, or product will provide. The terms “Functional
Requirements” and “Functional Specifications” are often used interchangeably to mean
the same thing.
Think of them like blueprints; they give you all the details you need to build your
new house—they tell you how many rooms there will be, how big they will be, how many
windows there will be per room, etc.—so you do not have to worry about those things
while you are building.
NFRs describe the aspects of a product that go beyond the core functionality. They
are ultimately what will make your product unique and make all stakeholders (especially
users) love it. The most common types are Quality Requirements (characteristics) and
Constraints (limitations).
• A Quality Requirement is something that would increase customer
satisfaction: “Prescriptions must be filled within 30 minutes.”
• A Constraint is more like a legal requirements or a physical law of nature:
“Prescriptions for controlled substances must be reported to the National Institute for
Health daily”.[3]

o List out FRs and NFRs in NEI project

FRs (Functional Requirements) for NEI project:

• 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.

NFRs (Non-Functional Requirements) for NEI project:

• 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.

o Relationships between the FRs and NFRs

Functional Requirements (FRs) and Non-Functional Requirements (NFRs) are two


crucial aspects considered during software development. While they serve different
purposes, they are interrelated.

Functional Requirements (FRs) define the specific functionalities a system should


have. They answer the question "what" the system should do. FRs are essentially the
features and capabilities that users will interact with to achieve their goals. Here are some
examples of FRs:

• 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]

Here are some examples of NFRs:

• The system response time should be less than 3 seconds.


• The system should be usable by users with varying levels of technical
expertise.
• The system must be secure against unauthorized access.

The Relationship Between FRs and NFRs


FRs and NFRs are interdependent. FRs inform NFRs. The functionalities defined in
FRs influence the non-functional requirements of the system. For instance, an FR that
specifies a complex data processing task might necessitate an NFR that emphasizes high
performance. Here's a breakdown of the relationship:

• 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.

o Requirement gathering techniques

Requirement gathering is the act of generating a list of requirements to define


what a project is about and its goal. You can gather insights from the stakeholders,
whether they are clients, employee users, consumers or vendors. Requirement gathering
often acts as the blueprints of a project. Poorly established requirements can have a
negative impact, while properly established ones can lead to success.

- 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.

2. (P6) Analyze the requirements that you identified in Task


1 using a combination of structural and behavioral
modelling techniques that you have learnt.

a. Use Case Diagram for the whole system.


b. Use Case specification for 2 Use cases.

c. Context Diagram for the whole system.


d. Data Flow Diagram – Level 0 for the whole system.
e. ERD for the whole system.

3. (P7) Discuss, using examples, the suitability of software


behavioural design techniques.

• 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.

• You will explain which architecture (client – server, n-tier, microservices,


etc.) is suitable for the project with clear illustrations and why.

• Then you will address which technical solution stack could be suitable to
implement the project with clear explanations.

• 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).
4. (M3) Analyse how software requirements can be traced
throughout the software lifecycle.

Reference to your task above that required some level of intensive


research work analyse how software requirements can be traced
throughout the software lifecycle

• Introduction to Requirements Management


Requirements management is a set of techniques for documenting, analyzing,
prioritizing and agreeing on requirements so that engineering teams always have current
and approved requirements. Clear, concise, error-free requirements help engineering
teams detect errors early, reducing project cost and risk.
The purpose of requirements management is to ensure that software and product
development goals are successfully met. Requirements management provides a way to
avoid errors by tracking changes in requirements. This technique also fosters
communication with stakeholders from the start of a project throughout the engineering
lifecycle.[4]

• 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.

Bidirectional traceability – Bidirectional traceability refers to the ability to trace


requirements in a hybrid model of both forward and backward traceability, which
provides the most complete method of traceability.[7]

• Traceability Matrix for NEI project


A requirements traceability matrix or RTM is a document that provides
accountability to project requirements by mapping out the relationship between
requirements and project work.

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.

5. (M4) Discuss two approaches to improving software


quality.

a) Discuss sofware quality atributes that are applicable to the project.

• Introduction

Software quality attributes are characteristics that define a software system's


overall effectiveness, beyond its core functionality. Unlike functional requirements, which
outline what the software should do, quality attributes focus on how well it does those
things.
Considering these attributes throughout the development process ensures the
software meets the needs of its users and stakeholders. Here are some of the most
important software quality attributes:

a. Reliability: This refers to the software's ability to perform consistently and


predictably over time. A reliable system experiences few crashes or errors and delivers
consistent results.

Reliability software quality attribute

b. Performance: Performance relates to how fast and efficiently the software


executes tasks. It encompasses factors like responsiveness, speed, and resource
utilization.

Performance software quality attribute


c. Usability: Usability measures how easy it is for users to learn, navigate, and
interact with the software. An intuitive and user-friendly interface is crucial for a positive
user experience.

Usability software quality attribute

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.

Security software quality attribute

e. Maintainability: This attribute reflects how easy it is to modify, fix, and


update the software. Well-maintained code is easier to adapt to changing requirements
and reduces the risk of introducing new bugs.
Maintainability software quality attribute

f. Scalability: Scalability refers to the software's ability to handle increasing


demands or workloads. A scalable system can grow or shrink to accommodate changing
needs without compromising performance.

Scalability software quality attribute

• Sofware quality attributes


Quality may be defined from different perspectives. Quality attributes and
characteristics are extremely important in the design of software systems in general. The
quality of the product contributes to improved user requirements & satisfaction, clearer
software design, and ultimately greater end product quality.
These attributes will help to define what is Software Quality. Now let us see how
one can measure the Quality Attributes of a software application or service.

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]

• Discuss sofware quality atributes that are applicable to NEI


Software quality models are a well-accepted means to support quality
management of software systems. Over the last 30 years, a multitude of quality models
have been proposed and applied with varying degrees of success. Despite successes and
standardisation efforts, quality models are still being criticised, as their application in
practice exhibits various problems. To some extent, this criticism is caused by an unclear
definition of what quality models are and which purposes they serve. Beyond this, there
is a lack of explicitly stated requirements for quality models with respect to their intended
mode of application. To remedy this, this paper describes purposes and usage scenarios
of quality models and, based on the literature and experiences from the authors, collects
critique of existing models. From this, general requirements for quality models are
derived. The requirements can be used to support the evaluation of existing quality
models for a given context or to guide further quality model development.[9]

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]

• Quality assurance techniques


1. Test Early
Testing is important when learning how to improve software quality and shouldn’t
be neglected. Testing aims to catch defects early during the design phase so they don’t
snowball and grow into bigger issues later. Software development teams resort to manual
testing for many problems, but companies leverage automated testing strategies for non-
UI tasks.
2. Implement Cross Browser Testing
Cross browser testing checks if the software runs seamlessly across different web
browsers, screen sizes, and mobile apps. With multiple devices and models coming out in
the market, cross browser testing is becoming integral for every developer. There are
many upsides associated with cloud-based cross browser testing, and effective testing
solutions lead to a flawless user experience.
You can cut costs, optimize the speed and performance of your products, and
ensure that testing environments stay scalable and dynamic using various cross-browser
testing tools. For best results, combine parallel testing and testing automation tools.
3. Test on Multiple Devices
Multi-device testing will help you make better decisions regarding software
development and quality improvement processes. There is an overwhelming number of
devices, screen sizes, and OS configurations in the market, so it’s important to test as
many variations as possible.
Windows and Mac are the two most popular operating systems used for testing
purposes, and web browsers such as Chrome, Safari, Opera, and Firefox cover most of the
users. Using the same configurations as end-users when testing software on these
browser and OS environments is vital. Testing tools like BrowserStack gives developers
access to real-time environments without having to install additional hardware on
machines.
4. Optimize Automation Testing
Increasing adoption of Automated testing and Agile methodologies has led to
improvements in software quality. According to a 2020-21 World Quality Report,
automation testing tools can save time, enhance coverage, minimize human errors, and
improve testing capabilities. Some popular approaches are smoke testing, regression
testing, cross-device and cross-browser testing, and load testing.
There are various automated testing tools, and it’s critical to strike a balance
between manual and automated testing methods. Most automated testing solutions can
be integrated with Agile workflows and be a core component of DevOps practices.
5. Use Quality Controls from the Beginning
Quality management and control is an ongoing process, so testers must cooperate
with developers and work together. A structured approach effectively improves test
processes and cuts maintenance costs with native testing tools.
6. Leverage Continuous Delivery (CD) and Continuous Integration (CI)
CI-CD requires engineers to integrate changes and improvements to every step of
the software development lifecycle. Continuous Delivery focuses on releasing changes to
customers interactively, while continuous integration makes code more dependable by
integrating modifications to a product multiple times daily.
7. Have Clear Communication
Clear communication with all team members is integral to the software quality
improvement process. Having consistent KPIs (Key Performance Indicators) throughout
the project and conveying accurate test reports helps in communicating. Everybody
should be aligned when setting testing requirements and sharing feedback. It’s critical to
get all stakeholders involved in meetings and ensure team members communicate with
vendors and do not work in isolation.
8. Create a Risk Registry
Risk management is critical to software quality improvement, and project
managers know they must monitor risks throughout the development lifecycle. A project
risk register is also called a risk log, and it is used to identify, track, and analyze potential
risks. Your team members should create a risk registry to record these risks, assess them,
and assign appropriate priority levels for effective mitigation.
9. Document Your Project Requirements
Good documentation defines the scope of the project, milestones, deliverables,
and technical specifications, thus ensuring you meet deadlines and stay on track. The
documentation also defines customers’ needs and lists functional and non-functional
requirements.
More importantly, it contains a list of all important features and processes with
step-by-step breakdowns that help keep track of the development process. The first step
to creating effective documentation is communicating to clients and collecting
information about their expectations. All development processes and plans should follow
the documentation based on them.
10. Think Outside the Box
Promoting innovation and thinking outside the box should be a no-brainer. Simply
copying your competitor’s strategy or growth hacks isn’t enough. People crave
“different,” and you will stand out if you build a unique product that others cannot
replicate. To improve software quality, think about what you stand for. Automate
monotonous processes to free up time for productive tasks and use quality metrics with
your testing structures.
11. Incorporate Employee Training
Your employees can play the role of your end-users. Tools, technologies, and
techniques evolve, and it’s important to stay on track with the latest trends. Employee
training instills an awareness of what to look out for in leading software products. Flaws
and vulnerabilities your team normally wouldn’t notice during user journeys will crop up.
Employees should also work on upgrading their coding skills to contribute to the software
development process.
12. Create a Quality Management Plan
A quality management plan (document) outlines software quality expectations,
defines roles and responsibilities, supports project managers, and organizes tasks to
ensure that software development matches customer requirements and expectations. It
has key components such as reporting tools and assurance policies, quality standards,
testing strategies, and software quality objectives. Think of it as a roadmap for future
improvements with the foundation set in stone.
13. Do Formal Technical Reviews
In a formal technical review, the stakeholders meet and discuss the logical and
functional errors of a software program. These review rounds require a team of engineers
and entail preparing reports for presentations.
The main objective is to give all reviewers a product walkthrough, examine source
code, detect bugs, and make additional inspections. These reviews improve the software
quality and help keep developers accountable for the production management process.
14. Try Ad Hoc and Exploratory Testing
Ad hoc and exploratory testing go into the manual side of testing. The main idea
is to explore creativity and push the boundaries of testing practices. There are no rules to
this, and exploratory testing is conducted on the fly at any moment. This approach
benefits developers in testing software usability and user behaviours.
Ad hoc testing uses random data to generate tests and aims to break or disrupt
software services. Its objective is to find vulnerabilities and is usually done near the end
of the development process.
15. Produce Bug Reports
A good bug report can make software testing and improvement highly effective.
It includes all possible scenarios, and use-cases and describes behaviours exhibited while
testing new features. You can add screenshots of failure exceptions in the report, list all
possible solutions, and a bug summary.

• 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:

1. Reliability: Ensuring the software behaves consistently under various


conditions is crucial. This includes minimizing crashes, errors, and unexpected behavior.
Reliability is paramount, particularly in safety-critical systems or those handling sensitive
data.
2. Performance: The software should perform efficiently, meeting response
time and throughput requirements. This involves optimizing algorithms, resource
utilization, and system architecture to ensure acceptable performance levels, even under
peak loads.
3. Usability: User experience is a critical aspect of software quality. The
software should be intuitive, easy to learn, and efficient to use. This involves
considerations such as user interface design, accessibility, and user feedback
mechanisms.
4. Maintainability: As software evolves, it must remain manageable and
adaptable. Maintainability encompasses code readability, modularity, documentation,
and ease of debugging and testing. These factors facilitate ongoing development, bug
fixes, and enhancements.
5. Scalability: The ability of the software to handle increasing loads or user
bases without significant degradation in performance or functionality is essential.
Scalability involves designing systems that can be easily expanded or distributed as
needed.
6. Security: Protecting data, systems, and users from unauthorized access,
breaches, and cyber threats is paramount. Security measures include authentication,
authorization, encryption, and secure coding practices to mitigate vulnerabilities.
7. Testability: Software should be designed with testability in mind,
allowing for comprehensive testing to detect defects early in the development cycle. This
involves implementing automated testing frameworks, mock objects, and clear
separation of concerns.
8. Portability: The software should be capable of running on different
platforms and environments without significant modifications. Portability ensures
broader accessibility and reduces dependency on specific hardware or software
configurations.
6. (M5) Analyse a range of software behavioural tools and
techniques.

• 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.

- FSM design techniques: Designing software can be a bewildering and stressful


experience. The initial creative steps are fraught with risk and uncertainty, since they
define the entire course of development for a software project and affect its outcome
and success.

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]

- ESML design techniques: The Enterprise Systems Modeling Laboratory (ESML), a


renowned international center for knowledge and research in conceptual modeling,
focuses on advancing the Object-Process Methodology (OPM), specifically ISO 19450,
and OPM-based tools. These tools are used to model, analyze, simulate, and verify
complex systems across various domains of science and engineering.

• 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.

• Finite State Machine (FSM):


Finite state machine (FSM) is a term used by programmers, mathematicians,
engineers and other professionals to describe a mathematical model for any system that
has a limited number of conditional states of being. A practical example of a finite state
machine is a set of buttons on a video game controller that are connected to a specific
set of actions within the game. When a user inputs hitting certain buttons, the system
knows to implement the actions that correspond.[13]

• Extended Finite State Machine


Extended finite state machines (EFSMs) provide a rigorous model for the
derivation of functional tests for software systems and protocols. Various types of data-
flow, control-flow, graph-based, and state machine based test selection criteria can be
used for deriving tests from a given EFSM specification. Also, traditional types of state
machine based notions of faults, such as transfer and output parameter faults, and
common types of assignment faults can be used to describe the fault domains of EFSMs.
We present an assessment of the most known types of EFSM test selection criteria such
as test suites that cover single transfer faults, double transfer faults, single output
parameter faults, and many types of single assignment faults of a given EFSM
specification.[14]

• Difference Between Finite And Extended Finite State Machine

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:

Finite State Machine (FSM):

• Limited Logic: Transitions between states in an FSM are triggered by


simple input conditions (often true/false). Think of it like a light switch - either on or
off.[15]
• State Transitions: The next state is determined solely by the current state
and the input received. There's no room for complex decision-making within a state.

Extended Finite State Machine (EFSM):

• Enhanced Logic: EFSMs incorporate more powerful logic capabilities.


Transitions can be based on complex conditions involving variables and data
manipulation.

o Imagine a vending machine - it checks if you inserted enough money


before dispensing a drink.
o Data Handling: EFSMs can store and operate on data during transitions.
This allows them to perform calculations or comparisons beyond simple
true/false checks.[16]

• 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.

• Definition Of Function Design Paradigm


Functional Design is a paradigm used to simplify the design of hardware and
software devices such as computer software and, increasingly, 3D models. A functional
design assures that each modular part of a device has only one responsibility and
performs that responsibility with the minimum of side effects on other parts. Functionally
designed modules tend to have low coupling.[18]

• Use Of Function Design Paradigm In The Software Development Life cycle


To Improve 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.

Software paradigm is a theoretical framework that serves as a guide for the


development and structure of a software system. There are several software paradigms,
including:
Imperative paradigm: This is the most common paradigm and is based on the idea
that a program is a set of instructions that tell a computer what to do. It is often used in
languages such as C and C++.

• Object-oriented paradigm: This paradigm is based on the idea of objects,


which are self-contained units that contain both data and behavior. It is often used in
languages such as Java, C#, and Python.

• Functional paradigm: This paradigm is based on the idea that a program is


a set of mathematical functions that transform inputs into outputs. It is often used in
languages such as Haskell, Lisp, and ML.

• 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.

• The Software Development Life Cycle (SDLC) is a process that software


developers use to plan, design, develop, test, deploy, and maintain software systems. The
most common SDLC models include:

• Waterfall model: This model is based on the idea that software


development is a linear process, with each phase building on the previous one.

• Agile model: This model is based on the idea that software development is
an iterative process, with small.[19]

Functional programming is a programming paradigm in which we try to bind


everything in pure mathematical functions style. It is a declarative type of programming
style. Its main focus is on “what to solve” in contrast to an imperative style where the
main focus is “how to solve”. It uses expressions instead of statements. An expression is
evaluated to produce a value whereas a statement is executed to assign variables. Those
functions have some special features discussed below.
Functional Programming is based on Lambda Calculus:
Lambda calculus is a framework developed by Alonzo Church to study computations with
functions. It can be called as the smallest programming language in the world. It gives the
definition of what is computable. Anything that can be computed by lambda calculus is
computable. It is equivalent to Turing machine in its ability to compute. It provides a
theoretical framework for describing functions and their evaluation. It forms the basis of
almost all current functional programming languages.
Fact: Alan Turing was a student of Alonzo Church who created Turing machine which laid
the foundation of imperative programming style.

Programming Languages that support functional programming: Haskell,


JavaScript, Python, Scala, Erlang, Lisp, ML, Clojure, OCaml, Common Lisp, Racket.

Concepts of functional programming:

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.

Recursion: There are no “for” or “while” loop in functional languages. Iteration in


functional languages is implemented through recursion. Recursive functions repeatedly
call themselves, until it reaches the base case.
Referential transparency: In functional programs variables once defined do not
change their value throughout the program. Functional programs do not have assignment
statements. If we have to store some value, we define new variables instead. This
eliminates any chances of side effects because any variable can be replaced with its actual
value at any point of execution. State of any variable is constant at any instant.

Functions are First-Class and can be Higher-Order: First-class functions are


treated as first-class variable. The first class variables can be passed to functions as
parameter, can be returned from functions or stored in data structures. Higher order
functions are the functions that take other functions as arguments and they can also
return functions.

Variables are Immutable: In functional programming, we can’t modify a variable


after it’s been initialized. We can create new variables – but we can’t modify existing
variables, and this really helps to maintain state throughout the runtime of a program.
Once we create a variable and set its value, we can have full confidence knowing that the
value of that variable will never change.[20]

• Conclusion.

Undertaking a systematic investigation of a software system proves to be a highly


effective method for improving its overall quality. This process acts like a spotlight,
revealing areas for improvement and providing valuable insights for targeted action.

Here's a summary of the key benefits:

• Identification of Issues: A thorough investigation uncovers bugs,


performance bottlenecks, security vulnerabilities, and usability problems that may
have gone unnoticed during development.
• Root Cause Analysis: By delving deeper, the investigation helps identify
the root causes of these issues, allowing for more effective solutions.
• Data-Driven Decisions: The investigation gathers data on user behavior,
system usage, and performance metrics. This data provides a strong foundation
for prioritizing improvements and measuring their impact.
• Improved Maintainability: By identifying areas of complexity or poor code
structure, the investigation can guide efforts towards making the software more
maintainable in the long run.

Overall, a well-conducted systems investigation is a proactive approach to


software quality improvement. It allows developers and stakeholders to address
problems before they become critical and ensures the software continues to meet user
needs effectively.

Additional Considerations:

• The effectiveness of the investigation depends heavily on the chosen


methodology and the skills of the investigators.
• The investigation should be tailored to the specific software and its
intended use.
• The benefits need to be weighed against the cost and time required for a
thorough investigation.

By following a structured approach and utilizing appropriate tools, a systems


investigation can be a valuable asset in the continuous improvement journey of software
quality.
9. (D4) Discuss how the data-driven approach improves the
reliability and effectiveness of software.

• Definition Of Data Driven Sofware

As software developers, we produce much of the intellectual capital that fuels


economic and social change in todays€™s digital world. The proliferation of data ”and the
rapid development of new tools to manage its€”have put new demands on us. For 40
years, we put data into relational database management systems (RDBMSs) software
knew what the data looked like and database administrators (DBAs) knew what to do to
store, secure, and retrieve that data. Now, with a variety of different data types and
unprecedented data volumes, we are finding that as data becomes more complex and
siloed in new purpose-built databases, we are being forced away from it. This creates
ever-longer lags between specification and deployment.

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.

Outside of IT, much of what people work with is document-oriented as well.


Everyday transactions such as sending emails, viewing pages in a web browser, filling out
forms, creating Word documents, and doing financial modeling in Excel are all document-
centric activities that are not represented naturally in the restrictive relational data
context. Multi-model databases accept data in the form the world already
understands.[21]
Data-driven development is a dominating approach to software development in
many industries nowadays. It is an answer to a new era in software development that
includes machine-learning as a core component. This new development approach makes
development easier, faster, and more efficient because it addresses the new aspects and
challenges of developing functions based on artificial intelligence (AI). In the automotive
field, the development of ADAS and autonomous driving functions relies on machine-
learning models that analyze the complex situation surrounding the vehicle. To develop
and configure these models, sample sensor data from real world is necessary – a lot of
data. The amount of data is so huge that the preparation of that data actually takes most
of the time (and resources) in the development. Consequently, if the resource allocation
within the development process has shifted, the focus of the development optimization
has to shift as well. If more money is spent on preparation of data than on writing a code,
the preparation of the data shall become a focus of cost optimization. This shift of focus
is addressed by the data-driven development approach.[22]

• Data Driven Sofware For Improvement Of Reliability And Efectiveness Of


The Sofware

Data-driven software is a powerful tool for improving both the reliability and
effectiveness of software.[23]
Here's how:

Improved Reliability:

• Early detection of issues: By analyzing logs and error reports, data-driven


software can identify potential bugs and performance issues before they cause
major problems. This allows for proactive maintenance and faster resolution of
issues, leading to a more stable and reliable software product.[24][25]
• Predictive maintenance: Data analysis can be used to predict when
failures are likely to occur. This allows for preventative maintenance actions to be
taken before failures happen, minimizing downtime and ensuring continuous
operation.[26]
• Data-driven testing: Analyzing user interactions and error patterns can
help prioritize which areas of the software require more rigorous testing. This
ensures that critical functionalities are thoroughly tested, leading to a more
reliable overall system.

Enhanced Effectiveness:

• Personalization: Data-driven insights on user behavior can be used to


personalize the software experience. This can improve user satisfaction and
engagement, leading to more effective software utilization.
• A/B testing: Data-driven software allows for A/B testing of different
features or functionalities. By analyzing user behavior towards each variation,
developers can identify the most effective approach, leading to a more effective
software design.[27]
• Data-driven optimization: Data analysis can reveal areas where the
software can be more efficient or streamlined. This allows for targeted
optimizations that improve the software's effectiveness in achieving its intended
goals.

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]

• Performance monitoring and optimization: Data on system performance


metrics can be used to identify bottlenecks and inefficiencies, allowing for
optimizations that improve the software's speed and responsiveness.[30]

• Improving The Dependability And Efectiveness Of The Sofware Using Data


Driven Sofware

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:

• Personalized User Experience: Data-driven insights on user behavior allow for


tailoring the software experience to individual needs. This can improve user
satisfaction, leading to more effective software utilization.[34]
• A/B Testing: Data-driven software facilitates A/B testing of features and
functionalities. Analyzing how users interact with each variation reveals the most
effective approach, ultimately leading to a more effective software design.[35]

• Data-Driven Optimization: Data analysis can pinpoint areas for efficiency


improvements within the software. This allows for targeted optimizations to make
the software more effective in achieving its intended goals.

Specific Techniques:

• Machine Learning for Anomaly Detection: Anomaly detection algorithms can


analyze user behavior and system logs to identify unusual patterns that might
indicate potential failures.[36]

• 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:

Data-driven software development is a powerful strategy for building dependable


and effective software applications. By harnessing the power of data, developers can
create software that is not only reliable but also highly effective in meeting user needs
and delivering optimal results.[37]

IV. Evaluations and conclusions:


The evaluation of the Software Development Life Cycle (SDLC) for our recent
project reveals a commendable level of efficiency and adherence to schedules throughout
its phases. Each stage, from requirements gathering to deployment, was meticulously
executed, resulting in timely delivery of deliverables. The quality of the software
produced was consistently high, meeting functional requirements and exceeding user
expectations. The SDLC demonstrated flexibility in accommodating changes, effectively
managing risks, and fostering communication and collaboration among team members
and stakeholders. Moreover, it proved to be cost-effective, staying within budget
constraints while delivering significant value. Customer satisfaction with the final product
was notably high, indicating the SDLC's success in meeting user needs. Overall, the
evaluation underscores the effectiveness of the SDLC in delivering high-quality software
within time and budget constraints while maintaining flexibility and fostering
collaboration.

In conclusion, the evaluation of the SDLC should consider factors such as


efficiency, quality, flexibility, risk management, communication, cost-effectiveness, and
customer satisfaction. Conclusions drawn from the evaluation can help identify strengths
and weaknesses in the SDLC process and guide improvements for future development
projects.
V. References:
[1] (2024) How to Write an Introduction for a Case Study Report. Available at:
https://dudestudy.com/how-to-write-an-introduction-for-a-case-study-report/ (Accessed: 01
April 2024).

[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).

[4] (2024) What is requirements management? Available at:


https://www.ibm.com/topics/what-is-requirements-management (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).

[7] (2023) 12 Techniques for Requirement Gathering. Available at:


https://www.indeed.com/career-advice/career-development/requirement-gathering-
techniques (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).

[13] (2024) finite state machine. Available at:


https://www.techtarget.com/whatis/definition/finite-state-machine (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).

[15] (2024) Finite-state machine. Available at: https://en.wikipedia.org/wiki/Finite-


state_machine#:~:text=The%20FSM%20can%20change%20from,inputs%20that%20trigger%2
0each%20transition. (Accessed: 01 April 2024).

[16] (2011) Extended Finite State Machine. Available at:


https://www.researchgate.net/publication/251117993_Extended_Finite_State_Machine
(Accessed: 01 April 2024).
[17] (2020) Finite State Machine (FSM) Tutorial: Implementing an FSM in C++. Available at:
https://dev.to/aleksandrhovhannisyan/finite-state-machine-fsm-tutorial-implementing-an-
fsm-in-c-2cgo (Accessed: 01 April 2024).

[18] (2024) Functional design. Available at: https://en.wikipedia.org/wiki/Functional_design


(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).

[20] (2022) Functional Programming Paradigm. Available at:


https://www.geeksforgeeks.org/functional-programming-paradigm/ (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).

[22] (2024) Data-Driven Development. Available at:


https://www.dspace.com/en/pub/home/applicationfields/comp/data_driven_development.
cfm (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).

[28] (2024) What is anomaly detection? Available at: https://www.ibm.com/topics/anomaly-


detection (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).

[36] (2024) What is anomaly detection? Available at: https://www.ibm.com/topics/anomaly-


detection. (Accessed: 01 April 2024).

[37] (2024) Data Driven Development. Available at: https://itexus.com/glossary/data-driven-


development/#:~:text=Conclusion%3A,a%20culture%20of%20continuous%20improvement.
(Accessed: 01 April 2024).

You might also like