View Proposal
-
Proposer
-
Kostas Liaskos
-
Title
-
A tool to monitor/inspect multi-threaded (concurrent) Java software
-
Goal
-
The aim of this project is to develop a tool that monitors/inspects multi-threaded (concurrent) Java systems.
-
Description
- Writing correct Java multi-threaded code [1] is a hard problem, which introduces new challenges and common concurrency bug patterns (e.g. memory consistency errors [1]). The programmer has to ensure that all accesses to shared data are coordinated. The coordination is usually done with some sort of synchronisation, which in turn might lead to further problems (e.g. deadlocks, starvation and livelock [1]). The utilisation of supporting software monitoring/inspection tools is an important countermeasure for programmers to identify such concurrency issues in programs.
The aim of this project is to develop a tool that monitors/inspects multi-threaded (concurrent) Java systems. The project is open-ended in terms of the techniques that can be utilised, and a few indicative examples are:
- Techniques for static program analysis [2], e.g. software code quality metrics ([3]): [4] and [5] are examples of two popular metrics for non-concurrent systems; or
- Runtime system monitoring techniques [6], e.g. the native task managers [7] of Microsoft Windows and macOS are two popular examples; or
- A combination of the above.
The target users will be other programmers, software engineers, and testers. Requirements gathering will mainly involve researching relevant literature (including learning the basics of Java concurrency and multi-threaded programming) and existing tools in order to adapt the selected techniques for concurrent systems. GUI implementation will be a “must-have” requirement. Some students may choose to investigate turning their tool into a plug-in for a popular Java IDE, e.g. Eclipse, IntelliJ etc.
- Resources
-
[1] https://docs.oracle.com/javase/tutorial/essential/concurrency/,
[2] https://en.wikipedia.org/wiki/Static_program_analysis,
[3] https://en.wikipedia.org/wiki/Software_metric,
[4] https://en.wikipedia.org/wiki/Source_lines_of_code,
[5] https://www.tutorialspoint.com/software_testing_dictionary/cyclomatic_complexity.htm,
[6] https://en.wikipedia.org/wiki/System_monitor,
[7] https://en.wikipedia.org/wiki/Task_manager
-
Background
-
Strong Java programming skills are essential. Furthermore, the students must familiarise with the fundamentals of the Java concurrency package [1].
-
Url
-
-
Difficulty Level
-
Variable
-
Ethical Approval
-
InterfaceOnly
-
Number Of Students
-
2
-
Supervisor
-
Kostas Liaskos
-
Keywords
-
programming, java concurrency, static analysis, runtime monitoring, software engineering
-
Degrees
-
Bachelor of Science in Computer Science
Bachelor of Science in Computer Systems
Master of Engineering in Software Engineering
Master of Science in Computing (2 Years)
Master of Science in Software Engineering
Bachelor of Science in Computing Science