Software Factories Vortrag im Rahmen des Seminars Entwicklung verteilter eingebetteter Systeme Timo Baum
Software Factories Tendenzen in der Softwareindustrie Zunehmende Komplexität in der Softwareentwicklung Verlagerung der Entwicklung von der Unterstützung der Produktivität von Systemen und von Entwicklern (um deren Effektivität zu erhöhen) zu Anwendungen, die Geschäftsprozesse automatisieren Anforderungen ändern sich immer schneller
Software Factories Probleme der Software- Industrie Die Erwartungen zu erfüllen, bereitet Schwierigkeiten Mangel an qualifizierten Entwicklern führt zu – Eskalierenden Kosten – Längeren Produkteinführungszeiten – Verbreiteten Problemen mit der Verlässlichkeit, Sicherheit, Leistung der Anwendungen Als Reaktion auf neue Innovationen fordern Kunden immer mehr Verfügbare Methoden und Praktiken führen nicht weiter
Software Factories Probleme mit hoher Dringlichkeit Aufspüren und Schließen von Sicherheitslücken Komponenten, die in der Testumgebung funktionieren, in der Produktivumgebung lauffähig machen Die Unfähigkeit, trotz der durchdringenden Verfügbarkeit objektorientierter Methoden Wiederverwendung in einem kommerziell bedeutsamen Maße zu verwirklichen
Software Factories Probleme mit hoher Dringlichkeit (2) Die Gratwanderung, die Beweglichkeit eines einzelnen Teams zu bewahren und dabei die die Fähigkeit zur Zusammenarbeit mehrerer Teams zu gewährleisten => diese Symptome deuten darauf hin, dass in der Art, wie wir Software entwickeln, fundamentale Mängel vorliegen
Software Factories Die Hauptursachen Viele Aspekte sind bedingt durch die beiden Notwendigkeiten, mit Komplexität und rasch auftretenden Veränderungen umzugehen: Monolithische Bauweise – Not Invented Here-Syndrom Programmiersprachen – Für viele Geschäftsprozesse zu umfangreich Einmalige Entwicklungen – Ohne Wiederverwendung Unausgereifte Entwicklungsprozesse
Software Factories Software Factories Erste offizielle Ankündigung auf der OOPSLA 2004 (19th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications) Vision: Industrialisierung der Softwareentwicklung Einen Marktplatz für wiederverwendbare Komponenten und Services schaffen Unterstützt durch Visual Studio 2005 Team System
Software Factories Voraussetzungen Systematische Wiederverwendung – Familien von Softwareprodukten mit gemeinsamen Features und Variationen – Kontext der Wiederverwendung muss spezifiziert werden
Software Factories Voraussetzungen (2) Entwicklung durch Zusammenbau – Wie im Automobilbereich – Voraussetzungen: Plattformunabhängige Protokolle Selbstbeschreibung (WSDL) deferred encapsulation (Kapselung abhängig vom Kontext, in den die Komponente eingefügt wird) Architekturgetriebene Entwicklung Zusammenbau durch Instrumentation (z.B. Workflow von Web Services)
Software Factories Voraussetzungen (3) Modellgetriebene Entwicklung – Erhöhung des Abstraktionsniveaus für Entwickler – Automatisierung – z.B. Business Process Execution Language (BPEL) als Instrumentationssprache – Domain Specific Languages (DSL) mit grafischer oder textueller Notation – Modelltransformationen – Process Frameworks
Software Factories Economies of Scale Kostenersparnisse durch Massenproduktion – Das gleiche Problem auf die gleiche Art lösen und die Kosten für jede Lösung verringern
Software Factories Economies of Scope Kostenvorteile, die bei einer steigenden Produktvielfalt durch einen Verbundvorteil entstehen. für die einzelnen Produkte wird auf gemeinsame Ressourcen (z.B. Produktionsanlagen, Technologien) zurückgegriffen Gesamtkosten der Produktion mehrerer Produkte niedriger als die Summe der Produktionskosten der einzelnen Produkte bei getrennter Fertigung (=> SPL)
Software Factories Was sind Software Factories? A software factory is a software product line that configures extensible tools, processes, and content using a software factory template based on a software factory schema to automate the development and maintenance of variants of an archetypical product by adapting, assembling, and configuring framework- based components.
Software Factories Software Factory Schema
Software Factories Software Factory Schema Verschiedene Sichtpunkte (viewpoints), für die definiert ist, welche Sprachen für die Entwicklung von Komponenten verwendet wird Beziehungen zwischen den Sichtpunkten
Software Factories Software Factory Template Um ein Mitglied einer Produktfamilie zu bauen, muss das Software Factory Schema implementiert werden: – DSLs definieren – Patterns definieren – Frameworks definieren – Werkzeuge definieren Alles zusammen ergibt das Software Factory Template – Beinhaltet Code und Metadaten, die IDEs konfigurieren (wie Office Templates)
Software Factories Die Vision der Software Factories Entwicklung durch Zusammenbau – Anwendungsentwicklung als Anpassung und Erweiterung der Komponenten gemäß der Kundenwünsche – Den Großteil der Funktionalität aus fertigen oder von Vertragspartnern gelieferten Komponenten – Deutlich weniger Code schreiben müssen Software-Zulieferketten – Software Factories bei Kunden installieren (Outsourced Product Line Development) – Outsource Product Development
Software Factories Die Vision der Software Factories (2) individualisierte Massenfertigung von Software Organisatorische Implikationen – Entwickler nehmen spezialisiertere Rollen ein, Prozesse werden standardisiert, Lizenzierung für Entwickler stärker notwendig (wie in anderen Industriezweigen bereits üblich)
Software Factories Weiterführende Informationen Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools by Jack Greenfield, Keith Short et al., John Wiley & Sons © 2004 (666 pages) Generative Programming - Methods, Tools, and Applications by Krzysztof Czarnecki and Ulrich W. Eisenecker Addison-Wesley, June op/sf/default.aspx