Handbuch für Softwareentwickler

 
 
Rheinwerk (Verlag)
  • 1. Auflage
  • |
  • erschienen am 23. März 2018
  • |
  • 701 Seiten
 
E-Book | ePUB mit Wasserzeichen-DRM | Systemvoraussetzungen
978-3-8362-4478-7 (ISBN)
 

Software-Architekten bauen auf gute Bücher!

  • Das Lehr- und Nachschlagewerk für professionelles Software Engineering
  • Inkl. Requirements Engineering, Clean Code, mobile Plattformen, Projektmanagement
  • Mit realen Beispielen, vielen Grafiken und Best Practices
Als Entwickler wissen Sie, dass es mit der Kenntnis von Sprachen und Programmierplattformen nicht getan ist. Erfolgreiche Software heißt: fundiertes Wissen in vielen Fachgebieten und Methoden, von der Architektur über Datenhaltung, Anforderungsmanagement und Sicherheitsfragen bis zum Projektmanagement. Dieses Buch behandelt alle Themen umfassend und auf den Punkt. Die Autoren geben Ihnen praktische Empfehlungen zu Grundlagen und aktuellen Fragen in der professionellen Softwareentwicklung. Das theoretische Fundament und die gut erläuterten Fachbegriffe sind dabei niemals Selbstzweck, sondern stehen im Dienst der Kunst, gute Software für Ihre Kunden zu entwickeln.

Aus dem Inhalt:

  • Grundlagen: Algorithmen und Datenstrukturen
  • Anforderungsanalyse, Planung und Entwurf
  • Gelungene User Interfaces
  • Kundenzufriedenheit und Benutzerfreundlichkeit
  • Migration - vom Altsystem zur zeitgemäßen Anwendung
  • Datensicherheit, Datenschutz und Verschlüsselung
  • Guter Code und Qualitätsmaßstäbe
  • Plattformübergreifende Entwicklung
  • Parallelprogrammierung
  • Softwaretesting
  • Mobile Computing im Enterprise-Umfeld
  • Überblick über Werkzeuge wie Entwicklungsumgebungen und Versionsverwaltung
1. Auflage
  • Deutsch
  • Bonn
  • |
  • Deutschland
  • Neue Ausgabe
  • 29,31 MB
978-3-8362-4478-7 (9783836244787)
weitere Ausgaben werden ermittelt
Prof. Dr. Veikko Krypczyk lehrt u. a. Informatik und Wirtschaftsinformatik. Darüber hinaus ist er Softwareentwickler mit Leidenschaft und begeistert sich für moderne Technologien und Vorgehensweisen. Er publiziert regelmäßig in Fachzeitschriften und spricht auf IT-Konferenzen.

Vorwort ... 17

TEIL I Überblick ... 19

1. Überblick ... 21

1.1 ... Berufswunsch Softwareentwickler ... 21
1.2 ... Über dieses Buch ... 28
1.3 ... Literatur und Links ... 34

2. Programmierung als Kern der Softwareentwicklung ... 35

2.1 ... Die Programmierung ... 35
2.2 ... Paradigmen der Softwareentwicklung ... 39
2.3 ... Objektorientierte Programmentwicklung ... 40
2.4 ... Programmiersprachen ... 62
2.5 ... Essenzielle Sprachmerkmale ... 72
2.6 ... Fazit und Ausblick ... 103
2.7 ... Literatur und Links ... 104

3. Algorithmen und Datenstrukturen ... 105

3.1 ... Algorithmen als Kernelemente des Programms ... 106
3.2 ... Entwurf von Algorithmen ... 111
3.3 ... Sortieren und Suchen als Basis-Algorithmen ... 123
3.4 ... Elementare Datenstrukturen ... 138
3.5 ... Zusammenfassung und Ausblick ... 160
3.6 ... Literatur und Links ... 162

TEIL II Der Softwarelebenszyklus ... 165

4. Softwareprojekte professionell planen ... 167

