Applying Quality Standards

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Programming NC IV

1
Applying Quality Standards

Applying Quality Standards

This module teaches the knowledge, skills, attitudes and values needed in
applying quality standards in an organization or a workplace. Safety
procedures and regulations, organization procedures and processes and
gathering customer requirements are also emphasized in this module.
After completing this module, students are expected to:
1. evaluate quality of received materials;
2. appraise quality of own work; and
3. participate in quality improvement.

Assess Quality of Received Materials


This section discusses software quality management and measurement.
Creating a quality plan, setting product and process standards like “Systems
and software Quality Requirements and Evaluation” or SQuaRE are also
covered.

Reading Skills
The ability to read with understanding, or reading comprehension, is one of
the basic skills that you must possess to be successful in employment. If you
are new to a job and you cannot fully understand emails, instructions,
memos, reports and safety requirements, what do you think will happen?
You will be left behind by your coworkers. Most of the jobs offered today
require good reading skills and is a part of the daily duties. Make sure to take
time to practice reading.
Here are some tips to improve your reading skills:
1. Read on topics that interest you.
2. Read materials at your level or a bit hard for you.
3. Read longer passages or a book, not just articles.
4. Read and don’t worry if you don’t understand it first. Look for the
meaning of new words after you read. Or you can always look up
unfamiliar words as you read, whichever works for you.
5. Read a lot.

Course Module
Workplace Standards and Specifications
Software standards are important in the overall quality of a software.
Sommerville (2011) stated three reasons on the importance of software
standards:
1. Standards are based on knowledge about the best practice for the
company and are valuable to the organization.
2. Standards set a framework in defining and describing what a quality
software is in a specific situation.
3. Standards help in continuity when work is passed from one person to
another by ensuring that all programmers adopt the same practices.
There are two software standards – product standards and process
standards.
1. Product standards apply to the software or system being developed,
which involves document and coding standards.
2. Process standards determine what processes or actions should be taken
during software development.
The table below shows examples of product and process standards.
Product Standards Process Standards
Design review form Design review conduct
Requirements document Submission of new code for
structure system development
Method header format Version release process
Java programming style Project plan approval process
Project plan format Change control process

Procedures in Carrying Out Work Instructions


A quality plan sets the desired software characteristics and how these
attributes will be evaluated.
It is important to define and develop a quality plan which describes the
desired software qualities. Without this plan, programmers tend to create
system according to their own quality standards.
Humphrey (1989) proposed an outline structure for a quality plan, which
includes:
1. Product Introduction. This is where the product, its qualities and the
intended market or target users are described.
2. Product Plans. Important release dates and responsibilities and
distribution plans and product servicing are identified in these plans.
3. Process Descriptions. The service processes and standards used for
product management and development are explained here.
4. Quality Goals. Important product quality attributes are described in the
quality goals and plans.
5. Risk and Risk Management. Risks that could affect the quality of the
product are identified along with the actions to be taken.
Programming NC IV
3
Applying Quality Standards

Quality Checking Procedures


ISO/IEC 25010:2011 or Systems and software Quality Requirements and
Evaluation, abbreviated as SQuaRE, is a standard tool in assessing the quality
of software programs. The International Organization for Standardization
(ISO) and International Electrotechnical Commission (IEC) formalized this
worldwide standardization for systems.
This standard has two models – quality in use model and product quality
model. We will only be discussing the latter since it is applicable to computer
systems and software products.
The product quality model consists of eight (8) characteristics, along with
their subcharacteristics:
1. functional suitability;
2. performance efficiency;
3. compatibility;
4. usability;
5. reliability;
6. security;
7. maintainability; and
8. portability.

Look at the figure below to see the subcharacteristics:

Figure 1. ISO 25010:2011 SQuaRE (Systems and software Quality Requirements and Evaluation)

Course Module
Too many new words? Check out ISO’s definition for the characteristics and
subcharacteristics of a quality software:
1. Functional suitability – whether the software has the functions that meet
the needs – stated or implied
1.1. Functional completeness – whether the set of functions covers all user
objectives and tasks
1.2. Functional correctness – whether the system provides accurate
results with the identified degree of precision
1.3. Functional appropriateness – whether the functions facilitate the
accomplishment of objectives and tasks

Example: The user is only presented with the required action to complete a
task while unnecessary steps are excluded.

2. Performance efficiency – performance with respect to the amount of


resources used under specified conditions
2.1. Time behavior – the response and processing time of the software
when performing its functions
2.2. Resource utilization – the amount and type of resources used by the
system when performing its functions
2.3. Capacity – the limits of a software parameter meet requirements

3. Compatibility – the software or its component can exchange information


with other software and perform the functions while sharing the same
hardware components or environment
3.1. Co-existence – whether the product can perform its functions while
sharing resources with other products
3.2. Interoperability – whether two or more systems can exchange
information and use this information

