SWEBOK Introduction to the SWEBOK Guide and Project Pierre Bourque Internet Seminar given to 3IL Students 20 March 2007 ÉTS © IEEE www.swebok.org 1 Corporate Support by: Project managed by: © IEEE www.swebok.org 2 1 IEEE Computer Society ~ Institute of Electrical and Electronics Engineers: 360,000 members in 175 countries. Publishes 30% of the world’s technical literature within its scope of interest. ~ The Computer Society is the largest of IEEE’s 37 technical societies: 100,000 members, 40% outside the US. Founded in 1946, the world’s oldest and largest association of computing professionals. © IEEE www.swebok.org 3 Trial Version (2001) © IEEE www.swebok.org 4 2 2004 Version © IEEE www.swebok.org 5 Guide to the Software Engineering Body of Knowledge (SWEBOK®) ~ Began as a collaboration among IEEE CS, ACM and the Université du Québec à Montréal ~ International participation from industry, professional societies, standards bodies, academia, authors ~ Over 500 hundred software engineering professionals have touched the document ~ Release of Trial Version in 2001 ® Registered in U.S. Patent Office © IEEE www.swebok.org 6 3 2004 SWEBOK Guide ~ Available on www.swebok.org ~ The 2004 Version was endorsed by the project’s Industrial Advisory Board in January 2004 and approved by the IEEE Computer Society Board of Governors in February 2004 ~ Also published in book form by the IEEE Computer Society Press and in Japanese by Ohmsha ~ Also published as ISO Technical Report 19759 ~ Current draft versions in Arabic, French and Spanish www.swebok.org © IEEE 7 List of Knowledge Areas ~ Software Requirements ~ Software Design ~ Software Construction ~ Software Testing ~ Software Maintenance ~ Software Configuration Management ~ Software Quality ~ Software Engineering Tools & Methods ~ Software Engineering Process ~ Software Engineering Management © IEEE www.swebok.org 8 4 Presentation Objectives ~ Give an overview of the emerging international consensus on the “core body of knowledge” of software engineering ~ Briefly present the development process used to reach this emerging consensus www.swebok.org © IEEE 9 Presentation Plan ~ Project © IEEE background ~ Project scope, objectives, audience and development process ~ Contents of the Guide ~ Evolution of the Guide ~ Conclusion ~ Appendix: Breakdown of topics www.swebok.org 10 5 What is Software Engineering? ~ IEEE 610.12: “(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).” www.swebok.org © IEEE 11 Recognized Profession? ~ Starr*: Knowledge and competence validated by the community of peers Consensually validated knowledge rests on rational, scientific grounds Judgment and advice oriented toward a set of substantive values * © IEEE P. Starr, The Social Transformation of American Medicine: BasicBooks, 1982. www.swebok.org 12 6 Development of a Profession Initial professional education Accreditation Skills Development Professional societies One or both Certification Licensing Professional development Full Professional Status Code of ethics Adapted from Steve McConnell, After the Gold Rush, Microsoft Press, 1999, p. 93 www.swebok.org © IEEE 13 Presentation Plan ~ Project background ~ Project scope, objectives, audience and development process ~ Contents of the Guide How you can leverage the Guide within your organization Evolution of the Guide Conclusion Breakdown of topics ~ ~ ~ ~ © IEEE www.swebok.org 14 7 Project Objectives ~ Characterize the contents of the Software Engineering Body of Knowledge ~ Provide a topical access to the Software Engineering Body of Knowledge ~ Promote a consistent view of software engineering worldwide www.swebok.org © IEEE 15 Project Objectives ~ Clarify the place of, and set the boundary of, software engineering with respect to other disciplines (computer science, project management, computer engineering, mathematics, etc.) ~ © IEEE Provide a foundation for curriculum development and individual certification and licensing material www.swebok.org 16 8 Intended Audience ~ Public and private organizations ~ Practicing software engineers ~ Makers of public policy ~ Professional societies ~ Software engineering students ~ Educators and trainers www.swebok.org © IEEE 17 What Are we Not Trying to Accomplish? © IEEE ~ Not a curriculum development effort! ~ Not an all-inclusive description of the sum of knowledge in the field ~ Not all categories of knowledge www.swebok.org 18 9 Categories of Knowledge in the SWEBOK Specialized Generally Accepted ~ Advanced and Research Target of the SWEBOK Guide «Applicable to most projects, most of the time, and widespread consensus about their value and usefulness» Project Management Institute - PMI North American Bachelor’s degree + 4 years of experience www.swebok.org © IEEE Application domain knowledge Advanced SE Knowledge C.S. Specialized SE Knowledge Guide to the SWEBOK Stoneman 19 Knowledge of a Software Engineer Maths ... © IEEE www.swebok.org 20 10 Three Underlying Principles of the Project ~ Transparency: the development process is itself published and fully documented ~ Consensus-building: the development process is designed to build, over time, consensus in industry, among professional societies and standards-setting bodies and in academia ~ Available free on the web www.swebok.org © IEEE 21 Project Team © IEEE ~ Editorial Team of the Guide ~ Industrial Advisory Board ~ Associate Editors of the Knowledge Areas ~ Reviewers www.swebok.org 22 11 Roles of the Industrial Advisory Board ~ Provide input to ensure relevance to various audiences ~ Review and approve strategy and deliverables ~ Oversee development process ~ Assist in promoting the Guide to the Software Engineering Body of Knowledge ~ Lend credibility to the project 23 www.swebok.org © IEEE A Three-Phase Approach for Developing the Guide Straw Man Phase Stone Man Phase Iron Man Phase (Sub-phase 1) Iron Man Phase (Subphase 2) Trial Trial Version Version 1998 © IEEE 1999 2000 2001 www.swebok.org 2004 2004 Version Version 2002 2003 24 12 Formal resolutions ~ Industrial Advisory Board (2001) ~ IEEE CS Board of Governors (2001) "The Board of Governors of the IEEE Computer Society accepts the Guide to the Software Engineering Body of Knowledge (Trial Version) as fulfilling its development requirements and is ready for field trials for a period of two years“ ~ IEEE CS Board of Governors (Feb. 2004) Officially approved the 2004 Version ~ Official recognition as ISO Technical Report 19759 25 www.swebok.org © IEEE Trial Version Review Process Version 0.1 Limited number of domain experts Review Cycle 1 Selected users Version 0.5 Review cycle 2 Community Version 0.7 Review Cycle 3 Version 0.9 © IEEE www.swebok.org 26 13 Trial Version Review Process ~ Transparency and consensus-building All intermediate versions of documents are published and archived on www.swebok.org All comments are made public as well as the identity of the reviewers Detailed comment disposition reports are produced for Review Cycle 2 and 3 © IEEE www.swebok.org © IEEE www.swebok.org 27 28 14 Comment Resolution www.swebok.org © IEEE 29 Data on reviewers Trial Version ~ Version 0,1: 33 ~ Version 0,5: 195 ~ Version 0,7: 378 + ISO reviews from 5 countries © IEEE www.swebok.org 30 15 Geographic Distribution of Reviewers Trial Version ~ USA: ~ Europe: 18% 55% 90 reviewers from 25 countries ~ Canada: 10% ~ Australia: 5% ~ Asia: ~ Latin America: 4% 5% 31 www.swebok.org © IEEE Education level of reviewers (Version 0,7) 3% 24% 34% 39% © IEEE www.swebok.org Ph.D. Masters Bach Other 32 16 Number of employees at reviewer location (Version 0,7) 31% 37% 0-50 50-500 Over 500 32% 33 www.swebok.org © IEEE Number of years of practical experience (Version 0,7) 9% 32% 21% 0-9 38% 10-19 20-29 © IEEE www.swebok.org 34 17 A Three-Phase Approach for Developing the Guide Straw Man Phase Experimentation and Trial Usage Stone Man Phase Iron Man Phase (Sub-phase 1) Revision Iron Man Phase (Subphase 2) Trial Version Version Trial 1998 1999 2000 2001 2004 2004 Version Version 2002 2003 35 www.swebok.org © IEEE Reviewers (2004 Version) ~ ~ ~ ~ Registered reviewers: 573 Number of countries: 55 Number of comments: 1020 Number of reviewers submitting comments: 124 Number of represented countries: 21 Years in the field 60 Number of Reviewers ~ 50 48 40 44 30 20 10 13 17 2 0 0-9 years 10-19 years 20-29 years 30-39 years 40-49 years Years in industry 50 Number of Reviewers 45 40 47 41 35 30 25 28 20 15 10 8 5 0 0-9 years © IEEE www.swebok.org 10-19 years 20-29 years 30-39 years 36 18 Project Overview Presentation Plan ~ Project background ~ Project scope, objectives, audience and development process ~ Contents of the Guide ~ Evolution of the Guide ~ Conclusion ~ Appendix: Breakdown of topics www.swebok.org © IEEE 37 Deliverables: © IEEE ~ Consensus on a list of Knowledge Areas ~ Consensus on a list of topics and relevant reference materials for each Knowledge Area ~ Consensus on a list of Related Disciplines www.swebok.org 38 19 Knowledge Areas and Related Disciplines ~ Software Requirements ~ Software Design ~ Software Construction Related Disciplines ~ • • Software Testing • Software Maintenance • Software Configuration Management • Software Eng. Management • • Software Eng. Tools & Methods • Software Engineering Process ~ Software Quality ~ ~ ~ ~ ~ Computer Engineering Computer Science Mathematics Project Management Management Quality Management Software Ergonomics Systems Engineering 39 www.swebok.org © IEEE Knowledge Area Description Classification of Topics Topic Descriptions © IEEE Matrix of Topics & References Classification by Vincenti’s Taxonomy Classification by Bloom’s Taxonomy References References to Related Disciplines Not implemented www.swebok.org 40 20 Guide to the Software Engineering Body of Knowledge 2004 Version Software Requirements Software Design Software Construction Software Requirements Fundamentals Software Design Fundamentals Basic Concepts of Construction Sofware Testing Fundamentals Requirements Process Key Issues in Software Design Managing Construction Test Levels Requirements Elicitation Software Structure and Architecture Practical Considerations Test Techniques Requirements Analysis Software Design Quality Analysis and Evaluation Test Related Measures Requirements Specification Software Design Notations Test Process Requirements Validation Software Design Strategies and Methods Software Testing Software Maintenance Software Maintenance Fundamentals Key Issues in Software Maintenance Maintenance Process Techniques for Maintenance Practical Considerations 41 www.swebok.org © IEEE Guide to the Software Engineering Body of Knowledge (2004 Version) Software Configuration Management Software Engineering Management Software Configuration Management Fundamentals Initiation and Scope Definition Keys Issues in SCM Software Configuration Control Software Configuration Status Accounting Process Implementation and Change Software Project Planning Process Definition Software Project Enactment Process Assessment Software Engineering Tools and Methods Software Tools Software Requirements Tools Software Design Tools Software Construction Tools Software Testing Tools Software Quality Related Disciplines Software Quality Fundamentals Computer Engineering Software Quality Management Processes Computer Science Practical Considerations Management Software Maintenance Tools Review and Evaluation Process and Product Measurement Software Engineering Process Tools Software Configuration Auditing Software Engineering Management Tools Infrastructure Support Tools SW Engineering Measurement Mathematics Software Quality Tools Software Configuration Management Tools Closure Software Release Management and Delivery Software Engineering Process Miscellaneous Tool Issues Project management Quality management Software Ergonomics Software Methods Heuristic Methods Systems engineering Formal Methods Prototyping Methods Miscellaneous Method Issues © IEEE www.swebok.org 42 21 www.swebok.org © IEEE 43 Summary of changes in 2004 Version © IEEE ~ Standardization of the contents of the chapters in terms of table of contents, topic breakdown, terminology, reference citations and writing style ~ Structural improvements in breakdown of topics: Software Construction, Software Engineering Management, Software Quality, Software Engineering Process ~ Better representation of text in topic breakdown : Software Requirements, Software Testing, Software Maintenance www.swebok.org 44 22 Summary of changes in 2004 Version ~ New chapter on Related Disciplines (instead of an appendix) ~ Better representation of standards in chapters and a new Appendix devoted to standards ~ Updating of reference material ~ Handling of trial usage feedback ~ Handling of reviewer comments www.swebok.org © IEEE 45 Presentation Plan © IEEE ~ Project background ~ Project scope, objectives, audience and development process ~ Contents of the Guide ~ Evolution of the Guide ~ Conclusion ~ Appendix: Breakdown of topics www.swebok.org 46 23 Evolution of the SWEBOK Guide ~ Next planned version is 2009 ~ Main focus of changes Harmonization of IEEE software engineering professional products with the SWEBOK Guide as the cornerstone ~ Time-boxed block updates To ensure currency To permit structural evolution while ensuring internal consistency To permit synchronization with coordinated efforts To allow “follower” efforts to perform their own planning www.swebok.org © IEEE 47 Evolution of the SWEBOK Guide ~ Involvement with stakeholder groups To support existing audiences ~ Openness and transparency To appeal to new audiences To give credibility to the product ~ © IEEE Technical excellence www.swebok.org 48 24 Presentation Plan ~ Project background Project scope, objectives, audience and development process Contents of the Guide How you can leverage the Guide within your organization Evolution of the Guide ~ Conclusion ~ Appendix: Breakdown of topics ~ ~ ~ ~ © IEEE www.swebok.org 49 Concluding Remarks ~ © IEEE Consensus on the core body of knowledge is key in all disciplines and pivotal for the evolution toward a professional status www.swebok.org 50 25 www.swebok.org www.swebok.org © IEEE 51 Presentation Plan ~ Project background Project scope, objectives, audience and development process Contents of the Guide How you can leverage the Guide within your organization Evolution of the Guide Conclusion ~ Appendix: Breakdown of topics ~ ~ ~ ~ ~ © IEEE www.swebok.org 52 26 Guide to the Software Engineering Body of Knowledge 2004 Version Software Requirements Software Design Software Construction Software Requirements Fundamentals Software Design Fundamentals Basic Concepts of Construction Sofware Testing Fundamentals Requirements Process Key Issues in Software Design Managing Construction Test Levels Requirements Elicitation Software Structure and Architecture Practical Considerations Test Techniques Requirements Analysis Software Design Quality Analysis and Evaluation Test Related Measures Requirements Specification Software Design Notations Test Process Requirements Validation Software Design Strategies and Methods Software Testing Software Maintenance Software Maintenance Fundamentals Key Issues in Software Maintenance Maintenance Process Techniques for Maintenance Practical Considerations 53 www.swebok.org © IEEE Guide to the Software Engineering Body of Knowledge (2004 Version) Software Configuration Management Software Engineering Management Software Configuration Management Fundamentals Initiation and Scope Definition Keys Issues in SCM Software Configuration Control Software Configuration Status Accounting Process Implementation and Change Software Project Planning Process Definition Software Project Enactment Process Assessment Software Engineering Tools and Methods Software Tools Software Requirements Tools Software Design Tools Software Construction Tools Software Testing Tools Software Quality Related Disciplines Software Quality Fundamentals Computer Engineering Software Quality Management Processes Computer Science Practical Considerations Management Software Maintenance Tools Review and Evaluation Process and Product Measurement Software Engineering Process Tools Software Configuration Auditing Software Engineering Management Tools Infrastructure Support Tools SW Engineering Measurement Mathematics Software Quality Tools Software Configuration Management Tools Closure Software Release Management and Delivery Software Engineering Process Miscellaneous Tool Issues Project management Quality management Software Ergonomics Software Methods Heuristic Methods Systems engineering Formal Methods Prototyping Methods Miscellaneous Method Issues © IEEE www.swebok.org 54 27 55 www.swebok.org © IEEE Software Design 1. Software Design Fundamentals 2. Key Issues in Software Design 3. Software Structure and Architecture General design concepts Concurrency The context of software design Control and handling of events Architectural structures and viewpoints The software design process Distribution of components Architectural styles (macroarchitectural patterns) Enabling techniques Error and exception handline and fault tolerance Design patterns (microarchitectural patterns) Interaction and presentation 4. Software Design Quality Analysis and Evaluation Quality attributes Quality analysis and evaluation techniques 5. Software Design Notations Structural descriptions (static view) Behavior descriptions (dynamic view) Measures Families of programs and frameworks Data persistence 6. Software Design Strategies and Methods General Strategies Function-oriented (structured) design Object-oriented design Data-structrure centered design Component-based design (CBD) Other methods Figure 1 Breakdown of topics for the Software Design KA © IEEE www.swebok.org 56 28 Software Construction Basic Concepts of Construction Reduction of Complexity Managing Construction Construction Methods Construction Planning Role of Standards in Construction Construction design Coding Anticipation of Change Constructing for Validation Practical Considerations Construction Measurement Construction Testing Construction Quality Integration Construction Tools Construction Languages Figure 1. Breakdown of topics for the Software Construction KA. 57 www.swebok.org © IEEE Software Testing 1. Software Testing Fundamentals 2. Test Levels 3. Test Techniques 4. Test Related Measures Testing-Related Terminology The Target of the Test Based on tester's intuition and experience Evaluation of the Program Under Test Management Concerns Keys Issues Objectives of Testing Specificationbased Evaluation of the Tests Performed Test Activities Relationships of Testing to Other Activities 5. Test Process Code-based Fault-based Usage-based Based on nature of application Selecting and Combining Techniques © IEEE www.swebok.org 58 29 S oftw are M ain ten an ce Fu n d amen tals K ey Issu es in S oftware Main ten an ce Main ten an ce Process T ech n iq u es for Main ten an ce Definitions and Term inology Technical M aintenance P rocess M odels P rogram C om prehension Nature of M aintenance M anagem ent M aintenance Activities R e-engineering Need for M aintenance M aintenance C ost and M aintenance C ost Estim ation R everse Engineering M ajority of M aintenance C osts S oftware M aintenance M easurem ent Im pact Analysis Evolution of S offware C ategories of M aintenance 59 www.swebok.org © IEEE Software Configuration Management 1. Software Configuration Management Fundamentals Identifying Items to be Controlled Software Configuration Software Configuration Items Software Configuration Item Relationships Software Versions 2. Keys Issues in SCM 3. Software Configuration Control Organizational Context for SCM Constraints and Guidance for SCM Planning for SCM Requesting, Evaluating and Approving Software Changes SCM Organization and Responsibilities Software Change Request Process SCM Resources and Schedules Implementing Software Changes Acquiring Software Configuration Items Tool Selection and Implementation Vendor/ Subcontractor Control Software Library Interface Control Baseline Software Configuration Control Board 4. Software Configuration Status Accounting Software Configuration Status Information Software Configuration Status Reporting 5. Software Configuration Auditing Software Functional Configuration Audit Software Physical Configuration Audit 6. Software Release Management and Delivery Software Building Software Release Management In-Process Audits of a Software Baseline Deviations and Waivers Software Configuration Management Plan Surveillance of Software Configuration Management SCM Measures and Measurement In-Process Audits of SCM © IEEE www.swebok.org 60 30 Software Engineering Management Initiation and Scope Definition Software Project Planning Software Project Enactment Review and Evaluation Closure Determination and Negotiation of Requirements Process Planning Feasibility Analysis Process for Requirements Review/Revision SW Engineering Measurement Implementation of Plans Determining Satisfaction of Requirements Determining Closure Establish and Sustain Measurement Commitment Determine Deliverables Supplier Contract Management Reviewing and Evaluating Performance Closure Activities Plan the Measurement Process Effort, Schedule and Cost Estimation Implementation of Measurement Process Perform the Measurement Process Resource Allocation Monitor Process Evaluate Measurement Risk Management Control Process Quality Management Reporting Plan Management 61 www.swebok.org © IEEE Software Engineering Process Process Implementation and Change © IEEE Process and Product Measurements Process Definition Process Assessment Process Infrastructure Life Cycle Models Process Assessment Models Process Measurement Activities Software Life Cycle Processes Process Assessment Methods Software Products Measurement Models for Process Implementation and Change Notations for Process Definitions Quality of Measurement Results Practical Considerations Process Adaptation Software Information Models Automation Process Measurement Techniques www.swebok.org 62 31 Software Engineering Tools and Methods I. Software Tools II. Software Methods Software Requirements Tools Heuristic Methods Requirements modeling Traceability Structured methods Data-oriented methods Object-oriented methods Software Design Tools Software Construction Tools Program editors Compilers Interpreters Debuggers Software Testing Tools Software Engineering Tools and Methods Domain specific methods Formal Methods Specification languages Refinement Verification Prototyping Methods Test generators Test execution frameworks Test evaluation Test management Performance analysis Styles Prototyping target Evaluation techniques Software Maintenance Tools Miscellaneous Method Issues Comprehension Re-engineering Method evaluation Software Engineering Process Tools Process modeling Process management Integrated CASE environments Process-centered software engineering environments Software Quality Tools Inspection Static analysis Software Configuration Management Tools Defect, enhancement, issue and problem tracking Version managment Release and build Software Engineering Management Tools Project planning and tracking Risk management Measurement Infrastructure Support Tools Interpersonal communication Information retrieval System administrative and support Miscellaneous Tools Issues Tool integration techniques Meta tools Tool evaluation 63 www.swebok.org © IEEE Software Quality Software Quality Fundamentals Software Quality Management Processes Software Engineering Culture and Ethics Software Quality Assurance Application Quality Requirements Value and Costs of Quality Verification and Validation Defect Characterization Models and Quality Characteristics Reviews and Audits Software Quality Management Techniques Software Quality Measurement Quality Improvement © IEEE Practical Considerations www.swebok.org 64 32