zusammenfassungen/Writerside/topics/OOAD/IntroductionOOAD.md
David Schirrmeister 5a1e4ab63d update
2024-04-30 22:45:51 +02:00

4.1 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