4.1 ... Der Wasserfall - mehr als nur historische Bedeutung ... 168
4.2 ... Iterative Entwicklung - schrittweise zum Ziel ... 173
4.3 ... Das V-Modell - eine Struktur hauptsächlich für Projekte der öffentlichen Hand ... 175
4.4 ... Bessere Risikobeherrschung durch das Spiralmodell ... 176
4.5 ... Agile Ansätze - der Komplexität und Unsicherheit mit Flexibilität begegnen ... 177
4.6 ... Softwareentwicklung und die Schnittstellen zum Projektmanagement ... 187
4.7 ... Ist Agilität heute alternativlos? ... 194
4.8 ... Literatur und Links ... 197

5. Die Anforderungsanalyse - Startpunkt der Entwicklung ... 199

5.1 ... Überblick und Zielstellung ... 199
5.2 ... Ausgangssituation und Notwendigkeit ... 202
5.3 ... Anforderungen ermitteln ... 207
5.4 ... Anforderungen formulieren und visualisieren ... 219
5.5 ... Tool-Unterstützung ... 230
5.6 ... Diskussion im Kontext agilen Vorgehens ... 234
5.7 ... Fazit ... 237
5.8 ... Literatur und Links ... 237

6. Der Entwurf des Softwaresystems ... 239

6.1 ... Die Softwarearchitektur als Basis für Erfolg und Wartbarkeit eines Softwaresystems ... 240
6.2 ... Architekturparadigmen ... 246
6.3 ... Entwurfsmuster als Baupläne ... 259
6.4 ... Entwurfsunterstützung durch grafische Modellierung ... 265
6.5 ... Weitere Entwurfsentscheidungen ... 269
6.6 ... Erfolgreiche Entwürfe mithilfe von Prototypen ... 270
6.7 ... Zusammenfassung und Fazit ... 279
6.8 ... Literatur und Links ... 279

7. Die Implementierung schafft den Kern der Anwendung ... 281

7.1 ... Die Entwicklung der Benutzerschnittstelle ... 282
7.2 ... Die Businesslogik umsetzen ... 311
7.3 ... Die Datenwelt anbinden ... 313
7.4 ... Zusammenfassung und Fazit ... 316
7.5 ... Literatur und Links ... 317

8. Testen als Voraussetzung für fehlerarme Software ... 319

8.1 ... Zur Notwendigkeit von Softwaretests ... 320
8.2 ... Testgetriebene Entwicklung ... 321
8.3 ... Ein Überblick über wichtige Testarten ... 323
8.4 ... Testmethoden ... 327
8.5 ... Testebenen ... 335
8.6 ... Technik des Testens ... 353
8.7 ... Fazit und Zusammenfassung ... 357
8.8 ... Literatur und Links ... 357

9. Distribution - das Produkt muss zum Kunden ... 359

9.1 ... Die Softwaredistribution im Überblick ... 360
9.2 ... Die App-Store-Revolution ... 370
9.3 ... DevOps - der Kreis schließt sich ... 376
9.4 ... Die Technik der Softwarebereitstellung ... 380
9.5 ... Literatur und Links ... 392

10. Vom Altsystem zur zeitgemäßen Anwendung ... 393

10.1 ... Technologien im Wandel ... 394
10.2 ... Notwendigkeit einer Software-Migration ... 396
10.3 ... Ziele einer Software-Migration ... 398
10.4 ... Planung der Migration ... 398
10.5 ... Migrationsstrategien ... 401
10.6 ... Arten der Migration ... 405
10.7 ... Wirtschaftlichkeitsbetrachtungen ... 406
10.8 ... Eine Fallstudie ... 407
10.9 ... Literatur und Links ... 416

TEIL III Technologien und Methoden ... 417

11. Kundenzufriedenheit durch Nutzerorientierung ... 419

11.1 ... Der Nutzer im Fokus ... 421
11.2 ... Benutzerschnittstellen im Wandel ... 424
11.3 ... Gestaltung von Benutzeroberflächen ... 433
11.4 ... Literatur und Links ... 441

12. Datensicherheit und Datenschutz ... 443

