Krypczyk / Bochkor | Handbuch für Softwareentwickler | E-Book | sack.de
E-Book

E-Book, Deutsch, 896 Seiten

Reihe: Rheinwerk Computing

Krypczyk / Bochkor Handbuch für Softwareentwickler


2. Auflage 2021
ISBN: 978-3-8362-7979-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

E-Book, Deutsch, 896 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-8362-7979-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



Das Standardwerk für professionelles Software Engineering. Jeder Entwickler weiß, dass es mit der Kenntnis von Sprachen und Programmierplattformen nicht getan ist. Wer erfolgreich Software entwickeln möchte, sollte mit vielen Fachgebieten und Methoden vertraut sein - von der Architektur über Datenhaltung, Anforderungsmanagement, Sicherheitsfragen bis zum Projektmanagement. Hier finden Sie eine umfassende Behandlung dieser Themenvielfalt. Das Autorenteam gibt praktische Empfehlungen zu grundlegenden und aktuellen Fragen der professionellen Softwareentwicklung. Das theoretische Fundament und die gut erläuterten Fachbegriffe sind dabei niemals Selbstzweck, sondern stehen im Dienst der Kunst, für Ihre Kunden gute Software 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


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.
Krypczyk / Bochkor Handbuch für Softwareentwickler jetzt bestellen!

Weitere Infos & Material


Materialien zum Buch ... 20  Vorwort ... 21

TEIL I.  Überblick ... 23  1.  Überblick ... 25  1.1 ... Berufswunsch Softwareentwickler ... 25  1.2 ... Über dieses Buch ... 32  1.3 ... Quellen der zitierten Statistiken ... 37  2.  Programmierung als Kern der Softwareentwicklung ... 39  2.1 ... Die Programmierung ... 39  2.2 ... Paradigmen der Softwareentwicklung ... 43  2.3 ... Objektorientierte Programmentwicklung ... 44  2.4 ... Programmiersprachen ... 66  2.5 ... Essenzielle Sprachmerkmale ... 76  2.6 ... Fazit und Ausblick ... 106  2.7 ... Literatur und Links ... 107  3.  Algorithmen und Datenstrukturen ... 109  3.1 ... Algorithmen als Kernelemente des Programms ... 110  3.2 ... Entwurf von Algorithmen ... 115  3.3 ... Sortieren und Suchen als Basisalgorithmen ... 128  3.4 ... Elementare Datenstrukturen ... 148  3.5 ... Zusammenfassung und Ausblick ... 170  3.6 ... Literatur und Links ... 172

