zusammenfassungen/Writerside/topics/OOAD/IntroductionOOAD.md
David Schirrmeister 1820e5c6a4 update
2024-05-01 10:14:02 +02:00

4.2 KiB

Introduction

What is Software Engineering

Definition according to Ian Sommerville

Software engineering is an engineering discipline that is concerned with all aspects of
software production from the early stages of system specification through to maintaining
the system after it has gone into use.

...Ingenieurdisziplin... ...alle Aspekte der Softwareproduktion...
Ingenieure lassen Dinge funktionieren! nicht nur die Softwareentwicklung
Sie wenden Theorien, Methoden und Werkzeuge dort an, wo diese angemessen sind beinhaltet auch Aktivitäten wie Projektmanagement, Entwicklung von Werkzeugen, Methoden und Theorien zur Unterstützung
Lösungen müssen innerhalb organisatorischer und finanzieller Einschränkungen funktionieren

Iron Triangle: Organizational and Financial Constraints

image_38.png

  • visualisiert Einschränkungen im Projektmanagement
  • verkündet:
    1. Qualität der Ergebnisse eines Projekts ist durch folgende Faktoren eingeschränkt:
      • Kosten (verfügbar: Budget, Ingenieure, ...)
      • Zeit (verfügbar: Zeit, Fristen)
      • Umfang (Funktionen, bereitgestellte Funktionalität)
    2. PM kann zwischen Einschränkungen handeln
    3. Änderungen in einer Einschränkung erfordern Änderungen in anderen zur Kompensation, oder die Qualität wird leiden
  • Die Realität ist komplexer
    • Geld in ein vollständig ausgelastetes Projekt zu stecken, kann es verlangsamen

Software Development Lifecycle (SDLC)

stateDiagram
    1: Requirement Analysis
    2: Design
    3: Implementation
    4: Testing
    5: Maintaining/Operations
    1-->2
    2-->3
    3-->4
    4-->5
    5-->1    

Requirement Analysis

  • Understand what your client wants and/or needs

Design

Implementation

  • Actually build the system meeting required quality goals

Testing

  • Ensure that the whole system meets all requirements

Maintaining/Operations

  • The system serves its purpose (earns money)

Software Quality

Requirements in Software Engineering

Functional Requirements (FR) Non-Functional Requirements (NFR)
Systemfunktionen, Anwendungsfälle, ... Eigenschaften des Systems als Ganzes, nicht im Zusammenhang mit der Funktionalität (bspw. Sicherheit, Performance, Wartbarkeit)
Können unterschiedlich detailliert erfasst sein (je nach Komplexität des Projekts) Beeinflussen die gesamte Architektur eines Systems, nicht nur einzelne Komponenten
FRs sind meist höchste Prio des Clients, aber auch am einfachsten zu verhandeln Wenn ein NFR scheitert, kann das ganze System nicht funktionieren

Eight Quality Characteristics

image_39.png

Maintainability

  • Modularität
  • Wiederverwendbarkeit
  • Analysierbarkeit
  • Modifizierbarkeit
  • Testbarkeit

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live

~John F. Woods