12.1 ... Begriffe und Angrenzungen ... 445
12.2 ... Dilemma: Globale Technik und lokale Gesetzgebung ... 447
12.3 ... Betrieblicher Datenschutz ... 449
12.4 ... Datenschutz und Mobile Computing ... 450
12.5 ... Datenschutz und Cloud-Computing ... 453
12.6 ... Sichere Kommunikation durch Verschlüsselung ... 454
12.7 ... Fazit ... 461
12.8 ... Literatur und Links ... 462

13. Plattform- und geräteübergreifende Entwicklung ... 463

13.1 ... Systemumgebungen im Einsatz ... 463
13.2 ... Ansätze für die geräte- und plattformübergreifende Entwicklung ... 471
13.3 ... Mobile Computing als Motivationstreiber ... 475
13.4 ... Fazit ... 500
13.5 ... Literatur und Links ... 500

14. Parallelprogrammierung ... 503

14.1 ... Systemtechnische Ebene ... 504
14.2 ... Anwendungsebene ... 510
14.3 ... Programmiertechnische Ebene ... 518
14.4 ... Zusammenfassung ... 522
14.5 ... Literatur und Links ... 523

15. Grundlagen der Datenhaltung ... 525

15.1 ... Datenbank - ein Ort, um Ordnung zu halten ... 525
15.2 ... Phasen der Datenbankentwicklung ... 534
15.3 ... NoSQL-Datenbanken und Fazit ... 551
15.4 ... Literatur und Links ... 553

16. Werkzeugunterstützung ... 555

16.1 ... Die Rolle von Werkzeugen ... 556
16.2 ... Integrierte Entwicklungsumgebungen als Multifunktionswerkzeuge ... 557
16.3 ... Versionsverwaltungen als Voraussetzung für eine erfolgreiche Entwicklung ... 564
16.4 ... Weitere Softwaretools für die Entwicklung ... 574
16.5 ... Fazit und Ausblick ... 579
16.6 ... Literatur und Links ... 580

17. Qualitätssicherung und Clean Code Development ... 581

17.1 ... Das Verständnis von Softwarequalität ... 581
17.2 ... Ansätze zur Bestimmung der Softwarequalität ... 584
17.3 ... Softwarequalität zwischen Nutzen und Kosten ... 589
17.4 ... Qualität verbessern ... 591
17.5 ... Eine gesunde Fehlerkultur ... 606
17.6 ... Fazit und Zusammenfassung ... 613
17.7 ... Literatur und Links ... 614

TEIL IV Trends ... 615

18. Enterprise Mobile Computing ... 617

18.1 ... Einsatzszenarien ... 618
18.2 ... Bring Your Own Device ... 627
18.3 ... Technische Aspekte für Enterprise Mobile Computing ... 637
18.4 ... Literatur und Links ... 647

19. Internet of Things ... 649

19.1 ... Stand heute und Zukunftsszenarien ... 650
19.2 ... IoT-Architekturansätze ... 656
19.3 ... Hardware auf kleinstem Raum ... 660
19.4 ... Fallbeispiel: Windows 10 auf dem Raspberry Pi ... 665
19.5 ... Fazit und Ausblick ... 672
19.6 ... Literatur und Links ... 672

20. Cloud-Computing ... 675

20.1 ... Grundlagen des Cloud-Computings ... 677
20.2 ... Ökonomische Gesichtspunkte ... 683
20.3 ... Cloud-Computing als Werkzeug der Softwareentwicklung ... 688
20.4 ... Fazit ... 692
20.5 ... Literatur und Links ... 692

Index ... 693

1    Überblick


Der Beruf des Softwareentwicklers ist sehr vielfältig. Neben der Bewältigung technischer Herausforderungen sind Teamarbeit, Kommunikation und eine strikte Lösungsorientierung wichtig. Unser Buch wird Sie auf dem Weg zum Profi begleiten. Kommen Sie mit auf eine spannende Reise.