4. Usability – whether the system can be used by specific users to


accomplish a goal with efficiency, effectiveness and satisfaction
4.1. Appropriateness recognizability – the users can realize whether a
product is appropriate for their needs
4.2. Learnability – whether a software can be used by specific users to
accomplish a goal of learning to use the software with efficiency,
effectiveness and satisfaction
4.3. Operability – the system’s features make it easy to control and
operate
4.4. User error protection – the software protects users from making
errors
4.5. User interface aesthetics – the user interface is pleasing and satisfying
for the users
4.6. Accessibility – the software can be used by people with diverse
capabilities and characteristics to accomplish a task or goal
Programming NC IV
5
Applying Quality Standards

5. Reliability – the system performs its functions under specific condition


and period of time
5.1. Maturity – the product or software meets reliability needs for normal
operation
5.2. Availability – the software is accessible and working when required
5.3. Fault tolerance – the system operates as designed despite faulty
hardware or software
5.4. Recoverability – when there is failure or interruption, the system can
recover the affected data and go back to its original state

6. Security – only authorized users can access the information and data for
the system protects it
6.1. Confidentiality – data is only accessed by authorized person
6.2. Integrity – the system prevents access or modification to data or
computer program by unauthorized persons
6.3. Non-repudiation – actions and events that happened can be proven
6.4. Accountability – the entry and actions can be traced uniquely
6.5. Authenticity – the identity of a subject can be proven to be the one
identified

7. Maintainability – the software can be maintained by specific maintainers


effectively and efficiently
7.1. Modularity – the system has discreet components so that an
alteration to one component has the least impact to the other
7.2. Reusability – an asset of the software can be used in more than one
system
7.3. Analysability – it is possible to assess the impact of a change in one or
more parts of a software and identify deficiencies or failure causes
7.4. Modifiability – the system can be changed without defects or degrade
in quality
7.5. Testability – test criteria can be established for the software and tests
can be conducted

8. Portability – the system or its component can be transferred from one


hardware, software or environment to another
8.1. Adaptability – the software can be adapted in different hardware,
software or environment
8.2. Installability – the system can be installed and uninstalled in a
specific environment
8.3. Replaceability – the software can replace another software with the
same purpose in the same environment

This product quality model can be utilized by programmers, developers,


quality assurance staff and evaluators.

Course Module
In a broader sense, both internal and external quality characteristics must
also be assessed. The external attributes refer to the user experience, but are
subjective since they are dependent on the user’s knowledge and education.
To make them objective, internal quality attributes must be evaluated as
shown in the figure below:

Figure 2. Software Internal and External Attributes

Kitchenham (1990) posted three conditions for the internal attributes to be a


useful predictor of software quality:
1. The internal attribute/characteristic must be measured correctly.
2. There should be a relationship between the measurable internal attribute
and the external attribute of interest.
3. The internal and external attributes relationship should be understood,
validated and presented in terms of a model or a formula.

Fault Identification and Reporting


In order to find faults in a system application, program inspections or peer
reviews should be conducted. This is when the programmers’ team work
together to debug the program. During this inspection, a checklist of common
errors in programming is used to search for bugs. The table below shows a
sample checklist to find faults in a program:
Fault Class Inspection Check
Data Faults  Are all variables initialized before used?
 Are all constants named?
 Is the upper bound array equal to array length or
length-1?
 Is a delimiter assigned in character strings?
 Is there a possibility for buffer overflow?
Programming NC IV
7
Applying Quality Standards

Control Faults  Are all conditions in conditional statements


correct?
 Are all loops terminated?
 Do nested statements have proper brackets?
 Are breaks included in cases?
Input / Output Faults  Are all input variables utilized?
 Do all output variables have value before being
displayed?
 Do unexpected inputs corrupt the program?
Interface Faults  Are there enough parameters for functions and
methods?
 Do actual and formal parameter types match?
 Are parameters arranged properly?
Storage Management  If a link structure is changed, are all links
Faults updated?
 Is the dynamic storage space been allocated
appropriately?
 Is space deallocated when no longer used?
Exception Management  Are all possible error conditions identified?
Faults

Once all faults and errors are identified, writing a report follows to address
and fix the bugs and prevent them from recurring again.

Assess Own Work


This section focuses on the communication skills and knowledge needed to
carry out and evaluate your own work and the error identification process
which includes pre and post review activities.

Communication Skills
We’ve learned in the previous modules how important the role of
communication is in giving and receiving information. This skill involves
reading, listening, writing and speaking using various tools. In this section,
we’ll look at communication as a medium to evaluate our own work.
Why is communication important?
1. It allows us to maintain our competence by gaining knowledge.
2. Obtained understanding is important to reach our goals.
3. Communication is vital to interact effectively with diverse people.
4. Good listening skills help in addressing issues and strengthening both
internal and client relationships.
5. It equips us to ask the right questions and discover solutions to a
problem.

