the Quality Model - Department of Education and Early

advertisement
1
Quality Model
A software quality model will form a foundation for all standards and best practices used by the
Department of Education for the design and development of software.
The DEECD software quality model will identify quality characteristics and the associated attributes and
sub attributes where appropriate. An international standard software quality model will be form the base
of the DEECD software quality model and will be tailored for DEECD specific conditions and
requirements.
Four main characteristics of software quality are important to the DEECD. These include:




1.1
Maintainability,
Reusability,
Reliability, and
Hostability.
International Standards
The Institute of Electronic and Electrical Engineers (IEEE) Standard Computer Dictionary will be used to
define three of the four software quality characteristics.
The DEECD quality model is underpinned by the international standard for Software engineering -Product quality -- Part 1: Quality model (ISO/IEC 9126.
1.2
Overview
The overall DEECD quality model incorporates a targeted set of software quality characteristics and
there associated attributes. The following diagram represents the overall quality model.
Commercial and In Confidence
Page: 1 of 7
1.3
Maintainability
The ease with which a software system or component can be modified to correct faults, improve
performance, or other attributes, or adapt to a changed environment. (IEEE STANDARD COMPUTER
DICTIONARY)
Its important to consider that the team that originally develops software is most cases is not the same as
team maintaining the software. These teams may have different knowledge and skill-sets.
Attributes of Software Maintainability include:




1.3.1
Understandability of Software
Learnability of Software
Complexity of Software
Requirements Translation and Tracability
Understandability
Before someone can effectively modify software to correct faults, improve performance or add
functionality there needs to be an understanding of the software in terms of logical concepts, structure
and behaviour. Without this understanding, modifications to the software present the risk of introducing
defects.
1.3.2
Learnability
There is the likelihood that the person performing maintenance doesn’t have knowledge of the
constructs required to understanding the logical concepts, structure and behaviour of the software. In
this case these constructs need to be easily learned by having supporting educational materials.
1.3.3
Complexity
Even when there is understanding of the software, there can be difficulties with maintenance when the
software is complex. Software complexity can increase the level of effort to make a change and the risk
of missing necessary changes during a maintenance activity.
1.3.4
Requirements Tracability and Translation
The final factor that will impact the ability to maintain software is how the overall software requirements
are translated and traced to individual software constructs. When maintenance involves enhancing
functionality of the software having this traceability allows the associated software constructs to be
quickly identified.
Commercial and In Confidence
Page: 2 of 7
1.4
Reusability
The degree to which a software module or other work product can be used in more than one computing
program or software system. (IEEE STANDARD COMPUTER DICTIONARY)
Attributes of Software Reusability include:




1.4.1
Modularity of software,
Generality of software,
Complexity of software,
Understandability of software,
Modularity
Separating software into modules or components helps to promote reusability. This is achieved by
encapsulating particular functionality or data into a module or component that exists independently from
the overarching system. Generally modules / components provide an interface which defines the
contract of usage by other components or systems.
1.4.2
Generality
Software generality involves the concept of software being use without change, in a variety of situations.
Developing for generality often involves partitioning functionality to a lower level of abstraction and also
managing dependencies. Achieving software generality can also involve adding ‘general’ functionality
that in not needed in the task at hand but may be required for more generally scenarios.
1.4.3
Complexity
Even when software is both general and modular, there can be problems with reuse when there are
sophisticated usage requirements such as complex interfaces or many dependencies that need be
provisioned.
1.4.4
Understandability
Before someone can effectively reuse software components there needs to be an understanding of
function that is provided by the software and how to apply the component to the task at hand. Without
this understanding, the software component may be re-used for the wrong purpose or in the wrong way.
1.5
Reliability
The ability of a system or component to perform its required functions under stated conditions for a
specified period of time. (IEEE STANDARD COMPUTER DICTIONARY)
Attributes of Software Reliability include:


Error / Fault Tolerance
Recoverability
Commercial and In Confidence
Page: 3 of 7
1.5.1
Fault Tolerance
Tolerance to faults is important to ensure reliability. Faults can be defined as misleading or incorrect
software operation. Faults are often associated with erroneous state or data integrity problems. Fault
tolerance is the ability to prevent exceptional scenarios resulting in erroneous state or data corruption.
Exceptional scenarios can be associated with users operating the system incorrectly such as entering
invalid or incomplete data or commands. System infrastructure can also introduce exception scenarios
such as server crashes, hardware failures and network outages.
1.5.2
Recoverability
Recoverability is the ability to repair and return to normal operation after a fault has occurred. This
involves returning the system to a known state of operation or to correct data corruption issues.
1.6
Hostability
Hostability may be defined as how well the system or component will can be hosted or incorporated into
a designated environment or infrastructure. This can include how the system or component optimises
performance in terms of resource requirements, how the system or component conforms to operational
policies such as security and how the system or component support scaling the infrastructure up or out.
Attributes of Hostability include:



1.6.1
Security,
Performance, and
Scalability.
Security
How a system or component provides security against unauthorised access or usage is an important
consideration to hostability. A system or component needs to be able to conform to the Security policy
used within the Host infrastructure or environment. This may include how access is controlled and how
identities are managed.
1.6.2
Performance
Optimising performance is key attribute of hostability. The system or component needs to manage its
resource footprint on the host infrastructure. Usage of CPU, memory, storage, and network bandwidth
need to be accounted for.
1.6.3
Scalability
A system or component needs to support infrastructure that can be scaled up or out. A system or
component needs to be able to support different a tiered approach to hosting and also support load
balanced or clustered farms of servers.
Commercial and In Confidence
Page: 4 of 7
2
Attributes driving standards
The quality model has identified a number of attributes that can be used a justification for all design and
build standards mandated by the DEECD. The following attributes will be referenced by standards and
are described in further detail in the following paragraphs:











2.1
Understandability,
Learnability,
Complexity,
Tracability,
Modularity,
Generality,
Fault Tolerance,
Recoverability,
Security,
Performance, and
Scalability.
Understandability
Understanding how software works is important for maintenance and reuse activities. Two main factors
drive understandability, they include:


Documentation Quality, and
Readability of Source Code,
Understandability can have an impact on learnability, complexity, and generality.
2.2
Learnability
Using software concepts or methods that are easy to learn is important to maintenance activities.
Software concepts and or methods should not be overly complex but the most important factor is that
the concept should be supported by educational material.
2.3
Complexity
Software complexity has the potential to reduce maintainability and re-usability. Complexity can arise
from two areas: Problem complexity and Solution complexity.
Problem complexity can be associated with a sophisticated business model or process that is being
supported by the system or component. Problem complexity is often managed using abstraction by
creating a model of the problem and then viewing the model from different perspectives such as logic,
structure, or behaviour.
Solution complexity can be associated with convoluted logic, software constructed with no consistency
in design or where business logic is duplicated in many places. Solution complexity can also represent
over engineering, where the use of sophisticated design or programming techniques are used without a
strong driving need. Metric can be associated with complexity including size, structural or hierarchical
depth, high coupling (interdependencies).
Commercial and In Confidence
Page: 5 of 7
Complexity can have an impact on understandability and learnability.
2.4
Tracability
Traceability of requirements to code is important to maintainability. Traceability often comes down the
actual documentation of how requirements are implemented. This may be reflected in the design and
possibly commented in the code.
Traceability can have an impact on understandability.
2.5
Modularity
Modularity is important to promote reusability. Modularity involves dividing or encapsulating functionality
into modules or components. It is important to group functionality according to logical or rational criteria.
Modularity may incorporate vertical (feature) or horizontal (layer functional) division.
Modularity can have an impact on Complexity, Scalability and Understandability.
2.6
Generality
Generality is important to promote reusability. Generalisation involves identifying what concepts or logic
have the potential to vary in different scenarios, isolating the static (common) parts and parameterising
the variable parts. It is important to be pragmatic in generalisation as some possible scenarios can be
very unlikely and hence over generalisation can lead to unnecessary complexity.
Generality can have an impact on Complexity and Understandability.
2.7
Fault Tolerance
Fault Tolerance is an important attribute of reusability. Fault tolerance involves protecting the system or
components state and associated data integrity from potential human error and infrastructure failure.
This can involve using software mechanisms such as input validation, exception handling and data
transactions.
2.8
Recoverability
Recoverability can be about self healing or having appropriate manual or semi automated disaster
recovery processes in place.
2.9
Security
Conforming to enterprise security policies and security infrastructure is important to hostability.
Important security consideration can include:







Identity Management,
Authentication,
Authorisation,
Functional and data access control,
Code access security,
Auditing and
Encryption.
Commercial and In Confidence
Page: 6 of 7
2.10
Performance
Optimising the performance of a system or component and reducing resource utilisation is important to
hostability. Performance needs to take into consideration response time, throughput, workload, and
resource utilisation.
Particular software techniques can be used to help improve performance including:






Caching
Pool Resources / Connection sharing
Optimisation
Efficient algorithms
Logic design to avoid resource contention
Coarse grained interfaces
Performance can have an impact on Scalability
2.11
Scalability
Ensure a system or component support scaling out is an important to DEECD hostability. In order to
support distributing a system across a number of server or server farms the following needs to be
considered:



Layer approach correlated to server tiers
Database partitioning
Out of proc Session state
Scalability can have an impact on Complexity and Performance
Commercial and In Confidence
Page: 7 of 7
Download