Vorlesung Software-Reengineering
|
|
|
- Jacob Ursler
- vor 8 Jahren
- Abrufe
Transkript
1 Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2011/12 Überblick I Refactoring
2 Code-Transformationen: Code-Transformationen I Refactoring Refactoring Bad Smells Refactorings von Fowler Pull-Up Field Extract Method Wann durchführen? Evaluation von Refactorings Kostenschätzung Portfolio-Analyse Bewertung Refactorings Wiederholungsfragen 3 / 27 Code-Transformationen: Wegweiser Wie kann man Refactorings automatisieren? 4 / 27
3 Code-Transformationen: Vorteile (halb-)automatischer Transformationen (Halb-)Automatische Transformationen (halb-)automatisch und beliebig wiederholbar dokumentarisch Transformation ist Spezifikation der Änderung kontrollierbar Transformationen repräsentieren Implementierungswissen Vor- und Nachbedingungen der Transformationen sind explizit; sollten automatisch prüfbar sein Erhalt der Semantik bei einer Transformation lässt sich u. U. zeigen 5 / 27 Code-Transformationen: Definition Transformation Eine Transformation ist eine partielle Funktion t: t: Spezifikation/Programm Spezifikation/Programm Beispiele: Compiler, YACC, Programmrestrukturierer Transformationen werden oft als Rewrite-Regeln mit Pattern-Variablen repräsentiert: r u l e e l i m i n a t e a d d i t i v e i d e n t i t y r e p l a c e [ e x p r e s s i o n ] T [ e x p r e s s i o n ] + 0 by T end r u l e Syntax von TXL; siehe 6 / 27
4 Code-Transformationen: Transformationssystem Transformationssystem Ein Transformationssystem ist ein System, das semantisch wohl-definierte (teil-)mechanisierte Programmmodifikationen ermöglicht. Source Code Parser Internal Representation Unparser Source Code Viewer focus reengineering specialist Analyzers Rewrite Rules Tranformation Engine analyze / transform / undo request end user 7 / 27 Code-Transformationen: Schritte Schritte einer Transformation 1 Lokation: Identifikation der Stelle, an der Transformation angewandt werden soll 1 Mustersuche 2 Lokation durch Benutzer 2 Prüfung der Vorbedingungen der Transformation 3 Anwendung, falls Vorbedingungen erfüllt sind 8 / 27
5 Code-Transformationen: Bestandteile Vorbedingungen von Transformationen Die Anwendbarkeit von Transformationen ist oft an Bedingungen geknüpft: r u l e e l i m i n a t e a d d i t i v e i d e n t i t y r e p l a c e [ e x p r e s s i o n ] T1 [ e x p r e s s i o n ] + T2 [ e x p r e s s i o n ] where v a l u e (T2) = 0 by T1 end r u l e 9 / 27 Code-Transformationen: Implementierung Umsetzung von Transformationen Ersetzung wird als Prozedur auf dem abstrakten Syntaxbaum implementiert: p r o c e d u r e e l i m i n a t e a d d i t i v e i d e n t i t y ( n : i n out node ) i s b e g i n i f t y p e ( n ) = p l u s then Mustersuche i f v a l u e ( n. r i g h t ) = 0 Bedingung then E r s e t z u n g r e p l a c e c h i l d ( p a r e n t ( n ), from => n, to => n. l e f t ) ; n. l e f t. p a r e n t := n. p a r e n t ; d e l e t e t r e e ( n. r i g h t ) ; d e l e t e ( n ) ; end i f ; end i f ; end ; 10 / 27
6 Code-Transformationen: Eigenschaften Eigenschaften von Transformationen Bestimmte Eigenschaften müssen bei der Transformation erhalten bleiben, andere Eigenschaften sollen sich ändern: Performanz Strukturiertheit Änderbarkeit... In vielen (aber nicht allen) Fällen soll die Semantik erhalten bleiben. 11 / 27 Code-Transformationen: Eigenschaften Semantikerhaltende Transformationen Formale Betrachtung: Objekt o hat Attribute und ist definiert in einem Kalkül grundsätzliche Wahrheiten (Axiome) A Menge von Inferenzregeln i die Eigenschaften von Objekt o sind dessen Attribute sowie alle Fakten, die sich aus den Axiomen und Attributen mittels Inferenzregeln herleiten lassen Transformation t ist semantikerhaltend genau dann, wenn für alle Objekte o gilt: die Eigenschaften von o bleiben durch die Transformation erhalten: P(o) P(t(o)) P(t(o)) ist konsistent (enthält keine Widersprüche) (alte Eigenschaften bleiben erhalten, neue dürfen hinzukommen, es ergeben sich keine Widersprüche) 12 / 27
7 Code-Transformationen: Eigenschaften Semantikerhaltende Transformationen Die Erhaltung der Semantik ist in der Praxis nur sehr schwer nachweisbar: Beweis muss nicht nur die Semantik der Programmiersprache, sondern auch die aller aufgerufenen Betriebssystemfunktionen u.ä. einbeziehen, und ist im Allgemeinen schwierig. Nach Transformationen stets Regressionstests durchführen! 13 / 27 Code-Transformationen: Beispiele konkreter Transformationssysteme Beispiel eines Transformationssystems TXL 1 (Queens University, Canada): generisches Transformationssystem; ausgeprägt für C, C++, Java, Javascript, Modula, Object Pascal, XML: konkreter Syntaxbaum wird generiert funktionale Programmiersprache mit Transformationsregeln mit native Patterns : automatische Traversierung des konkreten Syntaxbaums und Anwendung der Transformationen, solange dies möglich ist / 27
8 Code-Transformationen: Beispiele konkreter Transformationssysteme TXL r u l e e l i m i n a t e r e d u n d a n t d e c l a r a t i o n s r e p l a c e [ r e p e a t s t a t e m e n t ] v a r X [ i d ] : T [ t y p e s p e c ] R e s t o f S c o p e [ r e p e a t s t a t e m e n t ] where not R e s t o f S c o p e [ r e f e r e n c e s X] by R e s t o f S c o p e end r u l e f u n c t i o n r e f e r e n c e s X [ i d ] match [ i d ] X end f u n c t i o n 15 / 27 Code-Transformationen: Beispiele konkreter Transformationssysteme Domain Maintenance System (DMS) Hersteller: Semantic Designs, Austin, Texas, USA generisches Transformationssystem parametrisierbar durch so genannte Domains (Grammatiken) konkrete Instanzen für C, C++, Java, Cobol, Jovial,... abstrakte Regeln für Parse-Baum Clone-Doctor 2 erkennt Klone (mit dem Verfahren von Baxter et al.) und beseitigt sie 2 Eingetragenes Warenzeichen von Semantic Designs 16 / 27
9 Code-Transformationen: Beispiele konkreter Transformationssysteme DMS-Beispiel d e f a u l t base domain Java ; r u l e merge i f s ( \ c o n d i t i o n 1, \ c o n d i t i o n 2, \ then s t a t e m e n t s ) = i f ( \ c o n d i t i o n 1 ) i f ( \ c o n d i t i o n 2 ) { \ then s t a t e m e n t s } r e w r i t e s to i f ( \ c o n d i t i o n 1 && \ c o n d i t i o n 2 ) { \ then s t a t e m e n t s } ; 17 / 27 Code-Transformationen: Beispiele konkreter Transformationssysteme Raincode Hersteller: Raincode 3, Brüssel, Belgien unterstützte Sprachen: Ada, APS, C, C++, COBOL, CSP, Delphi, Ideal, Informix 4GL, Java, Natural, PL/1 Skript-Sprache, um Transformationen zu programmieren Transformation findet auf dem Text selbst statt / 27
10 Code-Transformationen: Beispiele konkreter Transformationssysteme Raincode-Beispiel I PROCEDURE TERMINATE VAR v a l u e ; BEGIN scan a l l nodes FOR exp IN ROOT. SubNodes DO i f i t i s an e x p r e s s i o n t h a t i s not a s i m p l e l i t e r a l and i t has not been m o d i f i e d y e t I F exp I S NonCommaExpression AND exp I S NOT L i t e r a l AND exp [ Patched ]<>TRUE THEN do e v a l u a t i o n v a l u e := E v a l ( exp ) ; i f e v a l u a t i o n s u c c e e d s IF v a l u e <> VOID THEN r e p l a c e the e x p r e s s i o n by i t s v a l u e PATCH. ReplaceNt ( exp, v a l u e ) ; r e p o r t something on c o n s o l e exp. W r i t e E r r o r ( LIST. T o S t r i n g (PATCH. NtImage ( exp ) STR. Trim (X), ), = &v a l u e ) ; add a n n o t a t i o n so we do not p r o c e s s subnodes 19 / 27 Code-Transformationen: Beispiele konkreter Transformationssysteme Raincode-Beispiel II FOR IN exp. SubNodes DO X. Patched := TRUE; END; END; END; END; s a v e the p r o c e s s e d s o u r c e PATCH. Save (ROOT. SourceName&. patched ) ; END; 20 / 27
11 Code-Transformationen: Wiederholungsfragen Wiederholungs- und Vertiefungsfragen Welche Vorteile haben semi-automatische Transformationen? Welche wichtige Eigenschaften sollten Transformationen im RE haben? Warum? Was sollte man nach der Durchführung einer Transformation realistischerweise stets tun? Aus welchen Bestandteilen besteht eine Transformation? Wie wird ein Rewrite implementiert, wenn als Zwischendarstellung ein AST benutzt wird? 21 / 27 Code-Transformationen: Wiederholungsfragen 1 Fowler 2000 Fowler, Martin: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Sneed 1995 Sneed, Harry: Planning the Reengineering of Legacy Systems. In: IEEE Software (1995), January. beschreibt die Planung von Reengineering-Projekten 22 / 27
Transformationswerkzeuge TXL, RAINCODE, DMS. Doum Maimouna Bamba Üniversität Bremen Fachbereich 3-Mathematik und Informatik maimouna@tzi.
Transformationswerkzeuge TXL, RAINCODE, DMS Doum Maimouna Bamba Üniversität Bremen Fachbereich 3-Mathematik und Informatik [email protected] Abstract Diese Arbeit gibt einen Überblick über Transformationsprogramme
Vorlesung Software-Reengineering
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2009/10 Überblick I 1 I 1 Arten von Reengineering-Projekten
Interpreter - Gliederung
Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache
Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.
Language Workbench Vortrag von:! Aktuelle Themen der Softwaretechnologie Arthur Rehm Steven Cardoso Betreut von: Prof. Dr. Reichenbach [1] !2 Index Kontext Domain Specific Language (DSL) Language Workbench
Vorlesung Software-Reengineering
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2010/11 Überblick I Durchführung von Reengineering-Projekten
Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen
Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2010/11 Überblick I Software-Produktlinien Software-Produktlinien:
Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen
Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
C.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2006
Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Sommersemester 2006 Überblick I 1 Software-Produktlinien Software-Produktlinien:
Ausarbeitung des Interpreter Referats
Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Compiler, Übersetzer. Allgemeine Erklärung / Definition
Compiler, Übersetzer Allgemeine Erklärung / Definition Ein Übersetzer ist ein Programm, das ein S 1 -Wort den Quelltext in ein S 2 -Wort umwandelt den Zieltext wobei die Semantik erhalten bleibt. Frage:
Zwischencodeerzeugung Compiler II
Zwishenodeerzeugung Compiler II Prof. Dr. Ursula Goltz 14.09.2012 Einleitung Front-End... Parser Sem. Analys Zwishenodegenerator Bak-End Codegenerator... Zwishendarstellung (Zwishenode) evtl. mashinennunabh.
Objektorientiertes Software-Engineering
Objektorientiertes Software-Engineering TIT99BPE/TIT99CPE BA Mannheim WS 2001/2 F. Schönleber Organisatorisches Kurs 1: TIT99BPE 6.Studienhalbjahr Termin Mo. 13.00 14.30 Raum: 037B Kurs 1: TIT99CPE 6.Studienhalbjahr
Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken
Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
12.4 Sicherheitsarchitektur
12.4 Sicherheitsarchitektur Modellierung Sicherheitsstrategie Systemmodell Sicherheitsmodell Entwurf Architektur Sicherheitsarchitektur Implementierung sicherer Code SS-12 1 Wie wird das Sicherheitsmodell
Informatik ist viel mehr als Delphi-Programmierung!
Gliederung 1. Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel 5) 23.4. 3.
Grundlagen der Informatik für Ingenieure I
3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design
Assertions (Zusicherungen)
April 10, 2005 Oberseminar Software-Entwicklung Inhalt 1. Einführung (Motivation, Tony Hoare, Programmverifikation) 2. Design by Contract (Idee, Eiffel) 3. Praxis: Programming by Contract for Python 4.
Kapitel 3 Software Quality III
Kapitel 3 Software Quality III Software Architecture, Quality, and Testing FS 2015 Prof. Dr. Jana Köhler [email protected] Agenda Heute Von Bad Smells zu Refactorings Wie wird Refactoring durchgeführt?
Software Engineering. Statische Analyse! Kapitel 11
Martin Glinz Thomas Fritz Software Engineering Kapitel 11 Statische Analyse 2005, 2013 Martin Glinz. Alle Rechte vorbehalten. Speicherung und Wiedergabe für den persönlichen, nicht kommerziellen Gebrauch
Grundlagen zur nebenläufigen Programmierung in Java
Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei
Abschlussvortrag Masterarbeit: Operationalizing Architecture in an agile Software Projec
Abschlussvortrag Masterarbeit: Operationalizing in an agile Software Projec Freie Universität Berlin, Institut für Informatik February 2, 2015 Übersicht 2 Was ist Softwarearchitektur? Softwarearchitektur
[email protected] SS 2013 1.4-1 / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement
IMPLEMENTIERUNGSSTRATEGIE bis jetzt: Programmstruktur für Programmieren im Kleinen jetzt: Programmstruktur für Programmieren im Großen zunächst allgemein, d. h. sprachunabhängig [email protected]
Ein Überblick über KDevelop
Inhalt KDevelop? Was ist das eigentlich? Inhalt KDevelop? Was ist das eigentlich? Was ist KDevelop 4.x? im Kern: C++-IDE basierend auf KDE- und Qt-Bibliotheken Komplettes Rewrite von Version 3 erstes 4.0-Release
Was ist Logische Programmierung?
Was ist Logische Programmierung? Die Bedeutung eines Computer-Programms kann durch Logik erklärt werden. Die Idee der logischen Programmierung besteht darin, die Logik eines Programms selber als Programm
Inhaltsverzeichnis. Literatur. 4 Rational Unified Process [JBR98, Kru03] und UML [BRJ02, FS00, Bal01]
Inhaltsverzeichnis 1 Einleitung 4 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]....... 5 1.2 Eclipse als Java Entwicklungsumgebung................. 22 2 Planungsmethoden 29 2.1 Definitionsphase..............................
1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik
1. Einführung Advanced Programming Techniques Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced
Reengineering und Refactoring von Softwarearchitekturen
Methodische und Praktische Grundlagen der Informatik 3 Reengineering und Refactoring von Softwarearchitekturen Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik WS 2008/2009 Lernziele?
Theoretische Informatik. Reguläre Sprachen und Automaten
Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante
Extracting Business Rules from PL/SQL-Code
Extracting Business Rules from PL/SQL-Code Version 7, 13.07.03 Michael Rabben Knowledge Engineer Semantec GmbH, Germany Why? Where are the business rules? Business Rules are already hidden as logic in
Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR
Rainer Stropek cubido Baumschule Expression Trees in C#, CLR und DLR Inhalt Als Anwendungsentwickler kommt man selten mit Expression Trees in Berührung. Sie sind ein Implementierungsdetail von LINQ. Ihre
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools
MOF Meta Object Facility Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools Überblick Object Management Group (OMG) Model Driven Architecture (MDA) Exkurs: Modelle, Metamodelle MOF Architektur
Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013
Ein Streifzug durch die Programmiersprachenlandschaft in der Schule Gerald Futschek TU Wien Informatiktag 2013 Urwald der Programmiersprachen COBOL Visual Basic Modula-2 Logo Pascal SQL APL BASIC LISP
Was ist ein Compiler?
Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?
Entwicklung eines korrekten Übersetzers
Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung
`# Online Read Programmieren: Software entwickeln fr Einsteiger: Lernen Sie die Grundlagen von Java, SQL und C++ (Codierung,... download books from
`# Online Read Programmieren: Software entwickeln fr Einsteiger: Lernen Sie die Grundlagen von Java, SQL und C++ (Codierung,... download books from google ebooks ID:jiajsi Click Here to Read Programmieren:
Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann
Datenbanksysteme I Datenbankprogrammierung 15.6.2009 Felix Naumann SQL mit einer Programmiersprache verbinden 2 Embedded SQL Kombiniert SQL mit 7 Programmiersprachen ADA, C, Cobol, Fortran, M, Pascal,
Agile Modellierung mit UML Lab
Agile Modellierung mit UML Lab Produktisierung und Vertrieb eines MDSE Tools in der Praxis Dipl.-Inf. Manuel Bork Yatta Solutions GmbH t e +49 (0)561 5743277-21 [email protected] @ManuelBork UNSER GESCHÄFT
Refactoring relationaler Datenbank. Shaoke Wu
Refactoring relationaler Datenbank Shaoke Wu Überblick Einführung Bad Smells Probleme bei Database Refactoring Durchführung von Database Refactoring Visualisierung Refactoring relationaler DB Einführung
und schwenkt als erste irdische Sonde überhaupt in die Umlaufbahn eines anderen Planeten ein
13. November 2006 1 13. November 2006 1907 Paul Cornu startet den ersten Hubschrauber. 1960 In Karlstein am Main nimmt das erste deutsche Kernkraftwerk, das Versuchsatomkraftwerk Kahl, den Betrieb auf
Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014
Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung
Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn
Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams Lothar Wendehals 6. Workshop Software-Reengineering Bad Honnef, 3. - 5. Mai 2004 Motivation Unterstützung des
Funktionale Programmierung (in Clojure)
Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen
Software Wartung und Evolution Teil 3: Restructuring, Reengineering. Harald Gall Institut für Informatik Universität Zürich http://seal.ifi.unizh.
Software Wartung und Evolution Teil 3: Restructuring, Reengineering Harald Gall Institut für Informatik Universität Zürich http://seal.ifi.unizh.ch Lecture 3! Restructuring! Reengineering! Re-Architecting!
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
Theoretische Grundlagen des Software Engineering
Theoretische Grundlagen des Software Engineering 11: Abstrakte Reduktionssysteme [email protected] Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A
Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9
Kapitel 4 Einführung in den Scannergenerator Flex Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Generatoren für die lexikalische Analyse Scannergeneratoren werden eingesetzt um die
Grundlagen der Programmierung (Vorlesung 15)
Grundlagen der Programmierung (Vorlesung 15) Ralf Möller, FH-Wedel Vorige Vorlesung Blöcke, Funktionen Auswertestrategien Inhalt dieser Vorlesung Prozeduren Rekursion Lernziele Grundlagen der systematischen
Objektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Fachseminar. Semantische Analyse
Fachseminar Vortragender: Arton Berisha Thema : Semantische Analyse Kursleiter: Prof. Dr. Helmut Weber Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist
Reduzierung der Programmgröße mit Hilfe von Klonerkennung
Reduzierung der Programmgröße mit Hilfe von Klonerkennung Bernhard J. Berger Axivion GmbH [email protected] Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik, FB 3 Informatik, Universität Bremen
Programmierkurs: Delphi: Einstieg
Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache
Arbeitsblätter zu Teil I des Praktikums
Arbeitsblätter zu Teil I des Praktikums Allgemeine Hilfsmittel Bitte benutzen Sie bei Schwierigkeiten mit spezifischem Domänenwissen das Internet als Recherchemöglichkeit (beispielsweise Google oder Wikipedia).
Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
Informatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
Guido de Melo 5.2.2007 Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis
Guido de Melo 5.2.2007 Fachvortrag, Uni Ulm UML 2.0 Für den Einsatz in der Praxis Seite 2 Überblick 1. Ziele 2. Warum das alles? 3. Was ist UML 4. Diagrammarten 5. Umfeld Seite 3 1. Ziele 1. Ziele dieses
Created by Angelo Maron
Domain Driven Design in Ruby on Rails Created by Angelo Maron Wer bin ich? Angelo Maron Sofware-Entwickler seit ca. 7 Jahren (Ruby on Rails) bei AKRA seit 2,5 Jahren Xing: https://www.xing.com/profile/angelo_maron
Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an
6. Modellierung von Informationssystemen. 6.1 Einleitung 6.2 Konzeptuelles Modell 6.3 OASIS Spezifikation 6.4 Execution Model 6.
6. Modellierung von Informationssystemen Spezialseminar Matr. FS 2000 1/10 Volker Dobrowolny FIN- ITI Quellen: Oscar Pastor, Jaime Gomez, Emilio Insfran, Vicente Pelechano The OO-Method approach for information
Vererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup
Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme
Zusicherungen und Laufzeit Überwachungen in der modellbasierten Software Entwicklung
Zusicherungen und Laufzeit Überwachungen in der modellbasierten Software Entwicklung Methoden Design Integration STZ Softwaretechnik Andreas Rau STZ Softwaretechnik Im Gaugenmaier 20 73730 Esslingen Email:
DSHL7: Eine Domain Specific Language für HL7v3 in Scala
DISL Seven DSHL7: Eine Domain Specific Language für HL7v3 in Scala Markus Gumbel, Ahmet Gül Institut für Medizinische Informatik Überblick Motivation: Warum eine DSL für HL7v3? Ansätze für eine DSL Beispiel:
1. Java ist... 2. Stammbaum der Programmiersprachen 3. Die "Softwarekrise"
im Überblick im Überblick Inhalt 1. Java ist... 2. Stammbaum der Programmiersprachen 3. Die Softwarekrise 1. Merkmale von Software 2. Fortlaufende Veränderungen 3. Erschwerte Rahmenbedingungen bei der
VNUML Projektpraktikum
VNUML Projektpraktikum Michael Monreal, Tomasz Oliwa 14. Juni 2006 Abstract Entstanden im Projektpraktikum Simulationen mit User Mode Linux, der vnuml Multiinstaller und VOToN, das VNUML-Old-To-New Programm
Einführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 [email protected] Sprechstunde: Freitag,
Hilbert-Kalkül (Einführung)
Hilbert-Kalkül (Einführung) Es gibt viele verschiedene Kalküle, mit denen sich durch syntaktische Umformungen zeigen läßt, ob eine Formel gültig bzw. unerfüllbar ist. Zwei Gruppen von Kalkülen: Kalküle
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe
1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik
Syntaxanalyse Ausgangspunkt und Ziel
Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung
Software Analyse Tooldemo: JQuery Sommersemester 2011. Jonas Pusch
Software Analyse Tooldemo: JQuery Sommersemester 2011 Jonas Pusch Gliederung 1. Was ist JQuery? 2. Browsing Code (Motivation for JQuery) 3. Wie funktioniert JQuery? i. JQuery Features ii. TyRuBa (Sprache
Klassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
2. Programmieren gegen Schnittstellen Advanced Programming Techniques
2. Programmieren gegen Schnittstellen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Sommersemester 2011 1 Einordnung in den gesamten Kurs 2 1. Einführung 2.
Einführung in die Programmierung
Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:
Grundlagen der Programmierung in C Funktionen
Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany [email protected] Ältester Mechanismus für Code-Reuse:
Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))?
Fragen f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Wozu evaluiert [f [ ], f [ ]]? Weiteres Beispiel: f [ ] y = [
Vorlesung Software-Reengineering
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke 1 1 Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2005/06 Überblick I 1 Einführung Einführung
NEWSLETTER. FileDirector Version 2.5 Novelties. Filing system designer. Filing system in WinClient
Filing system designer FileDirector Version 2.5 Novelties FileDirector offers an easy way to design the filing system in WinClient. The filing system provides an Explorer-like structure in WinClient. The
PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung
Funktionale Programmierung 1 Funktionale Programmierung: Vorlesungsüberblick 1. Funktionale Programmierung Prinzipien funktionaler Programmierung Funktionale Programmierung in prozeduralen Sprachen Rekursive
