340 likes | 590 Views
Chapter 14: The Future of Software Engineering. Most of this comes from Chapter 14 in Pfleeger and Atlee’s : Software Engineering Theory and Practice, 3 rd edition. Contents. 14.1 How have we done? 14.3 Decision-making in software engineering
E N D
Chapter 14: The Future of Software Engineering Most of this comes from Chapter 14 in Pfleeger and Atlee’s : Software Engineering Theory and Practice, 3rd edition
Contents 14.1 How have we done? 14.3 Decision-making in software engineering 14.4 The professionalization of software engineering: licensing, certification, and ethics
Chapter 14 Objectives • The Wasserman principles and how we have done • Decision-making in software engineering • Professionalization in software engineering • Next step in research and practice
14.1 How Have We Done? • Use complex language • Use patterns and abstractions • Apply formal methods • Build a vast array of tools
14.1 How Have We Done?Wasserman’s Steps to Maturity • Abstraction • Analysis and design notations • User interface prototyping • Software architecture • Software process • Reuse • Measurement • Tools and integrated environments
14.3 Decision-Making in Software EngineeringSidebar 14.1 Delphi Techniques • A group of experts receives the specification plus an estimation form • The experts discuss product and estimation issues. • The experts produce individual estimates • The estimates are tabulated and returned to the experts • An expert is made aware only of his or her own estimate; the sources of the remaining estimates remain anonymous • The experts meet to discuss the results. • The estimates are revised • The experts cycle through steps 1 to 7 until an acceptable degree of convergence is obtained
14.3 Decision-Making in Software EngineeringExample Used in Assessing Group Effects
14.3 Decision-Making in Software EngineeringA Modest Observational Study • 12 graduate students of Bournemouth University were organized in four teams • Each team was required to capture requirements and develop a prototype for a simple information system • Each team was asked to predict the size of the prototype in lines of code • Three rounds, the last two rounds applying Delphi Technique
14.3 Decision-Making in Software EngineeringA Modest Observational Study (continued) • Estimation errors from three rounds of predicting size
14.3 Decision-Making in Software EngineeringA Modest Observational Study (continued) • Convergent group estimates • Three groups show improvement • Fourth group diverged from the true value
14.3 Decision-Making in Software EngineeringA Modest Observational Study (continued) • Divergent group estimates
14.3 Decision-Making in Software EngineeringAnother Observational Study • Postgraduate students at University of Maryland • All students were working practitioners • Yielded comparable results, in that successive rounds of the Delphi technique led to a substantial reduction in the range of estimation • Each student completed a Myers-Briggs test (personality test)
14.3 Decision-Making in Software EngineeringAnother Observational Study (continued) • Maryland group’s confidence in final estimate
14.3 Decision-Making in Software EngineeringPerceived Strengths and Weakness of the Delphi Technique
14.3 Decision-Making in Software EngineeringLessons Learned from the Two Studies • The subjects had a broadly positive attitude to the technique • Personalities can dominate the discussion, even when the dominant participant is not correct • Increase in confidence had no relationship to the experience of the team members • It is important to acknowledge the role of group dynamics in the estimation process • Decision-making can be applied in a wider context
14.4 The Professionalization of Software Engineering: Licensing, Certification, and Ethics • Improve software engineering education • Licensing or certification to improve process and product
14.4 The Professionalization of Software EngineeringSoftware Engineering Education • Specializing in software engineering as: • part of a computer science major • part of a computer engineering major • part of an engineering major • a separate degree from computer science or computer engineering
14.4 The Professionalization of Software EngineeringSoftware Engineering Involves Both Computer Science and Engineering
14.4 The Professionalization of Software EngineeringSoftware Engineering and Engineering Principles and Practices • Software engineering borrows and adapts principles and practices from engineering • Early planning and development activities • Systematic, predictable design and development properties • Consideration of nonfunctional properties
14.4 The Professionalization of Software EngineeringSoftware Engineering vs. Computer Science • Computer science • Focuses on data, data transformation, and algorithm • Advanced courses present designs and programming techniques for specific application domain • Software engineering • Focuses on building software products • Looks at all activities involved in developing a software system from initial idea to final product • Design concepts tend to focus on general-purpose design principles, patterns, and criteria • Advanced courses present design and analysis techniques that scale to large software systems
14.4 The Professionalization of Software EngineeringSoftware Engineering Body of Knowledge • Computing curricula-software engineering (SE2004), IEEE-CS and ACM 2004 • Software engineering body of knowledge (SWEBOK), IEEE-CS 2004 • Software engineering syllabus (CEQB 1998)
14.4 The Professionalization of Software EngineeringSoftware Modeling and Analysis • The knowledge unit Modeling Foundation is decomposed into the topics • Modeling principles (e.g., abstraction, decomposition, views) • Pre- and post-conditions and invariants • Mathematical models and specification language • Properties of modeling language • Distinction between notations’ syntax and semantics • Importance of models explicating all information
14.4 The professionalization of Software EngineeringLicensing Software Engineering • Licensing: a legal restriction on who is allowed to practice in a regulated profession
14.4 The Professionalization of Software EngineeringLicensing Process in Canada (continued) • Route to becoming a professional engineering (P.Eng) in Canada
14.4 The Professionalization of Software EngineeringLicensing Process in the United State • Professional engineer (PE) application process in the US
14.4 The Professionalization of Software EngineeringProponents of Licensing Software Engineers • The practice of software engineering falls under statutes such as the Professional Engineers Act • Licensing software engineers would: • improve software quality • encourage software developers to obtain a solid educational foundation for their practices • encourage the use of best practices • improve the engineering of software and the education of software engineers
14.4 The Professionalization of Software EngineeringOpponents of Licensing Software Engineers • There is no evidence that licensed software engineers produce and maintain the best software • Licensing may afford false assurance to the public that software developed by licensed professionals is of high quality • There is no widely accepted body of knowledge whose mastery would define competency in software engineering • Public safety would be best ensured by certifying the products rather than the processes or the procedures
14.4 The Professionalization of Software EngineeringCertification • A voluntary assessment that a practitioner may choose to undergo to demonstrate competency • Administered and bestowed by a professional society • The IEEE Computer Society offers certification as a certified software development professional (CSDP) • The Computer Information Processing Society (CIPS) has an information system professional (ISP) certificate
14.4 The Professionalization of Software EngineeringCSDP Experience Requirement Areas • Professionalism and engineering economics • Software requirements • Software design • Software construction • Software testing • Software maintenance • Software engineering management • Software configuration management • Software engineering process • Software engineering tools and methods • Software quality
14.4 The Professionalization of Software EngineeringCode of Ethics Key Functions • It stimulates ethical conduct • It inspires public confidence • It offers a formal basis for evaluating actions and disciplining professionals who have agreed to adhere to the code • Two codes of ethics: • ACM: http://www.acm.org/about/code-of-ethics • SWE: http://www.acm.org/about/se-code
14.4 The Professionalization of Software EngineeringSidebar 14.2 ACME/IEEE SE Code of Ethics and Professional Practice • Software engineers shall act consistently with the public interest • Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interest • Software engineers shall ensure that their products and related modifications meet the highest professional standards possible • Software engineers shall maintain integrity and independence in their professional judgment • Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development maintenance • Software engineers shall advance the integrity and reputation of the profession, consistent with the public interest • Software engineers shall be fair to and supportive of their colleagues • Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession
14.4 The Professionalization of Software EngineeringNext Steps in Research and Practice • Study the ways we are similar to other engineers • Study the ways we are different from other engineers • Make sure that we view software engineering in its broader setting, recognizing that quality of software products and process are generated by creative people working in team • Embrace other disciplines, including the social science • Pay more attention to the consequences of the software engineering decisions