Softwareprozesse WS 2023/24

This course teaches the content of various software development process models, but in particular the power of judgment for deciding which elements of a process may be appropriate or not appropriate and why.

We discriminate the "classical view" of software engineering (which originates from positivist thinking and the engineering ideals of industrial production) on the one hand and the "modern view" (which originates in humanist thinking and humbler expectations about what engineering should expect to achieve) on the other. We use this discrimination as a litmus test for tracking down cultural undercurrents in software processes that damage a process when and where they are inappropriate for the given task and team.

Slides and topic keywords

  1. Introduction:
    assumed knowledge; what we talk about; term "software development process"; learning goals; classical view vs. modern view; term "culture"
  2. V-Modell XT:
    Projektdurchführungsstrategie, Entscheidungspunkt; Vorgehensbaustein; Tailoring; roles, product types, (activities)
  3. SE Essentials:
    essential vs. accidental difficulties in SE; the Essence kernel (alphas, states, language to define practices, etc.); economical view
  4. Agile Manifesto:
    origin of agile; Agile Manifesto (core part, principles list, background, common misunderstanding, culture); underlying assumptions; classical view on agile (too much/too little planning; XP planning game); usage frequency of various agile methods
  5. Scrum, Kanban:
    Scrum Team (Developers, Scrum Master, Product Owner); Sprint (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective); Artifacts (Product Backlog & Goal, Sprint Backlog & Goal, Increment & Definition of DONE); 6 Kanban principles (e.g. manage work not people), 6 Kanban practices (limit WiP, manage flow, visualize, explicit policies, feedback loops, improve via experiments); flow system with Kanban board and WiP limits
  6. ScrumBut and Agile Transition:
    Observed deviations from Scrum in Scrum teams (w.r.t. Roles, Daily Scrum, Sprint Planning, Sprint Review, curiously not Retrospectives); discussion when they may be good or bad; agile transition as a gradual process in 5 dimensions
  7. Self-organization:
    Definition; common self-organization roles (Mentor, Coordinator, Translator, Champion, Promoter, Terminator); actual roles are unique; agreement on roles is critical (role clarity); empowering teams can be highly beneficial ("Quality Experience", DevOps)
  8. eXtreme Programming (XP), part 1:
    Structure of agile methods (values, roles, technical practices, mgmt. practices); eXtreme Programming (XP1 vs. XP2 vs. Jeffries, values, roles); management practices; technical practices:; continuous integration (ten-minute build, feature toggles, continuous delivery, continuous deployment); test-first programming (Testing, TDD, ATDD)
  9. eXtreme Programming (XP), part 2:
    shared code, coding standards; refactoring; simple design, incremental design; practices support each other; values and practices; criticism of XP; usage survey; when not to use XP; introducing XP; further technical practices
  10. Pair Programming:
    Characterizations/claims (Williams, Beck, others); What happens in PP? (base activities, knowledge transfer episodes: push, pull, co-produce, pioneering); PP session dynamics (S vs. G knowledge, session types); Good PP: Togetherness; Knowledge transfer effects, motivation, driver/observer
  11. Open Source Basics:
    Definition; license types (copyleft, virality, liberal); importance of OS SW; developer motivation; company motivation; What is 'value'?
  12. Open Source and Self-Organization:
    Self-organization issues (basic infrastructure; typical process; leadership styles; patterns for successful process innovation)
  13. Open Source and Agile: Inner Source:
    Quality assurance methods; Is OSS agile? Is it modern view?; Open process within companies: Inner Source
  14. Cleanroom Software Engineering:
    principles; empirical results; typical practices; stepwise refinement (box structures, verification); statistical testing (usage modeling, hints for practice); Cleanroom and Agile
  15. Reprise:
    A joint rehash of key points of each unit of the course (from memory, based on the catchwords on this webpage only)
  16. Joint Reflection
    • Which two points do you consider your key personal insights from the course?
    • What are two points/areas where you still find your understanding insufficient so far?


Classical view vs. modern view

We will analyse each process model for where "it" takes the classical view or the modern view. (Which view is more appropriate depends on the situation.) Making this analysis a habit is the main learning goal of the present course. Here is the slide summarizing the views:


Exam questions

If the number of participants is low enough (as it tends to be), we will not hold a written exam (Klausur), we do oral exams.

Here is a list of initial questions you should expect in the oral exam. They do not have a single, correct answer. Rather, I expect you to say something about them that is relevant and defensible, that you can elaborate on or put into context if required.

If it makes you feel safer, you may also give some background before you give your actual answer, but please keep in mind that one property of a good exam (grades 1 or 2) is that we manage to cover a lot of ground. This will only work if we do not dwell on any one topic too long.

