Phases of software engineering
Abstract Requirement engineering is one of the most significant phases of software engineering. Success or failure of any software project relies heavily on better requirement engineering process. Better awareness of the requirements is fundamental for requirements engineering. Requirement Prioritization is an important component of requirement engineering process. In this paper, we have highlighted some serious shortcomings related to existing requirement prioritization techniques. Based on these findings, we have proposed an intelligent fuzzy logic based technique for requirements prioritization based on the perceived value of each requirement. We have also proposed a framework for evaluation of existing as well as proposed requirement prioritization techniques.
Keywords: Requirement Engineering, Fuzzy Logic, Requirements Prioritization, Value Based Software Engineering
Software Engineering (SE) aims at creating software products or their artifacts in such a way that these meet the requirements posed by stakeholders. At the same time, SE has to ensure that certain quality constraints (both business and technical) have been met. By saying that we assume that SE as a knowledge caters to development of products of certain value. Irony of the fate is that even after this, software engineering is value neutral  in its classical sense. Software Engineering has been designed to give equal emphasis to all the products being developed by professionals notwithstanding its market position or significance. On the other hand, all stakeholders are given equal significance irrespective of this relevance to the product or service.
This "value neutral" concept of SE becomes even more difficult to sustain in modern day when we look at some new developments on this horizon which have taken place in the recent past. With these new developments, in particular value based software engineering (VBSE), we need to consider the significance of value of the software product or service and of stakeholders who have certain degree of interest in it. It is really important to consider the value aspect of software in all the phases of software engineering. Work is already in progress to develop new techniques for valuation of software. At the same time, some effort has been made to fashion the requirements engineering phase and its output based on the ultimate value of requirements acquired from various stakeholders.
In one of our previous works, we had presented the initial sketch of a "value based requirements prioritization" technique . We have been working to refine and implement this technique and based on the findings we have reached to certain conclusions. It is an expert based technique where experts are convened to prioritize all the requirements from all the stakeholders based on their ultimate value to the end products. We applied this technique on various undergraduate final year projects and the results have been quite encouraging. During the conduct of these experiments, we observed that heavy reliance on experts can prove counterproductive in some cases. We encountered the problem of bias in expert's opinion.
In this paper we have proposed an artificially intelligent requirement prioritization technique. The technique uses fuzzy logic to prioritize requirements based on their perceived value. We believe this introduction of fuzzy logic will help in automating this process of requirements prioritization to a great extent on one hand and will further strengthen the concept of hybridization between software engineering and artificial intelligence. The paper is structured as follows. After the introduction in section 1, a brief overview of related work is presented in section 2. In section 3, we have presented an analysis of current requirement prioritization techniques and identified serious shortcomings which need to be overcome in order to achieve more realistic and efficient requirement prioritization. In section 4, we have presented and explained the original value based requirement prioritization technique and the proposed fuzzy logic based requirement prioritization technique. In the end, we have presented an evaluation framework so that various requirements prioritization techniques (including proposed technique) can be compared in a unified manner.
II. Related work
Requirement Engineering (RE) is one of the earliest and very critical phases of software engineering. RE as a knowledge stream is basically aimed at acquisition, modeling and documentation of requirements for the software product. Requirement engineering aims to define precisely the requirements that need to be met. This is not an ordinary task. According to Fred Brooks, deciding what needs to be built is the most difficult part of software development . We can visualize one software requirement as one documented need that software product should accomplish.
Requirement prioritization is the next logical task once requirements have been elicitated and properly analyzed. In most cases, it is really difficult to meet all the requirements that have been given by various stakeholders. Similarly, in many cases, requirements are implemented in a staggered fashion. In such circumstances, it becomes important to arrange the requirements in a prioritized order to develop the system in more realistic way. According to Karlsson et al , one of the greatest problems of software engineers is development of such a product which doesn't satisfy the needs and expectations of stakeholders. To overcome this problem, same authors came up with the idea of prioritizing the requirements according to their value in the paper  titled "A Cost-Value Approach for Prioritizing Requirements". Subsequently, many other researchers [5, 6] emphasized upon the significance of requirement prioritization.
There are various methods for prioritizing requirements . Some major techniques are Analytical Hierarchy Process (AHP) [8, 9, 10], Binary Search Trees [11, 12, 13. 14], 100 points method [15, 16], planning game [17, 18], numerical assignment technique [19, 20] and theory W [21, 22] etc. The consensus of all of these studies is that the project's success or failure is strongly determined by how effectively, we can prioritize the requirements. Generally apart from AHP and theory W, all other techniques are bunched together as numerical assignment techniques.
The significance of value to software engineering is quite manifest. As Stefan Biffl et al have aptly highlighted in their work that the ultimate aim of software engineering is to add value to the existing state of affairs through creation of products, services and processes . The first major work to address the concept of value beyond cost models was Boehm's software engineering economics . McTaggart's work , titled as "The Value Imperative" resulted in a new way of thinking which was subsequently named as value-based management movement. A result of this movement was an IEEE software essay titled "When the Pursuit of Quality Destroys Value" by Favaro  in 1996. In this essay, Favaro argued that pursuit of quality should not be the sole aim as in many cases; this pursuit can destroy the value of the product. Later, in another article, the adjective "value-based" was used by Favaro et al. in the software development context addressing the economics of software reuse. . Win Win model was another model of software engineering by Boehm et al. This model was proposed in 1998 and it basically dealt with the concept of requirement negotiations .The formal agenda of Value Based Software Engineering was proposed by Boehm et al in 2003. This agenda captured the expanding scope in the domain of value based management approaches as well as agile development methods .
Computational Intelligence and soft computing are established techniques which have helped resolve many real world problems. These methodologies include Artificial Neural Networks, Fuzzy Logic, and Evolutionary Computing etc. Fuzzy logic is a technique centered on fuzzy set theory. Thus it is considered as an extension of classical set theory. [29, 30]. The concept of fuzzy sets as introduced by Lotfi Zadeh  can be considered as generalization of the classical sets which are crisp in their nature. The purpose of fuzzy logic is to both reduce the complexity of existing solutions as well as increasing the accessibility of control theory . Computational intelligence based techniques including fuzzy logic have been widely used recently to tackle many real world problems. Some of the recent applications of computational intelligence can be found in [33, 34]. Fuzzy logic has also found its way in software engineering where it has most recently been used in effort estimation , software project similarity , software development , project evaluation , software evolution  etc. Fuzzy logic has been used in requirement engineering as well for various tasks [40, 41]. In this paper, we proposed another application of fuzzy logic in the domain of requirement engineering. We suggest introducing fuzzy logic to determine the priority of requirements. The next section is devoted to elaboration of this proposed technique.
III. limitations of using existing requirement prioritization methods
As we study different requirement prioritization techniques, some glaring problems emerge that need to be resolved in order to achieve better requirement prioritization. These include:
- Most of these techniques (numerical assignments techniques to be specific) rely on statistical operations only. Statistical approached work better in situations where data is not fluid. In case of requirements, we know that requirements change frequently over the course of time. Mere statistical measures can't fully capture the dynamic and constantly evolving nature of requirements.
- These techniques derive their prioritization from the written statements of requirements and expert judgment. There is no unified framework or a set of factors on which to rank all requirements and use this ranking for further prioritization.
- The techniques rely heavily on human factor. It is very difficult to prioritize requirements in an impartial fashion and in an unbiased manner when all the control relies with experts who are humans. The element of bias can't be over ruled with such human intensive mechanisms.
- The techniques need to create new prioritizations every time requirements undergo some major changes. If requirements are evaluated from the perspective of there persistence, then our prioritizations have more realistic chance of sustaining longer even with changing requirements. Unfortunately no such consideration is given importance in existing techniques.
- The schemes have not been evaluated so far on the parameters of cost, efficiency and reliability. There is an urgent need to compare the existing techniques on these parameters and develop some new technique which betters these results.
- The schemes are not able to further improve their results based on previous results and performances. There is an urgent need for a scheme that is able to continuously evolve and improve its performance.
In the following section, we present our initial structure of Value Based fuzzy requirement prioritization scheme. After that, we shall propose the evaluation framework on which to asses the utility of existing as well as proposed technique.
IV. value based fuzzy requirement prioritization
It is evident from the related work and an analysis that we have carried out that a new scheme for requirement prioritization is necessary. The main aspect of this scheme should be value based prioritization. We proposed a scheme for requirement prioritization based on this principle in . This technique was envisioned as a two stage process where requirements are gathered from stakeholders according to their own priority. Then in the first stage, experts group is divided into two independent groups. One group is given the requirements only (excluding the stakeholders from whom these requirements originated). Second group is given the stakeholders descriptions only (excluding the requirements that they submitted). This stage generates a prioritized list of requirements and a prioritized list of stakeholders independently. In the second stage, the complete expert group convenes again and discusses both of these lists together. This results in further readjustments of As is evident from these figures and above mentioned description, this scheme relies heavily on expert reviews. This technique was tested on experimental basis in National University of Computer and Emerging Sciences, NU-FAST of some academic projects. Following observations were made subsequently:
- The process is prone to error due to its heavy reliance on experts.
- The process is very time consuming.
- The element of bias was visible in some of the experiments conducted.
In order to overcome these above mentioned problems, we have proposed to automate the project requirement prioritization process. We propose to develop a fully automated fuzzy logic based system to perform project requirement prioritization. The proposed scheme will accept both "prioritized stakeholders" and prioritized collective requirements as input on one hand and "stakeholder's prioritized requirements on the other hand. Based upon the rule set developed in advance, the fuzzy system will enhance the priority of those requirements in "prioritized collective requirements" which have high position among the other two priority documents. At the same time, it will reduce the priority of such requirements where either stakeholder is less prioritized or which had less priority in stakeholder's prioritized requirements or both.
Once this process is complete, the system is proposed to generate two separate requirements documents in their prioritized order. One document contains those requirements which have been assigned priority higher than certain threshold and are non-negotiable in their nature. The second list is of those requirements which have priority less than the threshold and are negotiable. Process flow of this modified scheme is shown in figure 1. The detailed description of fuzzy based project requirements prioritization is shown in figure 2.
V. requirement prioritization evaluation framework
It is important to evaluate the performance of our proposed technique against existing requirement prioritization approached. In this section, we propose benchmarks which need to be considered while evaluating the effectiveness of any requirements prioritization approach.
Consistency: The prioritized requirements should show a remarkable consistency through various iterations of software development. We believe it is important that our prioritized requirements should be realistic and have significant probability that their assigned value will not change due to creeping requirements. This will show the consistency of the scheme as the project undergoes changes during its course. This factor should be one benchmark to evaluate effectiveness of any requirement prioritization scheme.
Time: The overall time, which a scheme for requirement prioritization takes, is very critical. Due to scarcity of time, we can't allocate too much of this resource to any task. for any requirement prioritization technique to be acceptable to different stakeholders, it should be able to exhibit impressive results within fairly short amount of time.
Scalability: For a requirement prioritization technique to be effective, it needs to be scalable as well. The technique should be able to prioritize requirements for different types of applications (system software, application software, embedded software etc.) with different kind of stakeholders. It should also be able to show impressive results for applications developed under different kinds of process models (waterfall, iterative, agile etc.)
Ease of Use: Any requirement prioritization technique will gain much wider acceptance if it is easy to use and understand. The automation element can enhance the ease of use since it will reduce a lot of burden of manual work. However it can only be achieved if automated technique is able to show impressive results vis-ā-vis other techniques.
Accuracy: The resultant prioritized requirements achieved through any technique lose their significance if those are not correct. This benchmark is directly related to the first benchmark i.e. reliability. The requirement prioritization will be more reliable if it is more accurate. So accuracy is very important factor when considering the overall effectiveness of any requirement prioritization strategy.
We are currently in the process of applying our proposed strategy on various projects at academia as well as industry level. We, at the same time are applying a representative set of existing requirement prioritization techniques on the same projects. We hope to gather enough information to compare and evaluate various requirements prioritization schemes and present a comprehensive study in our upcoming research contributions.
VI. conclusion and future work
Requirement prioritization is one very important but often neglected component of RE process. There are several techniques for requirement prioritization but these have some serious limitations associated with them. In this paper, I have proposed a value based fuzzy requirement prioritization. I have also presented an evaluation framework on which to evaluate existing as well as proposed requirements prioritization techniques.
Applying artificial intelligence to requirement prioritization based on the perceived value of requirements is an exciting research area. I intend to further explore our fuzzy requirement prioritization technique by developing a fully functional fuzzy logic based system for this technique and using the system to prioritize requirements at the industrial level. Information gathered by applying this technique will be crucial in determining the feasibility of hybridization between requirement engineering and artificial intelligence.
The author like to acknowledge the SZABIST Islamabad Campus and Supervisor Dr Arfan Jaffar for providing required resources to complete this work. It would have been impossible to complete this effort without their continuous support.
- Stefan Biffl et al.: Value Based Software Engineering (Springer, 2006)
- Brooks, F., "No Silver Bullet: Essence and Accidents of Software Engineering", IEEE Computer, Vol. 20, No. 4, April 1987, p. 10-19
- Karlsson J., Ryan K., "Supporting the Selection of Software Requirements", Proceedings of the 8th International Workshop on Software Specification and Design (IWSSD '96), 1996
- Karlsson J., Ryan K., "A Cost-Value Approach for Prioritizing Requirements", IEEE Software, 1997, vol. 14, No. 5, pp 67 - 75
- Xiaoping L., Veera C.C., Sun Y., Noguchi K., Kyoya Y., "Priority Assessment of Software Requirements from Multiple Perspectives", Computer Software and Applications Conference, 2004, COMPSAC 2004, 2004, vol. 1, pp 410 - 415
- Fellows L., Hooks I., "A Case for Priority Classifying Requirements", Third International Conference on Requirements Engineering (ICRE'98), 1998, pp 62 - 65
- Ahl, V. "An Experimental Comparison of Five Prioritization Methods." Master's Thesis, School of Engineering, Blekinge Institute of Technology, Ronneby, Sweden, 2005.
- Saaty T., "The Analytic Hierarchy Process: Planning, Priority Setting, Resource, Allocation", McGraw-Hill, New York, 1980
- Saaty T. L., Hu G., "Ranking by Eigenvector Versus Other Methods in the Analytic Hierarchy Process", Applied Mathematical Letter, 1998, vol. 11, No. 4, pp 121-125
- Hartwich F., "Weighting of Agricultural Research Results: Strength and Limitations of the Analytic Hierarchy Process", Stuttgart; Gauer Verlag, Research in Development Economic and Policy, Discussion Paper No. 09/99, 1999
- Hivert F., Novelli J., Thibon J., "The algebra of binary search tree", Theoretical Computer Science, 2005, vol. 339, No. 1, pp 3-10
- Xiang L., Ushijiam K., Zhao T., Zhang T., Tang C., "O(1) Time Algorithm on BSR for Constructing a Random Binary Search Tree", Parallel and Distributed Computing, Applications and Technologies, 2003. PDCAT'2003. Proceedings of the Fourth International Conference, 2003, pp 599 - 602
- Al-furaih I., Aluru S., Goil S., Ranka S., "Parallel Construction of Multidimension Binary Search Tree", IEEE Transactions on Parallel and Distributed Systems, vol. 11, No. 2, Feb. 2000, pp 136 - 148
- Lee C., Hung L., Chang M., Shen C., Tang C., "An improved algorithm for the maximum agreement subtree problem", Information Processing Letters, 2005, vol. 94, No. 5, pp 211-216
- Leffingwell D., Widrig D., "Managing Software Requirements: A Use Case Approach", Addison-Wesley, USA, May 2003, 2nd edition, pp 124-125
- Regnell B., Höst M., Natt och Dag J., Beremark P., Hjelm T., "An Industrial Case Study on Distributed Prioritization in Market-Driven Requirements Engineering for Packaged Software", Requirements Engineering, Feb 2001, vol. 6, number 1, pp 51-62
- [Beck K., "Extreme programming: explained", Addison-Wesley, USA, December 2001, 7th edition, pp
- Karlsson L., Berander P., Regnell B., Wohlin C., "Requirements Prioritization: An Exhaustive Pair-Wise Comparison versus PG Partitioning", EASE '04- Empirical Assessment in Software Engineering, 2004
- Brackett, J. W.Software Requirements(SEI-CM-19-1.2, ADA235642). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 1990.
- Karlsson, J. "Towards a Strategy for Software Requirements Selection. Licentiate." Thesis 513, Linköping University, October 1995.
- Boehm, B. & Ross, R. "Theory-W Software Project Management: Principles and Examples."IEEE Transactions on Software Engineering15,4 (July 1989): 902-916.
- Park, J.; Port, D.; & Boehm B. "Supporting Distributed Collaborative Prioritization for Win-Win Requirements Capture and Negotiation," 578-584.Proceedings of the International Third World Multi-conference on Systemics, Cybernetics and Informatics (SCI'99)Vol. 2. Orlando, FL, July 31-August 4, 1999. Orlando, FL: International Institute of Informatics and Systemics (IIIS), 1999.
- Boehm, B. W.: Software Engineering Economics (Prentice-Hall, 1981)
- McTaggart, J.: The Value Imperative (The Free Press, 1994)
- Favaro, J.: When the Pursuit of Quality Destroys Value. IEEE Software (May 1996)
- Favaro, J., Favaro, K. R., Favaro, P. F.: Value-based Reuse Investment, Annals of Software Engineering, 5 (1998)
- Boehm, B. W., Egyed, A., Kwan, J., Port, D., Shaw, A., Madachy, R.: "Using the WinWin Spiral Model: A Case Study". IEEE Computer, (July 1998)
- Boehm, B. W.:"Value-Based Software Engineering. Software Engineering Notes", 28(2):2003
- Idri, A. and Abran, A.:"A Fuzzy Logic Based Set of Measures for Software Project Similarity: Validation and Possible Improvements" Proceedings of METRICS 2001, London, England, 2001, pp. 85-96.
- Idri, A. and Abran, A.:"Towards a Fuzzy Logic Based Measures for Software Projects Similarity" MCSEAI' 2000, Morocco, November 2000.
- Ramalho, Maria F. N.: "Application of an Automatically Designed Fuzzy Logic Decision Support System to Connection Admission Control in ATM Networks" PhD Dissertation submitted to the Department of Electronic Engineering, Queen Mary and Westfield College, University of London, 10 December 1996.
- Razaz, M. and King, J.: "Introduction to Fuzzy Logic" Information Systems - Signal and Image Processing Group. http://www.sys.uea.ac.uk/ king/restricted/boards/
- M. Arfan Jaffar, Ayyaz Hussain, Anwar M. Mirza, Asmat ullah Ch, "Fuzzy Entropy and Morphology based fully automated Segmentation of Lungs from CT Scan Images", International Journal of Innovative Computing, Information and Control (IJICIC) Vol.5, No.12, December 2009
- Ayyaz Hussain, M. Arfan Jaffar, Anwar M. Mirza, Asmat ullah Ch "Detail Preserving Fuzzy Filter for Impulse noise removal", International Journal of Innovative Computing, Information and Control (IJICIC) Vol.5, No.12, December 2009
- Nisar, M.W. Yong-Ji Wang Elahi, M.: "Software Development Effort Estimation Using Fuzzy Logic - A Survey" Fifth Internation Conference on Fuzzy Systems and Knowledge Discovery, 2008. FSKD '08. Shandong, 2008
- A. Idri, and A. Abran, "Towards A Fuzzy Logic Based Measures for Software Project Similarity", Sixth Maghrebian Conference on Computer Sciences, Fes, Morroco, November, 2000. pp. 9-18
- Shradhanand, Amarjeet Kaur, Satbir Jain, "Useof.Fuzzy Logic in Software Development, "Issues in In- formation Systems, Vol.VIII, No.2, 2007.
- Nabil D. Parsiani Shull, "Project Evaluation using Fuzzy Logic and Risk Analysis Techniques" Masters Dissertation submitted to the department of industrial engineering, University of Puerto Rico, 2006
- Cerulo, L. Esposito, R. Tortorella, M. Troiano, L.: "Supporting software evolution by using fuzzy logic" Proceedings of the 7th International Workshop on Principles of Software Evolution, 2004. IWPSE'04
- Mathai, L. Ramchandran, V. Sivanesana, S.: "Requirement Analysis A Fuzzy Logic Process", International Journal of Software Computing 3 (6). 2008. pp. 467-474
- Yen, J. Liu X. T. Hor, S.: "A Fuzzy Logic-based Methodology for the Acquisition and Analysis of Imprecise Requirements", Internation Journal of Concurrent Engineering 2(4), 1994. pp. 265-277
- Muhammad Ramzan et al. "Need to Redefine "Value" and Case for a New "Software Valuation" Technique: An Analytical Study", Proceedings of 2009 International Conference on Computer Engineering and Applications Manila, Philippine [accepted]
Need an essay? You can buy essay help from us today!