Dieses Fachbuch setzt sich umfassend mit den vielfältigen Themen der Softwareentwicklung auseinander. Sie erfahren alles Wichtige, um für Ihre Kunden bestmögliche Programme erstellen zu können. Dabei werden Sie schnell feststellen, dass Softwareentwicklung viel mehr ist als nur die Beherrschung einer Programmiersprache. Heutige Software ist komplex und kommt in all unseren Lebensbereichen vor. Um komplexe Produkte zu entwickeln, braucht es Professionalität. All diese Fähigkeiten, wie technische Kompetenz, Teamfähigkeit und Lösungsorientierung, kommen im Beruf des Softwareentwicklers zusammen. Wir beginnen in diesem ersten Kapitel damit, Ihnen diesen hochinteressanten Beruf vorzustellen. Danach erfahren Sie, wie wir dieses Buch für Sie strukturiert haben.

1.1    Berufswunsch Softwareentwickler


Wann haben Sie sich die ersten Gedanken zu Ihrer Berufswahl gemacht? Im Kindergartenalter? Das trifft auf die meisten von uns zu. Viele Jungs wollen zunächst Feuerwehrmann, Polizist oder Lokführer werden, Berufe mit vermeintlicher Action, mit Spannung und mit einer großen Außenwirkung. Und die Mädchen? Oft werden hier in jungen Jahren Balletttänzerin oder Tierärztin genannt. Die Zeit vergeht, und die Wunschberufe ändern sich! Dieses Buch ist ein Lehrbuch für angehende professionelle Softwareentwicklerinnen und -entwickler und zugleich hoffentlich ein gutes Nachschlagewerk für alle diejenigen, die sich diesen Berufswunsch schon erfüllt haben. Nachfolgend werden wir nur vom Softwareentwickler sprechen, meinen dabei aber gleichermaßen beide Geschlechter.

Für alle Leser, die sich schon sicher sind, dass Sie keine Balletttänzerin werden und dass auch der Beruf des Lokführers eher nicht der richtige zu sein scheint, ist dieses erste Kapitel gedacht. Vielleicht tragen Sie sich ja ernsthaft mit dem Gedanken, die Softwareentwicklung zu Ihrer Profession zu machen und damit künftig Ihre Brötchen zu verdienen. Die Berufsbezeichnung »Softwareentwickler« klingt zunächst einmal spannend, und Sie werden sich vielleicht die folgenden Fragen stellen: Welche Aufgaben umfasst der Beruf des Softwareentwicklers? Stimmt das Klischee vom Nerd, welcher den ganzen Tag zwischen Unmengen von Pizzapackungen und schmutzigen Kaffeetassen einsam im dunklen Kämmerlein sitzt und dabei kryptische Zeichen in den Rechner hackt? Welche Ausbildung braucht man, um Softwareentwickler zu werden? Welche persönlichen Eigenschaften sollte man idealerweise mitbringen? Wie sind die Chancen auf dem Arbeitsmarkt? Und natürlich: Wie sieht es mit dem Gehalt aus? Wir möchten Ihnen einen Eindruck davon vermitteln, welche Erwartungen Sie in Bezug auf den Beruf hegen können und welche Anforderungen an Sie gestellt werden.

Wie das Wort schon sagt: Die Hauptaufgabe eines Softwareentwicklers ist das Entwickeln und Erstellen von Software. Ist damit die Frage nach dem Berufsinhalt vollständig beantwortet? Nein! Der Beruf des Softwareentwicklers ist sehr vielfältig. Das Aufgabenspektrum hat sich in den letzten Jahren erheblich erweitert. Die Kernkompetenz kann man wie folgt umschreiben:

Der Softwareentwickler analysiert, plant und implementiert auf professionelle Art und Weise informationstechnische Anwendungen und Softwarebausteine. Ebenso ist er für umfassende Tests und für eine nahtlose Systemintegration zuständig.

