Klaus Rohe [email protected] Microsoft Deutschland GmbH.

63
Prinzipien für die erfolgreiche Applikationsentwickl ung Klaus Rohe [email protected] Microsoft Deutschland GmbH

Transcript of Klaus Rohe [email protected] Microsoft Deutschland GmbH.

Page 1: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Prinzipien für die erfolgreiche Applikationsentwicklung

Klaus [email protected] Deutschland GmbH

Page 2: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Ziel der Präsentation

Darstellung von praktischen Prinzipien, die sich bei der Entwicklung von Softwaresystemen bewährt haben.

Die Prinzipien selbst sind unabhängig von der Technologie

Beispiele, wie man diese Prinzipien auf der Microsoft Plattform umsetzen kann.Kein Anspruch auf Vollständigkeit!Erfolgreiche Applikationsentwicklung:

Zeit- und Kostenrahmen eingehaltenAnforderungen werden erfüllt

Page 3: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 4: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Benutzer wissen häufig nicht genau was sie haben wollen (1)

Problem: Endbenutzer (Kunden) haben meist nur eine grobe Vorstellung, was das neue Softwaresystem leisten soll.

Meistens keine genauen Vorstellung über die DetailsKeine Experten für Anforderungsdokumente

Anforderungsdokument: Formale Beschreibung der Systemanforderung bis auf die DetailebeneWer erstellt es?

Page 5: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Benutzer wissen häufig nicht genau was sie haben wollen (2)

Man kann von den Kunden ein detailliertes Anforderungsdokument verlangen, aber:

Anforderungsdokument wird auf Biegen und Brechen fertig gestelltEnthält eventuell irrelevante Anforderungen, nur um ein finales, detailliertes Dokument abzuliefern

Schlechte Strategie: Penetrant darauf bestehen, dass mit der Softwareentwicklung erst nach der Freigabe des Anforderungsdokuments begonnen werden kann.

Page 6: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Iterativer Prozess zur Anforderungsermittlung

High-LevelAnforderunge

n

Mock-updes UIs bauen

Mock-upmit

Endbenutzer evaluieren

Anforderungen

verfeinern

Mock-up: rudimentärer (Wegwerfprototyp) der

Benutzeroberfläche

Page 7: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Schnell einen Prototypen liefern

Anforderungen durch Rapid Prototyping präzisieren =>

Möglichst früh mit einem Prototypen herauskommen

Anhand des Prototypen sind die Kunden besser in der Lage, Anforderungen weiter zu detaillieren.Kunden sind die besten Tester!!Mit dem Kunden zusammen den Prototypen testen.Funktionierender Code schafft vertrauen!

Page 8: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Schnell einen Prototypen liefernUmfang des Prototypen

BenutzeroberflächeKritischer Durchstich

Visual Studio hat die Tools zum rapid Prototyping von grafischen Benutzeroberflächen:

Windows Presentation FoundationWindows Forms Office (Word, Excel, Outlook) als Basis-GUIASP.NET Webforms und WebPartsMashups mit PopFly

Page 9: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

PowerShell für PrototypenDie Microsoft Windows PowerShell ist ein Scripting-Werkzeug für Windows XP, Vista, Windows Server 2003 und 2008Basiert auf .NET 2.0

.NET 3.X Klassenbibliotheken können genutzt werden.

PowerShell kann für Prototyping genutzt werden

Kein Kompilieren notwendigKomplette .NET (2.0 – 3.x) Klassenbibliothek verfügbar

Page 10: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 11: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Das Rad nicht neu erfinden

Häufige Gegenargumente:Die Anforderungen an die zu entwickelnde Applikation sind einzigartig!„Wir haben nicht genug Zeit bzw. Geld zum recherchieren, ob es schon Komponenten bzw. Produkte gibt, welche uns die Arbeit erleichtern.“„Wir haben keine Zeit uns in die Nutzung existierender Komponenten einzuarbeiten“Aber es ist genug Zeit und Geld da, um etwas komplett neu zu entwickeln, zu testen usw.!!

Page 12: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Kaufen oder neu Entwickeln?Microsoft Dynamics CRM 4.0?Microsoft Dynamics Axapta?Office Business Applications (OBA) in Betracht ziehen

Nutzung der Office Programme Word, Excel als Basis-Clients, applikationsspezifische Erweiterung mit selbstentwickelten .NET KomponentenWelchen Mehrwert kann Microsoft Office Sharepoint Server 2007 für die geplante Applikation bringen?

Page 13: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Beispiele für „neu erfundene Räder“

Entwicklung von Infrastrukturfunktionen, die schon durch Middleware bzw. Betriebssystem bereitgestellt wird.Entwicklung von Klassenbibliotheken und Werkzeugen, die allgemeine Querschnittsfunktionalitäten betreffen:

WorkflowDatenzugriff, CachingLogging, Instrumentierung, Exception handling

Page 14: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Kosten „neu erfundener Räder“

Studien haben ergeben, das Programmierer 40 – 50 % ihrer Zeit damit verbringen, Code zu produzieren, den es schon gibt!

http://spectrum.ieee.org/sep05/1685Folgen:

Wiederholung von FehlernDesign & EntwurfImplementierung

Ressourcenverschwendung

Erzeugter Mehrwert

Page 15: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Was ist der Mehrwert der Applikation?Separation of Concerns

Eigentliche Applikationslogik

oderKernfunktionalität

(Mehrwert für den Kunden!)

“Middleware”

Web ServerService Host

Integration BrokerMessage BrokerService Broker

Querschnitts-funktionalitäten

Workflow

Datenzugriff

Exception Handling

Logging

Instrumentierung

Caching

Sicherheit

Kommunikation

Page 16: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Auf der Microsoft Windows Plattform

Workflow Foundation

EnterpriseLibrary

Eigentliche Applikationslogik

oderKernfunktionalität

(Mehrwert für den Kunden!)

“Middleware”

InternetInformationService (IIS)

BizTalk Server …

Querschnitts-funktionalitäten

Workflow

Datenzugriff

Exception Handling

Logging

Instrumentierung

Caching

Sicherheit

Kommunikation WCF

Page 17: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

IIS 7.0 als skalierbarer Server für WCF Services

Hosten von WCF ServicesServer selber implementieren?IIS als Server nutzen?

IIS 7.0 hat viele neue Funktionen für WCF

Windows Process Activation ServiceUnterstützung aller WCF-Transportprotokolle:

Http, Tcp, Named pipes,MSMQ

Management, Health Monitoring, …

Architektur des IIS 7.0

Page 18: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Windows Workflow FoundationWerkzeugkasten für

SoftwareentwicklerDie Workflow Foundation (WF) vereinfacht:

Implementierung langlaufender & wiederanlauffähiger Komponenten Monitoring und Tracking von KomponentenGrafische Komposition aus bestehenden Services / AktivitätenImplementierung von GeschäftsregelnImplementierung von flexiblen leichter änderbaren Komponenten

Was WF nicht ist:Server-Produkt, vergleichbar oder Ersatz für BizTalk

WindowsWorkflow

Foundation

Runtime Engine

Runtime Services

Base Activity Library

Custom Activity Library

Visual Designer(Visual Studio 2005 / 2008)

Ein Workflow

Page 19: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

BizTalk als Integration-, Message- und Service- Broker Skalierbarer Integration-Broker & Workflow Engine =>

BizTalk Server 2006:Workflow zwischen Applikationen“If you are integrating multiple applications with some interaction that involves system workflow you should use BizTalk Server”“If you want runtime scalability, fault tolerance and administration tools you should use BizTalk Server”

Nicht „BizTalk“ mit der Windows Workflow Foundation neu implementieren!

BizTalk Server

Messaging

Design

Tools

BAMand

Admin

Tools

Orchestration

Transformation

Adapters

Workflow

Page 20: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Enterprise Library für Querschnittsfunktionen

Caching

Security

Data Access

Logging

ExceptionHandling

Plug-inConfig

Helpers & Design

Instrumen-tation

ObjectBuilder

Cryptography

Core

Policy InjectionValidation

Page 21: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Herausforderung von Multi-Core CPUsApplikationen mit herkömmlichen

Methoden entwickeln, die Multi-Core CPUs ausnutzen, ist sehr schwer und fehlerträchtig:

Multi-Threading, Locking, Testen, …Neue Werkzeuge für die Programmierung multi-core fähiger Applikationen:

Parallel Extensions for .NET 3.5CTP Download: http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&displaylang=en

Page 22: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

TPL Beispiel// Ohne TPL

void SeqMatrixMult(int size, double[,] m1, double[,] m2, double[,] result) { for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { result[i, j] = 0; for (int k = 0; k < size; k++) { result[i, j] += m1[i, k] * m2[k, j]; } } }}

// Mit TPLusing System.Concurrency;

void ParMatrixMult(int size, double[,] m1, double[,] m2, double[,] result){ Parallel.For( 0, size, delegate(int i) { for (int j = 0; j < size; j++) { result[i, j] = 0; for (int k = 0; k < size; k++) { result[i, j] += m1[i, k] * m2[k, j]; } } });}

Page 23: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Software + ServicesDer Trend geht dahin, bestimmte Softwarefunktionen als (Web-) Service zur Verfügung zu stellen. Beispiele:

Microsoft Life Services, MapPoint & Virtual Earth, Amazon Web-Services, …http://msdn2.microsoft.com/en-us/architecture/aa699384.aspx

Kann die Applikationsentwicklung mit Hilfe solcher Services vereinfacht werden?

Benutzerschnittstelle(Smart Client, Browser, Mobil, …)

Workflows Komponenten

Service Schnittstellen

Datenzugriffs-

logik

Service-Agent

Daten InterneServices

(ERP, CRM, …)Extern

eService

s

Page 24: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 25: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Bewährte Lösungsansätze nutzen („Best Practices“)

Dies ist eine Ergänzung zum vorher behandelten PrinzipRecherchieren, wie andere ähnliche Applikationen implementiert haben:

Welche Architektur?Welche Muster?Was sollte man auf keinen Fall machen?….

User Groups, Spezielle Web-Sites, Literatur, …

Page 26: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Microsoft Patterns & PracticesAnleitungen, Empfehlungen und

Source-Code für die Unterstützung der Entwicklung unterschiedlichster Applikationsszenarien auf der Microsoft Windows Plattform mit .NET:

ArchitekturKodierung, TestVerteilung & Betrieb

„Best Practices“ aus Microsoft internen und Partner Projekten http://msdn2.microsoft.com/en-us/practices/default.aspx

Page 27: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

CodePlexCodePlex ist eine von Microsoft betriebene Web-Site: http://www.codeplex.com/ Unterstützt die Entwicklung von Open Source Projekten im .NET Umfeld:

WikisSource Code Kontrolle auf der Basis des Team Foundation ServersDiskussionforenProjekt- und ProbelmverfolgungRSS Unterstützung

Enterprise Libraryhttp://www.codeplex.com/entlib

Composite UI Application Blockhttp://www.codeplex.com/smartclient/Wiki/View.aspx?title=Composite%20UI%20Application%20Block

Page 28: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Weitere Web-SitesThe Code Project: http://www.codeproject.com/

Enthält Programme, Implementierung von Algorithmen und Beschreibungen von Lösungen aus den Bereichen .NET, SQL Server, BizTalk, …Newsletter

Source Forge: http://sourceforge.netViele Open Source Projekte aus dem .NET BereichBeispiel: MyGeneration http://sourceforge.net/projects/mygeneration MyGeneration ist ein Code-Generator (C#, VB.NET) für den Datenbankzugriff und OR-Mapper, der die folgenden Datenbanken unterstützt:

Microsoft SQL Server, AccessOracle, IBM DB2PostgreSQL, MySQL, ….

Page 29: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Composite UI Application Block (CAB)

CAB ist ein Framework zur Entwicklung von Clients mit Windows Forms und WPFUrsprünglich Entwickelt von der Patterns & Practice Gruppe, jetzt auf CodePlex

http://www.codeplex.com/smartclient/Wiki/View.aspx?title=Composite%20UI%20Application%20Block

Das CAB Entwicklungsmodell basiert Use Cases, genannt „WorkItems“ und Patterns

Lose Kopplung zwischen den Use CasesKommunikation über einen EventbrokerFaktorisierung Querschnittsfunktionen in CAB interne Service

