Transcript Document
What does Engineering mean in 'Software Engineering’ ? François Coallier, Eng., Ph.D. NASSCOM 2009-05-22 Chair, Department of Software and IT Engineering [email protected] Based on a SPICE 2008 Keynote, Nüremberg, 2008-05-27 ©François Coallier Statement • There are many misconceptions in parts of the IT community about Software Engineering. • The most common are that: Software Engineering is a branch of Computer Science o Teaching Software Engineering properly is purely a matter of curricula o What does Engineering mean in 'Software Engineering' ©François Coallier Objectives Make the case that: The foundations of Software Engineering include Computer Science, Systems Engineering, Industrial Engineering and Project Management Teaching Software Engineering imply communicating a strong cultural element that transcend curriculum topics What does Engineering mean in 'Software Engineering' ©François Coallier CONTENT • Engineering and Engineers • Software Engineering and IT Disciplines • Software Engineering • Teaching Software Engineering • Conclusions What does Engineering mean in 'Software Engineering' ©François Coallier Engineering and Engineers What does Engineering mean in 'Software Engineering' ©François Coallier Engineers do suffer from prejudices and misconceptions What does Engineering mean in 'Software Engineering' ©François Coallier Engineering Objective: To build useful things using science What does Engineering mean in 'Software Engineering' ©François Coallier Engineering vs. Science Science: Reverse Engineering Engineering: Forward Engineering What does Engineering mean in 'Software Engineering' ©François Coallier Imhotep (~2667 - 2648 BC) • Chief architect to the Third Dynasty King Djoser (2687-2668 BC). • First architect (& engineer) we know by name. • Was in charge of building the original step pyramid at Saqqara. Modified from http://www.bbc.co.uk/history/historic_figures/imhotep.shtml What does Engineering mean in 'Software Engineering' ©François Coallier http://www.interoz.com/egypt/stepyram.htm What does Engineering mean in 'Software Engineering' ©François Coallier http://www.interoz.com/egypt/stepyram.htm What does Engineering mean in 'Software Engineering' ©François Coallier Origin of Engineering Disciplines • Civil - 2500 BC (~8000 BC) • Marine – 1500 (~3000 BC) • Mining - 1600 • Materials - 1700 • Mechanical – 1800 (~500 BC ?) • Electrical - 1850 • Chemical - 1880 • Environmental 1920 • Aerospace - 1930 • Biomedical - 1950 • Industrial/Systems – 19th cent./ 1940’s+ • Software – 1990’s ? • Bio/Genetic ? Extensively Modified from * Honour, E. “Characteristics of Engineering Disciplines”,13th Int’l Conference on Systems Engineering, 1999, As quoted in a presentation from D.Thiele and P. Bourque. What does Engineering mean in 'Software Engineering' ©François Coallier Mundane Thinking From: The Art of Strategic Planning for Information Technology, 2nd Edition by Bernard H. Boar What does Engineering mean in 'Software Engineering' ©François Coallier Engineering Thinking Bubble From: The Art of Strategic Planning for Information Technology, 2nd Edition by Bernard H. Boar What does Engineering mean in 'Software Engineering' ©François Coallier Engineers Build things that are useful within: Budget Resources Schedule Regulatory Operational ….Constraints What does Engineering mean in 'Software Engineering' ©François Coallier Additional challenges Deliver both functionality and nonfunctional/quality attributes. May include: Performance Reliability Availability Security Usability Scalability Maintainability What does Engineering mean in 'Software Engineering' ©François Coallier Engineers By definition: -> Pragmatic individuals focused on the outcome of their work - > Engineers should naturally practice ‘Agility’ What does Engineering mean in 'Software Engineering' ©François Coallier Engineering Strategy Maximize re-use/incremental improvements of: Proven patterns Components Process patterns And keep things as simple as possible. What does Engineering mean in 'Software Engineering' ©François Coallier Software Engineering and IT Disciplines What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View Source: Computing Curricula 2005 The Overview Report covering undergraduate degree programs in Computer Engineering, Computer Science, Information Systems, Information Technology and Software Engineering A volume of the Computing Curricula Series The Joint Task Force for Computing Curricula 2005 A cooperative project of The Association for Computing Machinery (ACM) The Association for Information Systems (AIS) The Computer Society (IEEE-CS) 30 September 2005 What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View • Computer Engineering (CE) Le génie informatique (GI) • Computer Sciences (CS) L’informatique (IN) • Software Engineering (SE) Le génie logiciel (GL) • Information Systems (IS) L’informatique de gestion (IG) • Information Technologies (IT) Les technologies de l’information (TI) What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View Organizational Issues & Information Systems Application Technologies Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture Theory Principles Innovation Development More Theorical More Applied Application Deployment Configuration What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View Organizational Issues & Information Systems Application Technologies Software Methods and Technologies Systems Infrastructure CE Computer Hardware and Architecture Theory Principles Innovation Development More Theorical More Applied Application Deployment Configuration What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View Organizational Issues & Information Systems Application Technologies CS Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture Theory Principles Innovation Development More Theorical More Applied Application Deployment Configuration What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View Organizational Issues & Information Systems SE Application Technologies Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture Theory Principles Innovation Development More Theorical More Applied Application Deployment Configuration What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View IS Organizational Issues & Information Systems Application Technologies Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture Theory Principles Innovation Development More Theorical More Applied Application Deployment Configuration What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View Organizational Issues & Information Systems Application Technologies IT Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture Theory Principles Innovation Development More Theorical More Applied Application Deployment Configuration What does Engineering mean in 'Software Engineering' ©François Coallier IT Disciplines - The ACM/AIS/IEEECS 2005 View IS Organizational Issues & Information Systems Application Technologies SE CS IT Software Methods and Technologies Systems Infrastructure CE Computer Hardware and Architecture Theory Principles Innovation Development More Theorical More Applied Application Deployment Configuration What does Engineering mean in 'Software Engineering' ©François Coallier Limits of the ACM View • Very Development focused • Very information systems focused • Poor systems engineering perspective What does Engineering mean in 'Software Engineering' ©François Coallier Limits of the ACM View Does not adequately reflect or include the following IT bodies of knowledge: o Engineering / IT Governance CoBIT (Control Objectives for Information and related Technology) o Systems of Systems / Enterprise Architecture TOGAF (The Open Group Architecture Framework) o Operations / IT Service Management ITIL (Information Technology Infrastructure Library) What does Engineering mean in 'Software Engineering' ©François Coallier Systems of Systems (SoS) Multiple, heterogeneous, distributed dedicated systems that have been developed independently through time and pool their resources and capabilities together to obtain a new, more complex, 'meta-system' which offers more functionality and performance than simply the sum of the constituent systems. Adapted from http://en.wikipedia.org/wiki/System_of_systems What does Engineering mean in 'Software Engineering' ©François Coallier Enhanced Model (IT/Eng) Governance Systems of Systems* Application Technologies Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture *Enterprise Architecture Theory Principles Innovation Development More Theorical More Applied Operations / Application IT Service Deployment Management Configuration What does Engineering mean in 'Software Engineering' ©François Coallier Computer Engineering (CE) (IT/Eng) Governance Systems of Systems* Application Technologies Software Methods and Technologies Systems Infrastructure CE Computer Hardware and Architecture *Enterprise Architecture Theory Principles Innovation Development More Theorical More Applied Application Operations/ Deployment IT Service Configuration Managemen t Computer Science (CS) (IT/Eng) Governance Systems of Systems* Application Technologies CS Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture *Enterprise Architecture Theory Principles Innovation Development Application Operations/ Deployment IT Service More Theorical More Applied Configuration Managemen What does Engineering mean in 'Software Engineering't ©François Coallier Information Systems (IS) (IT/Eng) Governance Systems of Systems* IS Application Technologies Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture *Enterprise Architecture Theory Principles Innovation Development Application Operations/ Deployment IT Service More Theorical More Applied Configuration Managemen What does Engineering mean in 'Software Engineering't ©François Coallier Information Technologies (IT) (IT/Eng) Governance Systems of Systems* Application Technologies IT Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture *Enterprise Architecture Theory Principles Innovation Development Application Operations/ Deployment IT Service More Theorical More Applied Configuration Managemen What does Engineering mean in 'Software Engineering't ©François Coallier Software Engineering Ideal (IT/Eng) Governance Systems of Systems* Product Lines Eng. Δ Application Technologies SE Software Methods and Technologies Systems Infrastructure Computer Hardware and Architecture *Enterprise Architecture Theory Principles Innovation Development More Theorical More Applied Application Operations/ Deployment IT Service Configuration Managemen t What does Engineering mean in 'Software Engineering' ©François Coallier Software Engineering What does Engineering mean in 'Software Engineering' ©François Coallier S/W Eng. Historical Milestones • • • • • • • • • • 1st Bug: 1947 1st compiler: 1952 COBOL – 1959 OS/360 (+ 1 Mloc) – 1964 Expression ‘Software Engineering’: 1968 1st Software Engineering standard (FIPS 38): 1976 1st IEEE Software Engineering standard: 1981 Joint ISO and IEC sub-committee (SC7) created in 1987 1st Accredited Software Engineering program: mid 90’s? Publication of the SWEBOK by ISO/IEC: 2005 What does Engineering mean in 'Software Engineering' ©François Coallier Software Engineering • Young engineering discipline • Whose technological roots are in computer sciences • Where standards played an important part in its codification What does Engineering mean in 'Software Engineering' ©François Coallier Industrial Engineering Discipline of utilizing and coordinating humans, machines, and materials to attain a desired output rate with the optimum utilization of energy, knowledge, money, and time.. http://www.businessdictionary.com/definition/industrial-engineering.html What does Engineering mean in 'Software Engineering' ©François Coallier Industrial Engineering From: What is Industrial Engineering?, http://www.kwaliteg.co.za/industrial/industrial%20engineering.htm What does Engineering mean in 'Software Engineering' ©François Coallier Systems Engineering Interdisciplinary approach governing the total technical and managerial effort required to transform a set of customer needs, expectations, and constraints into a solution and to support that solution throughout its life. Note: includes the definition of technical performance measures; the integration of engineering specialties toward the establishment of an architecture; and the definition of supporting lifecycle processes that balance cost, performance, and schedule objectives. (ISO/IEC 24765, Systems and Software Engineering Vocabulary) What does Engineering mean in 'Software Engineering' ©François Coallier Systems Engineering History • The term systems engineering dates back to Bell Telephone Laboratories in the early 1940s • Hall [1962] asserts that the first attempt to teach systems engineering as we know it today came in 1950 at MIT by Mr. Gilman, Director of Systems Engineering at Bell. [Schlager, 1956; Hall, 1962; Fagen, 1978] as quoted in http://www.incose.org/mediarelations/briefhistory.aspx as quoted in http://www.incose.org/mediarelations/briefhistory.aspx What does Engineering mean in 'Software Engineering' ©François Coallier Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software (ISO/IEC 24765, Systems and Software Engineering Vocabulary) What does Engineering mean in 'Software Engineering' ©François Coallier Guide to the SoftWare Engineering Body of Knowledge (SWEBOK®) • Project initiated in 1998 jointly by the IEEE Computer Society and Association for Computing Machinery. • ACM drop off soon after… • Defining a software engineering curricula was outside the scope of the SWEBOK • Thousand of professionals commented the document • Published as an ISO/IEC Technical Report – ISO/IEC 19759 – in2005 ® Registered in U.S. Patent office What does Engineering mean in 'Software Engineering' ©François Coallier * *Computer Sciences contribution? * What does Engineering mean in 'Software Engineering' ©François Coallier * * * *Computer Sciences contribution? * What does Engineering mean in 'Software Engineering' ©François Coallier Software & Systems/Industrial Engineering • Are software engineers also systems engineers? • Are many software engineers doing industrial engineering tasks? What does Engineering mean in 'Software Engineering' ©François Coallier Software Engineering (IT/Eng) Governance Systems of Systems* Systems and Industrial Eng. Application Technologies Industrial Eng. Software Methods and Technologies Systems and Industrial Eng. Systems Infrastructure Computer Hardware and Architecture *Enterprise Architecture Theory Principles Innovation Development More Theorical More Applied Application Operations/ Deployment IT Service Configuration Managemen t What does Engineering mean in 'Software Engineering' ©François Coallier Software Engineering? Computer Sciences Software Engineering Systems Engineering Productivity Industrial Engineering Extensively modified from: What is Industrial Engineering?, http://www.kwaliteg.co.za/industrial/industrial%20engineering.htm What does Engineering mean in 'Software Engineering' ©François Coallier Teaching Software Engineering What does Engineering mean in 'Software Engineering' ©François Coallier Teaching Software Engineering …is also communicating a strong engineering culture through all parts of the curricula so that students: • Acquire through training and experience a toolbox • Understand the content of their toolbox • Are trained on “how to use the right tools for a given problem in a given context” What does Engineering mean in 'Software Engineering' ©François Coallier Teaching Software Engineering • Understand that reuse is glorious… o Emphasis on Patterns, Architecture, Systems Integration • Use a ‘systems engineering’ approach o ‘Engineering Bubble’ • Learn to work in teams - multidisciplinary teams that include stakeholders • Learn “how to learn” What does Engineering mean in 'Software Engineering' ©François Coallier Conclusions What does Engineering mean in 'Software Engineering' ©François Coallier Conclusions • Software engineering is a true engineering discipline were the ‘engineering roots ‘ come from industrial and systems engineering. • Teaching and training software engineers is more than a matter of curricula, it is also a matter of communicating an engineering culture. What does Engineering mean in 'Software Engineering' ©François Coallier THANK YOU! [email protected]