Course Module
Here are some skills that you need to gain and hone:
Effectively express 1. Communicate in an accurate, timely and easy-to-
yourself understand manner regardless of the medium.
2. Share information in an honest and open way.
Listen effectively 1. Analyze and understand thoughts, concerns or
feelings not expressed very well.
2. Interpret body language and other non-verbal
forms of communication to respond
appropriately.
3. Look at the information from a different
perspective before drawing conclusions.
Understand 1. Try to understand others’ reference.
underlying concerns 2. Realize why people behave in a certain way.
and issues 3. Utilize this information to identify communication
needs.
4. Address people’s concern and come up with long-
term solutions.
Adaptive 1. Analyze underlying issues and use the most
communication skills effective method in delivering the information.
2. Apply different methods to convey information in
a clear and understandable way.
3. Look at the information from the listener’s
perspective, anticipate their response and
respond accordingly.

Identifying Errors
To identify errors in a software program, it is necessary to review the
software. Basically, the review process is divided in three phases – pre-
review activities, review meeting and post-review activities, as illustrated in
the figure below.

Figure 3. Software Review Process


Programming NC IV
9
Applying Quality Standards

Sommerville (2011) defined the review process as follows:


1. Pre-review activities are preparatory actions to assure effectiveness of the
review. This phase includes review planning and preparation.
a. Review planning means setting up a review team, time and place
for the review where the documents for review are distributed.
b. Review preparation involves having the team meet and discuss the
overview of the software to be reviewed.
c. Individual review allows the members of the team to look for
errors, omissions and characteristics that do not follow the
standards independently.

2. The review meeting, on the other hand, is when the author of the
document will walk through the document. This process could take two
or more hours. One team member will act as the chair and make sure that
all actions and review decisions are properly documented.

3. Post review activities take place after the review meeting. Problems raised
should be addressed at this point, like fixing the errors and bugs found in
the software, refactoring the software, ensuring standards compliance,
and rewriting documents.

Engage in Quality Improvement


Relevant Production Processes
ISO 9001 has been considered as an international standard for quality
management systems. It can also be used as a framework in developing
standards which involves quality principles and processes, and
organizational standards and procedures. The figure below shows the ISO
9001 core process in product (software) delivery and support.

Figure 4. ISO 9001 Core Processes

Course Module
Critical Thinking
Critical thinking is not just essential in the workplace but in quality
improvement as well. This skill involves quick decision making and problem
solving. Make sure to improve the following critical thinking skills:
1. Decision making requires information gathering, assessing possible
solutions and coming up with the best option.
2. Planning and organizing will assure that you will get the job done
appropriately. It will also help in improving quality work.
3. Creative thinking or synthesizing means coming up with new ways to
accomplish a goal.

Quality Improvement Process


It has been assumed that the software quality is directly related to the quality
of the software development process. The figure below shows that
developing the product or program, evaluating its quality and improving the
quality is a repeated process until standard or needed quality is met.

Figure 5. Process-based Quality

Quality improvement is done to assure that there will be fewer faults or


defects in the future software to be developed. Thus, this process is essential
in the overall quality of the software and must be done to create good quality
software.
The quality team or staff responsible in quality assurance, must decide if the
software meets the user requirements. In doing so, they should answer the
following questions:
1. Are the programming and documentation standards followed?
2. Is the software properly tested?
3. Is the software dependable?
4. Is the software’s performance acceptable for normal use?
5. Is the software usable?
6. Is the software easy to understand?
7. Is the software well-structured?

These are just general questions to ask in ensuring that the software has
been tested according to the requirements determined by the target users or
clients. Aside from this, other software quality attributes, as discussed in
ISO/IEC 25010:2011 SQuaRE, must be tested and evaluated.
Programming NC IV
11
Applying Quality Standards

Glossary
Bug (n.)– in a computer program, bug is an error, fault or flaw
Cyclomatic (adj.) – in programming, cyclomatic complexity is used to
measure how complex a program is
Software (n.)– is a program or group of programs developed specifically for
end users
Risk (n.)– a situation which could expose to danger

References
Alberta Human Resources and Employment. Skills by Design. Strategies for
Employee Development. Government of Alberta. Retrieved from:
https://www.albertacanada.com/files/albertacanada/SkillsDesign.pd
f
AARP Foundation. What Skills are Employers Looking For? Retrieved from:
http://www.aarpworksearch.org/Inside/Pages/HowEmployableAmI.
aspx
ISO. SO/IEC 25010:2011(en). Retrieved from
https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-1:v1:en
Somerville, I. (2011). Software Engineering 9th Edition. United States of
America: Pearson Education, Inc.

Course Module

You might also like