fit 2002: Produktionsverhältnisse: Software Factories |
[ eXtreme Programming | Programmieren als Kunst | Chief Programmer Team | Software Factories | Community Programming ] |
überblickSoftware FactoriesDas Wort Fabrik soll auf länger andauernde Anstrengungen von mehreren Personen hindeuten, die gemeinsam auf ein Ziel hinarbeiten, dessen Rahmen über Einzelprojekte weit hinausgeht. Man kann jedoch die Softwareproduktion nicht mit Massenproduktionen in herkömmlichen Fabriken vergleichen. [1-1] Heute wird meist nicht mehr der Begriff Fabrik für die Verbesserung der organisatorischen und methodischen Aspekte der Softwareentwicklung verwendet, sondern Begriffe wie Prozessorientierung oder Total Quality Management. [1-2] Wodurch sind Software Factories entstanden?Mitte der 70er Jahre herrschte eine Softwarekrise [1-5], da immer mehr Anbieter auf den Markt kamen, die Programmierer ihre Arbeit aber als künstlerische Tätigkeit sahen, und kaum Dokumentation von Programmen und deren Variablen vorhanden war. Bereits Ende der 60er gab es erste Denkmodelle, der große Boom bei der Gründung von Software Factories setzte jedoch erst ab 1976 ein. [1-1] Die Software Organisationen mussten professioneller werden. Die Kunden und Hersteller sahen sich folgende Anforderungen gegenüber: mehr Transparenz in der Entwicklung, schneller Feedback, höhere Produktivität und bessere Qualität der Produkte. Die Hauptströmungen der Software FactoriesBei der Entwicklung der Software Factories lassen sich vier verschiedene Ansätze, Entwicklungsströmungen unterscheiden.
Japan: Industrialized Software OrganisationDie Entwicklung soll anhand des Toshiba Software Factory Konzepts beschrieben werden.Toshiba entwickelt Software für Kontrollsysteme von Kernkraftwerken, Turbinen, etc.. Die Motivation für die Unternehmensumgestaltung in Richtung Software Factory lag darin, dass der Wunsch nach höherer Qualität durch Reduktion der Fehler in der Software bestand. Die Produktivität sollte darunter natürlich nicht leiden. Dieses Ziel soll dadurch erreicht werden, dass eine Umgebung geschaffen wird, in der Design, Programmierung, Test, Installation und Wartung in einheitlicher Art durchgeführt werden. Die Strategie für die Umsetzung gliedert sich in drei Bereiche. Das Erste ist die Schaffung geeigneter Gebäudes, in denen die Entwicklungsprozesse unterstütz werden können, zweitens wird eine »Software Work Bench« installiert, die den Entwicklungsprozess in allen Bereichen unterstützt. Drittens wurde eine Kontroll- und Beobachtungsinstanz geschaffen, die den Entwicklungsverlauf beobachtet. Später kamen noch weitere Initiativen dazu, die folgenden Bereichen einheitlich gestalteten: Arbeitsplatz, Software tools, user interfaces, standardisiert Richtlinien für Projektdesign und Projektmanagement, standardisierte technische Ausführung und Beschreibung, Fortbildungsprogramme, Qualitätssicherung, Bibliotheken mit bereits vorhandenem Code und technischen Datenbanken, Karrieresysteme, ... . Die Software Work Bench unterstützt alle Mitarbeiter auf den verschiedenen Entwicklungsebenen eines Projekts. Die Entwicklungsprojekte sind durch ein Wasserfall-Modell organisiert, wobei die einzelnen Arbeitsschritte in Arbeitseinheiten zerlegt werden. Jede Arbeitseinheit sollte in einer festgelegten Zeiteinheit erfüllt werden. Täglich oder wöchentlich wird kontrolliert, ob das Plansoll erfüllt ist und bei Schwierigkeiten oder Verzögerungen kann sofort reagiert werden. Die Wiederverwendung von Code trägt dazu bei, die Produktivität zu steigern und die Qualität zu steigern. Als erster Schritt muss der Code verfügbar gemacht werden und eine gute Dokumentation vorliegen. Jedem Programm müssen aussagenkräftige Keywords zugeordnet werden, die Funktionalität des Codes gut beschreiben und nach denen gesucht werden kann. Weiters werden »Quality Circles« eingerichtet. Gruppen von Freiwilligen diskutieren Möglichkeiten, die zu einer Verbesserung der Produktionsverhältnisse führen. Die besten Vorschläge eines Standortes werden prämiert und die Gewinner nehmen an der jährlichen Firmenkonferenz teil, bei der es wieder Preise und Auszeichnungen für die besten Ideen gibt. [1-1] Bis heute ist Hitachi, die erste japanische Software Factory, die weltweit größte. Europa: Generic Software FactoryDieser Ansatz ist auch unter dem Namen Eureka Programm oder Eureka Software Factory bekannt. An der Entwicklung dieses Programms waren europäische Konzerne, Computerhersteller, Software Hersteller, Forschungseinrichtungen und Universitäten beteiligt. 10 Jahre lang (1987-1996) wurde in verschieden Subprojekten entwickelt und die Kosten auf Industrie und nationale europäische Regierungsstellen aufgeteilt. Ziel des Projekts ist es für die Errichtung von Software Factories die nötigen Voraussetzungen zu schaffen. Dazu gehören technische und organisatorische Unterstützung, die Festlegung von Standards und die Schaffung der benötigten Infrastruktur. Außerdem soll eine Organisation geschaffen werden, die Unterstützung für die einzelnen Unternehmen gewährleistet, die CASE-Architektur. Das Eureka Programm soll also einen Rahmen für die Gründung von Software Fabriken liefern. Es werde auch Standards und Richtlinien für die Entwicklung von Softwarekomponenten in den ISDEs (Integrated Software Development Environments) festgelegt. Diese einheitlichen ISDE Standards ermöglichen die Kommunikation und den Austausch von verschiedenen Komponenten über einen gemeinsamen Datenbus. Komponenten, die für ein bestimmtes Projekt benötigt werden, können aus den am Datenbus vorhandenen ausgewählt und kombiniert werden. Forschungsergebnisse werden allen Teilnehmern zur Verfügung gestellt. Die Anzahl der Firmen, die sich den Eureka Software Factory Standards anschlossen ist stetig gestiegen. Die Firmen erhalten Unterstützung (support environment) und beachten dafür einheitliche Standards, die auch die Entwicklung von gemeinsamen Werkzeugen ermöglichen [1-1] USA: Experience-based Component FactoryDie Experience-based Component Factory wird vom Software Engieneering Laboratory entwickelt, das seit 1976 besteht und von der NASA, der Universität von Maryland und der Computer Science Corporation gemeinsam betrieben wird. Ziele dieses Projekts sind das Verstehen des Sofrwareherstellungsprozesses in der Entwicklungsumgebung, die Bestimmen des Einflusses von verfügbaren Technologien und das Einfließen lassen von gefundenen Methoden in den Entwicklungsprozess. Neue Entwicklungen und Technologien sollen in einer Produktionsumgebung getestet werden und gleichzeitig soll deren Einfluss auf Kosten, Qualität und Funktionalität untersucht werden. Um aus dem Forschungszentrum, dem Software Engieneering Laboratory ein gewinnbringendes Unternehmen zu machen müssen Qualität und Produktivität erhöht werden. Drei Schritte haben sich dabei als effizient herausgestellt: Effektivität der Entwicklung erhöhen, Reduktion der Menge an Rework, wieder verwenden von Life-Circle Produkten. [1-1] Diese Ziele sollen durch folgende Schlüsselstrategien erreicht werden:
Organisatorisch ist die Experience-based Component Factory in zwei Teile geteilt: Darstellung der Organisation der Experience-based Component Factory [1-1] USA: The Mature Software OrganizationDas letzte Software Factory-Konzept ist definiert durch das Capability Maturity Model, kurz CMM. Ursprünglich wurde CMM vom Amerikanischen Verteidigungsministerium verwendet, um Software Lieferanten zu werten. Nach vielen schlechten Erfahrungen mit Softwareerzeugern sollte dieser Fragenkatalog helfen, solche Fehler zu vermeiden und funktionierende Software zu erhalten. Das Hauptziel der Software Factory sollte es sein, einen vorhersehbaren, selbstverbessernden und wirtschaftlichen Software Entwicklungsprozess zu finden, der eine hohe Qualität von Software bringt. Vorhersehbar meint Kosten- und Terminüberschaubar. Selbstverbessernd meint eine stetige Weiterentwicklung des Produktes und, dass Techniken entwickelt werden, die diesen Prozess der Weiterentwicklung begünstigen. Wirtschaftlich meint, dass der Entwicklungsprozess überschaubar und wieder verwendbar ist. Wichtig war auch, dass all dies durch verbesserte Prozessüberwachung erreicht werden sollte und nicht durch Methoden oder Tools. Der eigentliche Gedanke der hinter CMM steht, ist die schrittweise Verbesserung der Software Entwicklung. So definiert CMM genau, welche Prozesse den Schlüssel zu einer guten Softwareentwicklung bilden und wie diese Prozesse verbessert werden können. Die Software Firma die das Ideal der CMM umsetzt, muss folgende Charakteristiken erfüllen: strenge Disziplin in der Planung und Zielsetzung und Einfluss von Wissen aus bereits abgeschlossenen Projekten. Weiters soll die Software Entwicklung und die Software an sich vorhersehbar sein, denn sie sollen sich immer in messbaren Grenzen bewegen. Das Hauptziel von CMM ist eine stetige Verbesserung, die stetig verbessert wird. [1-1] Vergleich der 4 Konzepte
Vergleich erster Teil [1-1]
Vergleich zweiter Teil [1-1]
Stärken und Schwächen [1-1]
Hauptunterschiede der vier Strömungen [1-1] Entwicklung der Software Factory in der LiteraturBereits Ende der 60er Jahre wurden in der Literatur die ersten Vorschläge unterbreitet, wie die Softwareentwicklung nach dem Vorbild der industriellen Produktion erfolgen sollte: In der »Software Factory« werden mit Hilfe standardisierter, computergestützter Werkzeuge auf der Basis eines formalisierten, mittels technischer und ökonomischer Kennzahlen kontrollierten Prozesses Softwareprodukte - gegebenenfalls in »Massenproduktion« - erstellt. Betrachtet man die quantitative Entwicklung wissenschaftlicher Veröffentlichungen zum Thema Software Factory, so stellt man fest, daß der Zenit Ende der 80er bzw. Anfang der 90er Jahre überschritten wurde. Unterstellt man einen positiven Zusammenhang zwischen der Anzahl wissenschaftlicher Veröffentlichungen zu einem Thema und dessen Aktualität in Forschung und Praxis, so kommt man zu dem Ergebnis, daß das Schlagwort Software Factory in den letzten Jahren an Popularität verloren hat [1-8] Entwicklung in der Literatur [1-8] Auch wenn der Begriff Software-Factory seine Popularität verloren hat, ist die Idee weiterhin aktuell. Die meisten wissenschaftlichen Arbeiten zur Weiterentwicklung von Sorfware Engineering und die Bemühungen zur Verbesserung der Softwareproduktion haben ähnliche oder gleichen Ziele: die Verwendung standardisierter, computergestützter Werkzeuge und formalisierte Prozesse, die technisch und ökonomisch kontrollierbar sind. Es gibt auch weiterhin Beträge, die auf eine Automatisierung in der Software Herstellung zielen und sich an der Fabrikanalogie orientieren, im Vordergrund stehen aber Bestrebungen, das Management und die Qualität der Prozesse zu erhöhen. QuellenangabenWir haben haupsächlich Materialien verwendet, die im Internet in Form von Artikeln, Buchauszügen und Berichten zuverfügung standen.
Verweise auf Arbeiten anderer GruppenData Mining and Data WarehouseData Mining und Data Warehouse spielen bei der Sammlung und Wiederverwendung von Code für Software Factories eine wichtige Rolle.Knowledgemanagement Knowledgemanagement stellt auch ein Konzept dar, wie Wissen und Informationen weitergegeben und für andere Verfügbar gemacht werden kann.Wasserfallmodell Das Wasserfallmodell wird oft bei Software Factories verwendet.Prototyping Beide Konzepte haben das Ziel die Kommunikation zwischen Auftraggebern, Nutzern und Entwicklern zu verbessern.Wissensakquisition Ist auch eine Methode zur Wissenverteilung und Wissensbewahrung.Büroautomatisierung Grundgedanken der Büroautomatisierung finden sich in der Entwicklung der japanischen Worck Bench wieder.Programmiersprachen Die Suche nach Verbesserungen und einheitlichen Standards forderte gemeinsame, effiziente und fehlerlose Programmiersprache. |
(c) FIT 2002 Gruppe 2 |