In diesen beiden Sätzen steckt die gesamte Vielfalt des Berufsbilds. Im Einzelnen: Eine wesentliche Aufgabe des Entwicklungsprozesses ist die umfassende Analyse der Aufgabe, d. h. die Überlegung, welche Art von Software erstellt werden soll. Welchen Anforderungen soll diese genügen? Was erwarten unsere Kunden von der Anwendung? Welche Funktionen und welche Bedienoberfläche wünschen die künftigen Nutzer? Diese Fragen müssen von uns Entwicklern gestellt und sorgfältig beantwortet werden. Dazu müssen wir mit dem Kunden reden, ihm zuhören, weitere Fragen stellen und beobachten. Der Beruf des Entwicklers ist so gesehen mit denen eines Forschers zu vergleichen. Zufrieden ist der Kunde nur dann, wenn wir seine Wünsche erfüllen. Um das zu tun, müssen wir sie erst einmal kennen.

Bevor wir ein Programm erstellen können, müssen wir diesen Prozess umfangreich planen. Vorbei sind die Zeiten, als der erste Schritt im Schreiben des Quellcodes bestand. Professionelle Entwicklung startet heutzutage viel früher. Nach der Analyse folgt die Planung. Diese wird man zwar später wieder überarbeiten müssen, aber wenn man am Schluss ein gutes Ergebnis erzielen will, gibt es am Anfang nicht viele Alternativen.

Implementierung meint dann den eigentlichen Vorgang der Programm-Erstellung, d. h. das Codieren in der jeweiligen Programmiersprache. Viel zu oft wird auch heute noch der Vorgang der Softwareentwicklung mit dem Teilschritt der Implementierung beziehungsweise mit der Programmierung gleichgesetzt. Richtig ist, dass es ein wichtiger Teilschritt ist. Richtig ist aber auch: Es ist eben nur ein einzelner Teilschritt auf einer ganzen Liste von Aufgaben! Deshalb finden wir, dass die umfassende Aufgabe der Softwareentwicklung und die dazu notwendige hochprofessionelle Vorgehensweise besser durch den Terminus Software Engineering ausgedrückt wird. Software Engineering klingt nach einem geplanten und ingenieurmäßigen Vorgehen. Diesen Anspruch hat die heutige Entwicklung von Software auch, und damit grenzt sie sich eindeutig vom Programmieren als Hobby oder Zeitvertreib ab. Sie verwendet erprobte Methoden, setzt auf eine umfassende Werkzeugunterstützung, hat stets den Charakter eines Projekts und verfolgt ein klares Ziel. Dieses Ziel ist in vielen Fällen auch wirtschaftlicher Natur. Anwendungen werden in Auftrag gegeben und erstellt, um damit Probleme leichter lösen zu können und um letztendlich damit Geld zu verdienen.

Kehren wir noch ein wenig zum Prozess der Erstellung der Software zurück. Auch nach der vermeintlichen Fertigstellung der Software können wir uns als Entwickler noch nicht ausruhen, denn das Projekt ist noch nicht zu Ende gebracht. Funktioniert alles so, wie es soll? Haben wir die Wünsche des Kunden verstanden und auch komplett umgesetzt? Umfassende Tests gehören genauso zu unseren Aufgaben wie eine vollständige Systemintegration. Heutzutage kommt ein Programm selten allein daher. Es trifft so gut wie immer auf eine gewachsene IT-Infrastruktur. Dies bedeutet, dass das Programm in die IT-Systeme des Kunden integriert werden muss. Um das zu tun, müssen wir umfassend mit dem Kunden zusammenarbeiten.

Das Aufgabenspektrum des Entwicklers ist also ziemlich breit! Natürlich kann man am Ende nicht in allen Bereichen ein Experte sein, man muss sich spezialisieren. Trotz einer späteren Spezialisierung ist es wichtig, dass Sie gleich zu Beginn einen guten Überblick über alle Facetten des Berufs bekommen.

Nun aber sehen wir uns das Berufsbild des Softwareentwicklers noch etwas genauer an und grenzen es auch in der einen oder anderen Richtung von verwandten Jobs in der IT ab.

1.1.1    Der Softwareentwickler - ein ganz besonderer Informatiker