TEIL II.  Der Softwarelebenszyklus ... 175  4.  Softwareprojekte professionell planen ... 177  4.1 ... Der Wasserfall ... 178  4.2 ... Iterative Entwicklung -- schrittweise zum Ziel ... 183  4.3 ... Das V-Modell -- eine Struktur hauptsächlich für Projekte der öffentlichen Hand ... 185  4.4 ... Bessere Risikobeherrschung durch das Spiralmodell ... 186  4.5 ... Agile Ansätze -- der Komplexität und Unsicherheit mit Flexibilität begegnen ... 187  4.6 ... Softwareentwicklung und die Schnittstellen zum Projektmanagement ... 199  4.7 ... Ist Agilität heute alternativlos? ... 207  4.8 ... Literatur und Links ... 209  5.  Die Anforderungsanalyse -- Startpunkt der Entwicklung ... 211  5.1 ... Überblick und Zielstellung ... 211  5.2 ... Ausgangssituation und Notwendigkeit ... 214  5.3 ... Anforderungen ermitteln ... 218  5.4 ... Klassische Anforderungsanalyse ... 237  5.5 ... Agile Anforderungsanalyse ... 248  5.6 ... Toolunterstützung ... 252  5.7 ... Fazit ... 256  5.8 ... Literatur und Links ... 256  6.  Der Entwurf des Softwaresystems ... 259  6.1 ... Die Softwarearchitektur als Basis für Erfolg und Wartbarkeit eines Softwaresystems ... 260  6.2 ... Architekturparadigmen ... 266  6.3 ... Entwurfsmuster als Baupläne ... 291  6.4 ... Entwurfsunterstützung durch grafische Modellierung ... 297  6.5 ... Weitere Entwurfsentscheidungen ... 301  6.6 ... Erfolgreiche Entwürfe mithilfe von Prototypen ... 304  6.7 ... Zusammenfassung und Fazit ... 312  6.8 ... Literatur und Links ... 313  7.  Die Implementierung schafft den Kern der Anwendung ... 315  7.1 ... Die Entwicklung der Benutzerschnittstelle ... 316  7.2 ... Die Businesslogik umsetzen ... 346  7.3 ... Die Datenwelt anbinden ... 348  7.4 ... Zusammenfassung und Fazit ... 351  7.5 ... Literatur und Links ... 351  8.  Testen als Voraussetzung für fehlerarme Software ... 353  8.1 ... Zur Notwendigkeit von Softwaretests ... 354  8.2 ... Testgetriebene Entwicklung ... 355  8.3 ... Ein Überblick über wichtige Testarten ... 357  8.4 ... Testmethoden ... 361  8.5 ... Testebenen ... 369  8.6 ... Technik des Testens ... 387  8.7 ... Fazit und Zusammenfassung ... 391  8.8 ... Literatur und Links ... 391  9.  Distribution -- das Produkt muss zum Kunden ... 393  9.1 ... Die Softwaredistribution im Überblick ... 394  9.2 ... Automatisierte Softwareverteilung ... 405  9.3 ... Verbesserte Zusammenarbeit durch DevOps ... 408  9.4 ... Die Nutzung der App Stores ... 411  9.5 ... Die Technik der Softwarebereitstellung ... 417  9.6 ... Fazit ... 437  9.7 ... Literatur und Links ... 437

10.  Vom Altsystem zur zeitgemäßen Anwendung ... 439  10.1 ... Technologien im Wandel ... 440  10.2 ... Notwendigkeit einer Softwaremigration ... 442  10.3 ... Ziele einer Softwaremigration ... 444  10.4 ... Planung der Migration ... 444  10.5 ... Migrationsstrategien ... 447  10.6 ... Arten der Migration ... 451  10.7 ... Wirtschaftlichkeitsbetrachtungen ... 453  10.8 ... Stolpersteine ... 454  10.9 ... Eine Fallstudie ... 455  10.10 ... Literatur und Links ... 473

TEIL III.  Technologien und Methoden ... 475

11.  Webtechnologien ... 477  11.1 ... Einführung ... 477  11.2 ... Zusammenspiel von HTML, CSS und JavaScript ... 478  11.3 ... Die Struktur einer Webseite mit HTML ... 480  11.4 ... HTML Basics ... 481  11.5 ... Das Layout und das Design einer Webseite mit CSS ... 487  11.6 ... Logik und Interaktion mit JavaScript ... 504  11.7 ... Klassenbibliotheken und Frameworks ... 519  11.8 ... Fazit ... 529  11.9 ... Literatur und Links ... 529

12.  Apps für mobile Systeme ... 531  12.1 ... Arten von Apps ... 533  12.2 ... Native Apps ... 535  12.3 ... Web-Apps ... 553  12.4 ... Hybride Apps ... 555  12.5 ... Plattformübergreifende Ansätze ... 557  12.6 ... Auswahlkriterien ... 571  12.7 ... Sensoren ... 577  12.8 ... Emulation und Simulation ... 584  12.9 ... Backend as Service ... 591  12.10 ... Fazit ... 599  12.11 ... Literatur und Links ... 599

13.  Plattform- und geräteübergreifende Entwicklung ... 601  13.1 ... Nutzerinnen und Nutzer im Fokus ... 602  13.2 ... Ansätze für die plattformübergreifende Entwicklung ... 604  13.3 ... Ein Beispiel mit RAD Studio ... 614  13.4 ... Fazit ... 617  13.5 ... Literatur und Links ... 618

14.  Parallelprogrammierung ... 619  14.1 ... Systemtechnische Ebene ... 620  14.2 ... Anwendungsebene ... 626  14.3 ... Programmiertechnische Ebene ... 634  14.4 ... Zusammenfassung ... 638  14.5 ... Literatur und Links ... 638

