31
© AIT GmbH & Co. KG Ihre Software effizienter entwickelt Gelebte Architektur und ALM in der Praxis

Gelebte Architektur und ALM in der Praxis...von der Management-Ebene bis zu technischen Details. Wir verwenden und arbeiten mit Source Control, Work Items, Collaboration Features,

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Gelebte Architektur und ALM

in der Praxis

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

9:00 Begrüßung und Einleitung, Erwartungshaltung

9:15 Build- und Dependency-Management mit dem TFS

11:00 Q&A

11:30 Anforderungen an moderne Software

12:00 Mittagspause

13:00 Demo: Analyse einer typischen Anwendung

14:30 Pause

14:45 Demo: Per Refactoring zur besseren Architektur

16:30 Zusammenfassung und Q&A

17:00 Ende

2

Agenda

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

„Moderne Software stellt oft hohe Anforderungen an Themen wie Modularität, Flexibilität und

Erweiterbarkeit. Häufig ändern sich Anforderungen während der Entwicklung oder ganz neue kommen

hinzu. Die spätere Anbindung von zusätzlichen Clients muss ebenso vorgesehen werden wie die

Möglichkeit, einzelne Komponenten der Software auszugliedern um sie beispielsweise in der Cloud zu

betreiben. Plötzlich werden Fragen zur getrennten Versionierung und separatem Deployment

aufgeworfen; eventuell werden einzelne Teile der Anwendung gar von unterschiedlichen Teams

bearbeitet, was ebenfalls in der Struktur berücksichtigt werden muss. Der Workshop zeigt verschiedene

Möglichkeiten, solche Aspekte durch eine robuste Architektur abzufedern. Es wird diskutiert, wie

Werkzeuge bei solchen Fragestellungen zusätzlich unterstützen können, und natürlich wie der Team

Foundation Server als zentrale Schaltstelle Teams und die gewählte Architektur bei der Entwicklung

unterstützt.“

3

Abstract

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Nach zwei Tagen ALM Days 2012 sind wir geschult in

Entwicklungsprozessen und den involvierten Werkzeugen,

von der Management-Ebene bis zu technischen Details.

Wir verwenden und arbeiten mit Source Control, Work Items,

Collaboration Features, Metriken, Reporting, Test-Tools, Build-

Prozessen und –Skripts.

Wir kennen alles von A wie Anforderungsmanagement bis Z wie

zünftiges Continuous Integration…

4

Zielsetzung des Workshops (1)

Wo ist eigentlich die Software?

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Rückbesinnung auf die Entwicklung

Was bedeutet ALM eigentlich für die Software-Entwicklung?

Warum werden Aspekte des ALM immer wichtiger für Software?

Was kann ich als Architekt und Entwickler tun, um meine Software fit zu machen für diese Anforderungen?

5

Zielsetzung des Workshops (2)

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Demo: Build- und Dependency-

Management mit TFS (Sven Hubert)

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 7

Team Project Folder Structure

NetFactory

NetFactory

Features

NetFactory Trending

NetFactory Reporting

Main

NetFactory

Releases

NetFactory 1.0

NetFactory 2.0

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 8

Branch Folder Structure

NetFactory

Libraries

Scripts

Sources

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 9

Branch Folder - Libraries

NetFactory

Libraries

Telerik.2.0.0.3455

lib

net35

net4

sl4

doc

SharpZipLib.2.6.0.0

lib

sl4-wp71

winrt45

sources

Scripts

Sources

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 10

Branch Folder - Scripts

NetFactory

Libraries

Scripts Build.bat Fast, parallel build without any checks ->create executables fast

Cleanup.bat Deletes all project specific build artifacts.

Rebuild.bat Runs a Clean before a Build.

GetLatest.bat Copies latest build result into local output folder

incremental builds.

Sources

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Release Branching - Basic

B

RI

B FI

RI

FI FI B

RI

Emergen

cy Hotfix

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Feature Branching

RI

RI

RI

FI FI B FI FI FI B

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Flexibilität

Neue fachliche Anforderungen

Unterstützung neuer Plattformen (Mobilgeräte, Webclients etc.)

Änderungen in der Architektur (z.B. Integration in die Cloud)

Dynamisierung von Anwendungen (z.B. durch Lizenzmodelle)

Wartbarkeit

Geänderte Anforderungen

Personalwechsel/Ressourcen-Shuffle im Team

Robustheit

Kapselung von Funktionalität (Komponenten)

Testbarkeit

Stabile Performance und Skalierbarkeit

13

Moderne Anforderungen (1)

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Getrieben werden diese Anforderungen oft

stark getrieben durch äußere Einflüsse, z.B.:

Kostenfaktor

Time to market

Konkurrenzfähigkeit

Kundenzufriedenheit

Usability

14

Moderne Anforderungen (2)

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Auswirkungen im Sinne von ALM:

Getrennte Versionierung von Komponenten

Dynamische Frameworks

(Plug-In-Architekturen u.ä.)

