SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
Legacy-Software-Refactoring
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING 1
WELCHE ZIELSETZUNGEN SIND FÜR EIN
ERFOLGREICHES REFACTORING-PROJEKT RELEVANT?
Erfolgreiches Software-Refactoring
2
Zielsetzung 1:
Den Quellcode
vereinfachen
 Übliche Softwareanwendungen steuern zwar keine SpaceX-
Raketen zum Mars, sind aber manchmal so aufgebaut, als ob sie
es tun würden. Da ein Entwickler manchmal zu viele
Abstraktionsebenen überarbeitet, um unmögliche Szenarien
auszuschließen und zahlreiche „Was wäre wenn“-Fälle zu
berücksichtigen, kann es schon vorkommen, dass man am Ende
über sein Ziel hinaus geschossen hat. Da die Lernkurve für eine
komplizierte Anwendung viel zu lang sein kann, wird eine
einfache Wartung wegen unnötigen Schichten, Wrapper,
Schnittstellen und tiefen Vererbungsketten praktisch unmöglich.
Keep it simple!
(function repeat () {
eat () ;
sleep () ;
code () ;
repeat () ;
}) () ;
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
Erfolgreiches Software-Refactoring
3
Zielsetzung 2:
Einsicht in den Quellcode
verbessern
 Undurchsichtiger Quellcode kann aus mehreren
Gründen entstehen: Alltagsstress des Entwicklers,
mangelnde Kommunikation der Projektteilnehmer, rasch
wechselnde Anforderungen. Was auch immer der Grund
sein kann, ist es in manchen Fällen nahezu unmöglich zu
verstehen, was im Quellcode vor sich geht und warum
dieser überhaupt noch funktioniert. Es sind weder
Kommentare, Diagramme noch Dokumentation
vorhanden. Niemand kann den Code ändern, ohne
dadurch die Anwendung außer Betrieb zu setzen.
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
Erfolgreiches Software-Refactoring
4
Zielsetzung 3:
Strukturelle Robustheit des
Quellcodes verstärken
 Viele Programmierer schreiben ihren Quellcode einfach
„herunter“, wodurch dieser instabil wird. Bei jeder Änderung, die
man später vornimmt, fühlt es sich an, als ob man ein
Kartenhaus berühren würde - es droht immer etwas
zusammenzubrechen. Im Gegenteil zur objektorientierten
Programmierung, können viele Legacy-Anwendungen nur dank
Quellcode-Kommentaren verstanden werden. Dies ist ein
typisches Problem besonders für Anwendungen mit komplexen
Abhängigkeiten und einer großen Anzahl an Schnittstellen.
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
Erfolgreiches Software-Refactoring
5
Zielsetzung 4:
Flexibilität des
Quellcodes verbessern
 Eine starre Quellcodebasis macht es schwer, neuen
Anforderungen gerecht zu werden. Die Entwicklung neuer
Funktionalitäten stellt komplexe Herausforderungen dar
und muss sorgfältig eingeplant werden. Kunden
beschweren sich über andauernde und kostspielige
Umsetzungen. Dies ist ein typisches Problem für
Anwendungen, die zu schnell gewachsen sind oder nur
auf bestimmte Anforderungen zugeschnitten wurden,
ohne das Gesamtbild zu berücksichtigen.
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
Erfolgreiches Software-Refactoring
6
Zielsetzung 5:
Leistung des
Quellcodes steigern
 Die Anwendung hat mit der Zeit mehr Benutzer
gewonnen, mehr Daten werden bearbeitet und mehr
Funktionen werden ausgerollt. Obwohl der Quellcode
anfangs akzeptabel funktionierte, wurde er in der
Zwischenzeit langsamer und muss wieder reanimiert
werden, bevor Kunden damit anfangen sich zu
beschweren. Dieser Nebeneffekt - übermäßige
Langsamkeit - kann mit der Zeit zu Recht auftreten
und als Fehler angesehen werden.
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
Erfolgreiches Software-Refactoring
7
Zielsetzung 6:
Quellcode-Testbarkeit
verbessern
 Ablaufverfolgungs- oder Fehlerprotokolle sind entweder nicht
verfügbar oder nicht detailliert und aussagekräftig genug, um
klare Einsichten zu bekommen, was nicht läuft. Wenn ein Kunde
bestimmte Fehler meldet, nimmt die Untersuchung sehr viel Zeit
in Anspruch und erfordert häufig die direkte Einbeziehung eines
Entwicklers. Ohne gutes QA-Management oder strukturierte
QA/Testing-Prozesse ist das Wiedergeben von Fehlern schwierig
und erfordert manchmal sogar die vollständige Replikation der
Kundenumgebung (Daten und Software) in einem lokalen
Netzwerk, um das Debugging aufzunehmen.
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
Erfolgreiches Software-Refactoring
8
Zielsetzung 7:
Deployment von Quellcode
automatisieren
 Jedes Mal, wenn neuer Quellcode bereitgestellt wird, sind
