Open Source Software: Advantages and Methods
✅ Paper Type: Free Essay | ✅ Subject: Computer Science |
✅ Wordcount: 3168 words | ✅ Published: 22nd Jun 2018 |
Background
Open source software is treated as the software which is freely accessed by anyone. The source code of the software is publically accessible by anyone so that anyone can use it in his own way for study purposes or in order to make some changes. Open source software has option to use general public license or any other license depending upon the permissions or allowances. Now a day’s open source software are very popular because of the availability of the interne in every region of the world.
The development of new open source software is starts with a single developer or a group of developers for their necessity or their interest. Open source development movement was started by Richard Stallman in 1980 in order to grow the development of the free software for social purposes to provide freedoms for the use of the software for various purposes. There are number of free software available online on the host sourcefrge.net site.
Get Help With Your Essay
If you need assistance with writing your essay, our professional essay writing service is here to help!
Find out more about our Essay Writing Service
Open source software is different from proprietary software in which the users can not access the code. Now days users prefer open source software instead of proprietary software because they can use the code in their own way and even they can make the modification and change the functionality according to their requirement. To use open source software, the user do not need to pay the license fee as in case of the proprietary software users need to pay the license fee.
Various pros of open source software:
- Easy license management
- Lower expenses
- Expanded competition
- Good quality and stability
- Increased use in business
- Open interaction with public users and developers
- Improved security
- Faster development
Open source software
Open source software is software that could be easily applied, transformed, and shared (in revised or unmodified form) by anyone. Open source software is made by many individuals, and distributed under licenses that adhere to the Open Source Definition [1]. The Open Source initiative (OSI) is a global non-profit that helps and stimulates the open source movement. Among other activities, it keeps the Open Source Description, and a list of licenses that comply with this definition.
Open source identifies computer software for which:
- The source code can be acquired to the end-user.
- The source code could be revised by the end-user.
- You can find number of restrictions on redistribution or use.
- The licensing conditions are meant to aid extended re-use and large option of the software, in both industrial and non-commercial contexts.
There are several different functions which several, but not totally all, open source software products have in common:
- The expense of immediate purchase to the end-user is usually minimal. This is because the best to easily redistribute the software makes offering licenses for copies of open source software an impossible company idea.
- The development system of open source tasks gives several new features with Agile development, because produces are frequent, functions are included rapidly following comments from customers, developers tend to be distributed geographically.
- Many, but in no way all, open source tasks are made and maintained by informal areas of developers [2].
- Open source tasks frequently offer as apprentice opportunities for junior developers to fast understand their business by doing real-world development.
Open source software development starts with an idea from an individual or from group of individuals. The quality is considered from the initialization of the project development as it will be easy to test the software if the quality is assured from the initialization but if the quality is not assured from the start then it may leads to software failure. Software developer may use the existing code or they can develop their own code according to the requirements. Then after the development of the code it goes under the review process under the trusted developer who can understand the code and the working of the software. Then in order to assure the quality testing is performed in order to remove the faults in software. After the testing of the software if the software is found to perform according to the required functionality and found error free then it is released under the license. After the release of the software, the parallel debugging if required i.e. if any user or developer who is using that software found any faults or error in the software then he may report to the original developer in order to remove that error from the software. So in this parallel debugging is done.
So in this way software undergoes different stages for the development of the software. These stages are depicted as follows:
Figure 1.2.1 Different levels of development of OSS
Benefits of Open Source Software
Open source software has a numerous advantages for the individuals, developers and companies. A few of these benefits could be realized only if agencies lead back once again to the community.
Open source software:
- Normally has no transparent payment. Having less transparent payment may appear to gain agencies economically. Agencies must look into the full total price of ownership like some other software companies; including all help services that’ll be expected to handle the software over their lifespan.
- Encourages an aggressive industry for help services. Because the source code can be acquired, it’s feasible for any software organization to supply help for an open source product. If the clients are the good developers they can edit the code of the software.
- Boost up a collective methodology. Open source software boost up an open transfer of the views of the developers as well as users, who can share their view in order to make the advancements in the software. That tends to promote a collaborative approach that could foster innovation.
- Imposes fewer restrictions on the customers of the software. Most open source software licenses impose fewer restrictions on the customers of the software and emphasize regard for the solitude of the users. Nevertheless, agencies should ensure they understand the obligation for reciprocity that’s a part of several open source licenses.
- Provides the opportunity for customers to directly handle maintenance and support of the software. This might be an advantage to agencies that get the correct ability base.
- Allows the opportunity to use the software before committing to it. This can allow agencies to check the practicality of the product before completely focusing on it.
- May possibly minimize supplier lock-in. whoever is using the software , the source code of the software is visible to everyone, many licenses will allow any individual or group to help expand develop the software without the obligation to aid other customers, even if the initial neighbourhood discontinues development. Professional organizations may give help for an open supply deal, if you will find enough customers willing to cover that service.
- Allows customers to see and alter the source code. The ability of customers to scrutinize and modify the source code can cause increased balance and security. It also allows agencies to custom the software to their own needs [3].
- Allows customers to make the most of the improved performance of new produces more frequently. Now a day’s open source software agencies uses the maxim of ‘release early, release usually ‘, and thus customers can quickly gain extra performance for the software.
- Raises interoperability. Open standards are used by open source software, which helps in reducing the expenses of integration and improve interoperability.
- Frequently is modular. Open source software packages are often modular, meaning changes to one the main source code do not affect the functionality of rest of the code.
Software metrics
Software metrics play a crucial role in the administration of the software projects. Metrics used to track development process, quantify restructuring impact and to calculate code quality. Software metrics are very important to software engineering for measuring software complexity and quality, functionality, Characteristic of the software product. Software metrics can be used for Finding defects in the code, predicting defective code, predicting project success, and predicting project risk. Metrics help to recognize, to monitor and connect project problems at all stages. Metrics can precisely describe the position of software project application and product. Metrics can be utilized as a method to measure problems and to prevent being forced into a reactive fix. Metrics provide powerful medium for choosing the most effective alternatives.
- Efferent Coupling
Efferent coupling is just a count of how many classes which are combined to a particular type i.e. where the methods of 1 type contact the methods or access the parameters of the other class. If a class let it be “home” referrals other class “furniture” and class “furniture” referrals class “home” then class “home” is just counted once [14].
Efferent coupling should really be as low as feasible for three causes –
- Higher coupling increases interclass dependencies, making the code less modular and less ideal for reuse. Even if there is need to use that code again then there may be some extra code bound with the required code which will not be necessary for the required functionality.
- More combining ensures that the code becomes more difficult to securely keep up since an alteration to code in one single region runs an increased risk of affecting other code which may be combined to that code. The more hyperlinks between classes the more complicated the code and the more difficult it is to check [4].
- More independent the code, then it is easier to reuse.
- LOC – Lines of Code
Line of code metric is used to measure the size of the program code. It is the measure of all the lines of code available in the source code file except the comment lines. Loc metric is helpful in measuring the complexity of the code and it is also helpful to predict the productivity of the code. Following are the effects of LOC:
- A low value of lines of code metric result in greater understandability of the code.
- A low value of line of code metric of the source code may require less testing efforts to test the source code.
- A low value of line of code metric may result in high maintainability.
- CC – McCabe’s Cyclomatic complexity
Thomas McCabe developed Cyclomatic complexity metric which is used to measure the complexity of the source code. It helps in determining the minimum possible paths which can build all possible paths by the use of control flow graph.
The value of cyclomatic complexity can be depicted by the use of the following formula:
CC= Number of edged in the graph – number of nodes + number of connected components
Following are the effects based upon McCabe’s cyclomatic complexity metric:
- The low value of cyclomatic complexity indicates the better method.
- The low value of cyclomatic complexity helps in greater understand ability of the methods and reduces the testing efforts required to test the efficiency of the method.
- McCabe’s cyclomatic complexity helps to measure the complexity of the methods instead of the complexity of the class. But the combination of the complexity of all the methods may give results of the complexity of the class.
- The low value of cyclomatic complexity indicates good quality.
- NOC – Number of Children
Number of Children (NOC) is explained by C&K how many immediate subclasses of a class exists [4]. C&K’s see was that –
- The higher number of children poses greater reusability, since inheritance predicts behavior like reusability.
- The higher how many children, the greater the likelihood of incorrect abstraction of the inherent class. If a class features a big amount of children, there is possibility of an event of misuse of sub classing [11].
- The amount of children offers a concept of the potential influence a class has on design. If a class features a big amount of children, there may be need of more testing of the techniques in that class.
- RFC – Response For Class
This is the measure of Response group of a class. It is defined as the number of methods in set of all the methods that are invoked in reply to a message sent to an object of a class [6]. C&K’s see was that –
- In case a large quantity of practices could be invoked in reaction to a message, the screening and testing of the class becomes complex as there is need of huge degree of knowledge on the part of the tester.
- The bigger the number of practices which can be invoked from a class, the complexity of the class increases.
- A worst situation for possible response may support in ideal allocation of screening (testing) time.
- WMC – Weighted Methods for Class
Weighted methods for Class (WMC) was actually proposed by C&K whilst the sum of all complexities of the methods in the class. Each method in a class is assigned a complexity of one rendering WMC equal to the number of strategies in the class. Many traditional implementations follow this rule. C&Ks see of WMC was –
- How many strategies and the complexity of strategies included is a predictor of simply how much time and energy is required to build and maintain the class.
- The bigger the number of strategies in a class the greater the possible impact on children, because children can inherit all the methods that are specifically defined in the class.
- Classes having many strategies are likely to be more application specific, decreasing the likelihood of reuse.
- ABD – Average Block Depth
This is the average of the maximum block depth of each of the methods defined in the target elements. This metric is helpful in determining the complexity of the code. More the levels of nested block it will be difficult to understand the code. A method may have different conditional statements which create the flow of the code and nested blocks are generated. So it is concluded that
- The lower value of the average block depth indicates the good quality of the code.
- Higher value of average block depth indicates high complexity.
- Higher value of average block depth may introduce more error and may lead to difficult understanding of the code.
- Quality of open source software
Quality is defined as the term which implies to customer or the user satisfaction. So the quality of the software means the software works according the user’s requirements. The functionality of the software is up to expectations. There are various factors which are considered in order to measure the quality of the software. Quality depends upon the factors like functionality of the software, reliability of the software, efficiency, accuracy and stability of the software. All these factors have important role in order to measure the quality of the software. If software satisfies or fulfils all these factors then it is considered as good quality software. Software free of bugs is also recommended as of good quality. Regular maintenance of the software is required in order to maintain the quality of the software.
The code of open source software is accessible to everyone. So large number of users can enrol and make their contribution in order to make some modification if there exist some bugs. As the open source software are cheap so users prefer these software more than proprietary software. due to open source nature the bugs can be fixed whenever found. And even if the users are good developers then they can edit the code or use the code in order to give some more innovative software. in short these are the different ways to maintain the quality of software . due to high maintenance , good quality is achieved and in the end customers are highly satisfied.
Figure 1.5.1 various quality factors
- Research Motivation
The main motivation behind having a fuzzy logic based system to evaluate a open source software is to make the evaluation accurate and easy. In recent years , research has done in order to evaluate the quality of open source software but previous work has done on the basis of metrics and then the value of those metrics were used to evaluate software. This may gives the inaccurate results and it becomes difficult to evaluate the quality. So in this work fuzzy approach is used which accurately evaluate the software which improves the previous work by increasing the speed of evaluation and by giving improve precise results.
- Organization of thesis
This dissertation represents the evaluation of the open source software by use of the varios metrics acting as the parameters on the basis of which quality of the software s evaluated. This chapter describes about the various metrics which are considered for evaluation and the effect of those metric on evaluation. After study about the metrics and quality of software, the motivation of the present work in the first chapter is represented, the dissertation is segregated into chapters to methodically express the work and the conclusion drawn. The work is organized into the following chapters and the content included in each chapter is briefly outlined as follows:
Cite This Work
To export a reference to this article please select a referencing stye below:
Related Services
View allDMCA / Removal Request
If you are the original writer of this essay and no longer wish to have your work published on UKEssays.com then please: