Prinzipien für die erfolgreiche Applikationsentwicklung
Klaus [email protected] 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
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
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?
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.
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
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!
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
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
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
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.!!
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?
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
…
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
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
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
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
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
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
Enterprise Library für Querschnittsfunktionen
Caching
Security
Data Access
Logging
ExceptionHandling
Plug-inConfig
Helpers & Design
Instrumen-tation
ObjectBuilder
Cryptography
Core
Policy InjectionValidation
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
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]; } } });}
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
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
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, …
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
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
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, ….
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
Architektur und Funktion von CAB
Shell
ModuleCatalog
Module
UI Extension SiteView
UI Extension SiteView
Element
Element
Root Work Item
Work ItemShared State
Shared Events
• 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
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
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
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
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
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
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
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
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
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
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, …
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; }}
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
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
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)
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
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.
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/
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
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
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
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!
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
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
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 …)
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.
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
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
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/
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
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
Weitere Informationen (3)
Software-Desastershttp://www5.informatik.tu-muenchen.de/~huckle/bugs.htmlhttp://www-aix.gsi.de/~giese/swr/index.htmlhttp://www.ganssle.com/articles/disaster.htmhttp://www.zdnet.co.uk/misc/print/0,1000000169,39290976-39001115c,00.htm http://www.cs.tau.ac.il/~nachumd/horror.html
© 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.