Paralleles Arbeiten mehrerer Teams

Veränderte Deploymentstrategien

15

Moderne Anforderungen (3)

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Auf den Punkt gebracht:

Software soll effizienter entwickelt werden:

Gleiche Qualität in kürzerer Zeit

Höhere Qualität in gleicher Zeit

Beides

16

Moderne Anforderungen (4)

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Klassische Modelle nutzen „Big Design Up Front“

Zeitraubend

Zu schwerfällig

Realität ist zu komplex

17

Problem:

www.integrativebiology.ac.uk/softarch.html

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Agile Methoden

Leichtgewichtig

Flexibel

18

Lösung(?): Änderung der Prozesse

Working Software

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Idee: Emergent Architecture

Probleme: Mangelhafte Umsetzung von Agilität („Hackerteams“),

fehlende Erfahrung, fehlendes Verständnis von Technologie, zu

großer Zeitdruck, …

Ergebnis:

19

Aber:

Wie funktioniert Architektur in agil?

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Agile Entwicklung entbindet nicht von der Beschäftigung mit Architektur und Design

Denken und Planen in Pattern bzw. aktives Beschäftigen mit Designprinzipien ist notwendig

Refactoring als Mittel der Wahl kann genutzt werden, um Emergent Architecture zu leben (Zeit einplanen!)

20

Postulat

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Demo: Analyse einer Anwendung

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

• Vermischung von Anwendungslogik und Datenzugriffschicht

• Vermischung fachlicher Logik und Anwendungslogik

• „Bleeding“ von Datenzugriffstechnologie bis in die Oberfläche

• Logisch zusammenhängende Teile auf die gesamte Anwendung verteilt

• Code-Duplication

• Austausch des Front-Ends (z.B. Windows Phone, Webclient) nicht möglich

• Testbarkeit extrem eingeschränkt (nur Integrationstests)

• Physikalische Aufteilung erschwert getrennte Versionierung von Komponenten

• Physikalische Aufteilung erschwert Einsatz von Werkzeugen (z.B. Architekturvalidierung)

22

Probleme der Beispielanwendung

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Konsequentes Nutzen bewährter Prinzipien objektorientierter Programmierung, insbesondere SOLID

Unterstützung durch passende Patterns, beispielsweise Dependency Injection, Specifications, Unit of Work/Repository

Nutzen der vorhandenen Werkzeuge: Architekturvalidierung, Statische Code-Analyse, Metriken usw.

23

Wie kann Abhilfe geschaffen

werden?

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 24

Zur Erinnerung: SOLID

O

S

L

I

D

Single Responsibility There should never be more than one reason for a class change.

Open/closed Principle A module should be open for extension but closed for modification.

Liskov Substitutability Principle Subclasses should be substitutable for their base classes.

Interface Segregation Principle Many client specific interfaces are better than on general purpose

interface.

Dependency Inversion Principle Depend upon Abstractions. Do not depend upon concretions

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Demo: Refactoring zum Guten

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Entkopplung und Kapselung von

Funktionalitäten

Modularisierung der Anwendung

Testbarkeit auf verschiedensten Ebenen

Deutliche Verbesserung der Flexibilität,

Robustheit und Wartungsfreundlichkeit

26

Ergebnisse

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 27

Offene Diskussion

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 28

Buchempfehlungen

Continuous Delivery: Reliable Software Releases Through Build, Test,

and Deployment Automation

Ein empfehlenswertes Buch für alle technischen Projektleiter sowie Release- und Build-Manager, die

Continuous Integration als erste Stufe hin zu ständigen kurzfristigen Releases gemeistert haben und

bereit für den nächsten Schritt sind. Es behandelt neben Configuration Management und

Deployment-Themen auch Test und Dependency Management. Auch die notwendigen Prozesse im

Projekt- und Risiko-Management werden angesprochen.

Inside the Microsoft Build Engine: Using MSBuild and Team

Foundation Build

Eine wahre Pflichtlektüre für Build-Administratoren und Entwickler, die mit dem eigentlichen Bau der

Software im Sinne des Build zu tun haben, ist dieses Buch. Es behandelt MSBuild als Basisplattform

für den Bau von .NET-Solutions sowie Team Foundation Build und die verwendete Workflow

Foundation. Auch die für .NET 4.0 neu aufgelegte zweite Edition enthält allein schon in der Einleitung

wichtige Tipps und Tricks. Weitere Infos dazu gibt es hier.

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt

Whitepaper: Unternehmensweite Build-Prozesse

Activity Development Tutorial

Simple Team Build Activity sample

Writing code activities

Thema Build im TFS Blog

Team Foundation Build Customization Guide

29

Weiterführende Links (1)

© AIT GmbH & Co. KG Ihre Software effizienter entwickelt 31

Kontakt

Sven Hubert

[email protected]

Peter Kuhn

[email protected]

AIT GmbH & Co. KG http://www.aitgmbh.de

http://www.tfsblog.de