ZHAWNotes/Notes/Semester 4/SWEN2 - Software Entwicklung 2/SEP.md

200 lines
9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Software Engineering Prüfungsstoff
Dieses Dokument hält die verschiedenen Themen fest, welche im Rahmen der SEP unter Umständen angesprochen werden.
## Einführung Softwareentwicklung
- Sie können Vor- und Nachteile der plangetriebenen Methoden aufzählen
> Plangetriebene Projekte legen ihre Ziele und den Umfang des Projekts zu Beginn fest. Weitere Schritte passieren sequentiell.
>
> Man spricht hierbei vom Wasserfall-Modell
>
> Projekte können durch das Wasserfall-Modell nicht auf Änderungen an der Infrastruktur antworten oder die Ziele aufgrund anderer Anlässe verändern.
>
> Agile Projektmethoden leisten Abhilfe.
- Sie wissen, für welche Arten von Projekten die plangetriebenen Methoden verwendet resp. nicht verwendet werden sollten.
> Einsetzen für:
> - Projekte ohne jegliche Abhängigkeiten
> - Projekte ohne sich ändernder Umgebung
> Nicht einsetzen für:
> - Software-Projekte
> - Projekte mit dynamischen Umgebungen
- Sie können die drei Gesetze der Softwareentwicklung erklären
> - Humphrey's Law - "Menschen wissen nicht, was sie wollen, bevor sie es sehen"
> - Ziv's Law - "Softwareentwicklung ist unvorhersehbar und kann nie vollends verstanden werden"
> - Conway's Law - "Software ist ein Spiegel der Firma und der Menschen, die sie entwerfen"
## Agile Manifesto
- Sie können die "Values" des "Agile Manifesto" aufzählen und deren Bedeutung erklären
> - "Individuals and interaction over processes and tools":
> Es sollen auf Individuen und die Interaktionen mit ihnen, statt auf Prozesse und Tools geachtet werden.
> Dadurch kann u.a. sichergestellt werden, dass die Stärken der Team-Mitglieder besser eingesetzt werden.
> - "Working software over comprehensive documentation":
> Eine schnelle Fertigstellung des Codes sorgt für möglichst schnell verfügbares Feedback.
> - "Customer collaboration over contract negotiation":
> Dies soll sicher stellen, dass alle beteiligten zum selben Ziel hin arbeiten.
> - "Responding to change over following a plan":
> Auf Anregungen des Kunden, falls sich Ziele ändern sollten, soll zeitnahe eingegangen werden. Es soll nicht auf alte Ziele beharrt werden.
- Sie kennen die "12 Principles" hinter dem "Agile Manifesto" und können diese erklären.
> - Customer Satisfaction
> - Welcome Change
> - Deliver Frequently
> - Working Together
> - Motivated Team
> - Face to Face
> - Working Software
> - Constant Pace
> - Good Design
> - Simplicity
> - Self Organisation
> - Reflect and Adjust
- Sie können die Bedeutung des agilen Manifesto für Softwareentwicklung einordnen
> Hält die Prinzipien der agilen Community im Bereich Software-Entwicklung fest.
## Agile
- Sie kennen die folgenden Begriffe und können sie erklären:
- Risk:
> Event that never happened before and might limit the success of the project if it happens.
- Cost of Change
> Die Kosten (bspw. in Aufwand), die ein Feature wert ist (Story Points)
- Four Variables (Iron Triangle)
> Zeit, Ressource, Qualität, Scope (Features) - alle haben Einfluss aufeinander - nichts kann zugleich 100% ausgeprägt sein.
## eXtreme Programming
- Sie können erklären, was eXtreme Programming ist.
> eXtreme Programming ist eine Methode zum Umsetzen von Projekten in Umgebungen und mit Anforderungen, die sich ständig ändern.
- Sie können die folgenden Begriffe erklären:
- Core Values
> - Communication
> - Simplicity
> - Feedback
> - Courage
> - Respect
- Principles
> - Fundamental Principles
> - Rapid Feedback
> - Assume Simplicity
> - Incremental Change
> - Embracing Change
> - Quality Work
> - Other Principles
> - Teach Learning
> - Small Initial Investment
> - Play to Win
> - Concrete Experiments
> - Open, Honest Communication
> - Work with People's Instincts, not Against them
> - Accepted Responsibility
> - Local Adaption
> - Travel Light
> - Honest Measurement
- Cost of Change
> Story Points
- Business Value
> The amount of money an organization will make by having the corresponding feature
- Sie kennen folgende XP Practices und können sie erklären
- The Planning Game
> Ehrliche, instinktive Vergabe von Story-Points (Zeit-Poker)
- Small Releases
> Kleine Änderungen vermeiden grosse Fehler
- Metaphor
> Alle beteiligten Personen (auch Kunden) sollen sich verstehen - es wird ein gemeinsames Vokabular benötigt
- Simple Design
> Besteht alle Tests. Keine Code-Duplikation. Hat so wenig Klassen/Methoden wie möglich.
- Unit-Testing
> Alle automatisierten Prozesse des Projekts **müssen** getestet sein
- Refactoring
> Gibt es Refactorings, die das Einbauen eines Features erleichtert, soll dieses immer als erstes umgesetzt werden.
- Pair-Programming
> Code wird zu zweit geschrieben. Eine Person schreibt Code, die andere beobachtet und bewertet den Prozess/bringt Innovation.
- Collective Code Ownership
> Jede beteiligte Person hat 100%ige Verantwortlichkeit über den Code
- Continuous Integration
> Code wird min. 1x pro Tag getestet. Dies muss automatisiert sein.
- 40 Hours Week
> Auf die Work-Life Balance der Mitarbeiter muss geachtet werden. Nicht zu viel Überzeit.
- On-Site Customer
> Ein Kunde muss vor Ort beim Team sein, um Fragen zu beantworten
- Coding Standards
> Egal
- Test-Driven Development
> Tests werden gem. Erwartungen geschrieben. Erst dann wird der Code dazu implementiert.
- Slack
> Kleine Aufgaben einplanen, die eingestampft werden können, falls die Zeit knapp wird.
- Incremental Design
> Probleme in kleine Bestandteile aufteilen, um diese einzeln zu lösen.
- Self-Organized Team
> Self sprechend
## Software Craft
- Sie kennen Gründe, wieso das Manifest für Software Craft notwendig wurde.
> - Establish Principles
> - Develop School
> - Vocal Community
> - Create Visibility
> - Guidance for New Developers
- Sie kennen die Formate der Software Craft Community, wie ein Austausch geschaffen wird und deren Prinzipien
> Durch Konferenzen und Online-Portale (SC, SoCraTes, Software Crafters Zurich, Software Crafters Manila), weitere Aktivitäten
- Sie können erklären, wie man als Softwareentwickler üben kann
- Sie können Coding Dojo und Code Katas ausführlich erklären
> "A bunch of coders get together, code, learn, and have fun. It's got to be a winning formula!" Emily Bache
## Pyramid of Agile Competence
- Sie kennen die "Pyramid of Agile Competencies" und können die drei Ebenen erklären
> - Agile Values
> - Craftsmanship, Organization Culture, Transparency & Openness
> - Collaboration Practices
> - Agile Champion, Customer & Requirements, Communication
> - Technical Practices
> - Testing, CI, Clean Code
## User Stories
- Sie beschreiben die Ziele, die Anwendung und wie das Format einer Userstory aufgebaut ist.
- Sie kennen die Zusammenhänge zwischen Epics, Themes und Stories
> - Epics sind grosse User Stories
> - Theme ist ein Verbund mehrerer User Stories
- Sie kennen die Eigenschaften einer guten Userstory
## Estimation and Planning
- Sie kennen die folgenden Begriffe und können diese erklären
- User Stories
- User Roles
- Epics
- Themes
- Story Points
- Velocity
> Das Ergebnis von $\text{Story Points} \div \text{Time}
- Planning Poker
- Conditions of Satisfactions
> Bedingungen, unter denen eine User Story als abgeschlossen gilt
- Levels of Planning
> Aufteilung von Teilaufgaben in...
> - Strategy
> - Portfolio
> - Product
> - Release
> - Iteration
> - Day
- Product Backlog
> Sammlung offener Aufgaben
- Priorisierung (der User Stories)
- Techniques for Estimating
> Planning Poker
- Sie kennen die folgenden Begriffe und können diese erklären:
- Planning for Value
> Aufgaben nach deren Wert im Projekt priorisieren
- Financial Value
> Aufgaben nach finanziellen Wert für Kunden-Firma priorisieren
- Risk
> Siehe Abschnitt "Agile"
- New Knowledge
> Der Zeitaufwand, der dazu aufgewendet werden muss, sich neues Wissen anzueignen
## Build Automation, CI, CD, DevOps
- Sie können die Arten von Software Automation, Arten von Automation und Ziele erklären
> Arten von Software Automation:
> - on-demand: Automation wird auf Verlangen ausgelöst
> - scheduled: Automation wird regelmässig ausgeführt (bspw. nächtlich, monatlich o.ä.)
> - triggered: Automation wird durch Vorkommnis ausgelöst (bspw. sobald Änderungen am Code veröffentlicht werden.)
> Arten von Automation:
> - Continuous Integration: Automatisiertes Testen
> - Continuous Deployment: Automatisiertes Veröffentlichen/Installieren/Ausliefern