Klaus Rohe Microsoft Deutschland GmbH.

Slides:



Advertisements
Ähnliche Präsentationen
Zusammenarbeit in Office mit den SharePoint Technologien Michael Carpi
Advertisements

Design- und Entwicklungswerkzeuge
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Systemverwaltung wie es Ihnen gefällt.
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
Datenbankzugriff im WWW (Kommerzielle Systeme)
Microsofts XML-Strategie aus Sicht des Endanwenders Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Introducing the .NET Framework
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
Microsoft Office Information Bridge Framework Jens Häupel.NET Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Windows Small Business Server 2008
Michael Haverbeck System Engineer
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
Kooperationsmöglichkeiten im Bereich Medienkompetenzförderung Heidelberg, 06.Juni 2011 Jürgen Nilgen Area Sales Lead Germany | Microsoft Learning.
Xenario IES Information Enterprise Server. Xenario Information Enterprise Server (IES) Die neue Architektur des Sitepark Information Enterprise Servers.
Video Streaming mit Silverlight
Bitlocker mit Server 2008 in Enterprise Umgebungen
HTML-Editoren Eine Präsentation von Erik Kulisch.
Architekturen und Techniken für computergestützte Engineering Workbenches.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Roger Boesch Technology Solution Professional - Visual Studio Team System blogs.msdn.com/rogerboesch Microsoft Schweiz GmbH.
Das Model-View-ViewModel-Pattern
Developer Day Office APPs entwicklen Simon Amrein Trivadis AG Die ersten Schritte in eine neue Office-Welt.
Version 2008 Team Foundation Version Control (TFVC) … ist eine vollständige Neuentwicklung … wurde für große Teams, die auch weltweit verteilt arbeiten,
Neno Loje Berater & MVP für Visual Studio ALM und TFS (ehemals VSTS) Hochqualitative Produkte mit Visual Studio & TFS 2010.
Windows Server 2008 Server Deployment
BusinessPerformancePoint Server 2007 Planen, Überwachen, Analysieren
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
Steffen Krause Technical Evangelist Microsoft Deutschland GmbH
Scripting mit Windows PowerShell
SQL Azure Administration
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH Christian Weyer Solutions Architect thinktecture.
Windows Server 2008 Terminal Services
Der Moderne Verwaltungsarbeitsplatz Die perfekte Symbiose der neuen Microsoft Technologien mit Ihrer bestehenden IT-Infrastruktur Michael Schäffer
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
2 VirtualisierungSpeicher Web- und Anwendungsplattform Verwaltung & Automatisierung Virtuelle DesktopinfrastrukturIdentität & ZugriffNetzwerk Mehr als.
… und was man damit machen kann.
Intensivmedizin-Applikation mit WPF, WCF und LINQ
Marktübersicht für Content Management Systeme
3/31/ :26 AM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Projektmanagement Ziel und Umfang eines Softwareprojektes definieren
Warum IIS? Best of Microsoft Webserver
MSDN TechTalk Anwendungen integrieren in Microsoft Dynamics CRM 4.0.
xRM1 Pilot Implementierung
…und nun aber zum heutigen Vortrag Die Herausforderung: Krisen und andere Verwerfungen Die Herangehensweise: Kosten senken & Produktivität erhöhen Das.
Mit IT IS enbex Hand in Hand Zeitgemäße Unternehmen sind auf schnellen und sicheren Datenaustausch angewiesen IT IS AG.
Sprachneuerungen des .NET Frameworks 3.5
7.-8. März 2013, Rosenheim Brand my SharePoint grafische Gestaltung von SharePoint 2013-Webseiten Fabian Moritz | MVP SharePoint Server.
Datenbanken im Web 1.
Weg mit Fehlern, die kein Entwickler versteht …
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH.
Arbeiten in einem agilen Team mit VS & TFS 11
? What is Open PS? SAP Open PS based on EPS 4.0
Application Infrastructure Technologies Extending OnPremise EAI to the Cloud Wilfried Mausz BSc. dataformers GmbH Lothar Mausz dataformers.
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
Campus Bern Patrick Mäschli, Software Architect
Cubido business solutions gmbh Haidfeldstrasse 33 A-4060 Leonding di(fh) Wolfgang Straßer ° Rundumblick.
Workshop 1 Getting Started 2016 Boris Wylutzki
Azure Backup, Azure Backup Server und Azure Site Recovery
Azure Active Directory und Azure Active Directory Domain Services
Erweiterte Azure Dienste
Lync and Learn mit Manfred Helber Thema heute:
Wege in die Cloud: Office 365
Firmeninternes Softwarelogo
 Präsentation transkript:

Klaus Rohe Microsoft Deutschland GmbH

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 eingehalten Anforderungen werden erfüllt

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Problem: Endbenutzer (Kunden) haben meist nur eine grobe Vorstellung, was das neue Softwaresystem leisten soll. Meistens keine genauen Vorstellung über die Details Keine Experten für Anforderungsdokumente Anforderungsdokument: Formale Beschreibung der Systemanforderung bis auf die Detailebene Wer erstellt es?

Man kann von den Kunden ein detailliertes Anforderungsdokument verlangen, aber: Anforderungsdokument wird auf Biegen und Brechen fertig gestellt Enthä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.

High-LevelAnforderungenHigh-LevelAnforderungen Mock-up des UIs bauen Mock-up Mock-up mit Endbenutzer evaluieren Mock-up AnforderungenverfeinernAnforderungenverfeinern Mock-up: rudimentärer (Wegwerfprototyp) der Benutzeroberfläche

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!

Umfang des Prototypen Benutzeroberfläche Kritischer Durchstich Visual Studio hat die Tools zum rapid Prototyping von grafischen Benutzeroberflächen: Windows Presentation Foundation Windows Forms Office (Word, Excel, Outlook) als Basis-GUI ASP.NET Webforms und WebParts Mashups mit PopFly

Die Microsoft Windows PowerShell ist ein Scripting-Werkzeug für Windows XP, Vista, Windows Server 2003 und 2008 Basiert auf.NET 2.0.NET 3.X Klassenbibliotheken können genutzt werden. PowerShell kann für Prototyping genutzt werden Kein Kompilieren notwendig Komplette.NET (2.0 – 3.x) Klassenbibliothek verfügbar

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

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.!!

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 Komponenten Welchen Mehrwert kann Microsoft Office Sharepoint Server 2007 für die geplante Applikation bringen?

Entwicklung von Infrastrukturfunktionen, die schon durch Middleware bzw. Betriebssystem bereitgestellt wird. Entwicklung von Klassenbibliotheken und Werkzeugen, die allgemeine Querschnittsfunktionalitäten betreffen: Workflow Datenzugriff, Caching Logging, Instrumentierung, Exception handling …

Studien haben ergeben, das Programmierer 40 – 50 % ihrer Zeit damit verbringen, Code zu produzieren, den es schon gibt! Folgen: Wiederholung von Fehlern Design & Entwurf Implementierung Ressourcenverschwendung

Separation of Concerns Eigentliche Applikationslogik oder Kernfunktionalität (Mehrwert für den Kunden!) Eigentliche Applikationslogik oder Kernfunktionalität (Mehrwert für den Kunden!) MiddlewareMiddleware Web Server Service Host Web Server Service Host Integration Broker Message Broker Service Broker Integration Broker Message Broker Service Broker … Querschnitts- funktionalitäten Querschnitts- funktionalitäten WorkflowWorkflow DatenzugriffDatenzugriff Exception Handling LoggingLogging InstrumentierungInstrumentierung CachingCaching SicherheitSicherheit KommunikationKommunikation

Workflow Foundation Enterprise Library Eigentliche Applikationslogik oder Kernfunktionalität (Mehrwert für den Kunden!) Eigentliche Applikationslogik oder Kernfunktionalität (Mehrwert für den Kunden!) MiddlewareMiddleware InternetInformation Service (IIS) InternetInformation BizTalk Server … Querschnitts- funktionalitäten Querschnitts- funktionalitäten WorkflowWorkflow DatenzugriffDatenzugriff Exception Handling LoggingLogging InstrumentierungInstrumentierung CachingCaching SicherheitSicherheit KommunikationKommunikation WCF

Hosten von WCF Services Server selber implementieren? IIS als Server nutzen? IIS 7.0 hat viele neue Funktionen für WCF Windows Process Activation Service Unterstützung aller WCF- Transportprotokolle: Http, Tcp, Named pipes,MSMQ Management, Health Monitoring, … Architektur des IIS 7.0

Werkzeugkasten für Softwareentwickler Die Workflow Foundation (WF) vereinfacht: Implementierung langlaufender & wiederanlauffähiger Komponenten Monitoring und Tracking von Komponenten Grafische Komposition aus bestehenden Services / Aktivitäten Implementierung von Geschäftsregeln Implementierung von flexiblen leichter änderbaren Komponenten Was WF nicht ist: Server-Produkt, vergleichbar oder Ersatz für BizTalk Windows Workflow Foundation Runtime Engine Runtime Services Base Activity Library Custom Activity Library Visual Designer (Visual Studio 2005 / 2008) Visual Designer (Visual Studio 2005 / 2008) Ein Workflow

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 Design Tools BAM and Admin Tools BAM and Admin Tools Orchestration Transformation Adapters Workflow