kleine Überraschungen nicht ausgeschlossen. Muss der
Entwickler für einen reibungslosen Ablauf eine Vielzahl
manueller Schritte verfolgen, oder ist zu viel Konfiguration
notwendig, dann sind diese bestimmten Personen
zuzuschreiben. Legacy-Software ist eher auf Vertrauen
anstatt von Effizienz aufgebaut, diese Praxis entspricht längst
nicht mehr modernen Tools und Services wie z.B. Docker,
Kubernetes, GitHub und Azure DevOps, die den Deployment-
Prozess um das Zehnfache beschleunigen können.
TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
Tel: 0231 586 99 717 E-Mail: info@technosoft.de
9STRUCTURAL ENGINEERING - NEARSHORE OUTSOURCING - QA & TESTING
Ihre Legacy-Software läuft träge? Geben Sie nicht auf!
Vertrauen Sie auf mehr als 40 Jahre Erfahrung in
Softwareentwicklung und Qualitätssicherung!
Wir freuen uns auf Ihren Anruf!

Weitere ähnliche Inhalte

Was ist angesagt?

DevOps Prinzipien im Zusammenspiel mit Kubernetes
DevOps Prinzipien im Zusammenspiel mit Kubernetes DevOps Prinzipien im Zusammenspiel mit Kubernetes
DevOps Prinzipien im Zusammenspiel mit Kubernetes QAware GmbH
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsMagento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsChristian Münch
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneVorname Nachname
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapStephan Kaps
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
Agile Bodensee - Introducing Continuous Delivery
Agile Bodensee - Introducing Continuous DeliveryAgile Bodensee - Introducing Continuous Delivery
Agile Bodensee - Introducing Continuous Deliverypingworks
 
Der Agile Qualitätsbaukasten - PHP Unconference 2014
Der Agile Qualitätsbaukasten - PHP Unconference 2014Der Agile Qualitätsbaukasten - PHP Unconference 2014
Der Agile Qualitätsbaukasten - PHP Unconference 2014WebcsonsultsEU
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Timo Stollenwerk
 
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...Nico Orschel
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinStephan Kaps
 
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...Marc Müller
 
Objektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBObjektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBMinerva SoftCare GmbH
 
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesContinuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesTobias Schneck
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3Ralf Eggert
 
Quarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native WeltQuarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native WeltMichael Frembs
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sQAware GmbH
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 

Was ist angesagt? (20)

DevOps Prinzipien im Zusammenspiel mit Kubernetes
DevOps Prinzipien im Zusammenspiel mit Kubernetes DevOps Prinzipien im Zusammenspiel mit Kubernetes
DevOps Prinzipien im Zusammenspiel mit Kubernetes
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsMagento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der Schiene
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment Roadmap
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Agile Bodensee - Introducing Continuous Delivery
Agile Bodensee - Introducing Continuous DeliveryAgile Bodensee - Introducing Continuous Delivery
Agile Bodensee - Introducing Continuous Delivery
 
Der Agile Qualitätsbaukasten - PHP Unconference 2014
Der Agile Qualitätsbaukasten - PHP Unconference 2014Der Agile Qualitätsbaukasten - PHP Unconference 2014
Der Agile Qualitätsbaukasten - PHP Unconference 2014
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
 
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes sein
 
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
 
Objektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBObjektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWB
 
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesContinuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3
 
Quarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native WeltQuarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native Welt
 
Development in der Cloud-Ära
Development in der Cloud-ÄraDevelopment in der Cloud-Ära
Development in der Cloud-Ära
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 

Ähnlich wie Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring-Projekt

Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudAarno Aukia
 
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Virtual Forge
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdataHenning Blohm
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
Microservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenMicroservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenJan Thielscher
 
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DNUG e.V.
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Niels de Bruijn
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performanceglembotzky
 
Migration von Applikationen in die Cloud
Migration von Applikationen in die CloudMigration von Applikationen in die Cloud
Migration von Applikationen in die CloudAarno Aukia
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalQAware GmbH
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkinsinovex GmbH
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der PraxisMichael Mirold
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 

Ähnlich wie Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring-Projekt (20)

Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
 
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Microservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenMicroservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen sollten
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
 
Vagrant
VagrantVagrant
Vagrant
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performance
 