Page 30: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Architektur und Funktion von CAB

Shell

ModuleCatalog

Module

UI Extension SiteView

UI Extension SiteView

Element

Element

Root Work Item

Work ItemShared State

Shared Events

Page 31: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

• Support Account Management• Application Developer Consultant (ADC)

als direkter Ansprechpartner• Service und Ressource Management

• Proactive Services• Technologieberatung• Design- , Code- und Architektur Review• Kundenspezifische Workshops• Troubleshooting, Debugging und Profiling

• Reactive Problem Resolution Services• Priorisierter Problemlösungssupport für

alle Microsoft Produkte (24x7x356)• Emergency OnSite Support

• Information Services• Gesicherte Web-Site für Premierkunden• Partner Level Knowledge Base• Product Flashes & Critical Alerts

31

PSfD

Premier Support for Developer (PSfD)

PSfD Mission:Proactive and reaktive services to:

• Accelerate your time to market

• Mitigate development risk • Increase your teams’

productivity • Provide clear evidence to your

marketplace

Envision

Plan

Develop

Stabilize

Deploy

Page 32: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 33: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Zukunft ist nicht vorhersehbar

Zuverlässige Kristallkugeln sind sehr rar!!Einplanung von Änderungen an der Infrastruktur

Änderung der physischen Konfiguration, Verteilung und Deployment der Anwendung

Einplanung von Änderungen der Funktionalität

Neue Funktionalität einbauenNeue Datenbanken integrierenIntegration mit anderen Anwendungen

Fazit: Anwendung möglichst änderungsfreundlich / flexibel bauen!

?Blick in die Kristallkugel

Page 34: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Flexible Architektur durch WCF3-Schichten-Architektur auf der Basis von WCF

Änderung der Konfiguration ist einfach!!

Client PC

WCF Client

config

WCF Services

config

DB

Server

TCP / HTTP

Laptop für Außendienst

WCF Services

config

DB

WCF Client

config Named-Pipes

Applikation oder Teile davon müssen offline-fähig gemacht werden

Page 35: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Flexible Komponenten mit der Windows Workflow Foundation (WF)

Mit WF kann man Komponenten entwickeln, deren Verhalten sich ohne Kompilation anpassen lässt.Logische Struktur (xoml-Datei) des Workflows und Code der Aktivitäten sind getrennt!

<

Aktivität1

Aktivität2

Aktivität4

Aktivität3

IfElse-Aktivitä

t

MyWorkflow (logische Struktur)

MyWorkflow.xoml

(Beschreibt dielogische

Struktur)

Workflow-Editor

Anpassen des Workflows

durch editieren der xoml-Datei

.NET Assembly

Custom Activities

Class Aktivität1Class Aktivität2Class Aktivität3Class Aktivität4

.NET Assembly

Base Activities

Code

Page 36: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Flexible Architektur mit CAB, WCF, …

Datenbankunabhängigkeit

ORADBLayer

Oracle

SQLDBLayer

SQLServer

Data Layer Interface (DLI)

XYDBLayer

XYDB

Geschäftslogik

WEB UI (IIS) WCF Services (IIS)

Web-ClientSilverlight

/ AJAX

Smart PartSmart Part

CAB

EL

Service Agent mit lokalem Cache

WCF (SOAP)

HTTP

Gesch

äftse

ntitä

ten

Auth

entica

tion

, Auth

orisa

tion, Lo

ggin

g, …

(EL)

SmartClient

Page 37: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 38: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Services unabhängig halten (1)

Services stellen definierte Funktionalitäten zur Verfügung.Services, welche von zu vielen Komponenten ab hängen, erhöhen die Gefahr von impliziten Kopplungen zwischen ServicesServices, die andere Services nutzen, sollten dies über die offizielle Service-Schnittstelle tun nicht auf Implementierungsdetails nutzen.

The Four Tenets of Service Orientation:

Boundaries Are ExplicitServices Are AutonomousServices share Schema and ContractsCompatibility Is Policy-Based

Page 39: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Services unabhängig halten (2)

In WCF kann ein Service über verschiedene Transportprotokolle aufgerufen werden.

Z. B. NamedPipes für Service - Service Kommunikation, wenn sie auf dem gleichen Rechner sind