15.  Kundenzufriedenheit durch Nutzerorientierung ... 641  15.1 ... Die Nutzer im Fokus ... 644  15.2 ... Benutzerschnittstellen im Wandel ... 648  15.3 ... Gestaltung von Benutzeroberflächen ... 660  15.4 ... Literatur und Links ... 668

16.  Datensicherheit und Datenschutz ... 671  16.1 ... Begriffe und Angrenzungen ... 674  16.2 ... Überblick über die Datenschutz-Grundverordnung ... 676  16.3 ... Datenschutz und Cloud-Computing ... 679  16.4 ... Technischer Datenschutz ... 681  16.5 ... Fazit ... 697  16.6 ... Literatur und Links ... 697

17.  Grundlagen der Datenhaltung ... 699  17.1 ... Datenbank -- ein Ort, um Ordnung zu halten ... 699  17.2 ... Phasen der Datenbankentwicklung ... 708  17.3 ... Relationale Datenbanken ... 711  17.4 ... NoSQL-Datenbanken ... 726  17.5 ... Fazit und Ausblick ... 735  17.6 ... Literatur und Links ... 735

18.  Werkzeugunterstützung ... 737  18.1 ... Die Rolle von Werkzeugen ... 738  18.2 ... Integrierte Entwicklungsumgebungen als Multifunktionswerkzeuge ... 739  18.3 ... Versionsverwaltungen als Voraussetzung für eine erfolgreiche Entwicklung ... 744  18.4 ... Weitere Softwaretools für die Entwicklung ... 754  18.5 ... Fazit und Ausblick ... 758  18.6 ... Literatur und Links ... 759

19.  Qualitätssicherung und Clean Code Development ... 761  19.1 ... Das Verständnis von Softwarequalität ... 761  19.2 ... Ansätze zur Bestimmung der Softwarequalität ... 764  19.3 ... Softwarequalität zwischen Nutzen und Kosten ... 769  19.4 ... Qualität verbessern ... 771  19.5 ... Eine gesunde Fehlerkultur ... 786  19.6 ... Fazit und Zusammenfassung ... 793  19.7 ... Literatur und Links ... 793

TEIL IV.  Trends ... 795

20.  Enterprise Mobile Computing ... 797  20.1 ... Einsatzszenarien ... 798  20.2 ... Bring Your Own Device ... 807  20.3 ... Technische Aspekte für Enterprise Mobile Computing ... 817  20.4 ... Fazit und Ausblick ... 829  20.5 ... Literatur und Links ... 829

21.  Internet of Things ... 831  21.1 ... Stand heute und Zukunftsszenarien ... 832  21.2 ... IoT-Infrastruktur ... 841  21.3 ... Hardware auf kleinstem Raum ... 850  21.4 ... Fallbeispiel: Windows 10 auf dem Raspberry Pi ... 854  21.5 ... Fazit und Ausblick ... 866  21.6 ... Literatur und Links ... 867

22.  Cloud-Computing ... 869  22.1 ... Grundlagen des Cloud-Computings ... 870  22.2 ... Ökonomische Gesichtspunkte ... 876  22.3 ... Cloud-Computing als Werkzeug der Softwareentwicklung ... 881  22.4 ... Fazit ... 885  22.5 ... Literatur und Links ... 885  Index ... 887


1    Überblick


Der Beruf der Softwareentwicklerin bzw. 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 Kundinnen und 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. Alle diese Fähigkeiten, wie technische Kompetenz, Teamfähigkeit und Lösungsorientierung, kommen in diesem hochinteressanten Beruf zusammen, den wir Ihnen zu Beginn dieses Kapitels vorstellen. 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.

Für alle, die sich schon sicher sind, dass sie keine Tierärztin 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« bzw. »Softwareentwicklerin« klingt zunächst einmal spannend, und Sie werden sich vielleicht die folgenden Fragen stellen: Welche Aufgaben umfasst dieser Beruf? Stimmt das Klischee vom Nerd, der 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 oder -entwicklerin 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 die Berufsbezeichnung schon sagt: Die Hauptaufgabe dabei ist das Entwickeln und Erstellen von Software. Ist damit die Frage nach dem Berufsinhalt vollständig beantwortet? Nein! Der Beruf ist sehr vielfältig. Das Aufgabenspektrum hat sich in den letzten Jahren erheblich erweitert. Die Kernkompetenz kann man wie folgt umschreiben:

