You are on page 1of 35

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:........................................................................................................................................2
III. Body:................................................................................................................................................2
1. (P5) Undertake a software investigation to meet a business need..................................................2
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....................................................................................................2
a) Identify the stakeholders, theirs roles and interests in the case study............................................2
FRs (Functional Requirements) for NEI project:.......................................................................................5
NFRs (Non-Functional Requirements) for NEI project:............................................................................5
b) Discuss the technique (s) you did use to obtain the requirements.................................................7
- One-on-one interview..................................................................................................................8
2. (P6) Analyze the requirements that you identified in Task 1 using a combination of structural and
behavioral modelling techniques that you have learnt.........................................................................10
a. Use Case Diagram for the whole system....................................................................................10
b. Use Case specification for 2 Use cases.......................................................................................11
c. Context Diagram for the whole system.....................................................................................11
d. Data Flow Diagram – Level 0 for the whole system...................................................................11
e. ERD for the whole system..........................................................................................................11
3. (P7) Discuss, using examples, the suitability of software behavioural design techniques.............11
 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..........................11
 You will explain which architecture (client – server, n-tier, microservices, etc.) is suitable for the project
with clear illustrations and why.........................................................................................................11
 Then you will address which technical solution stack could be suitable to implement the project with
clear explanations..............................................................................................................................11
 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)................................11
4. (M3) Analyse how software requirements can be traced throughout the software lifecycle........11
Reference to your task above that required some level of intensive research work analyse how software
requirements can be traced throughout the software lifecycle........................................................12
5. (M4) Discuss two approaches to improving software quality........................................................13
a) Discuss sofware quality atributes that are applicable to the project.........................................13
b) Discuss two quality assurance techniques that can help improve the sofware quality in the project.
18
6. (M5) Analyse a range of software behavioural tools and techniques............................................18
 Define Finite State Machine (FSM) and Extended State Machine Language (ESML).................18
 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.
18
 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.....................................................................................18
7. (M6) Differentiate between a finite state machine (FSM) and an extended FSM, providing an application for
both.......................................................................................................................................................20
 Finite State Machine (FMS)........................................................................................................20
 Extended Finite State Machine..................................................................................................20
 Diference Between Finite And Extended Finite State Machine.................................................20
8. (D3) Evaluate the process of undertaking a systems investigation with regard to its effectiveness in
improving a software quality.................................................................................................................20
 Definition Of Function Design Paradigm....................................................................................20
 Use Of Function Design Paradigm In The Software Development Life cycle To Improve Software Quality
20
 Conclusion.................................................................................................................................20
9. (D4) Discuss how the data-driven approach improves the reliability and effectiveness of software.20
 Definition Of Data Driven Sofware.............................................................................................20
 Data Driven Sofware For Improvement Of Reliability And Efectiveness Of The Sofware..........20
 Improving The Dependability And Efectiveness Of The Sofware Using Data Driven Sofware....21
IV. Evaluation and conclusions:...............................................................................................................21
V. References:........................................................................................................................................21
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:
 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.

 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 (FMS)

 Extended Finite State Machine

 Diference Between Finite And Extended Finite State Machine

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

 Use Of Function Design Paradigm In The Software Development Life cycle To


Improve Software Quality

 Conclusion.

9. (D4) Discuss how the data-driven approach improves the


reliability and effectiveness of software.

 Definition Of Data Driven Sofware

 Data Driven Sofware For Improvement Of Reliability And Efectiveness Of The


Sofware
 Improving The Dependability And Efectiveness Of The Sofware Using Data Driven
Sofware

IV. Evaluation and conclusions:

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

You might also like