Upload
madde-kees
View
105
Download
0
Embed Size (px)
Citation preview
Software Factories
Vortrag im Rahmen des Seminars
Entwicklung verteilter eingebetteter Systeme
Timo Baum27.2.2006
Software Factories27.2.2006 2
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 Factories27.2.2006 3
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 Factories27.2.2006 4
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 Factories27.2.2006 5
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 Factories27.2.2006 6
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 Factories27.2.2006 7
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 Factories27.2.2006 8
Voraussetzungen
● Systematische Wiederverwendung– Familien von Softwareprodukten mit
gemeinsamen Features und Variationen– Kontext der Wiederverwendung muss
spezifiziert werden
Software Factories27.2.2006 9
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 Factories27.2.2006 10
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 Factories27.2.2006 11
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 Factories27.2.2006 12
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 Factories27.2.2006 13
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 Factories27.2.2006 14
Software Factory Schema
Software Factories27.2.2006 15
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 Factories27.2.2006 16
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 Factories27.2.2006 17
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 Factories27.2.2006 18
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 Factories27.2.2006 19
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)
● http://www.generative-programming.org/● Generative Programming - Methods, Tools, and Applications
by Krzysztof Czarnecki and Ulrich W. EiseneckerAddison-Wesley, June 2000
● http://msdn.microsoft.com/vstudio/teamsystem/workshop/sf/default.aspx