CachingCaching SecuritySecurity DataAccessDataAccessLoggingLogging ExceptionHandlingExceptionHandling Plug-in ConfigHelpers & Design ConfigHelpers Instrumen- tation Object Builder CryptographyCryptography Core Policy Injection ValidationValidation

Applikationen 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.5 CTP Download: x?FamilyID=e848dc1d-5be bc7f180ba&displaylang=en x?FamilyID=e848dc1d-5be bc7f180ba&displaylang=en

// 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 TPL using 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]; } }); }

Der Trend geht dahin, bestimmte Softwarefunktionen als (Web-) Service zur Verfügung zu stellen. Beispiele: Microsoft Life Services, MapPoint & Virtual Earth, Amazon Web-Services, … us/architecture/aa aspx Kann die Applikationsentwicklung mit Hilfe solcher Services vereinfacht werden? Benutzerschnittstelle (Smart Client, Browser, Mobil, …) Benutzerschnittstelle (Smart Client, Browser, Mobil, …) WorkflowsWorkflowsKomponentenKomponenten Service Schnittstellen Datenzugriffs-logikDatenzugriffs-logikService-AgentService-Agent DatenDaten Interne Services (ERP, CRM, …) Interne Services (ERP, CRM, …) Externe Services Externe Services

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Dies ist eine Ergänzung zum vorher behandelten Prinzip Recherchieren, wie andere ähnliche Applikationen implementiert haben: Welche Architektur? Welche Muster? Was sollte man auf keinen Fall machen? …. User Groups, Spezielle Web-Sites, Literatur, …

Anleitungen, Empfehlungen und Source- Code für die Unterstützung der Entwicklung unterschiedlichster Applikationsszenarien auf der Microsoft Windows Plattform mit.NET: Architektur Kodierung, Test Verteilung & Betrieb Best Practices aus Microsoft internen und Partner Projekten us/practices/default.aspx

CodePlex ist eine von Microsoft betriebene Web-Site: Unterstützt die Entwicklung von Open Source Projekten im.NET Umfeld: Wikis Source Code Kontrolle auf der Basis des Team Foundation Servers Diskussionforen Projekt- und Probelmverfolgung RSS Unterstützung Enterprise Library Composite UI Application Block w.aspx?title=Composite%20UI%20Applicatio n%20Block

The Code Project: Enthält Programme, Implementierung von Algorithmen und Beschreibungen von Lösungen aus den Bereichen.NET, SQL Server, BizTalk, … Newsletter Source Forge: Viele Open Source Projekte aus dem.NET Bereich Beispiel: 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, Access Oracle, IBM DB2 PostgreSQL, MySQL, ….

CAB ist ein Framework zur Entwicklung von Clients mit Windows Forms und WPF Ursprünglich Entwickelt von der Patterns & Practice Gruppe, jetzt auf CodePlex le=Composite%20UI%20Application%20Block Das CAB Entwicklungsmodell basiert Use Cases, genannt WorkItems und Patterns Lose Kopplung zwischen den Use Cases Kommunikation über einen Eventbroker Faktorisierung Querschnittsfunktionen in CAB interne Service

Shell Module Catalog Module UI Extension Site View UI Extension Site View Element Root Work Item Work Item Shared 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 PSfDPSfD 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 EnvisionPlanDevelopStabilizeDeploy

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

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 einbauen Neue Datenbanken integrieren Integration mit anderen Anwendungen Fazit: Anwendung möglichst änderungsfreundlich / flexibel bauen! ? Blick in die Kristallkugel

3-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

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 die logische Struktur) Workflow- Editor Anpassen des Workflows durch editieren der xoml-Datei.NET Assembly Custom Activities Class Aktivität1 Class Aktivität2 Class Aktivität3 Class Aktivität4.NET Assembly Custom Activities Class Aktivität1 Class Aktivität2 Class Aktivität3 Class Aktivität4.NET Assembly Base Activities.NET Assembly Base Activities Code

Datenbankunabhängigkeit ORADBLayer ORADBLayer Oracle SQLDBLayer SQLDBLayer SQLServer Data Layer Interface (DLI) XYDBLayer XYDBLayer XYDB Geschäftslogik WEB UI (IIS) WCF Services (IIS) Web-Client Silverlight / AJAX Web-Client Silverlight / AJAX Smart Part CAB EL Service Agent mit lokalem Cache Service Agent mit lokalem Cache WCF (SOAP) HTTP Geschäftsentitäten Authentication, Authorisation, Logging, …(EL) Smart Client

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

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 Services Services, die andere Services nutzen, sollten dies über die offizielle Service-Schnittstelle tun nicht auf Implementierungsdetails nutzen. The Four Tenets of Service Orientation: Boundaries Are Explicit Services Are Autonomous Services share Schema and Contracts Compatibility Is Policy- Based

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-ServiceWCF-Service SchnittstelleSchnittstelle ImplementierungImplementierung SOAPHTTPSOAPHTTPRESTRESTSOAPTCPSOAPTCPSOAPNamedPipeSOAPNamedPipe

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Speziell bei Web-Applikationen muss man mit böswilligen Attacken rechnen: SQL- und Skript-Injection Eingabe 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, -Adresse, …) Semantisch korrekt, im einfachsten Fall Bereichsprüfung, …

