diff --git a/Notes/Semester 4/SWEN2 - Software Entwicklung 2/SEP.md b/Notes/Semester 4/SWEN2 - Software Entwicklung 2/SEP.md new file mode 100644 index 0000000..89613ff --- /dev/null +++ b/Notes/Semester 4/SWEN2 - Software Entwicklung 2/SEP.md @@ -0,0 +1,199 @@ +# 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