Softwareentwicklerinnen und Softwareentwickler analysieren, planen und implementieren auf professionelle Art und Weise informationstechnische Anwendungen und Softwarebausteine. Ebenso sind sie 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 Kundinnen und Kunden von der Anwendung? Welche Funktionen und welche Bedienoberfläche wünschen sich diejenigen, die die Anwendung künftig nutzen? Diese Fragen müssen wir uns, die wir entwickeln, stellen und sorgfältig beantworten. Dazu müssen wir mit unserer Kundschaft reden, ihr zuhören, weitere Fragen stellen und beobachten. Unser Beruf ist so gesehen mit einem Beruf in der Forschung zu vergleichen. Zufrieden sind Kundinnen und Kunden nur dann, wenn wir ihre 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 Programmerstellung, d. h. das Codieren in der jeweiligen Programmiersprache. Viel zu oft wird auch heute noch der Vorgang der Softwareentwicklung mit dem Teilschritt der Implementierung bzw. 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 ingenieurgemäßen 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 noch nicht ausruhen, denn das Projekt ist noch nicht zu Ende gebracht. Funktioniert alles so, wie es soll? Haben wir die Wünsche unserer 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 jeweiligen IT-Systeme integriert werden muss. Um das zu tun, müssen wir umfassend mit unserer Kundschaft zusammenarbeiten.

Unser Aufgabenspektrum ist also ziemlich breit! Natürlich kann man am Ende nicht in allen Bereichen Expertin oder 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 noch etwas genauer an und grenzen es auch in der einen oder anderen Richtung von verwandten Jobs in der IT ab.

1.1.1    Sind Softwareentwickler besondere Informatiker?


Fragen Sie Ihre Oma, was man in der Softwareentwicklung so tut, dann lautet die Antwort vermutlich in etwa: »Irgendwas mit Computern.« Das stimmt, ist aber leider sehr ungenau, denn es trifft auch auf eine ganze Reihe weiterer Berufe aus dem Bereich der Informatik zu. Wenn Sie sich mit dem Berufsbild beschäftigen möchten, gehört es auch dazu, sich die verwandten Berufe und Tätigkeiten anzusehen. Sie werden feststellen, dass es Überschneidungen gibt und die Abgrenzungen nicht immer eindeutig sind.

Um auf Oma zurückzukommen: Mit Computern arbeiten heute fast alle, auch der Sachbearbeiter bei der örtlichen Finanzverwaltung oder die Automechanikerin um die Ecke. In diesem Buch geht es jedoch darum, IT nicht nur als Hilfsmittel zu verwenden, sondern sie auch Anwendern bereitzustellen. In welchen Bereichen können Sie als IT-Spezialist heute arbeiten? Neben der Softwareentwicklung gibt es in verwandten Berufen etwas zu tun, wie etwa im Webdesign oder der Systemadministration. Klangvolle Berufsbezeichnungen in Stellenanzeigen zeugen vom Versuch, möglichst viele Interessierte 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 der IT-Spezialisten. – gewissermaßen der Überbegriff für Personen, die sich professionell mit der Informationsverarbeitung in Unternehmen beschäftigen. Diese Menschen können beispielsweise als Leiterin einer IT-Abteilung, als Entwickler oder als Systemadministratorin 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 und Konkretisierung der Aufgaben ergibt dann der Berufsalltag....


Krypczyk, Veikko
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.

Bochkor, Elena
Elena Bochkor hat Betriebswirtschaft mit dem Schwerpunkt Wirtschaftsinformatik studiert. Ihr Arbeitsschwerpunkt ist der Entwurf und das Design moderner und kundengerechter Benutzeroberflächen. Sie publiziert regelmäßig in Fachzeitschriften und spricht auf IT-Konferenzen.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.