You are on page 1of 6

Classification of software qualities

User wants reliable efficient easy to use

Producer wants verifiable maintainable portable extensible

Manager wants development to be productive predictable easy to control

=> internal vs external and product vs process === External vs Internal Qualities External qualities are visible to the users of the system Internal : concern the developers of the system.- deal with structure of software - that help developers achieve the external qualities.

Products and Process Qualities


process: to produce the software product. process qualities are closely related to product qualities. ex) process require careful plain of test data before and design and development => inc product reliability. process and product qualities are distinguished. product: what is delivered to the customer (in customer view) for developer-> requirements and design documents ,test data ex) sell the object code and user's manual to software dealer. + source code to vendor . (one developed orignal system be seen as set of related products, end user , vendor will see it different software.

Configuration management :maintain families of products.

Representative Qualities
Correctness,Reliability and Robustness
Correctness
functional requirements specification : A program is written to provide functions specified in it. performance and scalablity do not pertain functions of the system.=> nonfunctional requirements functionally correct if behaves according to its stated functional specifications. specifications -> functional requirements specifications. Correctness can be improved by : 1. using appropriate tools ( high-level languages - supporting extensive static analysis) 2. using standard proven algorithm or libraries of standard modules. 3. using proven methodologies and processes.

Reliability
Correctness is an absolute quality Reliability : relative. incorrect software may still be reliable.

Reliable programs includes the set of correct programs.not vice verse Sometimes correct applications designed for "incorrect" requirements => correctness of the software may not be sufficient to guarantee the user that the software behave "as expected"

Robustness
Robust: if ti behaves reasonably Robustness and correctness are strongly related. (difference of put in to requirement or not, if not it will be issue of correctness)

Performance
Performance and Efficiency is not same. Efficiency: internal quality->how economically utilize computer resource. Performance: external quality based on user requirements.

Performance affects the scalability of software system. To evaluate the performance of system

1. analyze complexity of algorithms -> only provides average or worst case information ,rather than specific information. 1. measurement - discover bottleneck in the system. 2. analysis - build a model of the product and analysis - based on queuing theory. 3. simulation - build a model that simulates the product. performance analysis is required before implement => to prevent in case of redesign.

Usability
User interface is an important component of user-friendliness user-friendliness is more thanUser interface ex) in embedded software -> no user interface , userfriendliness is easy of configured and adapted to the hardware environment. user-friendliness are: 1. consistency and predictabiliy 2. correctness and performance - wrong answer , slow but fancy UI is no good 3. Humman factors and usability engineering -(in automobile, or Television -> easy to use) achieve through standardization

Verifiability
verifiable if its properties can be verified easily.

Verifying correctness of performance of a software is important. Verified with formal and informal analysis methods or through testing. => use of software monitors what contribute to Verifiability? 1. Modular design 2. disciplined coding practices 3. use of appropriate programing language Usually an internal quality,sometimes external quality. -> security -critical apps

Maintainability
Maintenance is not only "bug fix" or fixing defects but also enhancing product with features that were not int the original specifications or stated incorrectly there.

Maintenance:software evolution , costs exceed 60% of the total costs of software.mainly in three categories 1. corrective : 20% or maintenance costs. 2. adaptive : 20% or maintenance costs. -real source of change (evolvability) => adjusting the application to changes in the environment.( new hardware , operating system , database system). no change in feature. 3. perfective : 50%~ or maintenance costs. -real source of change - involves changing the software to improve some of its qualities. modify the functions ,new functions , improve the performance,make easier to use. - improve the status of teh product on the market, or may from customer legacy software : software that already exists int an organization~ (something hard to change, written in old language) => difficult to modify and maintain . => Reverse engineering , reengineering

Reparability
repairable if defect can be corrected with a reasonable amount of work. use standard parts! => proliferation of companies =>defect can be repaired by replacing a failing part. replace defect only part (not a whole part) well designed modules is easier to analyze and repair. inc module => dose not make a more repairable product: chose optimal structure, interface .. Modularization promotes Reparability. Improve with use of proper tools. - higher language , debuggers can help is isolating repairing error.

Evolvabiliy
posteriori : specification updated to reflect the change.=>make easy of future change. successful software products are quite long lived.-> evolution in mind. as production and the complexity of applications grow the evolvbility of software is more important. year of evolution -> reach state where breaking major existing features.

Modularization is break by unanticipated changes. modifications applied without carefully studying `=> changes in both design and the requirements specification.

each new release comes complicated structure => hard evolution => economic impact.

Resuabiliy
akin to evolvability

ex) UNIX Shell , FORTRAN libraries => C,C++,etc One of the goal: increase the granularity of components that may be reused. documents , requirements specification. can be reused also. applies to software process as well. Reusability of standard parts characterize the maturity of an industrial field. manufacturing process is often reused.

Portability
Software can run in different environments. => hardware platform / software environment(like OS).database user interface also. economically important for cost. delivery device haver become diverse. => web browser run on a lot of platform. A lot of cost (like a month)

Understandability
Guide line for Understandability : <= maintenance (subactivity of program understanding).

maintenance engineer spend most time uncover the logic of app / small portion of applying changes. Internal Product Quality => evolvability and verifiability. External Quality => predictable behavior.=> users usability.

Interoperability
Interoperability : ability of a system to coexist and cooperate with other system.

ex) word excel abound in other engineering products. (TV + stereo works well) UNIX standard interface is a primitive ,character-oriented one => no good for structured data. Vendor produce different products and user to combine them if necessary. Achieved through standardization of interfaces.

open system: an extensible collection of independently written applications that function as an integrated system. open system allows addition of new functionality by independent organization after tye system is delivered.

=>achieved by : specification of its "open" interfaces. Interesting requirement => new function may added with taking system down.

Productivity
Productivity: quality of the software production process, referring to its efficiency and performance. Difficult to measure.

Timeliness Visibility

You might also like