Filtern
Dokumenttyp
- Bachelorarbeit (1)
- Masterarbeit (1)
Sprache
- Englisch (2) (entfernen)
Institut
- Fachbereich 4 (1)
- Institut für Informatik (1)
Um unterschiedliche Anforderungen zu erfüllen, werden Softwaresysteme oft in Form einer Menge von Varianten entwickelt. Zwei gebräuchliche Ansätze für eine solche Softwareentwicklung sind das clone-and-owning und die Produktlinienentwicklung. Beide Ansätze haben Vor- und Nachteile. In vorheriger Arbeit mit anderen haben wir eine Idee vorgestellt bei der beide Ansätze verknüpft werden um Varianten, Ähnlichkeiten und Softwareklone zu verwalten. Diese Idee basiert auf einer virtuellen Plattform und Operatoren für Softwareklone. In der vorliegenden Arbeit stellen wir einen Ansatz vor um essentielle Metadaten für die Realisierung eines propagate-Operators zu aggregieren. Dafür haben wir ein System entwickelt um Ähnlichkeiten mit Annotationen zu versehen, wobei die Ähnlichkeiten aus der Historie eines Repositories extrahiert werden. Die Annotationen drücken aus wie eine Ähnlichkeit zukünftig gewartet werden soll. Abhängig vom Annotationstyp kann diese Wartung automatisiert ausgeführt oder sie muss vom Benutzer manuell betrieben werden. In dieser Arbeit beschreiben wir die automatisierte Extraktion von Metadaten und das System zur Annotation von Ähnlichkeiten; wir erklären wie das System in den Arbeitsfluss eines bestehenden Programms zur Versionierungverwaltung (Git) integriert werden kann; und abschließend stellen wir eine Fallstudie vor, die das 101haskell-System benutzt.
In der vorliegenden Arbeit untersuche ich eine breite Spanne von Libraries, Frameworks und anderer Technologien für die Programmiersprache Haskell. Ich demonstriere verschiedene praktische Anwendungen von Haskell und trage durch Implementationen und Taxonomieeinheiten zum 101companies System bei. Dies tue ich, indem ich einen großen Teil des 101companies feature models abdecke und damit verknüpfte Definitionen von Begriffen und Technologien in dieses System einpflege. Die Implementationen zeigen, wie verschiedene Sprachkonzepte von Haskell wie ein sehr starkes Typensystem, Polymorphismus, Funktionen höherer Ordnungen und Monaden effektiv bei der Entwicklung von Informationssystemen benutzt werden können. In diesem Zusammenhang zeige ich sowohl Vorteile als auch Einschränkungen der verschiedenen Technologien auf.