Wir möchten Ihnen für die ausführliche Begründung der Bewertung danken, sowie auch für die vorzügliche Betreuung während der BA! Unserer Meinung nach haben sie eine optimale Balance zwischen Anspornen und Freiraum lassen gefunden. Deshalb wussten wir auch immer sehr genau, wo wir stehen und was von uns gefordert wird. Das war ungemein hilfreich für uns...
Stefan Reinhard + Stefan Sidler
- Betreuung durch PeterSommerlad oder einen Assistierenden des InstitutFuerSoftware
- in http://avt.hsr.ch ist jeweils nur ein Teil der möglichen Themen eingetragen, sollten Sie hier eine Alternative sehen, bitte folgende Massnahme ergreifen:
- Bitte per email zu einem Thema melden, oder persönlich in 6.108 vorbeikommen
- Als Team auf den dann abgesprochenen Slot im AVT anmelden und konkreten Themenwunsch mit angeben
- Auf Zuteilung hoffen.
- Dieser Prozess bedeutet auch, dass ggf. das schon überbuchte Thema, dass Sie interessiert, eigentlich noch frei ist, fragen Sie also auf jeden Fall!
- AnforderungenAnStudienarbeiter
- (M)
- Master Level
- (MS)
- Master Level: nur Studienarbeit
- (B)(SA)
- Bachelor Level (B includes SA)
- Oracle Netbeans C++ CUTE testing support like for Eclipse
- Provide Eclipse CDT with a means to easily define and exchange toolchains in a workspace or project.
- example: use different compilers for testing for portability
- provide different default compiler settings, e.g., for turning on/off C++11/0x support (could be provided by different build configurations?)
- goal would be to easily have different versions of gcc, clang and may be even microsoft compilers without setting up projects in multiple different workspaces
- also for porting CDT projects across different platforms (e.g. windows<->linux<->mac)
- Refactor functors/functions into C++11 lambdas and back.
- Redo Introduce Pimpl Refactoring for C++11 as of http://herbsutter.com/gotw/_100/
- magic wand for C++03 code using tr1 towards C++0x that defines corresponding names in std namespace. make code transparently compile on both platforms, or hex one version into the other and back.
- C++ style checker with quick-fixes: simple but useful style checks using codan should be implemented together with quick-fixes. E.g.,
initialize members in initializer list, transform C-style casts, mutable global variables, multi-assignment to variables, locality of scope of variables, getters/setters (B/MS), see also ACCU-CVu article "Coding Standards for Software Correctness" by Yechiel Kimichi, May 2011.
- Unit Test Refactoring support:
- extract common fixture into function (improved extract function)
- extract common fixture to constructor + move function to member function
- adjust test registration if needed
- could work after the following refactoring:
- create test class from test functions -> adjust test registration
- optional: extract Tests into new suite (into new file)
- extract common test code into parameterized Test (hard)
- extend Detect possible std-algorithm use for loops (all kinds of) + quick fix (M) -- PascalKesseli to transform loops to calls of Intel's Array/Thread-Building-Blocks parallel algorithms (M) Martin Kempf MA
COAST Framework support:
- Eclipse plug-in for COAST development: expand Anything Editor with XRef to corresponding C++ COAST Code and between coordinated config files, Wizard(s) for Project set up, Test-viewer and support for application tests, config checker, config debugger (what-if-processor)
- (B), (M/MS) potential for consecutive work
- Refactor Initializers to C++11 curly braces initializers and back. (HS12 Froehlich/Mollekopf)
- Refactoring wrt using namespace: ( ev. für Kunz/Weder FS12, mit Abschluss Metrics)
- remove redundant namespace qualifiers when using namespace is in place
- remove using namespace and introduce corresponding qualified names
- metrics if using namespace is worth it, or how many namespace qualifiers can be removed by introducing it
- optional: using declaration instead of using namespace
- extend Detect possible std-algorithm use for loops (all kinds of) + quick fix (M) -- PascalKesseli to transform loops to calls of Intel's Array/Thread-Building-Blocks parallel algorithms (M) -> Martin Kempf FS2012 -> Masterarbeit HS2012
- C++ metrics for Eclipse CDT (cyclomatic complexity, number of members, classes, dependencies, even LOC per ..., ....) Mark code in outline etc with traffic light or other visualization when metrics are outside a parameterizable limit. Might even fade out code in long functions to encourage refactoring. A very improved version might even suggest sections for refactoring. (B-SA) SA Weder,Kunz
- potential alternative: really embed RSM but most of its information could be easily collected from CDT's AST anyway.
- -> bachelor SA team (tentative)
- Move &Extract Refactorings (in all directions :-) if possible without need for wizard (M/MS/B/SA), e.g., --> YvesThrier MA
- Move Member Function between classes
- Move Function to Member Function
- Move Member Function to Function
- with call site adjustments
- Move Member Variable
- parts of moving things to new files already done by TDD4CDT project in FS2011
- Extract (Base/Sub) Class
- override virtual member function (B)
- "inherit" constructors from base class(es) (B)
- extend Detect possible std-algorithm use for loops (all kinds of) + quick fix (M) -- PascalKesseli to transform loops to calls of Intel's Thread-Building-Blocks parallel algorithms (M) MSA Jorge,Abel
- MockatorClassic - in FS10 Michael Rueegg implemented Mockator for C++0x to use templates as dependency injection for Mock-Objects. Based on his work, a Mock-Object generator (extract interface refactoring, automtically determining used API, inserting base class as substitute, create mock class for API) should be implemented for users not yet up to the new standard. Framework should be simpler than GoogleMock but use only C++03 mechanisms. MA - Rueegg
- (M)
- Master Level
- (MS)
- Master Level: nur Studienarbeit
- (B)
- Bachelor Level
Eclipse CDT:
- CUTE Mock Framework and CDT plug-in support (B,MS,M in combination)
- provide mocks and automatic dependency injection through either base-class extraction or template-parameterization of dependent other component
- TDD-implement (member) function quick-fix (B,MS, M in combination)
- to ease TDD, create a missing (member)function from the compiler/IDE error marker
- should also work for operator-functions
- we'd be interested in a bachelor thesis: ThomasKallenberg and MartinSchwab
- override virtual member function (B)
- "inherit" constructors from base class(es) (B)
- revive "Exctract Class/Baseclass/Subclass" refactorings (B)(MS)
- Interactive C++ (function signature) editing, keep definitions and declarations in sync while editing (activated by hotkey) (B) (M/MS in combination)
- may be with split-view editor
- Inline change signature (B) (M/MS in combination)
- similar to the above situation
- Move Refactorings (in all directions :-) if possible without need for wizard (M/MS) -- RobertBrem
- Move Member Function between classes
- Move Function to Member Function
- Move Member Function to Function
- with call site adjustments
- Move Member Variable
- continuation project possible, since not all moves will be done
- replace namespace boost by tr1 where appropriate, adjust includes as well (B)(M/MS)
"* C++0x Refactoring: eliminate namespace tr1 or boost for C++0x, introduce tr1/boost for non C++0x (B)(M/MS)
- potentially in both directions
- C++0x Refactoring: Replace Functor with Lambda - Replace Lambda with Functor (M/MS)
- Hätte ich Interesse --MichaelRueegg
- Würde mich auch interessieren --Yves Thrier
- replace "old-style" casts with static_cast/dynamic_cast/reinterpret_cast (B)(MS)
- might be able to determine correct cast automatically (or via menu)
- static analysis or compiler-warning quick-fix
Eclipse CDT static Analysis:
- determine "concepts" for template parameters
- collect requirements on template arguments from the template's code
- complicated with template function overloads or template (partial) specializations.
- further complication to complex template instantiation rules (SFINAE)
- should at least work for simple cases, i.e. determine what vector<T> requires from T, etc.
- complications also from implicit conversions, operator overloading etc.
- Detect possible std-algorithm use for loops (all kinds of) + quick fix (M) -- PascalKesseli
- might need to automatically extract a lambda or functor for algorithm parameterization
- part of the work could be an analysis of a larger code base to check what kind of loops exist
- loop detection can be made arbitrarily clever, e.g., detect if a counting loop actually could be also implemented by an iterator loop, e.g., over a vector
- Hätte ich grosses Interesse; schätze, da wäre auch genügend "Fleisch am Knochen" für Folgearbeiten (SA und MS-Arbeit) --MichaelRueegg
- Semantische Analyse und Transformation würde mich allgemein sehr interessieren -- PascalKesseli; -- Würde mich auch noch interessieren Christopher Guntli
- for_each ist da nur ein Beispiel
- im Zusammenhang / aufbauend auf Codan implementierbar
- stehen boost- oder C++0x-Lambdas im Vordergrund? C++0x natürlich :-)
- continuation of Pascal's project needed
- map further algorithms to loops
- automatically map std algorithms to code structure (very complex)
- extract new generic algorithms from common loop code structures
- map index-based loops to iterator-based, i.e. with a iterator-adapter
C3PO (C++0x parser) improvement:
- extend the new C++0x Parser with a complete symbol table, error handling and semantic checks to recognize correct c++0x only (M/MS) -- ChristopherGuntli
- include type checking and template instantiation checking
- speed up parser and analysis
- implement (some) static code analysis
- automatically derive template parameter concepts (C++1x refactoring)
- further continuation required!
- template instantiation and checking, with better error messages than compilers
- complete semantic analysis, i.e., noexcept deduction
COAST Framework support:
- Eclipse plug-in for COAST development: expand Anything Editor with XRef to corresponding C++ COAST Code and between coordinated config files, Wizard(s) for Project set up, Test-viewer and support for application tests, config checker, config debugger (what-if-processor)
- (B), (M/MS) potential for consecutive work
- Hätte ich Interesse --MichaelRueegg
Eclipse CDT
- Extend, update and modernize the Eclipse Scons plug-in. (B,MS) -- MichaelRuegg
- "extract template parameter" -> make a function/class (more) generic by extracting a(n additional) typename template parameter (M) --Yves Thrier
- Move Refactorings (in all directions :-) if possible without need for wizard (M/MS) -- RobertBrem
- Move Member Function between classes
- Move Function to Member Function
- Move Member Function to Function
- with call site adjustments
- Move Member Variable
- replace namespace boost by tr1 where appropriate, adjust includes as well (B)(M/MS)
C3PO (C++0x parser) improvement:
- extend the new C++0x Parser with a complete symbol table, error handling and semantic checks to recognize correct c++0x only (M/MS) -- ChristopherGuntli
Eclipse CDT static Analysis:
- Detect possible std-algorithm use for loops (all kinds of) + quick fix (M) -- PascalKesseli
- might need to automatically extract a lambda or functor for algorithm parameterization
- part of the work could be an analysis of a larger code base to check what kind of loops exist
- loop detection can be made arbitrarily clever, e.g., detect if a counting loop actually could be also implemented by an iterator loop, e.g., over a vector
- Eclipse CDT: Crap4CPP -> Code-Analysis to find bad code basis:
- Eclipse CDT: select and integrate coverage tool for C++ like eclEMMA (CEcCov)
- Eclipse CDT: provide popular metrics plug-in based on AST or other tools
- Eclipse CDT: "move function implementation" refactoring between header and module
- also Move Member Function to another Class (or as free function)
- Eclipse CDT: split header refactoring (see also ReDHead)
- Eclipse CDT: rename Header file refactoring (if not yet existing)
- Eclipse CDT: refactorings towards C++0x
- Eclipse CDT Testing plug-in: extend CUTE plug-in with support for boost::test, google test, CPPUnit testing frameworks
- Eclipse CDT: "seamless native C++ code" -> Generator für Java-C++ Brückencode, der möglichst einfachen Zugriff in beide Richtungen ermöglicht. (gibt es schon mit JunCtion als Produkt)
- Eclipse CDT FlexeLint plug-in: quick-fixes for typical lint messages (see ECLint)
- Eclipse CDT: "introduce PIMPL" refactoring (in Java for C++) (Berweger, Indermühle, Knöpfel)
- Eclipse CDT: viewer for FlexeLint output with potential for quick-fixes ala FindBugs ECLint (RobertBrem)
- C++0x parser in Java (evtl. mit ANTLR) Experiment Grammatik: 20 pages -> inremental, test-driven? geht das überhaupt? mit virtual preprocessing --> Ziel Einbettung in Eclipse CDT, Vorlage auf ANTLR Website vorhanden. C3P0 (ThomasCorbat)
- Eclipse Scala plug-in: add refactoring support ScaRe (MirkoStocker)
- Groovy-Eclipse plug-in: separate Groovy parser in plug-in from used compiler
- Eclipse CDT: select and integrate coverage tool for C++ like eclEMMA (CEcCov - MichelRothmund)
- Eclipse CDT: optimize header dependencies and content (could use flexelint analysis?) ReDHead (LukasFelber)
COAST C++ Open Application Server Toolkit
- Einbettung eines AJAX Frameworks für COAST Applikationen
Scala Eclipse plug-in Enhancement
- Ausbau IDE support, Refactoring
Groovy Eclipse Plug-in Refactoring
- Cross-language Refactoring Java-Groovy
Eclipse CDT Refactoring
- Portierung und Entwicklung weiterer Refactorings zur Integration in CDT
COAST C++ Open Application Server Toolkit
- 64bit Erweiterung/Adaption für COAST (ggf. Telekurs Financial)
- SSL/TLS session-aware user authentication (Ralf Hauser, PrivaSphere kontaktieren)
- Refactoring COAST in Richtung modernes C++
- Einbettung eines AJAX Frameworks für COAST Applikationen
- Eclipse plug-in für COAST basierte Entwicklungen: Anything Editor mit XRef Möglichkeiten zum C++ Code und zwischen Konfigurationsfiles, Wizard(s) für Projektgenerierung, Test-viewer und Support für Applikatorische Tests
Eclipse plug-ins
- Scala plug-in (mehrere Projekte möglich, auch Refactoring) (M. Odersky EPFL)
- Hätte ich Interesse --MirkoStocker
- Hab ich Interesse --LukasFelber
- Hier gäbe es sicher auch miteinander-gekoppelte Projekte zu machen. Interesse -- ThomasCorbat
- Erweiterung PHP Refactoring plug-in
- Erweiterung JavaScript Refactoring plug-in (z.B. für spez. AJAX Framework)
- Erweiterung groovy (Refactoring) Eclipse plug-in, z.B. EMMA Integration für groovy code (analog eclEMMA), grails Integration and Refactoring
- Architektur/Strukturanalyse für C++/Ruby/PHP/Scala/Groovy für structure 101g (für Python im FS2008 realisiert)
- Hab ich Interesse (ich denk mal am eheseten für C++, würde wohl am meisten genutz werden) --LukasFelber
- Eclipse Ada Unit Testing plug-in for the Hibachi project
- Erweiterung C++ Refactoring plug-in (CDT Ganymede Release beinhaltet Refactoring Infrastruktur, die am IFS entwickelt wurde)
- hier kann noch viel getan werden!
- C++ Metrik Analyse Plug-in für CDT --> Nutzen des CDT AST für Berechnungen
- C++ code coverage Plug-in für CDT --> Visualisierung analog zu eclEMMA. Gnu compiler bietet Hilfestellung für Instrumentierung (siehe gprof/gcov).
- Würde ich gerne machen (als Vertiefunsprojekt?) --MirkoStocker
- Tool zur interaktiven Optimierung von C++ Headern #include Strukturen (Binding Analyse basierend auf Eclipse CDT AST und Index: was wird wirklich gebraucht). Ziel: Minimierung von Abhängigkeiten / Compilezeit
Dies können zum Teil von neuen Teams fortgesetzt werden!
Eclipse Plugins
- similar to the already created refactoring plugins for Ruby and Python the language PHP should be targeted by a refactoring plugin for Eclipse PHPIDE resp. the PDT project.
- Besides developing refactorings and corresponding infrastructure the contact and collaboration the Eclipse PDT team should be searched and developed.
- potential to continue this semester project as diploma thesis.
- Extend the existing Ruby Refactoring Plugin with Ruby on Rails specific support. This should become integrated into Radrails the Rails IDE based on Eclipse.
- Ergänzungen der bestehenden Refactorings für den Einsatz mit Rails, d.h. z.B. beim Umbenennen eines Controllers auch die entsprechende View-Komponente umbenennen oder Anpassungen des DB-Schema beim umbenennen von Feldern sind denkbar.
- Verbesserungen der Plug-ins mittels Type-Inference denkbar.
- Weitere Refactorings erstellen wie:
- Rename Module, Constant, Symbol
- Extract Class
- Die Plug-ins werden in RadRails einfliessen, wie auch die bestehenden Refactorings, also eine sinnvolle und prestigeträchtige Arbeit
- potential to continue this semester project as diploma thesis.
In the winter semester WS 06/07 a first Python refactoring plugin (PEPTIC) was developed and integrated into PyDev. This project should be continued and its functionality extended. The infrastructure to create further refactorings is available. There is the possibility to also solve advanced problems, like type-inference that can improve rename refactorings for Python.
- potential to continue this semester project as diploma thesis.
Javascript tooling for Eclipse is currently under development. However, Refactoring support is not yet planned. Similar to Ruby refactoring Javascript Refactoring can be a challenging project. However, the existing work already demonstrates Eclipse mechanics required for such a project.
Eclipse Ajax Tooling Framework project should be the platform targeted to integrate the Refactoring plugin.
- potential to continue this semester project as diploma thesis.
Groovy is a scripting language directly integrated into Java's JVM. It can use Java classes directly and vice versa. It would be great to provide cross-language refactorings for groovy+java into Eclipse. I.e. renaming a class or method, should also adjust the corresponding code in the other language using that feature.
- potential to continue this semester project as diploma thesis.
Based on the existing work on C/C++ refactoring further refactorings should be implemented and provided as an extension to the Europa Eclipse CDT release.
- see also http://wiki.hsr.ch/cdt/
- features to implement can be
- more refactorings also for C
- parameterizable code beautification
- advanced work can be done in the area of template type inference and refactoring or virtual preprocessing with conditional compilation
- potential to continue this semester project as diploma thesis.
- similar to CuTe that is already integrated with CDT, CPPUnit should be integrated into CDT to provide refactoring support similar to JUnit's support in Eclipse JDT.
- several CPPUnit implementations might and should be supported.
- CuTe plugin provides a good template to work with, so most insights into how to do it are already available.
kann/sollte mit SourceForgeHSR kombiniert werden. "Dashboard" für Entwicklungen
C#, NDepend, Java, JDepend, ant, Cruisecontrol
- möglich als 1. SA
- Historie aufzeichnen
- Dashboard mit wichtigsten Werten und Warnungen bei signifikanten Veränderungen
- Automatischer Architekturüberbwacher
- possible as 1. "Studienarbeit"
- goal is a usable installation available for future student software development projects
- quality is still not supported by many automated tests
- extension and refactoring of existing ruby on rails codebase required
- see http://wiki.hsr.ch/twinkie
Ein Application Framework für Multi-Threaded Server Applikationen in C++
- Refactoring und simplifying C++ framework code
- Beispielapplikationen
- als Open Source verfügbar machen
OldStudentProjectProposals