Open Source Scientific Journal
Vol.1, no.1, 2009
Processes of Quality Management in Open Source Software Lect. Marius Popa, PhD Department of Computer Science in Economics Academy of Economic Studies, Bucharest, Romania
[email protected] Abstract. The paper presents elements regarding the way in which a process of quality management can be done in open source environment. There are highlighted the following: concept and framework of open source, categories of open source licenses, categories of software products, open source software quality, differences between open source and commercial computer software, quality characteristics of the open source software, techniques and methods to increase the quality of open source software, measurement the software quality and management processes in computer software. Keywords: open source software, management process, software quality.
1. Open Source Software Open source software represents the computer software for which: • The source code is freely available; • The approach of the design, development and distribution offers accessibility to the source code; • Modifications and redistribution of the source code are permitted without paying royalty or fees; • Any software developer can copy, read, view, modify and distribute the source code; • Its evolution is given by software developers’ community. Development of open source software is made in accordance with a set of principles and best practices on how to write software. The most important principle is that the source code is openly available. There are some differences between open source software and free software as: accessibility to the source code, modifications and redistribution without paying fees, new versions made openly by software developers’ communities. The license term is defined as a document issued as proof of official or legal permission. A software license represents a legal contract between a license issuer and a license receiver that grants permissions to use specific software described in Software Product Description – SPD in terms and conditions of the license contract [1]. There are many kinds of licenses used in distribution of the open source software: • GNU General Public License (GNU GPL) – it was designed to guarantee the freedom to share and change all versions of software to make sure it remains free software for all users; this license doesn’t permit inclusion of a GNU GPL software in a proprietary software; • Berkeley Source Distribution (BSD) – it is a simple a liberal license for computer software developed at the University of California at Berkley; this license specifies that any redistributed version must contain the original copyright notice, two simple 87
Open Source Scientific Journal
Vol.1, no.1, 2009
restrictions and disclaimer of liability; the two restrictions are: no one can claim that he wrote software if he did not write it and no one can sue the developer if the software doesn’t function as it was designed; • X Consortium – it has roots at Massachussetts Institute of Technology; it is a permissive license and permits the reuse within proprietary software if the license is distributed with that software; • Artistic – it establishes the framework for open source software use; it specifies that a reasonable copying fee can be charged whether an aggregate software distribution is sold; • Mozilla Public License (MPL) – it looks like Netscape Public License – NPL that contains special privileges applied only to Netscape; it permits to the developers to make modifications private. The distribution of an open source system must comply with the following criteria [2]: • Free redistribution – the license may not require a royalty or other fee; also, the license may not restrict components of the open source software from selling; • Source code – the distribution must include the source code as well as compiled form; the source code must be in clear form to be modified, not in obfuscated or intermediate forms; • Derived works – the license must allow modifications of the open source software; the resulted software must be redistributed under the same license; • Integrity of the author’s source code – the work is separated among authors through patch files; thus, the source code may not be redistributed in modified form and all modifications are based on patch files; the license may require to assign different names or versions to the modified software; • No discrimination against persons or groups – an open source license may not contain prohibited specifications against some persons or groups; • No discrimination against fields of endeavor – the open source software is used in any activity field; • Distribution of license – there are not additional licenses for those parties who have got a redistributed version of the open source software; • License must not be specific to a product – the rights attached to the open source software are independent of a specific software distribution; • License must not contaminate other software – the license must not introduce restrictions on other software distributed with the licensed software; • Example Licenses – GNU GPL, BSD, X Consortium, Artistic and MPL licenses. The main characteristics of some licenses for open source software are presented in the bellow table [2]: Table 1 Main Characteristics of License for Open Source Software
License GPL LGPL BSD NPL
Mix with commercial Modifications software taken private No No Yes No Yes Yes Yes Yes 88
Re-licensed by anyone No No No No
Special privileges for the original copyright holder No No No Yes
Open Source Scientific Journal
MPL Public Domain
Yes Yes
Vol.1, no.1, 2009
Yes Yes
No Yes
No No
The public domain software is software that it is not copyrighted. The above characteristics must be considered when software developers decide to make open source software. Different categories of software are highlighted in bellow diagram made by Chao-Kuei [3]:
Figure 1 Categories of Software Chao-Kuei [3]
In accordance with the previous figure, there are identified the following categories of software as they are described in [3]: • Free software – it can be use, copy and distribute with modification, either gratis or for a fee; the source code must be available; • Open Source software – it means more or less the same category as free software; some restrictive licenses are accepted and some free software licenses are not accepted; • Public domain software – it is non-copyrighted software; • Copylefted software – it is free software; a copy of this software carries more or less the same distribution terms; • Non-copylefted free software – it comes with the permissions to modify and redistribute the software; to the new version, new restrictions can be added; • GPL-covered software – it is copylefted software with specific set of distribution terms; • GNU software – it is copylefted software, but not all; it must be free software; • Non-free software – it is software that doesn’t has the free software characteristics; it includes the semi-free software and proprietary software; • Semi-free software – it is not free with permissions for non-profit purposes; • Proprietary software – it is not free or semi-free software; use, modification or redistribution are prohibited or they require to ask for permission; 89
Open Source Scientific Journal
Vol.1, no.1, 2009
•
Freeware – it is software that can be redistributed, but not modified; the source code is not available; • Shareware – it is software that require a license fee to continue to use after redistribution of a copy; the software has the permission to redistribute it, but the source code is not available; • Private software – it is software developed for one user; this is not release to the public either in source code or binary form; • Commercial software – it is software developed which aims the make money through distribution in business field. OpenDEN – Free, Open Source Software classifies open source computer software in some classes highlighted in the below table: Table 2 Categories of Open Source Computer Software [4]
Category of Computer Software Web Servers
Biometrics Business Solutions Communication Data Interactions Databases Design (Systems) Design, Simulation (Engineering, Research)
Development Tools
Document Management Gaming Platform Graphics, Multimedia
Application Fields .net Servers; Application Servers; Audio, Video Streaming; Chat Servers, Database Middleware; Directory Servers; eCommerce Servers; Embedded Servers; Grid Computing; HTTP Servers; J2EE Servers; Java Servers (Servlet, JSP); Messaging Middleware; Mobile Servers; Object Brokers; Other Servers Biometric Authentication APIs; Face Recognition; Finger Print; Iris Recognition; Voice Recognition Asset Tracking; Book Keeping; CRM; ERP; Front Desk; Library Systems; Office Suite; Payroll; Point of Sale; School Administration Systems; Ticket Tracking, Workflow Audio Conferencing; PC Phones, Dialers; Telecom APIs, Libraries; Video Conferencing; VoIP B2B, Mapping, Integration, EDI; Data Archiving; Data Mining; Data Visualization, Charting; Format Conversion, ETL; Reporting, Query Tools Database Administration Tools; Deductive Databases; Embedded Databases; Knowledge Base; Object Databases; Relational Database; Spatial Database; XML Database CASE Tools; Database Design; Flow Charting, Mind Mapping; UML Tools Artificial Intelligence; Biochemistry, Chemistry, Molecular Analysis; Bioinformatics, Genetics; Electronics – Digital Signal Processing (DSP); Electronics – Electronic Design Automation (EDA); Electronics – PCB Design; Machine Vision; Mathematics, Simulation, Lab Software; Mechanical, CAD; Robotics; Structural Engineering, Architecture; Workflow (Laboratory, Engineering, Design) Bug, Issue Tracking; Build, Integration Tools; Code Editors; Code Generators – Java; Code Generators – Other; Configuration, Release Management; Database Driver; Debuggers – Other; Debuggers – Java; Frameworks, Environments; Help, Documentation Tools; IDEs; Java Decompilers; Object – Relational; Performance Tuning – Java; Performance Tuning – Other; Programming, Scripting; Version Control; XML Tools Document Editors; Document Repository; Translation, Localization Gaming Engines; Gaming Middleware; Map Editors, Level Editors; Virtual Words 2D Graphics, Animation; 3D Graphics, Animation, Rendering; Audio, Video Processing; Codecs, Compression Tools; Desk Top Publishing
90
Open Source Scientific Journal
Groupware, Messaging Handheld Devices Kids, Learning Network Tools Operating Systems P2P Project Management RFID Security
Standards, Specifications
System Administration Testing Tools Tools, Utilities
Web Tools
Wireless
Vol.1, no.1, 2009 (DTP); Internet TV, Video; Media Players; Photo, Image Editors; Rippers (CD, DVD); Speech Synthesis; Synthesizer, MIDI Collaboration; Instant Messaging; Mail Clients; Messaging, Mail Servers; Web Mail GPS Games, Interactive Learning; Geography Learning; Language Learning; Learning Environments; Learning to Program; Mathematics Learning; Music Learning; Paint, Coloring; Science Learning Analyzers; DNS Tools; Intrusion Detection, Security; Network Monitoring; Network Utilities; Wireless, WiFi Network Tools P2P Tools Project Management Tools RFID Emulators; RFID Enabled Applications; RFID Middleware; RFID Readers; RFID Toolkits & APIs Adware, Spyware Blockers; Anonymous Browsing; Digital Identity Tools; Digital Signature Tools; Email Security; Encryption Tools; Firewalls; Network Security; Password Security; Security Frameworks, APIs; Virus Protection; Web Filters, Content Filters; Wireless Device Security Development Standards; Digital Media Standards; eBusiness, B2B Specifications; Interfaces & Protocols; Language Specifications; Networking Standards; Performance Standards; Software Certifications; Systems Design Standards; Testing Standards; User Interface, Site Design Standards .net Testing Tools; Data Generators; Decompilers – Java; Java Load Testing Tools; Java Testing Tools (Other); Java Unit Testing Tools; Other Testing Tools; Testing Frameworks Bookmark Management; CD, DVD Burners; Desktop, Themes; Disk Cleanup, System Tuning; Email Utilities; File Viewers, Explorers; FTP Tools; Personal Finace Tools; Personal Information Management (PIM); Privacy Tools; Searching Tools; Terminal Emulators; Virtual Disks Ajax Frameworks; Browsers; Bulletin Boards, Forums; Content Caching, Proxy Servers; Content Management Systems (CMS); Source Management, eLearning; Crawlers; eCommerce, Shopping Carts; File Management, WebDAV; News Aggregation, RSS (.NET Windows); News Aggregation, RSS (Handhelds); News Aggregation, RSS (Java); News Aggregation, RSS (Other); News Management; Search Tools; Search Tools, Indexing Tools; Site Analysis; Sitemap Tools; Social Web Tools; Web Application Frameworks; Web Utilities; Weblog Tools (blog); Website Templating; Wiki Tools Bluetooth; Firmware; Location, Triangulation; Network Selector; Network Sharing; Wireless Security; Wireless Utility
Open source software is a complex phenomenon because it requires an interdisciplinary understanding. This phenomenon has a global impact, changing the way in which developers create, distribute, acquire and use software-based services. 2. Quality in Open Source Software
91
Open Source Scientific Journal
Vol.1, no.1, 2009
In [5], some several features of the computer software products are presented opposite to the other products: • Computer software production has as result a unique product – it is very difficult to build standards; processes, methods and techniques are standardized in order to assure a certain level of quality; • Computer software products can be copied – the quality level of the initial product is propagated to the multiples copies; • Computer software products are affected by new versions or other similar products – a new version or a new product is developed when users have new requirements and development costs are acceptable; • Computer software products need hardware – technological development of the hardware determines portability of the software products to the new hardware platforms; • Processing flows don’t changes – instructions have the same behavior; • Errors are the result of use or combination of the instructions or basic components; • Components of the software product are complex – components are composed by instruction sequences, routines and modules; • Computer software product doesn’t change its quality – software product is corrected, but errors cannot be totally eliminated; • Computer software product has not a physical form – software product is represented by processing flows with sequences, dependencies and spatial relationships; • Computer software products are different – software products implement different users’ requirements and development processes; • Stability of the software specifications is not guaranteed – requirements for a software product are in a continuous change; • Computer software products are complex constructions – complexity results from analysis of the business flows and implementation of the users’ requirements. In ISO standard, the quality term is defined as all properties and characteristics of a product or service that has the ability to satisfy the specified or implicit needs. Computer software quality represents a combination of characteristics. Users buy software products that contain functions necessary to them with a high level of quality and low prices as possible. Computer software quality has two specific features [5]: • Compliance with the users’ specifications – software product must be a good solution for end user’s problems; • Referring the problem which software product was developed for; Quality in open source software aims the features that assure users’ requirements covering with no acquisition costs. The quality of an open source software product is essentially influenced by contributions of different users who add new functionalities to the initial software product. It is possible that new functionalities added to an open source software product to have poor quality from the point of view of methods and techniques for analysis, design, implementation and testing of new components. This issue is very important to determine new level of quality for new versions of open source software. Thus, a high-level of quality can be assured in a development environment with rules of new component development and adding to the last version of an open source software product. 92
Open Source Scientific Journal
Vol.1, no.1, 2009
This issue doesn’t forbid development of new versions outside of the organized framework because the source code is freely available to anyone. In the last case, the problem is that it is possible do not assure the level of quality obtained in an organized framework with established rules for new version development. In development process of an open source software product, there is not a unitary vision on product quality because the software is developed in time by many software developers. In addition, the authors of the initial version don’t know how many versions will result and how many people will contribute to these versions. So, the quality of the software product is built during the development process and it is based on the feedback from developers’ community and end users. Sometimes, an open source platform is transformed in a commercial one. This issue has the following reasons: • Initial developer aims a financial gain; • Initial developer did not have resources necessary to develop the software project; • Open source platform gained in maturity; • Requirements collected from other developers and end users; • Quality was achieved at the desired level. To achieve a high-level of quality, some principles of the quality must be respected as it is presented in [5]: • Prevent the introduction of defects – the effort to prevent is the same with the effort to detect defects in source code; • Detecting and correcting defects as early as possible in the development process – the quality control is made during all life cycle stages; • Eliminate the causes and symptoms of defects – it is an extension of the previous principle; the aim is to eliminate the causes of the defects, not the defects themselves; • Independent auditing for compliance with standards and procedures – it is hold at two levels: processes and project to establish if the project activities respect the standards and procedures. In open source computer software products, the previous principles must be considered by all developers who contribute to new versions of the software product. Each of them must prevent and eliminate defects from developed components by them. They must know and implement the software development procedures and they must organize the development processes in accordance with quality standards. Also, they must test and evaluate the quality of the new components in accordance with the standards available for that software category. The quality of the computer software product is analyzed in the light of intrinsic quality of the product, process quality and product quality in the context of the business environment where the software product is used [5]. To establish the level of quality for a computer software product and to find the improvement ways of this one, it is necessary to make measures and predictions. From this point of view, quality is approached in the following directions [5]: • Transcendental approach – quality cannot be defined, measured and analyzed; it is recognized only on the base of personal and professional experience; • From user’s point of view – consumers perceive the quality through reliability and usability of the product; • Based on product – quality can be measured on product characteristics; 93
Open Source Scientific Journal
Vol.1, no.1, 2009
• Based on production – quality is analyzed on achieving the product specifications; • Based on value – quality is defined in terms of costs and prices. To evaluate the quality of the open source software products, it is necessary to establish the direction in which the evaluation will be done. For instance, quality evaluation based on valued must consider that an open source software product has no price, and the costs consists in time and other resources that can be measured in financial terms.
3. Quality Characteristics of the Open Source Software A quality characteristic represents the specific feature which defines the intended quality level. Quality characteristics of a software product aims the features that are use to determine the quality level of the software product. In [5], the quality characteristics are grouped in the following classes: • Construction characteristics – they refer to the characteristics of the components included in software product; • Functional characteristics – they are specific to the results obtained in working stage of the software product; • Economic characteristics – they refer to some economic indicators defined through costs and prices; • Technological characteristics – they highlight the development possibilities in a technological system; • Aesthetic characteristics – they highlight the features of design, dimension proportions, product functionality, chromatic, general appearance and so forth; • Ergonomic characteristics – they refer to covering the user’s requirements and to get maximum of satisfaction; • Ecological characteristics – they aim the environment protection, including after product use; • Identification characteristics – they highlight the documentation of the stages in a development life cycle. Another criterion to classify the quality characteristics is the processing area of the software components included in software products: • Data quality characteristics; • Software quality characteristics; • Output quality characteristics. From quality characteristic set, some characteristics appropriate to the scope of the software product are selected. This issue is easier to do it for commercial software products. Because an open source software is developed in time by many users, establishing the quality characteristics that must be accomplished by the final product is very difficult to be done. Such a process can be accomplished by open source platforms organized around a developers group. If the leadership misses then it cannot be a process to assure aprioristic the quality level of the software product. The quality is built during each development stage of the new software versions.
94
Open Source Scientific Journal
Vol.1, no.1, 2009
To describe a software product completely, it is necessary to analyze the quality characteristics classified in the previous three categories: data, software and output. The main quality characteristics of the computer software products are [5]: • Correctness – degree in which a computer software product covers its requirements; it is one of the characteristics that is very difficult to be met; for instance, complexity of such software product makes impossible to test all the software components; • Reliability – frequency and danger of a software fault; a fault represents an effect or unacceptable behavior in working conditions; reliability can be measured; • Maintenance – it is highlighted long time after software product launching; it represents the efficacy to modify the software product to correct deficiencies or to add new functionalities; also, it refers to how easy data accomplish quality requirements; • Reusability – how easy a software product is reused in software development of another one; • Portability – how easy a software product is used on other technological platforms than the use on the current platform; • Efficiency – degree in which a software product reaches its proposes without resource spending. Regarding the data quality characteristics, in [6] such characteristics are presented: • Accuracy – degree in which data are correct, exact, without errors; • Consistency – there is no conflict between data; • Orthogonality – degree in which data are different; it is an opposed concept to the reusability; • Completeness – degree in which defined data have values; • Opportunity – data availability and its use in an appropriate moment, when user needs data; • Usability – structure and content of the data are appropriate to user’s needs; • Reliability – degree in which data accomplish some functions that they was generated for; • Uniformity – it aims the levels and elements that compose data model. In addition to the previous quality characteristics, open source computer software must meet the following: • Availability – an open source software product must be reachable easy, without costs; easy of access takes into consideration the channels through the software product is distributed; the source code must be freely accessible so new versions to be created by software developers; • Distribution – an open source software product must be distributed free of charge, through well-known channels for software developers’ community like computer networks; the new version must respect the terms specified in the license of the older version; • Confidence – a software developer who wants to build a new version of an open source software must have confidence that the software product accomplishes the main quality characteristics; thus, software developer has the confidence that the new version fulfills the quality requirements of the end users; also, this quality 95
Open Source Scientific Journal
Vol.1, no.1, 2009
characteristic includes the security attribute so end users have not to worry the potential threats. The identification of the quality characteristics for open source computer software products is very important in evaluation processes of the quality level of such products. Not all quality characteristics are met in a software product, but for a specific scope they are ranked depending on importance in that context. 4. Ways to Increase the Quality of the Open Source Software Process improvement leads to software development improvement. Elements used to improve process [5]: • The most appropriate technologies; • Employees with professional knowledge, experience and skills; • Relationships in accordance with objectives of the organization. To improve the process, it is necessary to [5]: • Alignment of the development process to strategic objectives of the organization; • Way in which the organization is compared with another ones; • Comparing with the best organization in that field; • Establishing the weak spots and strength spots; • Establishing the necessary improvements; • Start point in development process improvement; • Establishing the priorities depending of available resources; • Expected benefits. In [7], product development improvement is presented and depicted in figure 2. Understanding the best practices What it is possible Evaluation of current state: - strength spots; - weak spots.
Current state
Gap analysis Writing the improvement plan
Gap
Determination the critical factors of success for strategic direction What it is necessary State to be aimed
Figure 2 Product Development Improvement [7]
The competitive dimensions associated to product development are [5]: • Time of the launching on market; • Small development costs; • Small production cost, high added value; • Innovation and performance of the product; 96
Open Source Scientific Journal
Vol.1, no.1, 2009
• Quality, reliability, ease of use, service; • Agility. Implementation of the plan for product development improvement starts with activities having the lowest cost and the high result. Software development strategies have a permanent change: distributed global software development, COTS – Commercial, off-the-shelf and Open Source development are some examples. Thus, for specifying the software requirements time is shortest and varieties of personalized software that aims particular markets are largest. The optimization in software development is a permanent process without decreasing the quality level of the computer software product. In conclusion, it is necessary to improve software development process. Some techniques to increase the quality of the software products are presented in [5] and they are: • Use of CASE tools – Computer-Aided Software Engineering tools are used to assist software developer in software development life cycle; errors are corrected during process carrying out; software development process is automated and it contributes to quality improvement and increasing of the work increasing; • Use of object oriented techniques – object oriented programming permits to develop software products with a high-level of quality; the benefits of the object oriented techniques are: reusability, problem analysis on components using object oriented techniques; specific characteristics of the object oriented software products are: abstracting, encapsulation and inheritance; • Use of Cleanroom – set of principles and practices for software management, specifications, design and testing that lead to increasing the software quality and work productivity and cost decreasing; the cleanroom introduces statistical control of the quality in software development; • Use of design patterns – en efficient technology to increase software developers’ work productivity and software product quality; a relationship between the context and spatial configuration is established; • Development based on components – development of a new software product is based on components from software products that are in exploitation; these components have a verified quality level and they are used to reduce development time and costs, ensuring a certain quality level; this kind of development is a transition between software programming and software combination. Software developers can choose the appropriate way to increase the quality of their products. They want to decrease the development time, but keeping the same quality level of the software product. The benefits of decreasing the development time are both software developers and end users. The open source software products are oriented to the end users’ specific needs. Each developer who contributes to new version of an open source software has own methods to increase the quality of the new version in opposition to the old one. In this case, the development process is a very simple and developers’ resources are very restrictive. Thus, the quality increasing is made on methods and techniques of programming, reusability of verified components and focus on end users’ needs.
97
Open Source Scientific Journal
Vol.1, no.1, 2009
Another aspect of the way in which the quality of an open source software can be increased refers to risk management. In accordance with [8], the Software Assurance Technology Center – SATC classifies risks in the following classes: • Low – high probability to reach the objectives; plans for risk situations are not necessary; • Medium – probability to reach the objectives; plans for risk situations are necessary; • High – high probability not to reach the objectives; plans for risk situations are applied. Risks of the open source computer software products are: • Low level of intrinsic quality of the software product; • Lack of the support, training and service from developer; • Lack of patches, updates and upgrades; • Interoperability and integration with other hardware and software systems (open source or proprietary); • Secure implementation of the software requirements; • Legal regulations. Risk management supposes the following activities [9]: • A high-level technical and commercial assessment of open source software contribution; • Internal policy for software developers; • Process of tracking and recording the use of open source software; • Insurance against liability for infringement of third party. Software developers assess risks, organize and plan human resources and follow up software development to increase the quality of the computer software products: the proprietary and the open source ones. 5. Software for Quality Measurement of the Open Source Software In [6], computer software products for data quality assessment are presented. Before the implementation, computer software architecture must be defined. The software architecture describes the system components, their connections and interactions. Software quality depends of its architecture. To define a software architecture, the following activities must be specified [5]: • Case definition that will be resolved by software system; • Requirement understanding; • Building or select the architecture; • Representation and publication of the architecture; • Analysis or assessment of the architecture; • Implementation of the system based on architecture; • Implementation in accordance with architecture. Software for quality measurement of the computer software products must implement metrics to assess the quality characteristics of these products. This kind of software supposes the following activities [6]: • Defining the software purpose through results necessary to fundament the decision; 98
Open Source Scientific Journal
Vol.1, no.1, 2009
•
Establishing the inputs through study on quality characteristics system and models associated to the software metrics; • Building the system architecture based on inputs analysis and correlations between them; • Colleting, normalization and systematization of the data in accordance with metrics requirements; • Implementing the metric system; • Designing the user interface to assist the quality assessment process; • Testing the metric system, focusing on software product behavior in extreme cases. The quality of the open source software is determined by quality characteristics of this kind of software, especially the particular ones like availability, distribution and confidence. The quality of open source software can be evaluated through other software products that implement metrics systems defined by assessors. Such computer software products implements metrics systems based on quality characteristics of the open source software. For instance, the most important channel to distribute open source software is computer networks. To be available, an open source software must be: • Published in a computer network; • Accessed by software developers and end users. The metric system to assess the quality characteristics about availability of the open source software must consider the following aspects: • Visibility of the computer network in which the open source software product was published to other computer networks and Internet; • Hardware and software performances of the servers that support the computer network where the open source software was published; • Connections with promoting sites and other sites that offer open source solutions; • Indexing in search engines; • Easy access of the software developers and end users to the computer networks; • Computer network infrastructure. The metric system is built on the above particularities of the quality characteristic regarding the availability of an open source software. Computer software for quality measurement must structured along the following points [10]: • Goals and objectives related to software product; • Metrics are defined and selected to establish the degree to which the goals and objectives are met; • Defining and using the data collection process and recording; • Assessment and reports are part of a closed loop system; • Improvement of future product and process management through post-software product life measurement. Inspection software is another one for quality measurement of open source software. This kind of software reviews the source code of the open source code to look for errors, omissions, inconsistencies, confusing sequences and unused code. Also, detailed assessment of the control structure in terms of branches is done. 99
Open Source Scientific Journal
Vol.1, no.1, 2009
The metric system assesses quality characteristics of the computer software products and it implements the following main types of indicators: • Ratio – dividing one quantity to another one; • Proportion – numerator is a part of denominator; • Percentage – denominator is normalized to value 100; • Rate – associated with dynamics of a phenomenon. Software metrics are classified in the following classes [11]: • Product metrics – characteristics of the products: size, complexity, design futures, performance, quality level; • Process metrics – improvement of software development and maintenance; • Project metrics – project characteristics and execution. The use of open source software has benefits for software developers and end users, but many of them are unaware about the quality aspects and ways in which these software products can be used. This aspect becomes very important when some critical characteristics have a poor quality level. For instance, the security characteristic is very important in software application in which it works with money or other financial instruments. Thus, it is necessary to verify the quality of the open source solutions that are used within organization, especially the components used in critical and sensitive activities.
6. Quality Management of the Open Source Software The quality management term refers to the activities hold to direct, control and coordinate quality. The activities include developments of a quality policy and setting quality objectives [12]. The ways in which the quality management is implemented are [5]: • Planning – the main objectives and quality requirements are established; output is a quality plan document that defines the quality attributes and guidelines to use them; the quality plan includes: - Product description – the product properties, aimed market segments and expectations regarding the product quality; - Product plans – product versions, responsibilities, distribution plans and product maintenance; - Process description – methodologies used for development and maintenance, management; - Quality objectives – quality plan with evidences about the critical attributes of the product quality; - Risks and risk management – key risks on product quality and actions to manage these risks. • Control – set of activities hold to ensure that quality requirements are met [12]; it is applied to all stages of software development life cycle; quality control includes [5]: - Inspection and testing; - Feedback that leads to process improvement. • Assurance – procedures, methods, techniques and instruments used to assure that the product respects or overcomes the standards during the computer software 100
Open Source Scientific Journal
Vol.1, no.1, 2009
development life cycle; set of activities hold to ensure that quality requirements will be met [12]; ways in which quality assurance is implemented by management [5]: - Adequate methodology is used; - Projects use standards and procedures; - Inspections and audits; - Documentation for maintenance and improvement; - Software configuration management to control changes; - Testing successfully. Quality management is based on the following principles [13]: • Focus on client – employees depends on customers, understand the future needs of the customers; • Leadership – unitary objectives, objective system, environment in which the employees are involved to aim the organization objectives, strategic plan of the organization; • Involvement of personnel – team work, professional skills, suggestions and ideas to improve the work environment, improvement of the internal communication, training plans and so forth; • Approach based on process – quality management is made through process management; process is the instrument that activity add value; • Approach of the management as system – the component processes are correlated; outputs of a process are inputs for another one; • Permanent improvement of organization performance – permanent improvement of quality management system based on component processes; • Approach based on facts for decisions – the system of records is the fundamental instrument; each applied procedure is documented with records and methods for data analysis; • Mutually beneficial relationships with suppliers – added value for client. The above principles and processes carried out in quality management are available for commercial software products. These products have a proprietary organization that sells them on market. For an open source computer software product, due to characteristics of such products, the quality management is not made in same manner like commercial software. For instance, there are not employees so principles of quality management like leadership and involvement of personnel cannot be respected. Other principles are affected by way in which an open source software product is developed. Thus, relationships with suppliers must be considered through multitude of software developers who participate to new software versions. Each software developer can have his suppliers. Also, each software developer follows his methods and techniques, procedures and guidelines. All these elements are combined with other software developers’ elements so there is not a unitary way to develop a new version of the software product. In conclusions, it is very difficult to manage quality in an open source system for software development. An exception is given by those organizations that develop open source projects among their commercial ones. These organizations have an implemented quality management system and this one can be also applied to their open source projects. 101
Open Source Scientific Journal
Vol.1, no.1, 2009
The quality management in an open source software environment is self adaptive, depending on end users’ needs and professional skills and knowledge of the software developers who add new functionalities and share on market new versions of open source software products. Confirmation of the efficacy for software products quality and software development processes quality is made through audit processes. The audits represent a key technique used to evaluate a product and its monitoring. To carry out audit processes, the following steps are implemented [5]: • Planning the audit processes – establishing the audit scope, software complexity, level of credibility; • Risk evaluation – identification of negative influences on software components; • Elaboration the audit program – includes purpose definition, objectives, planning, carrying out, report writing; • Data collection – highlights the way in which processing is made, different forms of data presentation, guides for use and management; • Elaboration the audit report – takes over elements from audit plan to add details regarding the audit process carrying out, transparency degree. For open source software products, an audit process can be asked by those organizations that want to include such software in their computer software systems. Organizations developing software can ask audits to evaluate their software products and to fulfill the clients’ requirements. Also, they can ask audits on their quality management processes to improve the procedures, methods and techniques of computer software development process and to obtain a quality certification necessary to make business with organizations that ask only certified business partners. 7. Conclusions Open source computer software products became very popular for many organizations, small and medium enterprises and government departments. To reach the purposes of an organization, it is necessary to establish the quality parameters to which the open source solution has been met. Identifying the quality characteristics, building the metric system and implementing the measurements in a software product are factors that contribute to assessment of the quality for open source software. Thus, end user knows the limits in which the open source software can be used. Also, the quality of open source software is very important for a software developer to design and build new versions or new software products that are meet the end users’ needs. Open source software is very flexible because it supplies the source code to anyone who wants to develop new versions appropriated to the specific needs. In an open source environment, the quality management is difficult to be done, because there is not any proprietary of the software product. Some organizations and companies can launch open source projects and they can carry out a quality management process. Computer networks and lack of prices stimulate the spread of the open source computer software products and more and more organizations and companies will consider this alternative solution to support their activities and business processes.
102
Open Source Scientific Journal
Vol.1, no.1, 2009
References [1] http://blog.csdn.net/bjoker/archive/2007/08/18/1749751.aspx, visited on July 20, 2009 [2] Bruce Perens, The Open Source Definition, Open Source Initiative [3] http://www.gnu.org, GNU Project - Free Software Foundation (FSF), visited on July 20, 2009 [4] http://www.openden.com, visited on July 20, 2009 [5] Ion Ivan, Gheorghe Noşca, Sergiu Capisizu, Marius Popa, Managementul calităţii aplicaţiilor informatice, ASE Printing House, Bucharest, 2006 [6] Marius Popa, Tehnici şi metode de evaluare a calităţii datelor, Bucharest, 2005, PhD Thesis [7] Kenneth Crow, Benchmarking Best Practices to Improve Product Development, http://www.npd-solutions.com/index.html, visited on July 20, 2009 [8] L. Hyatt, L. Rosenberg, A Software Quality Model and Metrics for Identifying Project Risks and Assessing software Quality,The Procedeengs of The 8th Annual Software Technology Conference, Utah, April, 1996 [9]
Paul Barton, Open Source - Is It a Risk for http://software.silicon.com/applications, visited on July 20, 2009
Your
Business?,
[10] William Florac, Software Quality Measurement: A Framework for Counting Problems and Defects, Software Engineering Institute, Carnegie Mellon University, Technical Report, 1992 [11] Stephen Kan, Metrics and Models in Software Quality Engineering, Addison-Wesley, 2003 [12] http://www.praxiom.com/iso-definition.htm, visited in July 20, 2009 [13] SR EN ISO 9000:2001, Quality Management Systems. Fundamental Principles and Vocabulary
Marius POPA has graduated the Faculty of Cybernetics, Statistics and Economic Informatics in 2002. He carried out a PhD stage between 2003 and 2005 and he has held a PhD diploma in Economic Cybernetics and Statistics since 2005. He joined the staff of Academy of Economic Studies as teaching assistant in 2002. Since 2006, he has been university 103
Open Source Scientific Journal
Vol.1, no.1, 2009
lecturer within Department of Computer Science in Economics at faculty of Cybernetics, Statistics and Economic Informatics from Academy of Economic Studies. He is the author and co-author of 6 books, 56 articles published in journals like WSEAS Transactions on Computers, Informatica Economică, Economic Computation and Economic Cybernetics Studies and Research, Studii şi Cercetări de Calcul Economic şi Cibernetică Economică and Revista Română de Statistică and 65 papers presented and published in proceedings of national and international conferences, symposiums and workshops organized in Australia, Austria, Italy, Republic of Moldavia, Romania, Turkey, United Kingdom and United States of America in the fields of data quality, software quality, informatics security, collaborative information systems, IT project management, software engineering. He was involved as project manager or research team member in research projects on following topics: virtual intelligent manufacturing processes, developing and testing an automated system of risk analysis, diagnosis and decision to support the medical act, system of quality assessment services generated by mobile applications in electronic business, system of quality assessment for on-line public services for citizens and businesses, system of indicators for evaluating IT project management, collaborative informatics systems in the global economy, methodology of applications development for managing the IT project portfolios, evaluation system of the entities based on text, models to estimate the cost of e-business applications, model base for software quality management, designing and implementing the virtual enterprise and platform for estimating costs of testing object oriented software prototypes. Currently, he is involved as project manager in a research project on topic Implementation of the Quantitative Methods in Distributed Informatics System Audit and as research team member in techniques for classification and recognition with applications in identification documents similarity. He is certified as project manager IPMA Level D, Certified Project Management Associate. Also, he holds more awards and diplomas for his research activity. His interest fields are: software engineering, informatics security, software development, project management, informatics audit, data and software quality. He is member of Research Center of Excellence (ECO-INFOSOC), Association for Promoting the Higher Education in Computer Science in Economics (INFOREC) and Association for Development through Science and Education (ADSE).
104