WCF-Service

Schnittstelle

Implementierung

SOAP HTTP

RESTSOAP TCP

SOAP NamedPipe

Page 40: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 41: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Trau den Clients nicht (1)Speziell bei Web-Applikationen muss man mit böswilligen Attacken rechnen:

SQL- und Skript-InjectionEingabe von Suchkriterien, welche die Datenbank übermäßig belasten

Grundsätzlich sollte man untersuchen, ob Eingaben von Clients Schaden anrichten können:

Steuerungs- und Kontrollsysteme, Medizintechnik, usw.

Plausibilitätsprüfung der eingegeben Daten!Syntaktisch korrekt (Datumsformat, Email-Adresse, …)Semantisch korrekt, im einfachsten Fall Bereichsprüfung, …

Page 42: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Trau den Clients nicht (2)

Unterstützung zur Lösung bietet der „Validation Application Block“ der Enterprise Library:

Validierung mit Attributen, Konfiguration und RegelnIntegration mit Windows Form, ASP.NET, und WCF

[StringLengthValidator(1, 50, Ruleset="RuleSetA", MessageTemplate="Last Name must be 1-50 characters")]public string LastName{ get { return lastName; } set { lastName = value; }}

[RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", MessageTemplate="Invalid e-mail address", Ruleset="RuleSetA")]public string Email{ get { return email; } set { email = value; }}

[ObjectValidator("RuleSetA", Ruleset="RuleSetA")]public Address Address{ get { return address; } set { address = value; }}

Page 43: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Keine PlausibilitätsprüfungNASA Verlust des Mars Climate

OrbiterFinale Bahnkorrektur der NASA Sonde Mars Climate Orbiter falsch:

Einheiten der Datenbasis waren Imperial Units und nicht metrische, wie von der NASA gefordert. (Faktor 4,5 zu groß)Relativ einfache Plausibilitätsberechnung hätte die Fehler aufgedeckt.

Folge: Totalverlust der Sonde, ca. 83 Millionen USD schaden

ftp://ftp.hq.nasa.gov/pub/pao/reports/1999/MCO_report.pdf

Page 44: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 45: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Das Unsichtbare sichtbar machen

Überwachung der Applikation während des Betriebs

Anforderungen des Betriebs (Operating): Laufzeitdiagnose von Anwendungen

=> Instrumentierung der Anwendung=> „Health-Model“ für die Anwendung entwickeln

Instrumentierung mit Windows Management Instrumentation (WMI)

Unterstützung durch das .NET Framework und Visual StudioWMI basiert auf dem Standard Web Based Enterprise Management (WBEM)

Page 46: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 47: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Alles protokollieren (1)Logging ist nützlich:

Bei der Fehlersuche in Verteilten Applikationen, während Entwicklung und BetriebErstellen von NutzungsprofilenAus Gründen der SicherheitDatenschutzrichtlinien beim Logging beachten!

Wenn möglich Logging im Produktionsbetrieb nicht abschaltenServer wie SQL Server und BizTalk bieten eingebaute Logging-Funktionalität.

Page 48: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Alles protokollieren (2)Logging für .NET Applikationen:

„Logging Application Block“ der Enterprise LibraryApache Log4net, Portierung von log4j auf Microsoft .NET

http://logging.apache.org/log4net/

Page 49: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 50: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Daten kennen

Business Entitities sind in allen Schichten verfügbarAbbildung der Unternehmensdaten auf Business Entities BizTalk zur Integration?

Gesch

äftse

ntitä

ten

(Busin

ess E

ntitie

s)

Benutzerschnittstelle(Smart Client, Browser, Mobil, …)

Workflows Komponenten

Service Schnittstellen

Datenzugriffs-logik

Service-Agent

DatenInterne

Services(ERP, CRM, …)

ExterneServices

Quers

chnit

tsfu

nkt

ionen

Page 51: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 52: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Grenzen des System kennenDer Integrationstest zeigt, dass

die einzelnen Teile und Komponenten des Systems zusammen funktionieren. Keine Aussage über:a) Wie verhält sich das System bei

einer großem Anzahl von Benutzern?

b) Wie verhält sich das System, wenn die Datenbank große Datenmengen enthält?

