Patterns Practices

In dieser HowTo-Serie geht es um Software Factories. In dem ersten Teil geht es erstmal primär um das Verstehen, was Software Factories sind und was man grob mit ihnen anfangen kann - und was sie uns bringen.

Was ist denn eine Software Factory und warum sollte ich eine benutzen?

Wenn man sich grob mal das ganze Thema Software Factories anschaut und sich die unterschiedlichen Tools etc. installiert, ist man doch erstmal erschlagen. Der gemeine Hobbyentwickler gibt eigentlich an dieser Stelle auf. “Echte” Entwickler sollten sich aber durchkämpfen.

Ein kurzer Abriss in den Ablauf der Softwareentwicklung: Es gibt ein bestimmtes Problem und man hat bereits einen Lösungsansatz. Man bindet z.B. einen Webservice ein oder fragt eine Datenbank ab, als Programm soll dann ein Windows Programm dienen. In der Regel fängt dannach der Entwickler an eine neue Solution zu erstellen und bastelt alles von Grund auf neu. Der Vorteil: Man ist Herr über seinen eigenen Code und denkt sich dabei was. Das Problem: Nicht jeder ist Experte und hinterher ärgert man sich über bestimmte Codestellen oder fragt sich, wie man am besten, dies und jenes implementieren könnte - nun ist das Produkt vielleicht fertig, aber wartungsfreundlich ist es nicht und es gibt auch keine guten allg. Lösungsansätze, da es ja eine ganz individuelle Entwicklung war. Nun wäre es doch schön, würde man bestimmte Standardsachen einfach schon erstellen können um ein gutes Grundgerüst zu bekommen. An dieser Stelle setzen Software Factories an.

Wenn man rubuste Software schreiben möchte, welche mit bewährten Techniken ein Grundgerüst gestellt bekommen - der sollte die Software Factories mal anschauen.

Woher bekomme ich diese Software Factories und was gibts für welche?

Das Logo oben ist von Microsofts “patterns & practices” Team und ich beziehe mich bei dieser HowTo Serie nur auf das p&p Team von Microsoft mit ihren Software Factories - es gibt wahrscheinlich noch mehr, aber das würde den Rahmen sprengen und mehr Zeit kosten.

Es gibt momentan 4 Factories:

Was benötige ich für die Software Factories und wie ist der Ablauf von den Factories?

Um die Software Factories zu nutzen benötigt man die Guidance Automation Extensions. Software Architekten (oder die, die es werden wollen) können diese Pakete auch editieren mit dem Guidance Automation Toolkit. Alle Software Factories sind in einzelne Pakete gegliedert und integrieren sich vollständig ins Visual Studio 2005 oder Visual Studio 2008 (Beta 2)). Den direkten Ablauf werde ich dann im nächsten HowTo zeigen.

Soviel erstmal zum Ablauf: Es wird ein Grundgerüst erstellt (direkte C# Projekte in einer Solution) und man hat zu jedem einzelnen Projekt (je nach zugewiesener Responsibility) Kontextmenüs oder zusätzliche Optionen welche man einstellen muss oder kann. Dadurch “klickt” man sich quasi die Software zusammen. Anpassungen können natürlich trotzdem genommen werden - es ist nur ein Grundgerüst, dass man nutzen kann, aber nicht muss. Wenn man sich natürlich zu sehr davon entfernt wäre es günstiger direkt die Pakete zu bearbeiten oder sich eine andere Methode auszudenken ;)

Irgendwie kommt mir manches aus der Software Factory XY bekannt vor?

Die Service Factories bauen intern auf die Enterprise Library und auf einigen Application Blocks auf - beides einen Blick wert.

Gibts sonst noch gute Informationen oder Downloadlinks?

Die Links auf die jeweilige Software Factory in der MSDN Library (siehe oben) zeigen eigentlich schon viele Links, Samples und Dokumente etc. Ansonsten verweisen die MSDN Library Seiten auch öfters auf Codeplex, wo das p&p Team (und die Community) einiges zum Download bereit hält.

In späteren HowTos werden wir das dann natürlich noch mehr Besprechen und wie die einzelnen Teile alle zusammenhängen.

Links: Microsoft patterns&pratices Site @ MSDN Microsoft patterns&pratices Site @ MSDN Library Mobile Client Software Factory Smart Client Software Factory (Codename Acropolis & Codename Acropolis Blog) Web Client Software Factory Web Service Software Factory Guidance Automation Extensions & Toolkit Site Guidance Automation Extensions Download Guidance Automation Toolkit Download Enterprise Library Applications Blocks