Paper Menu >>
Journal Menu >>
J. Software Engi neeri n g & Applications, 2010, 3, 972-982 doi:10.4236/jsea.2010.310114 Published Online October 2010 (http://www.SciRP.org/journal/jsea) Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria? Kenza Meridji, Alain Abran École de Technologie Supérieure (ÉTS)—University of Québec, Montréal, Québec, Canada. Email: kenza.meridji.1@ens.etsmtl.ca, alain.abran@etsmtl.ca Received July 31st, 2010; revised August 25th, 2010; accepted August 31st, 2010. ABSTRACT As a discipline, software engineering is not as mature as other engineering disciplines, and it still lacks consensus on a well-recognized set of fundamental principles. A 2006 analysis surveyed and analyzed 308 separate proposals for prin- ciples of software engineering, of which only thirty-four met the criteria to be recognized as such. This paper reports on a further analysis of these thirty-four candidate principles using two sets of engineering criteria derived from: A) the engineering categories of knowledge defined by Vincenti in his analysis of engineering foundations; and B) the joint IEEE and ACM software engineering curriculum. The outcome of this analysis is a proposed set of nine software engi- neering principles that conform to engineering criteria. Keywords: Engineering Criteria, Software Engineering Principles, Vincenti, Engineering Verification Criteria 1. Introduction Software engineering is defined by the IEEE as: “1) The application of a systematic, disciplined, quan- tifiable approach to the development, operation and maintenance of software, i.e. the application of engi- neering to software. 2) The study of approaches as in 1” [1]. The intended goals of software engineering are differ- ent from those of computer science. In software engi- neering, artifacts are designed, produced and put into operation, while in computer science the theoretical foundations of information and computation are the ob- ject of study. Computer science deals with the investiga- tion and analysis of algorithms and their related problems, in order to enable th e computer perform the task [2]. Computer science is the discipline that underlies soft- ware engineering, and it is to be expected that the princi- ples for computer science will be different fro m the prin- ciples of software engineering. For example, a principle proposed in computer science, “Use coupling and cohe- sion” [3], deals with the underlying science, while soft- ware engineering principles are more general, like “Ap- ply and use quantitative measurements in decision mak- ing” [3]. Of course, software engineering is still an emerging engineering discipline and is not yet as mature as other traditional engineering disciplines such as mechanical and electrical engineering. Much of the research con- ducted to date in software engineering has focused on developing methods, techniques, and tools, and consid- erably less on exploring the engineering foundations of software engineering, including identifying the software engineering fundamental principles, or how to apply them in research and practice. A significant amount of the work carried out to date on software engineering principles has been based on expert opinion, with a few exceptions in which defined research methodologies have been used, such as in [4] and [5], where Delphi rounds are applied to develop an initial consensus among a group of 12 experts on a set of can- didate principles for software engineering. In a 2006, literature survey on this topic, covering the previous 20 years [3], 308 separate proposals for candi- date software engineering principles was identified. These were then analyzed against a set of criteria related to the specific concept of a ‘principle’, following which only 34 were recognized as bona fide ‘candidate’ funda- mental principles (FPs) [3]. However, the research scope of that study did not, include within its research scope an analysis of these candidates from an engineering per- spective. In this paper, we perform that analysis. One of the challenges, of course, is to figure out what criteria should Software Engineering Principles: Do They Meet Engineering Criteria?973 be verified from an engineering perspective, since, in the traditional engineering literature, such criteria are not explicitly described. This paper documents the method- ology to make that determination, as well as what we found when we applied them to the set of 34 candidate FPs. The paper is organized as follows: Section 2 presents related work on software engineering principles. Section 3 presents the analysis methodology selected. Section 4 identifies the software engineering verification criteria. Section 5 describes the application of these criteria. Sec- tion 6 presents the analysis results. Section 7 points out the limitations of that work. Section 8 presents our con- clusion. 2. Related Work on Software Engineering Principles The expression “fundamental principle” is composed of two terms. According to the Cambridge University Dic- tionary, the term “fundamental” means “forming the base, from which everything else originates; more important than anything else”, and “principle” means “a basic idea or rule that explains or controls how something happens or works”. From the literature on software engineering principles, the authors of [3] inventoried 308 principles that had been proposed by individuals (for instance [6-8]) or as part of a collaborative effort [9-12]. With the exception of [11] and [3], the authors involved proposed only nominative principles, without including either formal definitions or procedures for implementing them. To verify whether or not each of these was indeed a candi- date ‘fundamental’ principle, in our sense of the terms, a two-step verifi cat i on pr ocess was used in [3-11,13,1 4] : 1) Identification of seven verification criteria Five criteria applicable to each proposed principle were derived from [4]: A principle is a proposal formulated in a prescrip- tive way; A principle should not be directly associated with, or arise from, a technology, a method, or a tech- nique, or itself be an activity of software engineer- ing; The principle shou ld not dictate a compromise (or a proportioning) between two actions or concepts; A principle of software engineering should include concepts connected to the engineering discipline; It must be possible to test the formulation of a principle in practice, or to check its consequences. Two additional criteria were identified as applicable across the full set of proposed principles: The principles should be independent, e.g. not de- duced [6]; A principle should not contradict another known principle [4]. 2) Verification of each of the proposed 308 principles surveyed against these criteria In [3] it is reported that only 34 of the 308 proposals met the full set of criteria to be recognized as candidate FPs. Table 1 lists them, in alphabetical order [3]. In their paper “Fundamental Principles of Software Engineering–A Journey” [4], the authors identified a set of fundamental principles through a well documented research methodology. They defined the relationships between principles, standards and implemented best practices as illustrated in Figure 1. Prin ciples of Engineering and other Disciplines Principles of Software Engineering Practices Standards Implemented “Best Practices” SWE principles are specific cases of general engineering principles SWE principles organize, explain and validate practices standards. Practices are deployed based on practice standards. Some SW E pri nciples may be generalized to prin ci pl es for the engineering of complexe systems. SWE principles should be “abstractions” of practice s tand a rd s . Practice standards should be recordings of observe d best practices. Figure 1. Relationships between principles, standards an d practices [4]. Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria? 974 This figure illustrates the relationships sought among principles standards and practices. It is believed that a body of fundamental principles has been recorded for some branches of engineering, e.g. [15]. Most of the en- gineering branches have a history far longer than that of software engineering and software engineering principles (SWE principles in Figure 1) would, in general, be re- garded as specializations of these principles. The soft- ware engineering principles would play the role of orga- nizing, motivating, explaining, validating the practice standards and implemented practices should be based on those practice standards [4]. Working from the specific toward the general, practice standards would be recordings and idealizations of ob- served and validated “best practices”. The software en- gineering principles would be abstractions of the practice standards. Furthermore, software engineering principles might be candidates for generalization to the status of general engineering principles, particularly when com- plexity is a concern [4]. 3. Analysis Methodology The scope of the criteria used in [3] was limited to the concept of ‘principles’, and did not include the specific features of the engineering concepts themselves. This is the focus of the work reported here: the list of 34 candi- date principles in Table 1 constitutes the input to the analysis process required to verify whether or not they conform to engineering criteria. This will make it possi- ble to narrow the number of principles. More specifically, the research issue addressed in this paper is, which of these 34 candidate FPs conform to engineering criteria? Of course, engineering criteria are required for this verification and must be available, but no related work could be identified. So, the first challenge was to deter- mine verification criteria from an engineering perspec- tive. To tackle this issue, it w as necessary to study the epis- temology of engineering. For that purpose, two sources, Vincenti, the author of the book, What Engineers Know and How They Know It [15], and the joint IEEE-ACM software engineering curriculum [16] were selected: Vincenti has identified a number of engineering knowledge types as key to the engineering disci- plines and from which engineering criteria can be derived; The IEEE and the ACM have documented a set of topics within their joint software engineering cur- riculum from which engineering criteria can be de- rived. The approach designed for identifying relevant criteria and applying them to the set of 34 candidate FPs consists of three phases—see Figure 2. Phase 1: Identification of two sets of verification cri- teria This phase consists of the identification of criteria which would be relevant to any engineering discipline. Such criteria could have been taken either as is, when expressly identified and defined, or derived, when docu- mented only implicitly. The inputs to this phase are the two sources of information identified from the related work. The outputs of this phase are the two sets of crite- ria derived from Vincenti and from the IEEE-ACM joint software engineering curriculum. The criteria identifica- tion phase based on Vincenti is summarized in Figure 3, which shows its inputs and outputs. The criteria id entifi cation phase b ased on the IEEE-ACM criteria is summarized in Figure 4, which shows its in- puts and outputs. This phase is presen ted in greater detail in Section 4. Phase 2: Verification execution: The 34 candidate FPs will be taken as inputs in the second phase and analyzed next with respect to the two sets of engineering criteria identified in Phase 1. The output will be the FPs that have at least one direct mapping, and those that have only an indirect mapping to either Vincenti or to the IEEE-ACM eng ineering criteria. This phase is illustrated in Figure 5 and is presented in greater detail in Section 5. Phase 3: Analy si s and selection: In Phase 3, the analysis across each set of engineering criteria is performed. This phase identifies the candidate FPs that meet engineering criteria from both sets of crite- ria and those that do not. For instance, the candidate FPs that meet only the Vincenti criteria [15] and the candi- date FPs that only meet the IEEE-ACM criteria [14] are then be analyzed to check whether or not they can be identified from the FP th at are recogniz ed as engineer ing FPs. This phase is described in greater detail in Section 6. 4. Phase 1: Identification of Engineering Criteria 4.1. Vincenti Vincenti [17] studied the epistemology of engineering based on the historical analysis of five case studies in aeronautical engineering covering a roughly fifty-year period and proposed a taxonomy of engineering knowl- edge. He identified different types of engineering knowledge and classified them into six categories: 1) Fundamental design concepts, 2) Criteria and specifications, 3) Theoretical tools, 4) Quantitative data, 5 ) Practical considerations, and Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria?975 Table 1. Inventory of Candidate FPs [3]. No Proposals–in alphabetical order 1 Align incentives for developer and customer 2 Apply and use quantitative measurements in decision making 3 Build software so that it needs a short user m anual 4 Build with and for reuse 5 Define software artifacts ri go rously 6 Design for maintenance 7 Determine requirements now 8 Don’t overstrain your hardwar e 9 Don’t try to retrofit quality 10 Don’t write your own test plans 11 Establish a software process that provides flexibility 12 Fix requirement s pe c if ic at i on e rrors now 13 Give product to customers ear ly 14 Grow systems incrementally 3 Implement a disciplined approach and i mprove it continuously 16 Invest in understa nding the problem 17 Involve the customer 18 Keep design under intellectual control 19 Maintain clear accountability for results 20 Produce software in a stepwise fashion 21 Quality is the top priority; long-term productivity is a natural consequence of high quality 22 Rotate (top perform ing) people through product assuran ce 23 Since change is inherent to software, plan for it an d manage it 24 Since tradeoffs are inherent to software engineering, make them explicit and document them 25 Strive to have a peer find a defect, rather than a customer 26 Tailor cost estimation method s 27 To improve de si gn , study previous solutions to similar problems 28 Use better and fewer people 29 Use documentation standards 30 Write program s for people first 31 Know software engineering techn iq ues before using development tools 32 Select tests based on the likelihood that they will find faults 33 Choose a programming language t o ensure maintai nability 34 F aced with unstructured code, rethink the module and rede s ig n it fr om scratch Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria? 976 Figure 2. The three-phase verification process. Figure 3. Identification of Vincenti engineering criteria. Figure 4. Identification of the IEEE-ACM engineering criteria. Figure 5. Phase 2: Process of verification against sets of engineering criteria. 6) Design instrumentalities. According to Vincenti, this classification is not spe- cific to aeronautical engineering, but can be transferred to other engineering domains. For instance, a detailed analysis of engineering know ledge types was used in [18] to analyze the content of the Software Quality Knowl- edge Area of the Guide to the Software Engineering Body of Knowledge–SWEBOK [15]. Vincenti has distinguished seven elements for engi- neering, which he refers to as “interactive elements”, and which he selected prior to categories of engineering knowledge types. These elements show the epistemo- logical structure of the engineering learning process based on the analysis of the five aeronautical case studies. These seven elements represent, in Vincenti’s opinion, a necessary set of different elements that interact with each other for the completion of an engineering activity. These seven interactive elements are referred to here as the Vincenti engineering criteria, and are listed in Table 2. The abbreviations we have selected to represent each of these criteria are listed in the right-hand column of Table 2. 4.2. IEEE and ACM Joint Curriculum The IEEE Computer Society (IEEE-CS) and the Asso- ciation for Computing Machinery joined forces to de- velop a joint set of computer curricula, including one on software engineering. More specifically, chapter 2 of the joint software engineering curriculum lists the character- istics of an engineering discpline (see Table 3). These i Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria?977 Table 2. Engineering criteria identified in Vincenti. ID. Vincenti Engineering Criteria Abbreviation 1 Recognition of a prob l e m Problem 2 Identification of concepts and criteria Criteria 3 Development of instruments an d te c hniques Techniques 4 Growth and refinement of opinions regarding desirable qualities Quality 5 Combination of partial results from 2, 3 and 4 into practical schema for research Testing 6 Measurement of characteristics Measurement 7 Assessment of results and data Assessment Table 3. Identification of IEEE & ACM engineering criteria. ID. Engineering Criteria Identified Abbreviation 1 Engineers proceed by making a series of decisions, carefully evaluating options, and choosing an ap- proach at each decision point that is appropriate for the current task in the current context. Appropriate- ness can be judged by tradeoff analy si s, which balances costs against benefits. Decision making 2 Engineers measure things, and, when appropriate, work quantitatively; they calibrate and validate their measurements; and they use approximations based on experience and empirical data. Measurements 3 Engineers emphasize the use of a disciplined process when creating a design and can operate eff ectively as part of a team in doing so. Disciplined process 4 Engineers can have multiple roles: research, development, design, production, testing, construction, operations, management, and others, such as sales, consulting, an d t ea ch in g. Engineer’s roles 5 Engineers use tools to apply processes systematically. Therefore, the choice and use of appropriate tools is key to engineering. Use of Tools 6 Engineers, via their professional societies, advance by the development and validation of principles, standards, and best practices. Development and validation 7 Engineers reuse designs and desi gn artifacts. Reuse design characteristics are adopted here as engineering verifica- tion criteria. The abbreviations we have selected to rep- resent each of these criteria are listed in the right-hand column of Table 3. 5. Phase 2: Verification against the Two Sets of Criteria The set of 34 candidate FPs is next mapped to the two sets of engineering criteria: each candidate FP is taken as input and analyzed using each of Vincenti’s seven crite- ria and, again, each of the seven IEEE-ACM software engineering criteria. The output of the mapping to Vincenti’s engineering criteria is presented in Appendix A-1, where the letter D represents a direct mapping, and the letter I an indirect one. For instance: Candidate FP #2 (Apply and use quantitative measurements in decision making) maps directly to Vincenti’s criterion #6 and indirectly to Vincenti’s criterion #4. Candidate FP #31 (Know software engineering techniques before using development tools) has only an indirect mapping to criterion #3 and to cri- terion #7 (Assessment). Finally, there are candidate FPs with no mapping to any engineering criteria: for instance, candidate FP #13 (Give product to customers early). This first verification against the Vincenti criteria leads to the following results (see Appendix A-1): 12 candidate FPs have at least one direct mapping to a Vincenti engineering criterion; 21 candidate FPs have only indirect mappings to Vincenti engineering criteria; 1 candidate FP has no direct or indirect mapping to any Vincenti engineering criteria. The second verification against the seven IEEE & ACM engineering criteria is presented in Appendix A-2. Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria? 978 For instance: Candidate FP #2 (Apply and use quantitative measurements…) has a direct mapping to criteria #1 (Decision making) and #2 (Measurements). Candidate FP #16 (Invest in the understanding of the problem) is mapped indirectly to criteria #1 (Decision making) and #3 (Disciplined process). Candidate FP #4 (Build with and for reuse) is mapped directly and indirectly to criteria #7 (Reuse) and #3 (Disciplined process). Finally, candidate FP #13 (Give products to cus- tomers early) is not related to any engineering cri- teria. This second verification against the IEEE and ACM criteria leads to the following results (see Appendix A-2): 15 candidate FPs have at least one direct mapping to an IEEE-ACM engineering criterion; 16 candidate FPs have only indirect mappings to an IEEE-ACM engineering criterion; 3 candidate FPs have neither direct nor indirect mappings to any IEEE-ACM engineering criteria. 6. Phase 3: Analysis and Consolidation Using Both Sets of Criteria 6.1. Analysis across Each Set of Engineering Criteria The candidate FPs with a direct mapping to either the Vincenti or IEEE-ACM criteria are listed in Table 4. From a comparison of the two columns in this table, the candidate FPs with direct mappings can be grouped into three sets: 1) Candidate FPs with a Vincenti mapping similar to the IEEE-ACM mapping; 2) Candidate FPs with a Vincenti mapping with no equivalen t IE EE-ACM m a pping; 3) Candidate FPs with an IEEE-ACM mapping with no equivalent Vincenti mapping. Table 4. Candidate FPs that directly meet criteria from either set. # Vincenti Mapping # IEEE-ACM Mapping 2 Apply and use quantitative measurements in decision making 2 Apply and use quantitative measurements in decision making 4 Build with and for reuse 4 Build with and for reuse 5 Define software artifact rigorously 6 Design for maintenance 7 Determine requirements now 9 Don’t try to retrofit quality 10 Don’t write your own test plans 11 Establish a software process that provides flexibility 12 Fix requirements specification error now 14 Grow systems incrementally 15 Implement a disciplined approach and improve it continuously 15 Implement a di sciplined approac h a nd improve it continuously 16 Invest in underst anding the problem 18 Keep design under intellectual control 21 Quality is the top priority; long term productivity is a natural con- sequence of high quality 21 Quality is the top priority; long term productivity is a natural con- sequence of high quality 22 Rotate (high performi ng) people through product assurance 23 Since change is inherent to software, plan for it and manage it 24 Since tradeoffs are inherent to software engineering, make them explicit and document them 24 Since tradeoffs are inherent to software engineering, make them explicit and document them 25 Strive to have a peer, find a defect rather than a c u s t omer 26 Tailor cost estimation methods 27 To impro v e d e s i gn , study previous solut ions to sim il ar problems 27 To improve design, study pr e vious solutions to similar problems 31 Know software engineering techniques before using developmen t tools Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria?979 Set A: From Table 4, we can see that six candidate FPs (#2, #4, #15, #21, #24, #27) are present in both columns (the highlighted ones) and therefore satisfy at least one engi- neering criterion in each set of criteria (Vincenti and IEEE-ACM): these six could reasonably be considered as FPs that conform to engineering criteria. Set B: From Table 4, we note that there are 6 other candidate FPs that meet the Vincenti criteria, but no IEEE-ACM criteria, and 9 candidate FPs that meet the IEEE-ACM criteria, but no Vincenti criteria. Can these still be con- sidered as FPs, or are they merely instances of more fundamental principles? To answer this question, we could reasonably argue from the Vincenti subset that: Candidate FP #7 (Determine requirements now) can be deduced from candidate FP #16 (Invest in understan ding the problem ); Candidate FP #9 (Don’t try to retrofit quality) can be deduced from candidate FP #21 (Quality is the top priority; long-term productivity is a natural consequence of high quality); Candidate FP #11 (Establish a software process that provides flexibility) can be deduced from FP #9 (Don’t try to retrofit quality). This would eliminate candidates FPs #7, #9, and #11 from the list of FPs, since they represent specific instan- tiations of more general FPs, while principles #16, #14, and #23 would be retained on the list of FPs. Set C: From Ta ble 4, there remain 9 candidate FPs withou t a corresponding direct mapping to the Vincenti criteria. We could reasonably argue that these 9 can be deduced from those with direct Vincenti mappings: for instance, FP #18 (Keep design under intellectual control) and FP #31 (Know software engineering techniques before using development tools) can be deduced from FP #15 (Im- plement a disciplined approach and improve it continu- ously). This would eliminate candidate FPs #5, #6, #10, #12, #18, #22, #25, #26, and #31 from the list of FPs, since they represent specific instan tiations of more general FPs, while retaining principle #15. In summary, this analysis has allowed us to refine the list of 34 candidate principles to 9 software engineering principles based on engineering criteria. This analysis has also eliminated the overlap between the various prin- ciples; as a consequence, a subset of only 9 (see Table 5) from the list of 34 candidates identified in Seguin 2006 are recognized as principles that conform to engineering criteria, the remaining 25 being specific instantiations of those 9. In Table 5, these software engineering FPs are sequenced from 1 to 9, along with their or iginal sequen ce number (right-hand column) assigned when the initial list of 34 candidates was compiled. 6.2. Identification of a Hierarchy Table 6 presents next the outcome of our analysis of the 25 remaining candidate FPs as instantiations of the 9 principles in Table 5 that conform to engineering crite- ria. 7. Work Limitations The initial list of 34 candidates taken as input for this research is not necessarily exhaustive: to summarize, these 34 candidates have been refined from 304 proposed principles identified in the literature over a period of 20 years, up to 2006 [19]. The methodology used engineering Table 5. List of 9 software engineering principles. # Vincenti, IEEE-ACM mapping 1 Apply and use quantitative measurements in decision making 2 2 Build with and for reuse 4 3 Grow systems incrementally 14 4 Implement a disciplined approach and improve it continuously 15 5 Invest in the understanding of the problem 16 6 Quality is the top priority; long term productivity is a natural consequence of high q uality 21 7 Since change is inherent to software, plan for it and manage it 23 8 Since tradeoffs are inherent to software engineer in g, make them explicit and document it 24 9 To improve de si gn , study previous solutions to similar problems 27 Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria? 980 Table 6. Hierarchy of candidate principles for software engineering. # Direct mapping to Vincenti criteria Derived instantiation (= Indirect mapping) 26Tailor cost estimation me thods 2 Apply and use quantitative measurements in decision mak- ing 8 Don’t overstrain your hardware 4 Build with and for reuse 5 Define software artifacts rigorously 14 Grow systems incrementally 20Produce software in a stepwise fashion 1 Align incentives for developer and customer 10Don’t write your own test plans 17Involve the customer 18Keep design under intellectual control 20Produce software in a stepwise fashion 31 Know software engineering’s techniques before using development tools 19Maintain clear accountability for results 29Use documentation standards 15 Implement a disciplined approach and improve it continu- ously 10Don’t write your own test plans 7 Determine requirements now 12Fix requirement s specific a ti o n e rror now 16 Invest in understanding the problem 17Involve the customer 9 Don’t try to retrofit quality 22Rotate (high performing peop le t hrough product assurance 25Strive to have a peer find a defect rather than a customer, 30Write programs for people first 3 Build software so that it needs a short user manual 11Establish a software process that provides flexibility 21 Quality is the top priority; long term productivity is a natu- ral consequence of high quality 28Use better and fewer people 6 Design for maintenance 33Choose a programming language to ensure maintainab i lity 32Select tests based on the likelihood that they wil l find faults 23 Since change is inherent to software, plan for it and manage it 34 In the face of unstructured code, rethink the module and redesign it from scratch. 24 Since tradeoffs are inherent to software engineering, make them explicit and document them 27 To improve design, study previous solutions to similar problems Copyright © 2010 SciRes. JSEA Software Engineering Principles: Do They Meet Engineering Criteria? Copyright © 2010 SciRes. JSEA 981 criteria from Vincenti and the joint IEEE & ACM soft- ware engineering curriculum to identify the 9 candidate principles that conform to these engineering criteria; however, this list of criteria is not necessarily exhaustive, and more criteria could eventually be added. Furthermore, most of the authors who proposed these principles did not provide operational descriptions of their proposals, and did not provide research experimen- tation for each principle identified. 8. Conclusions Software engineering, as a discipline, is certainly not yet as mature as other engineering disciplines, and, while a number of autho rs ha v e proposed over 300 distinct FPs, a consensus on a set of well-recognized FPs has been lacking. This research report has taken as input, or as its object of study, the set of 34 statements identified in [19] as candidate FPs of software engineering. This set has been analyzed from an engineering perspective using the engineering criteria identified by either Vincenti or the IEEE-ACM joint effort on developing a software engi- neering curriculum. The 34 candidate FPs were divided into three catego- ries: A) candidate FPs that are directly linked to engi- neering, B) candidate FPs that are indirectly linked to engineering, and C) candidate FPs with no specific link to engineering. In the next step, the candidate FPs that were generic were distinguished from the more specific ones: this dis- tinction was based on the type of mapping (direct or in- direct). In the final step, candidate FPs from both lists were analyzed and compared. Our proposed reduced list of 9 software engineering principles now needs to be further discussed by the software engineering commu- nity. Of course, this list depends on the methodology used, and is being proposed to the engineering community for discussion and scrutiny with the aim of improving it and developing a consensus over time. There is no claim that this list is exhaustive or that it covers the whole software engineering discipline. Even though the inputs to this analysis were derived from an extensive literature survey, this does not guarantee that those authors have indeed provided full coverage of the software engineering discipline. Similarly, the hierarchy propo sed in Ta ble 6 is derived from the engineering criteria in our analytical approach. Further research should be carried out to verify the com- pleteness of the criteria used. REFERENCES [1] IEEE Std 610.12, IEEE Standard Glossary of Software Engineering Terminology. Corrected Edition, February 1991. [2] K. E. Wiegers, “Creating a Software Engineering Cul- ture,” Dorset House Publishing, New York, USA, 1996. [3] N. Séguin, “Inventaire, Analyse et Consolidation des Principes Fondamentaux du Génie Logiciel,” École de technologie supérieure, Université du Québec, Québec, Canada, 2006. [4] P. Bourque, R. Dupuis, A. Abran, J. W. Moore, L. Tripp and S. Wolff, “Fundamental Principles of Software Engi- neering–A Journey,” Journal of Systems and Software, Vol. 62, No. 1, 2002, pp. 59-70. [5] Jabir and J. W. Moore, “A Search For Fundamental Prin- ciples of Software Engineering,” Report of a Workshop Conducted at the Forum on Software Engineering Stan- dards Issues, Computer Standards & Interfaces–In- terna- tional Journal on the Development and Application of Standards for Computers, Data Communications and In- terfaces, Elsevier, Amsterdam, North Holland (the par- ticipants at this workshop names their group “Jabir”), Vol. 19, No. 2, 1998, pp. 155-160. [6] B. W Boehm, “Seven Basic Principles of Software Engi- neering,” Journal of Systems and Software, Vol. 3, No. 1, 1983, pp. 3-24. [7] A. M. Davis, “201 Principles of Software Development,” McGraw-Hill, New York, USA, 1995. [8] K. E. Wiegers, “Creating a Software Engineering Cul- ture,” Dorset House Publishing, New York, 1996. [9] P. Bourque and R. Dupuis, “Fundamental Principles of Software Engineering,” Third International Symposium and Forum on Software Engineering Standards, Walnut Creek, CA, USA, 1997. [10] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal, “Pattern Oriented Software Architecture,” John Wiley & Sons, England, 1996. [11] C. Ghezzi, M. Jazayeri and D. Mandrioli, “Fundamentals of Software Engineering,” Prentice Hall, New Jersey, 2003. [12] P. Bourque and R. Dupuis, “Fundamental Principles of Software Engineering,” 3rd International Symposium and Forum on Software Engineering Standards, Walnut Creek, CA, 1997. [13] A. Abran, N. Seguin, P. Bourque and R. Dupuis, “The Search for Software Engineering Principles: An Overview of Results,” Conference on the Principles of Software Engineering, Buenos Aires, Argentina, 2004. [14] N. Séguin and A. Abran, “Inventaire des principes du génie logiciel,” Revue Génie Logiciel, Numéro 80, Paris, France, 2007, pp. 45-51. [15] W. G. Vincenti, “What Engineers Know and How They Know It—Analytical Studies from Aeronautical History,” Johns Hopkins University, Baltimore, MD, USA, and London, UK, 1990. [16] IEEE and ACM, “IEEE Computer Society and Associa- tion for Computing Machinery,” Curriculum Guidelines for Undergraduate Degree Programs in Software Engi- Software Engineering Principles: Do They Meet Engineering Criteria? 982 neering, A Volume of the Computing Curricula Series, 2004. [17] A. Abran, J. W. Moore, P. Bourque and R. Dupuis, “Guide to the Software Engineering Body of Knowl- edge,” 4th Edition, In: P. Bourque and R. Dupuis, Eds., IEEE Computer Society, Los Alamitos, CA, USA, 2005. [18] A. Abran and K. Meridji, “Analysis of Software Engi- neering from an Engineering Perspective,” European Journal for the Informatics Professional, Vol. 7, No. 1, February 2006, pp. 46-52. [19] SO-TR-19759, “Software Engineering—Guide to the Software Engineering Body of Knowledge (SWEBOK),” International Organization for Standardization, Switzer- land, 2005. Copyright © 2010 SciRes. JSEA |