Software-Leute

Werbung
Software Engineering
6 Menschen im Software
Engineering
6.1 Software-Leute und Klienten
6.2 Rollen und Verantwortlichkeiten
6.3 Die Produktivität des Projekts
6.4 Motivation und Qualifikation
6.5 The Personal Software Process
6.6 Moralische und ethische Aspekte
© Ludewig, J., H. Lichter: Software Engineering – Grundlagen, Menschen, Prozesse, Techniken. 2. Aufl., dpunkt.verlag, 2010.
Beim Software Engineering steht der Mensch
(tatsächlich!) im Mittelpunkt, weil Software
Engineering nur mit ihm möglich ist.
2
6.1 Software-Leute und Klienten
Software-Leute und Klienten
Software-Hersteller und Kunde sind meist juristische Personen.
Software-Leute
● Menschen, die auf der Seite des Software-Herstellers in einem
Software-Projekt arbeiten (vor allem Entwickler und Manager).
Klienten
● Personen, die den Kunden repräsentieren (z. B. Fachexperten).
Manchmal sind die Software-Leute gleichzeitig auch die Klienten:
● Menschen, die Programmieren als Hobby pflegen,
● Software-Leute, die sich selbst Werkzeuge schaffen,
● Menschen, die, geographisch verteilt, gemeinsam an SoftwareSystemen arbeiten.
4
6.2
Rollen und Verantwortlichkeiten
Rollen
Am einfachsten:
● eine Person ↔
eine Rolle
Oft:
● eine Person ↔
mehrere Rollen
Auch:
● mehrere Personen ↔ eine Rolle
In der Praxis finden sich viele sinnvolle und noch mehr andere
Rollenverteilungen.
Die nachfolgend genannten Rollen sind sinnvoll und weithin üblich.
6
Entwickler und seine Spezialisierungen
Der Entwickler entwickelt Software.
● Er befasst sich vor allem mit Spezifizieren, Entwerfen, Testen,
auch Prüfen und Verwalten.
Derzeit entstehen Spezialisierungen; vgl. „Certified Tester“.
Analytiker: Erhebung der Anforderungen (Analyse)(betrachten sich
eher nicht als Entwickler!)
Programmierer: Nur Feinentwurf, Codierung und Test
(Software-)Architekt: Der Architekt hat im Software-Projekt eine
ähnliche Rolle wie der Architekt auf dem Bau, er entwirft nicht nur
die Struktur, sondern leitet und überwacht auch die Realisierung.
Kein Künstler!
Wartungsingenieur: Entwickler in der Wartung
7
Projektleiter und Gruppenleiter
Der (Software-)Projektleiter (synonym: Projektmanager)
● leitet das Projekt
● fungiert als Mittler und Übermittler zwischen dem Management
der Herstellerfirma und den Entwicklern
● kann auch in der Linienorganisation als Gruppenleiter der
Vorgesetzte der Entwickler sein.
Zwei sehr verschiedene Interpretationen der Vorgesetzten-Rolle
● Stabsfunktion: Repräsentant der Geschäftsleitung gegenüber
den Mitarbeitern
● Linienfunktion: Vertreter der Gruppe gegenüber dem
Management
8
Kunde, Anwender und andere Betroffene
Software wird meist für einen Auftraggeber, den Kunden, entwickelt.
Beispiel: Auskunftssystem der Bahn.
● Kunde = die Bahngesellschaft, vertreten durch einen hohen
Manager
● Klienten = Fahrplan-Experten, Fahrplan-Macher, Betreiber
anderer Verkehrsmittel
Klienten sind eine im Allgemeinen große und sehr heterogene
Gruppe.
„Unsichtbare Klienten“
● Gesetzgeber, Kontrollgremien
● Sie wirken durch Gesetze, Vorschriften und Normen auf die Arbeit
ein.
9
6.3 Die Produktivität des
Projekts
Einflussfaktoren der Produktivität - 1
Faktoren
Merkmale
Arbeitsbedingungen – Technische Ausstattung (Hardware und Software)
– Störungen
– Vielfalt der Aufgaben (Zersplitterung der
Arbeitsleistung)
Schwierigkeiten
der Aufgabe
– Neuigkeitsgrad der Aufgabe, Verfügbarkeit von
Lösungen
– Komplexität des Zielsystems
– Spezielle Anforderungen wie hohe Zuverlässigkeit,
extreme Anforderungen zur Datensicherheit oder zur
Rechengenauigkeit
– Verfügbarkeit klarer und stabiler Anforderungen
11
Einflussfaktoren der Produktivität - 2
Faktoren
Merkmale
Rahmenbedingungen
des Projekts
–
–
–
–
–
–
Eignung der
Entwickler für das
Projekt
– Verständnis für den Kunden, Kulturbarrieren
– Erfahrung im Anwendungsgebiet, Problemverständnis
– Erfahrung in der verwendeten Technologie
Individuelle Faktoren
–
–
–
–
Personelle Kontinuität
Arbeitsklima
Verteilung der Aufgaben und Kompetenzen
Kommunikationswege und -hindernisse
Stabilität und Zuverlässigkeit der Führung
Zeit- und Kostendruck
Fähigkeiten als Entwickler
Fähigkeiten zur Arbeit im Team
Disziplin
Motivation
12
Ideale Verhältnisse
● Versierte, teamfähige Leute arbeiten unter kompetenter Leitung
eng zusammen, sind auch räumlich zusammen.
● Der Kunde, der aus demselben Kulturkreis wie die Entwickler
stammt, liefert vollständige und stabile Anforderungen.
● Die Gruppe hat in gleicher Technologie ähnliche Systeme
bereits erfolgreich erstellt.
Es ist einfach, solche idealen Verhältnisse zu beschreiben.
Viel schwieriger ist es, unter den realen, leider nie idealen
Bedingungen eines Projekts den besten Kompromiss zu finden
Beispielsweise ist es manchmal fraglich, ob durch einen weiteren,
als schwierig bekannten Mitarbeiter das Projekt gefördert oder
behindert wird.
Eine Risikoanalyse kann in manchen Fällen helfen.
13
Variationsbreite der Produktivität
Performance Measure
Ratio (#1)
Ratio (#2)
Debugging hours
28 : 1
26 : 1
Coding hours
16 : 1
25 : 1
Achtung, diese Zahlen sind sehr alt. Aber neuere gibt es kaum.
Diese Untersuchung (Sackman, Erikson und Grant, 1968) wurde oft
zitiert und kritisiert.
● Nach Prechelt sind die Unterschiede nur etwa halb so groß.
In der Praxis sieht man überraschende Leistungsunterschiede.
● Die qualitative Aussage der Daten von Sackman et al. gilt
weiterhin: Kein anderer Faktor im Software Engineering streut so
stark wie die individuelle Leistung.
Vermutlich ist die Variationsbreite innerhalb einer bestimmten
Arbeitsumgebung deutlich kleiner (höchstens 1 zu 3).
14
Messung der individuellen Produktivität
Die Leistungen der einzelnen Programmierer kann man durch
Zählung der Codezeilen messen:
● „Programmierer X schreibt y Zeilen Code pro Stunde“ (LOC/h).
Dieses Aussage ist problematisch und meist schädlich:
● Nur ein geringer Teil der Zeit dient der Programmierung. Andere,
wichtige Tätigkeiten bleiben unberücksichtigt.
● Die Qualität des Codes spielt keine Rolle.
● Programmiersprachen haben unterschiedliche „Dichte“.
● Die Bewertung der wiederverwendeten Codezeilen (v.a. in oo
Programmen) ist noch immer unklar.
● Der individuelle Programmierstil wirkt sich auf die Zeilenzahl aus.
● Die Metrik ist leicht zu unterlaufen.
Allgemein: Metriken taugen nicht zur individ. Leistungsbewertung !
15
6.4 Motivation und Qualifikation
Die übliche Programmiererkarriere - 1
Software-Leute verdienen meist gut; viele haben aber persönliche
Probleme mit ihrer Situation. Sie haben als Quereinsteiger ein
Grundlagendefizit.
Wie sieht der typische Programmierer P aus?
● P. kommt aus der Elektronik, er ist durch die Änderungen an
seinem Arbeitsplatz langsam in die Software hineingerutscht. P.
hat darum auch Programmierkurse besucht.
● Die Leute um P., auch sein Chef, sind ähnlich zur Informatik
gekommen.
● P. kann leidlich C++ programmieren und kennt sich mit dem
Prozessor aus, der in seiner Arbeit regelmäßig eingesetzt wird.
● Von Zeit zu Zeit erreichen P. sensationelle Ankündigungen (AI,
Objektorientierung, Windows-XX, Extreme Programming) und
Verheißungen (zehnfache Produktivität, fehlerfrei usw.).
17
Die übliche Programmiererkarriere - 2
Was können wir über P. vermuten?
● P. hat Angst vor Veränderungen, bekämpft sie, vor allem, wenn
sie die Transparenz verbessern. Denn P. fürchtet mit gutem
Grund, dass jede Änderung das Risiko birgt, ihn zu überfordern.
● P. glaubt nichts. Insbesondere glaubt er seinem Chef nichts.
● P. wünscht sich größere Sicherheit bei seiner Arbeit. Er hat aber
selbst keine Idee, wie diese aussehen könnte.
● P. vermutet, dass die Situation in seiner Firma besonders
ungünstig ist.
● P. wird an seinem Arbeitsplatz vermutlich nicht das Pensionsalter
erreichen.
Traurig für P. und auch für seine Firma!
18
Ein Modell der Motivation
Betrachten wir die Fähigkeiten und Tätigkeiten eines Menschen in
einer schematischen Darstellung.
Ein Mensch wird eine Arbeit nur ausführen (notwendiges Kriterium),
wenn sie innerhalb seiner Möglichkeiten liegt (Gebiet A) oder
(besser, aber fast gleichbedeutend) wenn er keine Abneigung
dagegen hat (L).
19
Was dem Entwickler Spaß macht
Ein starker Grund, eine Tätigkeit auszuführen, ist, dass sie ihm Spaß
macht (C) oder dass sie ihm Anerkennung oder eine andere Art von
Belohnung bringt (D).
Typisch gilt
C  B  A, aber nicht D  B
20
Was der Entwickler tatsächlich tut
Damit beschreibt die grüne Fläche C ∩ (B ∩ D), was der Mensch
wirklich (und leidlich gut) macht.
Es ist die Aufgabe des Managements, dafür zu sorgen, dass seine
Aufgaben in diesem Gebiet liegen.
21
Spezialfall: Der Versager
Ein trauriger Spezialfall ist der Versager, die Niete:
B ∩ D ist klein oder leer
22
Spezialfall: Der Workaholic
Ein anderer Spezialfall, eigentlich auch traurig, ist der Workaholic:
C ∩ (B ∩ D), ist sehr groß oder sogar C  (B ∩ D)
Viele Probleme im Software Engineering können mit diesen
einfachen Diagrammen erklärt werden, denn sie haben mit Können
und Motivation zu tun.
23
Folgerungen für das Management
Damit jeder Mitarbeiter leistet, was er leisten kann, sollte die Menge
D mit den Interessen der Firma zur Deckung gebracht werden.
Es sollte sichergestellt werden, dass D den Mitarbeitern bekannt ist
und auch sichtbar wird, z. B. durch die Belohnung derer, die sich
entsprechend verhalten.
Es sollte die gezielte Weiterbildung der Entwickler die Schnittmenge
B ∩ D vergrößern, sodass es für alle Entwickler attraktive Arbeiten
gibt, die in ihrer Kompetenz liegen.
Wenn es dem Management gelingt, das Ziel innerhalb von C zu
platzieren (oder C so zu beeinflussen, dass es das Ziel einschließt),
dann hat es gewonnen!
Im günstigsten Falle macht die Entwicklung guter Software Spaß !
24
Beispiel: Dokumentation
Wo liegt in diesem Bild die Dokumentation?
Im Niemandsland!
25
6.5
The Personal Software Process
Verbesserung der SW-Entwicklung
Software, vor allem große Software, ist typisch das Produkt einer
Gruppe, nicht von Einzelkämpfern.
Die Arbeit der Gruppe ist durch den (Bearbeitungs-)Prozess geprägt.
Darum ist die Verbesserung der Prozesse ein wichtiges Thema im
Software Engineering.
Kleine Gruppen und Leute, die allein arbeiten, können davon kaum
profitieren; sie sind nicht in eine (Arbeits-)Organisation eingebettet.
Das betrifft insbesondere Studenten.
Watts Humphrey hat für diese Zielgruppe den „Personal Software
Process“ (PSP) erfunden. Er ist an das CMM (Capability Maturity
Model) des SEI angelehnt.
Erste Versuche 1993 mit Studenten der CMU.
27
Vorüberlegungen
Traditionell
● Programmieren erlernt man bottom-up. Stößt man an Grenzen
(Fehler, Komplexität), sucht man sich Wege, diese zu
überwinden. Das geschieht typisch planlos, intuitiv.
Gegenentwurf PSP:
● Der mit elementaren Programmierkenntnissen ausgestattete
Programmierer erlernt sukzessive Techniken, die aus industriellen
Prozessen abgeleitet sind. Er entwickelt sich auf diese Weise
einen ihm spezifischen Personal Software Process. Damit ist er
auch in der Lage, größere Aufgaben anzugehen.
Missverständnisse
● Falsch: PSP ersetzt CMM. Im Gegenteil wird CMM 2 empfohlen.
● Falsch: PSP ist nur für Ein-Personen-Gruppen geeignet. Im
Gegenteil sollen die Lehren des PSP auch in Gruppen nützen.
28
Grundidee
Ein Entwickler, der mit möglichst geringem Aufwand gute Arbeit
leisten will, sollte planmäßig vorgehen und wissen, wie sich sein
Vorgehen auf die Resultate auswirkt.
● Darum sollte er verschiedene Vorgehensweisen erproben und
dabei seinen Aufwand, sein Vorgehen und seinen Erfolg präzise
dokumentieren.
● Auf diese Weise wird er unvermeidlich erkennen, dass bestimmte
Techniken erfolgreicher sind als andere, und dann die
erfolgreichen Techniken bevorzugt einsetzen.
● Er wird also besser arbeiten.
29
Stufen des PSP
Der Personal Software Process nach Humphrey
30
Eingesetzte Lerntechniken
● Unterricht einzelner SE-Themen, z.B.
● Planung,
● Messen und Schätzen,
● Design and Code Reviews,
● Software-Qualitätsmanagement,
● Software-Entwurf,
● Ausweitung des Ansatzes für größere Systeme
● Metriken
● Formulare zur Erfassung der Metriken
● statistische Methoden
● formale Notationen
● eine Aufgabensammlung
31
Stufen und eingesetzte Metriken des PSP
PSP-Stufe
PSP-Schritt
Baseline
Personal
Process
PSP 0
Eingesetzte Formulare und Metriken
– Project Plan Summary
(Übersetzungs- und Testzeit, Fehler entdeckt / behoben)
– Time Recording Log
– Defect Recording Log
Personal
Planning
Process
PSP 0.1
– Project Plan Summary (Änderungen in LOC real)
PSP 1
– Project Plan Summary (Schätzungen für LOC)
– Size Estimating Template
PSP 1.1
– Project Plan Summary (Planeinhaltung, Wiederverwendung)
– Task and Schedule Planning Templates
Personal
Quality
Management
PSP 2
– Project Plan Summary (Fehler und Aufwand)
PSP 2.1
– Project Plan Summary (Qualitätsaufwand und -kosten)
Cyclic
Personal
Process
PSP 3
– State Specification Template
– Cycle Summary (Metriken-Übersicht für jedes Inkrement)
– Issue Tracking Log (Verfolgung von)
32
Diskussion PSP
Kritik am PSP:
● relativ bürokratisch, allzu sehr auf die Codierung fixiert.
Unstrittig:
● Jeder Student sollte sich daran gewöhnen, seine Aufwände und
deren Wirkungen zu notieren und daraus zu lernen.
Fast jeder Student zweifelt an der Botschaft:
Code-Lesen bringt mehr als Testen.
Ausprobieren und wundern!
Humphrey hat unter der Bezeichnung „Team Software Process“
(TSP) einen ähnlichen Ansatz für Entwicklergruppen vorgelegt.
33
6.6
Moralische und ethische
Aspekte
Unsere Arbeit als Software-Entwickler
Jedes Artefakt verändert die Welt.
Software tut dies in erheblichem Maße.
Die Wirkungen sind vielfältig und vielfach auch ambivalent.
Die Zersplitterung unserer Arbeit in viele Teile hat zur Folge, dass
die Teile (die Einzelarbeiten) nicht separat zu bewerten sind.
Beispiel: Entwicklung eines Compilers
Konsequenz: Die Forderung, beim SE ethische Prinzipien zu
beachten, läuft hinsichtlich der Software-Verwendung oft ins Leere.
Das gilt aber in vielen konkreten Fällen nicht.
Außerdem gelten die Regeln der Moral auch für die Arbeit selbst
(z.B. Beachtung der Urheberrechte, Respekt vor der Intimsphäre,
Fairness gegenüber einem Partner).
35
Ethische Leitlinien
Folge der Diskussion über ethische Aspekte:
ethische Leitlinien
● der IEEE-Computer Society und der ACM (1999)
● der Gesellschaft für Informatik (2004)
● vieler anderer nationaler oder internationaler Berufsverbände.
Praktisches Problem:
● Die Leitlinien setzen einerseits auf die Codifizierung der
Verhaltensregeln (wie Gesetze).
● Aber die Formulierungen sind zu unbestimmt.
● Andererseits schrecken sie vor Sanktionen zurück.
Wir haben damit Regeln, die weder Genaues sagen noch durch
eine Jury konkretisiert und angewendet werden.
36
Extremes Beispiel
Die Regeln im Australian Computer Society Code of Ethics (2004):
● 4.3.1 Priorities: I must place the interests of the community
above those of personal or sectional interests.
● 4.3.2 Competence: I must work competently and diligently for my
clients and employers.
● 4.3.3 Honesty: I must be honest in my representations of skills,
knowledge, services and products.
● (...)
● 4.10.6 I must take appropriate action if I discover a member, or a
person who could potentially be a member, of the Society
engaging in unethical behaviour.
37
Leitlinien der GI
Deutlich besser: Die deutschen Leitlinien:
● Art. 8 Lehre: Vom Mitglied, das Informatik lehrt, wird zusätzlich
erwartet, dass es die Lernenden auf deren individuelle und
gemeinschaftliche Verantwortung vorbereitet und selbst hierbei
Vorbild ist.
● Art. 10 Zivilcourage: Die GI ermutigt ihre Mitglieder in Situationen,
in denen ihre Pflichten gegenüber Arbeitgebern oder
Kundenorgansationen in Konflikt mit der Verantwortung
gegenüber anderweitig Betroffenen stehen, mit Zivilcourage zu
handeln.
Sie sollten sich diese Leitlinien ansehen und darüber nachdenken.
38
Fazit
The good life is inspired by love and guided by knowledge
Bertrand Russell (1872-1970)
Das bedeutet:
● Wir müssen die Folgen unserer Handlungen überblicken.
Dazu brauchen wir gute fachliche Kenntnisse.
● Und wir sollten uns bemühen, unsere Handlungen so
auszurichten, dass wir damit uns und anderen nützen, nicht
schaden.
Dazu brauchen wir die Liebe zu unseren Mitmenschen und zu uns
selbst.
39
Herunterladen