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]