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