what does engineering mean in 'software engineering ’ ? françois coallier, eng., ph.d....
TRANSCRIPT
What does Engineering
mean in 'Software Engineering’ ?
François Coallier, Eng., Ph.D.Chair, Department of Software and IT Engineering
Based on a SPICE 2008 Keynote, Nüremberg, 2008-05-27 ©François Coallier
What does Engineering mean in 'Software Engineering' ©François Coallier
Statement
• There are many misconceptions in parts of the IT community about Software Engineering.
• The most common are that:o Software Engineering is a branch of
Computer Scienceo Teaching Software Engineering properly
is purely a matter of curricula
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
Engineers do suffer fromprejudices and misconceptions
What does Engineering mean in 'Software Engineering' ©François Coallier
What does Engineering mean in 'Software Engineering' ©François Coallier
Engineering
To build useful things using science
Objective:
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”,13 th Int’l Conference on Systems Engineering, 1999, As quoted in a presentation from D.Thiele and P. Bourque.
Mundane Thinking
What does Engineering mean in 'Software Engineering' ©François Coallier
From: The Art of Strategic Planning for Information Technology, 2nd Edition by Bernard H. Boar
Engineering Thinking Bubble
What does Engineering mean in 'Software Engineering' ©François Coallier
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:
BudgetResourcesScheduleRegulatoryOperational
….Constraints
What does Engineering mean in 'Software Engineering' ©François Coallier
Additional challenges
Deliver both functionality and non-functional/quality attributes. May include:
PerformanceReliabilityAvailabilitySecurityUsabilityScalabilityMaintainability
What does Engineering mean in 'Software Engineering' ©François Coallier
Engineers
By definition: -> Pragmatic individuals focused on
theoutcome 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 patternsComponentsProcess 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/IEEE-CS 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
IT Disciplines - The ACM/AIS/IEEE-CS 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
What does Engineering mean in 'Software Engineering' ©François Coallier
IT Disciplines - The ACM/AIS/IEEE-CS 2005 View
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
Development
More Theorical
More Applied
ApplicationDeploymentConfiguration
What does Engineering mean in 'Software Engineering' ©François Coallier
IT Disciplines - The ACM/AIS/IEEE-CS 2005 View
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
Development
More Theorical
More Applied
ApplicationDeploymentConfiguration
CE
What does Engineering mean in 'Software Engineering' ©François Coallier
IT Disciplines - The ACM/AIS/IEEE-CS 2005 View
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
Development
More Theorical
More Applied
ApplicationDeploymentConfiguration
CS
What does Engineering mean in 'Software Engineering' ©François Coallier
IT Disciplines - The ACM/AIS/IEEE-CS 2005 View
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
Development
More Theorical
More Applied
ApplicationDeploymentConfiguration
SE
What does Engineering mean in 'Software Engineering' ©François Coallier
IT Disciplines - The ACM/AIS/IEEE-CS 2005 View
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
Development
More Theorical
More Applied
ApplicationDeploymentConfiguration
IS
What does Engineering mean in 'Software Engineering' ©François Coallier
IT Disciplines - The ACM/AIS/IEEE-CS 2005 View
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
Development
More Theorical
More Applied
ApplicationDeploymentConfiguration
IT
What does Engineering mean in 'Software Engineering' ©François Coallier
IT Disciplines - The ACM/AIS/IEEE-CS 2005 View
Organizational Issues & Information Systems
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
Development
More Theorical
More Applied
ApplicationDeploymentConfiguration
CE
CSSE
IS
IT
What does Engineering mean in 'Software Engineering' ©François Coallier
• Very Development focused• Very information systems focused• Poor systems engineering perspective
Limits of the ACM View
What does Engineering mean in 'Software Engineering' ©François Coallier
Does not adequately reflect or include the following IT bodies of knowledge:
oEngineering / IT Governance CoBIT (Control Objectives for Information and
related Technology)oSystems of Systems / Enterprise Architecture TOGAF (The Open Group Architecture
Framework)oOperations / IT Service Management
ITIL (Information Technology Infrastructure Library)
Limits of the ACM View
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
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
DevelopmentMore
TheoricalMore Applied
ApplicationDeploymentConfiguration
Operations /IT ServiceManagement
Systems ofSystems*
*EnterpriseArchitecture
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
DevelopmentMore
TheoricalMore Applied
ApplicationDeploymentConfiguration
CE
Computer Engineering (CE)
Systems ofSystems*
*EnterpriseArchitecture
Operations/IT ServiceManagement
(IT/Eng) Governance
Computer Science (CS)
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
DevelopmentMore
TheoricalMore Applied
ApplicationDeploymentConfiguration
CS
Systems ofSystems*
*EnterpriseArchitecture
Operations/IT ServiceManagement
(IT/Eng) Governance
What does Engineering mean in 'Software Engineering' ©François Coallier
Information Systems (IS)
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
DevelopmentMore
TheoricalMore Applied
ApplicationDeploymentConfiguration
IS
Systems ofSystems*
*EnterpriseArchitecture
Operations/IT ServiceManagement
(IT/Eng) Governance
What does Engineering mean in 'Software Engineering' ©François Coallier
Information Technologies (IT)
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
DevelopmentMore
TheoricalMore Applied
ApplicationDeploymentConfiguration
IT
Systems ofSystems*
*EnterpriseArchitecture
Operations/IT ServiceManagement
(IT/Eng) Governance
What does Engineering mean in 'Software Engineering' ©François Coallier
What does Engineering mean in 'Software Engineering' ©François Coallier
Software Engineering Ideal
(IT/Eng) Governance
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
DevelopmentMore
TheoricalMore Applied
ApplicationDeploymentConfiguration
Operations/IT ServiceManagement
Systems ofSystems*
*EnterpriseArchitecture
SE
Product Lines Eng. Δ
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
Industrial Engineering
What does Engineering mean in 'Software Engineering' ©François Coallier
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
Industrial Engineering
What does Engineering mean in 'Software Engineering' ©François Coallier
From: What is Industrial Engineering?, http://www.kwaliteg.co.za/industrial/industrial%20engineering.htm
Systems Engineering
What does Engineering mean in 'Software Engineering' ©François Coallier
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 [Schlager,
1956; Hall, 1962; Fagen, 1978] as quoted in http://www.incose.org/mediarelations/briefhistory.aspx
• 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. 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?
Software & Systems/Industrial Engineering
What does Engineering mean in 'Software Engineering' ©François Coallier
• 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
Application Technologies
Software Methods and Technologies
Systems Infrastructure
Computer Hardware and Architecture
TheoryPrinciplesInnovation
DevelopmentMore
TheoricalMore Applied
ApplicationDeploymentConfiguration
Operations/IT ServiceManagement
Systems ofSystems*
*EnterpriseArchitecture
Systems and Industrial Eng.
Systems and Industrial Eng.
Industrial Eng.
Software Engineering?
What does Engineering mean in 'Software Engineering' ©François Coallier
Extensively modified from: What is Industrial Engineering?, http://www.kwaliteg.co.za/industrial/industrial%20engineering.htm
SoftwareEngineerin
g
Computer Sciences
Systems Engineering
IndustrialEngineering
Productivity
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
Conclusions
What does Engineering mean in 'Software Engineering' ©François Coallier
• 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.
THANK YOU!