bedir

Bedir Tekinerdoğan
Assistant Professor, 
Bilkent University
Department of Computer Engineering -
Software Engineering

Bilkent University

Research
Education
Background
Professional Activities
Projects
Publications
Consultancy
Personal
Address

Bilsen







MSc assignments Senior Projects CS411-SAD CS586-AOSD CS415-SPLE cs587-MDSD

CS586 - Aspect-Oriented Software Development 

One of the most important principles in software engineering for coping with complexity and achieving quality software is the separation of concerns principle. This principle states that a given design problem involves different kinds of concerns, which should be identified and separated in different modules. The history of software development has experienced an evolution of different programming languages and design methods that have provided useful modularity mechanisms. However, as it is experienced in practice and generally acknowledged by researchers, it appears that these approaches are inherently unable to modularize all concerns of complex software systems. Some concerns like synchronization, recovery and logging tend to be more systemic, crosscut a broader set of modules and as such cannot be easily specified in single modules. This increases complexity and reduces several quality factors of software, such as adaptability, maintainability and reusability.

Aspect-oriented software development (AOSD) is an advanced technology for separation of concerns (SOC), which provides explicit concepts to modularize the crosscutting concerns and compose these with the system components. This course will provide an in-depth analysis of this advanced separation of concerns paradigm and teach the state-of-the-art AOSD techniques. The important topics in this course are the following:

  • separation of concerns;

  • software evolution problems;

  • examples of crosscutting aspects;

  • composition anomalies.

  • aspect-oriented programming

  • aspect-oriented design;

  • aspect-oriented modeling;

  • aspects at the requirements and architecture design level;

  • reflection and delegation techniques;

  • design space modeling

Prerequisites

It is -highly- recommended that you have followed a course on object-oriented software development, know the fundamental object-oriented concepts, have sufficient knowledge on UML, and have sufficient programming skills in Java. In addition, this course will be basically of benefit for the students who would like to do research in software engineering.

ENTER

 

Sit quietly, and listen for a voice that will say, 'Be more silent.',  
- Rumi