Migration von Applikationen in die Cloud
Migration von Applikationen in die CloudMigration von Applikationen in die Cloud
Migration von Applikationen in die Cloud
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue Normal
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkins
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der Praxis
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 

Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring-Projekt

  • 1. Legacy-Software-Refactoring TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING 1 WELCHE ZIELSETZUNGEN SIND FÜR EIN ERFOLGREICHES REFACTORING-PROJEKT RELEVANT?
  • 2. Erfolgreiches Software-Refactoring 2 Zielsetzung 1: Den Quellcode vereinfachen  Übliche Softwareanwendungen steuern zwar keine SpaceX- Raketen zum Mars, sind aber manchmal so aufgebaut, als ob sie es tun würden. Da ein Entwickler manchmal zu viele Abstraktionsebenen überarbeitet, um unmögliche Szenarien auszuschließen und zahlreiche „Was wäre wenn“-Fälle zu berücksichtigen, kann es schon vorkommen, dass man am Ende über sein Ziel hinaus geschossen hat. Da die Lernkurve für eine komplizierte Anwendung viel zu lang sein kann, wird eine einfache Wartung wegen unnötigen Schichten, Wrapper, Schnittstellen und tiefen Vererbungsketten praktisch unmöglich. Keep it simple! (function repeat () { eat () ; sleep () ; code () ; repeat () ; }) () ; TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
  • 3. Erfolgreiches Software-Refactoring 3 Zielsetzung 2: Einsicht in den Quellcode verbessern  Undurchsichtiger Quellcode kann aus mehreren Gründen entstehen: Alltagsstress des Entwicklers, mangelnde Kommunikation der Projektteilnehmer, rasch wechselnde Anforderungen. Was auch immer der Grund sein kann, ist es in manchen Fällen nahezu unmöglich zu verstehen, was im Quellcode vor sich geht und warum dieser überhaupt noch funktioniert. Es sind weder Kommentare, Diagramme noch Dokumentation vorhanden. Niemand kann den Code ändern, ohne dadurch die Anwendung außer Betrieb zu setzen. TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
  • 4. Erfolgreiches Software-Refactoring 4 Zielsetzung 3: Strukturelle Robustheit des Quellcodes verstärken  Viele Programmierer schreiben ihren Quellcode einfach „herunter“, wodurch dieser instabil wird. Bei jeder Änderung, die man später vornimmt, fühlt es sich an, als ob man ein Kartenhaus berühren würde - es droht immer etwas zusammenzubrechen. Im Gegenteil zur objektorientierten Programmierung, können viele Legacy-Anwendungen nur dank Quellcode-Kommentaren verstanden werden. Dies ist ein typisches Problem besonders für Anwendungen mit komplexen Abhängigkeiten und einer großen Anzahl an Schnittstellen. TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
  • 5. Erfolgreiches Software-Refactoring 5 Zielsetzung 4: Flexibilität des Quellcodes verbessern  Eine starre Quellcodebasis macht es schwer, neuen Anforderungen gerecht zu werden. Die Entwicklung neuer Funktionalitäten stellt komplexe Herausforderungen dar und muss sorgfältig eingeplant werden. Kunden beschweren sich über andauernde und kostspielige Umsetzungen. Dies ist ein typisches Problem für Anwendungen, die zu schnell gewachsen sind oder nur auf bestimmte Anforderungen zugeschnitten wurden, ohne das Gesamtbild zu berücksichtigen. TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
  • 6. Erfolgreiches Software-Refactoring 6 Zielsetzung 5: Leistung des Quellcodes steigern  Die Anwendung hat mit der Zeit mehr Benutzer gewonnen, mehr Daten werden bearbeitet und mehr Funktionen werden ausgerollt. Obwohl der Quellcode anfangs akzeptabel funktionierte, wurde er in der Zwischenzeit langsamer und muss wieder reanimiert werden, bevor Kunden damit anfangen sich zu beschweren. Dieser Nebeneffekt - übermäßige Langsamkeit - kann mit der Zeit zu Recht auftreten und als Fehler angesehen werden. TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
  • 7. Erfolgreiches Software-Refactoring 7 Zielsetzung 6: Quellcode-Testbarkeit verbessern  Ablaufverfolgungs- oder Fehlerprotokolle sind entweder nicht verfügbar oder nicht detailliert und aussagekräftig genug, um klare Einsichten zu bekommen, was nicht läuft. Wenn ein Kunde bestimmte Fehler meldet, nimmt die Untersuchung sehr viel Zeit in Anspruch und erfordert häufig die direkte Einbeziehung eines Entwicklers. Ohne gutes QA-Management oder strukturierte QA/Testing-Prozesse ist das Wiedergeben von Fehlern schwierig und erfordert manchmal sogar die vollständige Replikation der Kundenumgebung (Daten und Software) in einem lokalen Netzwerk, um das Debugging aufzunehmen. TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
  • 8. Erfolgreiches Software-Refactoring 8 Zielsetzung 7: Deployment von Quellcode automatisieren  Jedes Mal, wenn neuer Quellcode bereitgestellt wird, sind kleine Überraschungen nicht ausgeschlossen. Muss der Entwickler für einen reibungslosen Ablauf eine Vielzahl manueller Schritte verfolgen, oder ist zu viel Konfiguration notwendig, dann sind diese bestimmten Personen zuzuschreiben. Legacy-Software ist eher auf Vertrauen anstatt von Effizienz aufgebaut, diese Praxis entspricht längst nicht mehr modernen Tools und Services wie z.B. Docker, Kubernetes, GitHub und Azure DevOps, die den Deployment- Prozess um das Zehnfache beschleunigen können. TECHNOSOFT SOFTWARE DEVELOPMENT - NEARSHORE OUTSOURCING - QA & TESTING
  • 9. Tel: 0231 586 99 717 E-Mail: info@technosoft.de 9STRUCTURAL ENGINEERING - NEARSHORE OUTSOURCING - QA & TESTING Ihre Legacy-Software läuft träge? Geben Sie nicht auf! Vertrauen Sie auf mehr als 40 Jahre Erfahrung in Softwareentwicklung und Qualitätssicherung! Wir freuen uns auf Ihren Anruf!