c) Was passiert wenn a) und b) geleichzeitig auftreten?

Die Antworten liefern Lasttests!

Page 53: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Lasttests mit Visual Studio Team SystemVisual Studio Team System bietet eine

reihe Lasttestszenarien für Web-Applikationen:

Constant Load Profile: konstante Anzahl ClientsStep Load Profile: Anzahl der Clients wird schrittweise und definierten Zeitintervallen erhöhtGoal-based Profile: Last wir solange erhöht, bis eine Ressource einen kritischen Wert erreicht

Für WCF: http://www.codeplex.com/WCFLoadTest

Page 54: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Die Prinzipien

„Die Benutzer wissen häufig nicht genau was sie haben wollen“Schnell einen Prototypen liefernDas Rad nicht neu erfindenBewährte Lösungsansätze nutzen („Best Practices“)Die Zukunft ist nicht vorhersehbarServices unabhängig halten

Trau den Clients nichtDas Unsichtbare sichtbar machenAlles protokollierenDie Daten kennenDie Grenzen des Systems kennenNicht am Erfolg scheitern

Page 55: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Nicht am Erfolg scheiternManchmal leben Applikationen länger als erwartet oder werden in größerem Umfang genutzt als geplant:

Applikation so entwerfen, dass sie skalierbar und flexibel ist.Beispiel aus der Microsoft-Welt:

Access-Applikationen, häufig als Einzelplatzanwendung konzipiert, werden aber von ganzer Abteilung genutzt.

Fazit: Besser gleich mit einer .NET-Applikation starten, deren Architektur entsprechende Erweiterungen erlaubt. (WCF drei Schichten …)

Page 56: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

ZusammenfassungEs wurden einige Prinzipien aufgezeigt, die beachten sollte, wenn man Softwareprojekte erfolgreich durchführen will.Die Abbildung dieser Prinzipien auf Microsoft Technologien wurde dargestelltDie dargestellten Prinzipien waren technologischer Natur.Softwareprojekte scheitern aber nicht nur an der Technik, dies soll zum Abschluss kurz dargestellt werden.

Page 57: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Gründe für das Scheitern von Softwareprojekten

Unrealistische ProjektzieleFalsche oder ungenaue Ermittlung der benötigten RessourcenSchlecht definierte SystemanforderungenFehlendes RisikomanagementSchlechtes ProjektmanagementUnzureichende Kommunikation zwischen Entwicklern, Kunden und EndbenutzernNutzung nicht ausgereifter TechnologienSchlampige EntwicklungspraxisWirtschaftlicher Druck und politische Spielchen

Page 58: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Microsoft Ressourcen für ArchitektenArchitecture Guidance Documents

http://www.microsoft.com/practices

The Architecture JournalErscheint 4 mal pro Jahr, Themen aus dem Bereichen IT-ArchitekturAutoren:

Unabhängige Anwender von Microsoft TechnologienMicrosoft Mitarbeiter

Registrieren unter: www.ArchitectureJournal.net

Page 59: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Ressourcen für Entwickler und Architekten

Microsoft Patterns & Practiceshttp://msdn2.microsoft.com/en-us/practices/default.aspx

Softwarearchitekturhttp://msdn2.microsoft.com/en-us/architecture/default.aspx

CodePlexhttp://www.codeplex.com/

Page 60: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Weitere Informationen (1)

Ronald MakThe Martian Principles for Successful

Enterprise Systems, 20 Lessons Learned from NASA‘s Mars Exploration Rover Mission

Indianapolis 2006ISBN-10: 0-471-78965-8ISBN-13: 978-0-471-78965-9

Page 61: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

Weitere Informationen (2)Why Software Fails

http://spectrum.ieee.org/sep05/1685 Reinventing the wheel

http://techblog.41concepts.com/2007/07/ http://smoothspan.wordpress.com/2007/09/04/70-of-the-software-you-build-is-wasted-part-1-of-series-of-toolplatform-rants/

Denkfallen und Programmieren: http://www2.hs-fulda.de/~grams/Denkfallen/SystemHaupt.htm

Page 63: Klaus Rohe klaus.rohe@microsoft.com Microsoft Deutschland GmbH.

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.