Follow-up questions will depend on your answer. If you feel very incompetent at a particular question, you can pass it and ask for the next one.

  • 1: Introduction
    • What kinds of SW development settings have we been talking about? What kinds not?
    • What is a SW development process (SW process)?
    • Is there a particular right way to develop SW in a given situation? How much do classical view and modern view agree about this? Why?
    • By what means does the classical view describe a SW process? Why?
    • Which of these means are hardly used in the modern view? Why?
    • When did the modern view get formulated? Why did this not happen 30 years earlier?
    • What does 'culture' mean?
    • What did Royce say about the waterfall process in 1970? Which elements of modern view occur in those statements?
  • 2: V-Modell XT
    • What are the key ideas of V-Modell XT?
    • What does the "V" stand for?
    • What about those is classical, what is modern? In which camp is V-Modell XT culture? How do we know?
    • Why does V-Modell XT have so many roles?
    • How might fans of agile methods argue why they do not like V-Modell XT?
    • What might a project look like for which using V-Modell XT is a good idea?
    • If a project wanted to use an agile process, could knowledge of V-Modell XT be useful nevertheless? If not, why not? If yes, how?
    • What does Dynamic Tailoring mean?
    • Is Dynamic Tailoring different from what agile teams do? If so, how?
  • 3: Software Engineering Essentials
    • What is essential difficulty? What is accidental difficulty?
    • Why is accidental difficulty easier to overcome?
    • What does this have to do with classical view?
    • Is modern view better at adressing essential difficulty than classical view?
    • Is Essence more classical view or more modern view?
    • How might it help people favoring modern view?
    • How does Economical view differ from classical view?
    • How does Economical view differ from modern view?
    • Explain the "good enough" principle. How might an implementation look like in a classical-view process? How might an implementation look like in a modern-view process?
  • 4: Agile Manifesto
    • What does "agile is about priorities" mean?
    • Which principle from the Agile Manifesto warrants the term "agile"?
    • Which one warrants the previous term "lightweight"?
    • Given that, would "lightweight" have been the more appropriate term?
    • Which principles best represent the humanist aspect of modern view?
    • What is the key new element of agile culture compared to classical-view culture?
    • What assumptions underlie agile processes?
    • In practice, which of these is the most likely to break severely?
    • If this happens, what should one do?
    • What is the key idea of Boehm's planning spectrum?
  • 5: Scrum, Kanban
    • How does Scrum drive a process forward?
    • How does Scrum keep a process from falling apart?
    • Explain the roles that exist in Scrum
    • Explain the key artifacts in Scrum. How is each one important?
    • What makes Scrum an agile process model?
    • What is a typical mistake teams make in Daily Scrums?
    • What is a typical mistake teams make in Retrospectives?
    • What should teams prefer if they cannot estimate perfectly: Putting too much into the Sprint Backlog to too little? Why?
    • By what means does Scrum facilitate self-organization in the short term? In the long-term?
    • Which of Scrum's technical practices is most important?
    • What is flow in Kanban? How does Kanban maximize flow?
    • What is lead time in Kanban? How does Kanban minimize lead time?
    • What about these ideas is classical-view, what is modern-view?
  • 6: ScrumBut and Agile Transition
    • Discuss the implications of various deviations from the Scrum process under good vs under bad circumstances: No Scrum Master; Improper Daily Scrum; Improper Sprint Planning; No Sprint Review;
    • What does Agile Transition mean?
    • Is it acceptable to be in-between not agile and agile as a team (e.g. using some distorted, partial version of Scrum)?
    • How does the answer differ from a classical point of view versus a modern point of view?
  • 7: Self-organization
    • Explain Hackman's terms self-managing, self-designing, and self-governing? Which one matches our notion of self-organizing?
    • How is Hoda's Mentor role different from Scrum Master?
    • How is Hoda's Translator role different from Product Owner?
    • Why is Hoda's Champion role important?
    • Why is Hoda's Promoter role important?
    • How is the Barke/Prechelt notion of Role different from the usual one?
    • What are the two types of role clarity? Why is the distinction important?
    • Where does the Quality Experience story illustrate self-organization?
    • How does it illustrate the superiority of a modern-view approach?
    • How does it illustrate the usefulness of a process focus (vs. product focus)?
  • 8/9: XP
    • Given Scrum, what does XP offer beyond it?
    • What is Kent Beck's view of the difference between methods and practices?
    • What is his view of the difference between practices and principles?
    • What is the role of values in XP?
    • Give an example of an XP value, practice, and principle and their relationships.
    • Why are CI and Ten-Minute Build two separate practices?
    • Which do you consider the most valuable XP practice? Why?
    • Considering XP has TDD, what value does ATDD provide?
    • Explain Incremental Design (Simple Design)
    • Explain how the practices in Jeffrie's XP core reinforce each other
    • Explain the difference of Incremental Design and YAGNI
    • Explain two situations where XP is not a good approach
  • 10: Pair Programming
    • Explain two mistakes of Williams' PP definition
    • Explain two behaviors valuable for successful PP
    • Explain two ways how PP can break
    • Is PP difficult to learn? Why or why not?
    • Why is the distinction of G knowledge and S knowledge so important?
    • What is a particularly useful pair constellation? Why?
    • Why is most PP research that used controlled experiments hardly useful?
  • 11/12/13: Open Source SW
    • What are typical restrictions of proprietary SW?
    • What is the difference between Copyleft and liberal OSS licences?
    • What does "viral" mean in this context?
    • What is the difference between Community OSS and Commercial OSS?
    • Why is OSS stronger in infrastructure SW compared to application SW?
    • Explain the basic reason why companies participate in OSS development
    • Explain two typical specific reasons (situations) of such companies
    • How are freemium business models attractive?
    • Explain the difference of two prototypical OSS leadership styles
    • What does 'bazaar-style development' mean in this context?
    • How is leadership different between Community OSS and Commercial OSS?
    • What is the role of forking in OSS leadership?
    • Explain two key ideas of the Apache leadership model
    • Explain two patterns how OSS projects introduce process changes
    • What is the common role of these patterns?
    • Explain how Linus' Law helps OSS compared to proprietary SW
    • What is the role of frequent releases in this context?
    • Can the resulting SW quality compete with commercial SW?
    • Explain two reasons why Inner Source may be attractive for companies
    • Explain two reasons why it may be difficult to achive those
  • 14: Cleanroom
    • What are the main goals of Cleanroom SW Engineering?
    • So is this a classical-view process?
    • What role does attitude play?
    • What role does teamwork play?
    • When is Cleanroom compatible with agile development?
    • Explain statistical testing and reliability certification
    • Why is statistical testing difficult in practice? (2 reasons)
-- GesineMilde - 12 Jul 2023