2F: Software engineering aspects
Disaster and emergency management systems are long-living software-intensive systems constrainted with demands for high quality attributes such as security, availability, timeliness and correctneess. Software engineering as a discpline concerns with providing desired software qualities according to the requirements.
Examples of research topics are:
Requirement engineering from multiple stakeholder viewpoints
Methods for user-centered design and implementation
Software development methods for the effective use of techniques such as frameworks, model-driven approaches, product-line architectures, systems of systems, and dynamically optimizing platforms through data collection and machine learning
Techniques for building disaster and emergency resilient systems
Support for fixed and mobile platforms
Design and development environments, for example, sensor and data fusion analysis and design environments, and environments for supporting different phases of disaster and emergency management including system simulation and game building.
Models and languages suitable for a large category of devices from IoT nodes, platform realizations, big-data systems to third party applications
Languages that can cope with predefined and unantipated emergency conditions
Abstractons for emergent behavior
Domain-specific languages for disaster and emergency management
Ontology-languages and integration of multi-paradigm language approaches
Event-based, aspect-oriented, and context-oriented approaches
Specifying, implementing, and testing the desired quality attributes of software and systems, including reduced complexity and enhanced reusability through modularization, assuring critical system parameters such as correctness, fault-tolerance, security, and performance.
Techniques for context-aware, such as energy and disaster and emergency aware systems
Support for software modularization and architecture design for enhancing quality attributes.
Verification and testing techniques and their combinations such as run-time verification and model-based verification and testing techniques for functional and critical parameters.
Verification of dynamic modules, plug-ins, application modules, etc.
Support of model-based and data-based approaches. Improving software models through machine learning techniques
Uncertainty management through fuzzy-probabilistic techniques and machine learning