Unterstützung zur Lösung bietet der Validation Application Block der Enterprise Library: Validierung mit Attributen, Konfiguration und Regeln Integration 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; } } MessageTemplate="Invalid address", Ruleset="RuleSetA")] public string { get { return ; } set { = value; } } [ObjectValidator("RuleSetA", Ruleset="RuleSetA")] public Address Address { get { return address; } set { address = value; } } [StringLengthValidator(1, 50, Ruleset="RuleSetA", MessageTemplate="Last Name must be 1-50 characters")] public string LastName { get { return lastName; } set { lastName = value; } } MessageTemplate="Invalid address", Ruleset="RuleSetA")] public string { get { return ; } set { = value; } } [ObjectValidator("RuleSetA", Ruleset="RuleSetA")] public Address Address { get { return address; } set { address = value; } }

Finale 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 Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Ü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 Studio WMI basiert auf dem Standard Web Based Enterprise Management (WBEM)

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Logging ist nützlich: Bei der Fehlersuche in Verteilten Applikationen, während Entwicklung und Betrieb Erstellen von Nutzungsprofilen Aus Gründen der Sicherheit Datenschutzrichtlinien beim Logging beachten! Wenn möglich Logging im Produktionsbetrieb nicht abschalten Server wie SQL Server und BizTalk bieten eingebaute Logging-Funktionalität.

Logging für.NET Applikationen: Logging Application Block der Enterprise Library Apache Log4net, Portierung von log4j auf Microsoft.NET

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Business Entitities sind in allen Schichten verfügbar Abbildung der Unternehmensdaten auf Business Entities BizTalk zur Integration? Geschäftsentitäten (Business Entities) Geschäftsentitäten (Business Entities) Benutzerschnittstelle (Smart Client, Browser, Mobil, …) Benutzerschnittstelle (Smart Client, Browser, Mobil, …) WorkflowsWorkflows KomponentenKomponenten Service Schnittstellen Datenzugriffs-logikDatenzugriffs-logikService-AgentService-Agent DatenDaten Interne Services (ERP, CRM, …) Interne Services (ERP, CRM, …) Externe Services Externe Services Querschnittsfunktionen

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Der 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!

Visual Studio Team System bietet eine reihe Lasttestszenarien für Web-Applikationen: Constant Load Profile: konstante Anzahl Clients Step Load Profile: Anzahl der Clients wird schrittweise und definierten Zeitintervallen erhöht Goal-based Profile: Last wir solange erhöht, bis eine Ressource einen kritischen Wert erreicht Für WCF:

Die Benutzer wissen häufig nicht genau was sie haben wollen Schnell einen Prototypen liefern Das Rad nicht neu erfinden Bewährte Lösungsansätze nutzen (Best Practices) Die Zukunft ist nicht vorhersehbar Services unabhängig halten Trau den Clients nicht Das Unsichtbare sichtbar machen Alles protokollieren Die Daten kennen Die Grenzen des Systems kennen Nicht am Erfolg scheitern

Manchmal 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 …)

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

Unrealistische Projektziele Falsche oder ungenaue Ermittlung der benötigten Ressourcen Schlecht definierte Systemanforderungen Fehlendes Risikomanagement Schlechtes Projektmanagement Unzureichende Kommunikation zwischen Entwicklern, Kunden und Endbenutzern Nutzung nicht ausgereifter Technologien Schlampige Entwicklungspraxis Wirtschaftlicher Druck und politische Spielchen

Architecture Guidance Documents The Architecture Journal Erscheint 4 mal pro Jahr, Themen aus dem Bereichen IT-Architektur Autoren: Unabhängige Anwender von Microsoft Technologien Microsoft Mitarbeiter Registrieren unter :

Microsoft Patterns & Practices us/practices/default.aspx Softwarearchitektur us/architecture/default.aspx CodePlex

Ronald Mak The Martian Principles for Successful Enterprise Systems, 20 Lessons Learned from NASAs Mars Exploration Rover Mission Indianapolis 2006 ISBN-10: ISBN-13:

Why Software Fails Reinventing the wheel of-the-software-you-build-is-wasted-part-1-of- series-of-toolplatform-rants/ Denkfallen und Programmieren: fulda.de/~grams/Denkfallen/SystemHaupt.htm

Software-Desasters muenchen.de/~huckle/bugs.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.