mtat.03.047 introduction to informatics...sw eng. vs. 'other' engineering sw engineering:...
TRANSCRIPT
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
MTAT.03.047
Introduction to Informatics
Lecture:
Software Engineering
Dietmar Pfahl
email: [email protected] Fall 2014
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Today: Software is everywhere (=ubiquitous)
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
How did we get there?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Before expulsion from paradise …
• No calculation needed
• No computer needed
• No software needed
Adam & Eve
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
After expulsion from paradise …
1912-1954
?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
1968 – NATO Conference in Garmisch-
Partenkirchen, Germany
• Recognition of
’Software Crisis’
• Coining of term
‘Software
Engineering’
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Software Engineering:
Why and What?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Engineering versus Craftsmanship
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Engineering versus Craftsmanship
Organic growth?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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, needs = functional and non-functional requirements/qualities)
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Magic Triangle of SE
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
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 2014
Elements
of
Software Engineering
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
The Three Ps in Software Projects
• Software development happens in projects
Project
P ?
P ?
P ?
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
The Three Ps in Software Projects
• Software development happens in projects
Project
Products
People Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
Software in a Car Products
ECU = Electronic Control Unit
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Software in a Car Products
ECU = Electronic Control Unit
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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
(new standard: ISO 25000)
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Product Modeling UML = Unified Modeling Language
Online information: http://www.uml.org
Products
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Products – Summary
Software Engineering helps with:
• Requirements gathering/analysis (requirements engineering)
• Defining/analysing/implementing 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 2014
The Three Ps in Software Projects
• Software development happens in projects
Project
Products
People Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
ACM/IEEE Curriculum for Undergraduate Studies in SE (2004)
People
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
ACM/IEEE Curriculum for Undergraduate Studies in SE (2004)
People
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
People – Summary
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 2014
The Three Ps in Software Projects
• Software development happens in projects
Project
Products
People Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
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 2014
SW Development Process Examples
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
Requirements and Customers
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Development Process Types
RUP = Rational Unified Process XP = Extreme Programming
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Scrum Elements – Process, Artifacts, Roles
http://consultingblogs.emc.com/Admin/ImageGallery/blogs.conchango.com/Colin.Bird/Scrum Overview Diagram.png
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
Descriptive vs. Prescriptive Process Models
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
Plan-Do-Check-Act – “Plan”
Processes
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Processes – Summary
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 2014
Wrap-Up
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
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 2014
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 2014
Software Engineering
Software Product
A bridge from customer/user needs to software product
Customer, User
Needs
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Software Engineering Group http://sep.cs.ut.ee/
Staff Members Marlon Dumas (Professor, Group Leader) Raimundas Matulevicius (Associate Professor) Dietmar Pfahl (Associate Professor) Luciano García-Bañuelos (Associate Professor) Peep Küngas (Senior Research Fellow) Fabrizio Maggi (Senior Research Fellow) Siim Karus (Research Fellow) PhD Students Naved Ahmed Abel Armas-Cervantes Riivo Kikas Fredrik Payman Milani Toomas Saarsen Oleg Shelajev Svetlana Omelkova Ilya Verenich Associated Members Marcello La Rosa (Queensland UniTech & NICTA) Yain-Whar Si (University of Macau)
Prof. Marlon Dumas
Master of Science in Software Engineering Joint Master's Degree – University of Tartu
and Tallinn University of Technology
http://software.cs.ut.ee/
MTAT.03.047 / Lecture on SE / © Dietmar Pfahl 2014
Thank You