Fragen Sie Ihre Oma, was man als Softwareentwickler macht! Vermutlich lautet die Antwort in etwa so: »Irgendwas mit Computern«. Das stimmt, ist aber leider sehr ungenau, denn es trifft auch auf eine ganze Reihe anderer Berufe aus dem Bereich Informatik zu. Beschäftigt man sich mit dem Berufsbild des Softwareentwicklers, so gehört es auch dazu, sich die verwandten Berufe und Tätigkeiten anzusehen. Sie werden feststellen, dass die Abgrenzungen nicht immer überschneidungsfrei sind.

Um auf Oma zurückzukommen: Mit Computern arbeiten heute fast alle, auch der Sachbearbeiter bei der örtlichen Finanzverwaltung oder der Automonteur um die Ecke. In diesem Buch meinen wir jedoch die Arbeit von IT-Spezialisten. Diese wenden die IT nicht nur als Hilfsmittel an, sondern sie stellen sie für Anwender bereit. In welchen Bereichen können IT-Spezialisten heute arbeiten? Außer dem Beruf des Softwareentwicklers gibt es »verwandte« Berufe wie Informatiker, Webdesigner und Systemadministrator. Klangvolle Berufsbezeichnungen in Stellenanzeigen zeugen vom Versuch, möglichst viele Interessenten anzusprechen. Die Kreativität der Branche kennt hier keine Grenzen. Nicht immer ist intuitiv klar, was genau inhaltlich dahintersteckt. Nachfolgend versuchen wir, diese unvollständige und persönliche Auswahl an IT-Berufen etwas näher zu beschreiben.

Beginnen wir mit dem Arbeitsfeld des IT-Spezialisten. IT-Spezialist, das ist gewissermaßen ein Überbegriff für Personen, welche sich professionell mit der Informationsverarbeitung in Unternehmen beschäftigen. Diese Menschen können beispielsweise als Leiter einer IT-Abteilung, als Entwickler oder als Systemadministrator in einem Unternehmen arbeiten. Informatik kann man im Rahmen der dualen Ausbildung zum sogenannten Fachinformatiker erlernen oder in verschiedenen Formen an Berufsakademien, Fachhochschulen und Universitäten studieren. Das Aufgabengebiet ist später vom Unternehmen und der sich daraus ergebenden Spezialisierung abhängig. Die Anforderungen an diesen Beruf sind vielschichtig. Technisches Verständnis gehört genauso dazu wie die Fähigkeit, im Team zu arbeiten. Fazit: Den einen Informatiker gibt es nicht, lediglich die Ausbildung zu diesem Beruf. Eine Spezialisierung...

»Glänzend geschrieben; die Autoren haben den behandelten Stoff didaktisch hervorragend aufbereitet. Viele Infografiken und Tabellen schaffen Übersicht.«
(c't)
 
»Das lesenswerte Buch liefert mit zahlreichen Grafiken und Tabellen einen gelungenen Einstieg und Überblick für Softwareentwickler.«
(dotnetpro)
 
»Rundumschlag für Softwareentwickler«
(t3n)
 
»Eignet sich zur Studienbegleitung und auch als Nachschlagewerk für grundlegende Fragen der Software-Entwicklung.«
(LINUX MAGAZIN)
 
»Das Buch gibt gute Einblicke in die Themen. Kurze Texte und einschlägige bzw. anschauliche Grafiken stellen das jeweils gut vor. Dazu kommt gute Lesbarkeit und eine ebenso gute Textverständlichkeit. Chapeau!«
(infotechnica.de)

Dateiformat: ePUB
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie eine Lese-Software, die das Dateiformat EPUB verarbeiten kann: z.B. Adobe Digital Editions oder FBReader - beide kostenlos (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat ePUB ist sehr gut für Romane und Sachbücher geeignet - also für "fließenden" Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Wasserzeichen-DRM wird hier ein "weicher" Kopierschutz verwendet. Daher ist technisch zwar alles möglich - sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

44,90 €
inkl. 7% MwSt.
Download / Einzel-Lizenz
ePUB mit Wasserzeichen-DRM
siehe Systemvoraussetzungen
E-Book bestellen