mtat.03.047 introduction to informatics · - architecture/design docs - issue reports - user...
TRANSCRIPT
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
MTAT.03.047
Introduction to Informatics
Lecture:
Software Engineering
Dietmar Pfahl
email: [email protected] Fall 2013
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Today: Software is everywhere (=ubiquitous)
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
How did we get there?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Before expulsion from paradise …
• No calculation needed
• No computer needed
• No software needed
Adam & Eve
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
After expulsion from paradise …
• Pre-civilisation:
• Counting
• Writing
• Ancient civilisations (China, India, Persia, Egypt,
Greece, …):
• Number systems
• Algebra
• Geometry
• Logic
• Astronomy
• …
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
After expulsion from paradise …
• Middle ages:
• Invention of ‘0’
• Development and
popularisation of
rules for addition
and multiplication
• Production of
calculation tables
• Blaise Pascal:
• Binary system
0 00000000
1 00000001
2 00000010
3 00000011
4 00000100
5 00000101
6 …
1623-1662
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
The computer age starts …
• 19th inspired by the
programmable loom
(kudumismasin),
Charles Babbage
and Ada Lovelace
discuss the idea of
a programmable
calculator
• 20th century
• Conrad Zuse: builds first
programmable
computers (1930s)
• Z1 (using relays)
• Z3 (using tubes)
… unfinished
1910-1995
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
The computer age evolves …
• 1940s: first
functioning
computers in USA
and UK (Turing)
used for ‘number
crunching’
• 1950s & 1960s:
• IBM:
• Mainframes for commercial use
• Advanced OS
• 3rd gen. programming languages
(FORTRAN, COBOL, Algol ...)
• Application programs for
commercial use in many fields
• Software grows, legacy systems
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
1968 – NATO Conference in Garmisch-
Partenkirchen, Germany
• Recognition of
’Software Crisis’
• Coining of term
‘Software
Engineering’
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Software Engineering:
Why and What?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Engineering versus Craftsmanship
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Engineering versus Craftsmanship
Organic growth?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Engineering vs. Science
Science
Detect (and prove) new 'laws' governing reality
Proof that a solution to a known problem exists
Invent new devices (prototypes) that demonstrate the existence of a solution to a problem
Find new problems
Engineering
Find solutions to known problems under given constraints (time and effort budgets, quality needs = functional and non-functional requirements)
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Magic Triangle of SE
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
SW Eng. vs. 'Other' Engineering
SW Engineering:
Many engineers (up to 500) collaborate/cooperate to solve a problem
Cannot rely on laws of nature (only math/logic and sociology/psychology)
Material cost is negligible compared to personnel cost of engineers / Production is not a cost factor
Non-SW Engineering:
Small teams of engineers solve a problem / design a solution
Can rely on laws of nature (i.e., physics and chemistry)
Many workers (and much material) involved in the construction/production process of (physical) artifacts
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
What is Software Engineering?
• Software Engineering =
• An engineering discipline that is concerned with all aspects of software production.
• Software Engineers should
• adopt a systematic and organised approach to their work
• use appropriate tools and techniques depending on
- the problem to be solved,
- the development constraints and
- the resources available.
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Elements
of
Software Engineering
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
The Three Ps in Software Projects
• Software development happens in projects
Project
P ?
P ?
P ?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
The Three Ps in Software Projects
• Software development happens in projects
Project
Products
People Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Products Products
Code: - Production code:
- Source code - Object code
- Non-production code: - Test code
Non-Code: - Requirements - Specifications - Architecture/Design docs - Issue reports - User manuals - Plans of all kinds - ...
Models
Types of Software: - Embedded/real-time - Information System - Web application - System software - ...
Properties of Software: - Functionality - Reliability - Usability - Efficiency - Maintainability - Portability
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Software in a Car Products
ECU = Electronic Control Unit
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Software in a Car Products
ECU = Electronic Control Unit
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Properties of Software
The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable.
Maintainability
Software must evolve to meet changing needs;
Dependability (Reliability)
Software must be trustworthy;
Efficiency
Software should not make wasteful use of system resources;
Usability
Software must be accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems.
Products
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Product Modeling UML = Unified Modeling Language
Online information: http://www.uml.org
Products
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Products
Software Engineering helps with:
• Requirements gathering/analysis (requirements engineering)
• Defining/analysing architecture/design
• Defining/selecting/applying modeling languages to create product models (UML, ADL, SDL, ...)
• Analysing/improving code (code smells, refactoring)
• Defining/analysing code properties
• (Semi-)automatically generating code and test cases (from models)
• Detecting and maintaining traceablity between artifacts
• ...
Products
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
The Three Ps in Software Projects
• Software development happens in projects
Project
Products
People Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
People
People
Roles: - Project Manager - Product Manager - Architect - Programmer - Tester - ...
Skills: - Must match roles Training: - Must fill skill-gaps Education: - Curricula (ACM/IEEE)
Teams: - Team building - Geographically distributed (international/global) - Mechanisms for collaboration/cooperation - Motivation, Personality, Values, Culture
User models
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
ACM/IEEE Curriculum for Undergraduate Studies in SE (2004)
People
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
ACM/IEEE Curriculum for Undergraduate Studies in SE (2004)
People
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
People
Software Engineering helps with:
• Defining roles
• Defining and assessing skills
• Defining a body of knowledge (SWEBOK) and professional code of ethics
• Training and education (curricula)
• Methods, techniques, tools
• Team building (i.e., global/international teams)
• Developing tools for developer/team support (IDEs, CSCW)
• ...
People
SWEBOK = Software Engineering Book of Knowledge IDE = Integrated Development Environment (e.g., Eclipse) CSCW = Computer-Supported Cooperative Work
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
The Three Ps in Software Projects
• Software development happens in projects
Project
Products
People Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Processes
Processes
Process (Model) Elements: - Activity - Input/Output Product(s) - Roles - Methods/Techniques/Tools
Process Taxonomy: - Non-engineering processes
- Business processes - Social processes
- Engineering processes - Product-engineering proc.
- Technical prod.-eng. proc. - Managerial prod.-eng. proc.
- Process-engineering proc.
Process Models: - Descriptive PMs - Prescriptive PMs
- Standards - Families
Process Types: - Heavy-weight (rich) - Light-weight
- Lean - Agile - Kanban
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Process Taxonomy
H. Dieter Rombach, Martin Verlage,
Directions in Software Process Research,
Advances in Computers, Volume 41,
Marvin V. Zelkowitz (Ed.), Pages 1-63,
Academic Press, Boston, MA, 1995.
A Process … … defines Who does What, When
and How to reach a specific goal. In software engineering the goal is
to build a software product or to enhance an existing one
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
SW Development Process Examples
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Waterfall Method (naïve)
Unidirectional, no way back finish this step before moving to the next
Processes
requirements
deliver
test
implement
design
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Requirements and Customers
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Development Process Types
RUP = Rational Unified Process XP = Extreme Programming
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Scrum Elements – Process, Artifacts, Roles
http://www.scrumforteamsystem.com/processguidance/v1/Scrum/Scrum.html
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
What is a software process model?
• A simplified representation (abstraction) of a software process,
• holistic or presented from a specific perspective
• in the form of an Electronic Process Guide (EPG)
• Examples of process perspectives are
• Workflow perspective – sequence of activities
• Data/Product-flow perspective – information flow
• Role/action perspective – who does what?
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Descriptive vs. Prescriptive Process Models
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Plan-Do-Check-Act (PDCA): A systematic approach to Software Process Improvement (SPI)
• PLAN what you want to accomplish over a period of time and what you might do, or need to do, to get there
• DO what you planned to do • CHECK the results of what
you did to see if the objective was achieved
• ACT on the information – standardize or plan for further improvement
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Plan-Do-Check-Act – “Plan”
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Processes
Processes
Software Engineering helps with:
• Defining processes, including:
• Guidelines, methods, techniques, tools, ...
• Eliciting/discovering processes
• Describing processes
• Improving processes
• Plan-Do-Check-Act
• Measurement
• CMMI, TMMI, ...
• ...
Process change managementTechnology change managementDefect prevention
Software quality managementQuantitative process management
Peer reviewsIntergroup coordinationSoftware product engineeringIntegrated software managementTraining programmeOrganization process definitionOrganization process focus
Software configuration managementSoftware quality assuranceSoftware subcontract managementSoftware project tracking and oversightSoftware project planningRequirements management
Initial
Repeatable
Defined
Managed
Optimizing
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Wrap-Up
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Software Engineering
Consistent application of engineering principles and methods to the development of software (intensive) systems
Engineering Principles: Application of systematic (i.e., predictable, repeatable, scalable) procedures - with well-defined goals (e.g., quality, functionality/scope, cost, time) - with well-defined/structured products, processes, and organization Adherence to existing body of knowledge Observation of constraints (standards, time/cost/quality requirements, etc.) Development and use of models
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Software Engineering Management
Consistent application of engineering principles and methods to the development of software (intensive) systems
Engineering Principles: Application of systematic (i.e., predictable, repeatable, scalable) procedures - with well-defined goals (e.g., quality, functionality/scope, cost, time) - with well-defined/structured products, processes, and organization Adherence to existing body of knowledge Observation of constraints (standards, time/cost/quality requirements, etc.) Development and use of models
Planning – deciding what is to be done Organizing – making arrangements Staffing – selecting the right people for the job Directing – giving instructions Monitoring – checking on progress Controlling – taking action to remedy hold-ups Innovating – finding solutions when problems emerge Representing – liaising with clients, users, developers and other stakeholders
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Software Engineering
Software Product
A bridge from customer/user needs to software product
Customer, User
Needs
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2013
Thank You