Softwaretechnik / Software Engineering (Lecture)
Course type | Lecture |
---|---|
Instructors | Prof. Dr. Andreas Podelski, Dr. Bernd Westphal |
Lecture | Monday, 14:00–16:00, HS 101-00-026 Thursday, 12:00–14:00, HS 101-00-026 |
Exercise | Thursday, 12:00–14:00 (two-weekly), HS 101-00-026 |
First session | Lecture 20.04.2015 Tutorial 23.04.2015 |
Language of instruction | English (by ILIAS poll) |
Credits | 6 |
Exams | Written - Time and Place: see below |
Course Catalog | Softwaretechnik / Software Engineering - Vorlesung Softwaretechnik / Software Engineering - Übung |
Quicklinks: News - Formalia - Plan - Links & Literature
News
- 2016-03-30: Klausureinsicht Nachklausur: Freitag, 1.4.2016, 10:00, or Monday, 4.4.2016, by arrangement (10:00 the earliest); room 00-020, building 52.
- 2015-09-24: That was clearly not extreme demand (but a nice, even distribution over time), so we hereby declare "Klausureinsicht" (and the whole event) over.
Remember the advertisement section: In case the lecture raised your need to dig deeper into topics broadly related to software-engineering, formal methods, visual formalisms, verification, etc. then don't hesitate to contact us (mail, just dropping by, ...) when you're looking for BSc/Msc project or thesis topics! - 2015-09-23: The tentative results should now be available via HIS-in-One. "Klausureinsicht": Thu, Sep 24th, 14:00 - 18:00, room 52-00-020 (or 52-02-017 if the other room is too small for the masses). Note: we will allow at most 5 persons at a time to the room on first-come-first-serve basis.
A first look at the tentative results: 3x 1.0, 16x (!) 1.3, 10x 1.7, 11x 2.0, 19x 2.3, 7x 2.7, 6x 3.0, 3x 3.3, 1x 3.7, 2x 5.0. - 2015-09-22: Some update on the exam correction: if everything goes well, the preliminary grades will be available tomorrow morning. Then "Klausureinsicht" would be Thu, Sep 24th, 14:00 - 18:00 (room tba), in case of extreme demand maybe also Friday afternoon.
- 2015-09-11: Due to the large number of participants and all kinds of availability issues with people helping with the correction (tutors also have exams...), we expect that the results and the "Klausureinsicht" will not be much earlier than Wed, Sep. 23rd, but definitely at Fri, Sep. 25th the latest. The dates/times will be announced here.
- 2015-09-07: Errata updated twice (most recent file is errata-20150907-2.pdf) - thanks for the error reports.
- 2015-08-21: Errata updated.
- 2015-08-21: FYI, the real exam will be about 25% smaller in volume (workload, number of tasks, ...) than the example exam.
- 2015-08-18: An errata for the course slides has been added. It will be updated every time an error is discovered and corrected.
- 2015-07-31: The example exam is available via ILIAS. If you have questions regarding the lecture, the exercises, the corrections, or the (example) exam, do not hesitate to contact your tutor (by default the one who corrected your last submission, contact e.g. via ILIAS) or Sergio. Questions on the exam are welcome in the form of "this would be my answer; I have doubts about this-and-that part; is it supposed to be solved like this or like that?".
- 2015-07-31: If you are an exchange student, e.g. in the ERASMUS program, and if you cannot make it for the official exam data, please contact us soon to arrange for alternatives!
- 2015-07-10: Links & Literature updated (UML, patterns, formal verification, VCC).
- 2015-07-10: Exercise sheet 6 updated. Now with bonus task
- 2015-06-30: updated slide "Contents and Goals" in Lecture 13
- 2015-06-25: Exercise sheet 5 has been updated: The class diagram for Exercise 1 has been corrected to include cardinalities.
- 2015-06-22: tentative plan updated - Tutorial 5 will be on Monday again, so there is more time to work on the tasks; Lectures 8 and 9 re-postprocessed
- 2015-06-17: annotated slides for Lecture 10 now again post-processed as usual - 9 and 8 will follow soon.
- 2015-06-10: refined tentative plan
- 2015-06-08: for the moment, all overlays are included in the annotated slides because deleting pages seems to corrupt the PDF - we're trying to fix this.
- 2015-05-26: results of the first intermediate course evaluation and some brief discussions of raised topics are available in the ILIAS forum
- 2015-05-22: some post-processed lecture slide PDFs exhibit font problems (some at least display in Acrobat Reader, some even not there) - we tried to fix (and re-uploaded) the slides of Lectures 03 and 04, please report remaining problems
- 2015-05-21: Presseschau / Press Review - a selection of software problems reported during the course (free exercise: which techniques from the course could be used to avoid the particular problem in the future?)
- Bericht: Softwarefehler für Absturz des Airbus A400M verantwortlich (heise.de, in German)
- Reboot hilft gegen Stromausfall: Software-Fehler bei Boeing 787 Dreamliner (heise.de, in German)
- 2015-05-11: Links & Literature extended by team performance vs. disruptions, V-Modell XT, CMMI, SLOCCount.
- 2015-05-07: the first course evaluation is online on ILIAS - tell us how you feel about the course so far if you like.
- 2015-04-27: okay, the preliminary slides were ready to be online at 14:08 today, but somebody forgot to press "Save"...
- 2015-04-21: literature updated (textbooks and introduction)
- 2015-03-24: homepage with basic information online - plan and literature under construction
Formalia
Prerequisites for admission to the final exam, form of the final exam, and everything will be announced in the first lecture.
Admission criteria
50% of the total admission (or: good will) points in the exercises are sufficient for exam admission. (Thus, e.g., perfect solutions to exercise sheets 1, 3, 5, and 7 and no solutions to 2, 4, and 6 would satisfy this requirement; so would 50% of the good will points in each exercise).Exercise Submission Scheme
The exercise sheets are online early in order to allow you to be aware of the tasks while following the lecture. There will be an early/regular submission scheme following a pattern to be announced. Please submit your solutions via ILIAS (log in with RZ account, not TF Pool account).
Note: The exercises will be rated on two scales: admission points (given your knowledge before the tutorial, how sensible is your proposal; "good will rating", "upper bound") and exam points (given the additional knowledge from the comments on your proposal and the tutorial, how many points would your proposal at least be worth in a written exam; "evil rating", "lower bound").
Exam
There will be a written exam:
- Date & time: Friday, September, 11th, 2015, 9:00 c.t.
- 90 min. starting at 9:00 c.t.
- Room: 026+036, Building 101
- Permitted in the exam: one sheet of A4 paper, all sides, with prepared notes (printed, handwritten, painted, ...).
Resources
Slides, Exercises, and Recordings
Note: the following plan is tentativein the sense that the assignment of topics to dates is subject to change depending on the flow of the lecture. The assignment of form (lecture or tutorial) to dates is fixed. We will try to provide slides before the lecture.
- Mo, 20.4.: VL 01 "Introduction" - Exercise Sheet 1 online (submit via ILIAS)
Definitions of Software Engineering etc.; course content overview; formalia.
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 23.4.: Tutorial 1
- Mo, 27.4.: VL 02 "Project Management, Cost Estimation"
- Exercise Sheet 2 online (submit via ILIAS)
Development Project; Activities, Roles, Cost and Deadlines; Project Management; Expert and Algorithmic Cost Estimation.
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 30.4.: VL 03 "Procedure and Process Models"
From Processes to Procedure and Process Modes; Excursion: Modelling; Prototype-based
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Mo, 4.5.: VL 04 "More Process Modelling & Software Metrics"
Evolutionary, Incremental, Iterative, Spiral; Kinds of Scales; Properties of Measures and Metrics; example software metrics.
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 7.5.: Tutorial 2
- Mo, 11.5.: VL 05 "Process Model Examples & Metrics" - Exercise Sheet 3 online (submit via ILIAS)
V-Model XT; Agile Processes; process metrics CMM(I) and SPICE
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 14.5.: public holiday (ascension day)
- Mo, 18.5.: VL 06 "Requirements Engineering"
Requirements Engineering basics: the RE problem, the software peoples' view on requirements; quality criteria for requirements and their (natural language) documentation
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 21.5.: VL 07 "Formal Methods for Requirements Engineering"
One example of a formal notation for requirements: decision tables (DT); formal definitions for completeness, consistency, determinism, etc.
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Mo, 25.5.: whitsun break
- Do, 28.5.: whitsun break
- Mo, 1.6.: Tutorial 3
- Do, 4.6.: public holiday (corpus christi)
- Mo, 8.6.: VL 08 "Scenarios and Use Cases."
- Exercise Sheet 4 online (submit via ILIAS)
Scenarios and Anti-Scenarios for requirements analysis; notations User Story, Use Case, Use Case Diagram, first half of Sequence Diagrams (abstract syntax, TBAs, cuts and firedsets).
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 11.6.: VL 09 "Live Sequence Charts"
Second half of the 'Sequence Diagram' story (TBA construction).
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Mo, 15.6.: VL 10 "Live Sequence Charts II"
LSC semantics, pre-charts); Requirements Engineering Wrap-Up.
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 18.6.: Tutorial 4
- Mo, 22.6.: VL 11 "Architecture and Design: Basic Principles" - Exercise Sheet 5 online (download additional materials and submit via ILIAS)
Modularisation, information hiding, data encapsulation etc.; Views and viewpoints; UML history
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream,
module_example.tgz) - Do, 25.6.: VL 12 "Structural Software Modelling"
Class Diagrams; Object Diagrams; OCL outlook
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Mo, 29.6.: VL 13 "Behavioural Software Modelling"
Communicating Finite Automata; Uppaal Demo
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream ** Please note that due to technical difficulties, the uppaal demo does not have a video recording available, only audio **,
Example model (demo.xml, demo.q) and Vending Machine model (vm.xml, vm.q) from the demo) - Do, 2.7.: VL 14 "Architecture and Design Patterns"
Statemachine outlook; Rhapsody Demo; Architectural patterns (layers, pipeline, MVC); Design Patterns
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Mo, 6.7.:Tutorial 5
- Do, 9.7.: VL 15 "Software Quality Assurance" - Exercise Sheet 6 online (download additional materials and submit via ILIAS)
Notions of correctness; Vocabulary; Formal verification of software: the Hoare calculus
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Mo, 13.7.: VL 16 "Testing & Review"
Software Model-Checking, VCC Demo; maybe: Abstract interpretation (?); Testing (concepts, coverage measures, etc.)
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Do, 16.7.: VL 17 "Invited Talks"
"The Wireless Fire Alarm System: Ensuring Conformance to Industrial Standards through Formal Verification" (S. Feo Arenis); "Project Salomo: Software Development Contracts for Small to Medium Sized Enterprises" (D. Dietsch); "The Ultimate Software Model-Checker" (J. Hoenicke).
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Mo, 20.7.:Tutorial 6
- Do, 23. 7.: VL 18 "Wrapup + Questions"
Model-based Testing; Run-time Verification; Code Review; Dependability - and overall wrapup, and questions.
(Slides (with annotations), 2-up, 6-up, Recording: ILIAS-Download, ILIAS-Stream) - Errata for the course slides.
Links & Literature
- Software Engineering Textbooks
- Ludewig, J. and Lichter, H. (2013). Software Engineering. dpunkt.verlag, 3. edition.
Main inspiration for the lecture; unfortunately only available in German. - Sommerville, I. (2010). Software Engineering. Pearson, 9. edition.
The international "classic", also available in German. - Balzert, H. (2009). Lehrbuch der Softwaretechnik: Basiskonzepte und Requirements Engineering. Springer Spektrum, 3. edition.
The german "classic", part 1. Available as e-Book via UB. - Balzert, H. (2010). Lehrbuch der Softwaretechnik: Entwurf, Implementierung, Installation und Betrieb. Springer Spektrum, 3. edition.
The german "classic", part 2. Avaliable as e-Book via UB. - Bjørner, D. (2006). Software Engineering 1 - Abstraction and Modelling. Springer.
One of the few formal methods textbooks, part 1. - Bjørner, D. (2006). Software Engineering 2 - Specification of Systems and Languages. Springer.
One of the few formal methods textbooks, part 2. - Bjørner, D. (2006). Software Engineering 3 - Domains, Requirements, and Software Design. Springer.
One of the few formal methods textbooks, part 3.
- Ludewig, J. and Lichter, H. (2013). Software Engineering. dpunkt.verlag, 3. edition.
- Introduction
- Bauer, F. L. (1971). Software Engineering. In: IFIP Congress (1), pages 530-538.
Historic (type-writer typed) lecture notes by F. L. Bauer, one of the software engineering pioneers who is said to have brought up to the term 'software engineering' on the NATO Science Committee meeting in Garmisch, 1968, in response to the 'software crisis'. - Bjørner, D. and Havelund, K. (2014). 40 years of formal methods. . Presentation slides, UNSW, Sydney, 19. May 2014.
A brief introduction of the term "formal methods", its historical and present obstacles and hindrances, and an outlook. - Buschermöhle, R. et al. (2006). success - Erfolgs- und Misserfolgsfaktoren bei der Durchführung von Hard- und Softwareentwicklungsprojekten in Deutschland. Version 1.1.
A wealth of empirical data with a thorough evaluation wrt. a set of hypothesis on correlations of factors in software engineering. - Jones, C. B. et al., editors (2011). Dependable and Historic Computing - Essays Dedicated to Brian Randell on the Occasion of His 75th Birthday, volume 6875 of LNCS, Springer.
Timeless insights on software engineering from the early days, including an article by software engineering pioneer D. L. Parnas and the dinner talk by H. Kopetz. Available as e-Book via UB. - Most ISO/IEEE/etc. standards are unfortunately not freely available.
- Lamport, L. (2015). Who Builds a House without Drawing Blueprints?. CACM; 58(4): 38-41.
A somewhat polemic essay arguing for better planning in software engineering by 2013 ACM Turing Award winner (and LaTeX author) Leslie Lamport; not so far off from our approach to the software engineering lecture...
- Bauer, F. L. (1971). Software Engineering. In: IFIP Congress (1), pages 530-538.
- Project Management, Process Models, Metrics
- Brooks, F. P. (1996). The Mythical Man-Month - Essays on Software Engineering, Anniversary Edition. Addison-Wesley.
Some say "if you want to read only one book on the management of software development projects, let it be this" (without being the author or otherwise sponsored by the publisher). - Douglass, B. P. (1999). Doing Hard Time, Addison-Wesley.
Spiral-shaped development process using formal modelling and analysis especially for (safety) critical, reactive, timed systems. - Wheeler, D. A. (2006). The Linux Kernel: It’s Worth More!
A COCOMO estimation of effort for the Linux kernel 2.6. Article includes a link to the used tool SLOCCount. - Karn, J. S., & Cowling, A. J. (2005). A Study into the Effect of Disruptions on the Performance of Software Engineering Teams. In the Proceedings of the 4th International Symposium on Empirical Software Engineering, (ISESE 2005).
- Behfar, K. J., Peterson, R. S., Mannix, E. A., Trochim, W.M. (2008). The critical role of conflict resolution in teams: a close look at the links between conflict type, conflict management strategies, and team outcomes. J Appl Psychol.; 93(1):170-88. doi: 10.1037/0021-9010.93.1.170.
- V-Modell XT Authors (2006). V-Modell XT, Version 1.4.
The V-Modell XT reference document (in German); an English document for V-Modell XT, version 1.3, is available on this homepage. A tool to support tailoring is available here. - CMMI Product Team (2010). CMMI for Development, Version 1.3.
Definition of the CMMI-DEV process metrics. An introdution to thlecture-20150710-1.pdfe appraisal procedure is available here.
- Brooks, F. P. (1996). The Mythical Man-Month - Essays on Software Engineering, Anniversary Edition. Addison-Wesley.
- Requirements Engineering, Live Sequence Charts
- Rupp, Ch., die SOPHISTen (2014). Requirements-Engineering und -Management. Hanser.
An extensive and comprehensive discussion of all aspects of Requirements Enginering, from formal notations, over quality criteria, recommendations for natural language requirements, to psychological aspects like human perception and conflicts among clients, which may show up during requirements engineering. The book's content builds on the main author's experience as general manager of SOPHIST GmbH, a company offering Requirements Engineering. Unfortunately only available in German. - Damm, W., Harel, D. (2001). LSCs: Breathing Life into Message Sequence Charts. FMSD; 19(1): 45-80, Kluwer Academic Press.
The original work on Life Sequence Charts. - Klose, J. (2003): Live Sequence Charts - A Graphical Formalism for the Specification of Communication Behavior. PhD thesis, Carl von Ossietzky Universität Oldenburg.
The original work on the TBA-semantics of LSCs as used in the lecture. - Typesetting Live Sequence Charts: lsc.sty on CTAN (and included in TeX Live).
- Architecture & Design, Modelling
- Jacobson, I. (1992). Object-Oriented Software Engineering: A Use CASE Approach. Addison-Wesley.
By the inventor and early advocate of use cases and use case diagrams, which were later included in UML. 20 years old, odd-looking notation, yet the basic messages remain valid. - Kastens, U., Kleine Büning, H. (2014). Modellierung - Grundlagen und formale Methoden, Zweite Auflage, Carl Hanser Verlag.
General Discussion of Modelling, not focusing on UML, but also considering plain set-theory, graphs, Petri nets, and their use for modelling tasks. - Buschman, F., Beunier, R., Rohnert, H., Sommerlad, P., Stal, M. (1996). Pattern-Oriented Software Architecture, Volume 1, A System of Patterns. Wiley.
Actually closer to the content of Lecture 14 than the (more famous) standard textbook on design patterns (Gamma et al.) The concrete examples may provoke nostalgic feelings ("this sounds soo early 90s of the last century") but the basic messages still hold. - UML
- B. Dobing, J. Parsons: How UML is used, Communications of the ACM, 49(5):109-114, 2006.
This survey supports the relevance of our choice of diagrams to be considered in the lecture. - OMG (2011). Unified Modeling Language: Infrastructure. Version 2.4.1.
The UML standard, basic concepts. May take some getting-used-to. - OMG (2011). Unified Modeling Language: Superstructure. Version 2.4.1.
Defines all the diagrams using concepts from the infrastructure document. - B. Oesterreich: Analyse und Design mit UML 2.1, 8. Auflage, Oldenbourg, 2006.
Standard introduction into UML notation (only informal semantics). - H. Stoerrle: UML 2 fuer Studenten, Pearson Studium Verlag, 2005.
And another one of the like.
(avaible as e-book via UB) - OMG (2014). Object Constraint Language. Version 2.4.
Our Proto-OCL semantics is inspired by Appendix A (finally something more formal...). - Kleppe, A., Warmer, J. (2004). The Object Constraint Language. 2nd Edition, Addison-Wesley..
A more palatable presentation of OCL.
- B. Dobing, J. Parsons: How UML is used, Communications of the ACM, 49(5):109-114, 2006.
- Formal Verification
- Apt, K.R., Olderog, E.-R. (1994). Programmverifikation. Springer-Verlag.
The formal verification part of Lecture 15 is following the thorough presentation in this (highly recommendable) book. Also available in English. - (2015) The VCC Manual.
A draft document to become a manual for VCC. For the exercises, it should not be necessary to revert to this document too much, the content of the lecture should be sufficient. - Cohen, E., Hillebrand, A., Tobies, S., Moskal, M., Schulte, W. (2015). Verifying C Programs: A VCC Tutorial. Technical Report.
A tutorial on VCC, distributed with the VCC sources. Again: for the exercises, you should not need much more than discussed in the lecture. We're only touching the surface of VCC. - Miscellaneous
- O.
Laitenberger, C. Atkinson: Generalizing Perspective-based Inspection to
handle Object-Oriented Development Artifacts, In: Proc. ICSE '99,
494-503, IEEE CS-Press.
Reading techniques philosophy. - G.
H. Travassos, F. Shull, J. Carver, V. R. Basili: Reading Techniques for
OO Design Inspections, Technical Report CS-TR-4353, University of
Maryland, 2002.
Concrete reading techniques.
- O.
Laitenberger, C. Atkinson: Generalizing Perspective-based Inspection to
handle Object-Oriented Development Artifacts, In: Proc. ICSE '99,
494-503, IEEE CS-Press.