טכניון מכון טכנולוגי לישראל
הטכניון מכון טכנולוגי לישראל - בית הספר ללימודי מוסמכים  
Ph.D Thesis
Ph.D StudentMishali Oren
SubjectUsing Aspects to Support the Software Process
DepartmentDepartment of Computer Science
Supervisor Professor Shmuel Katz
Full Thesis textFull thesis text - English Version


Abstract

Aspect-Oriented Programming (AOP) allows augmenting existing systems with additional functionality in a modular fashion by introducing new lan- guage types called aspects. In this research aspects are used to support the software process. Aspects encapsulating support for process methods and practices are defined, and integrated into a development environment to achieve better conformance with the desired way of work. The aspects identify significant events during the development process, and then take an appropriate action, e.g., provide real-time process guidance and training, enforce policies and standards, and automate procedures.

We found that many of the development events of interest are expressed in high-level domain terms, and often depend on several other low-level events. Since AspectJ, the most popular aspect-oriented language, is not capable of naturally treating such events, a dedicated software framework that is based on AspectJ was created to treat high-level events - the High- spectJ framework. High-level events are identified by specially structured event aspects, and other response aspects take an appropriate action. In addition, The framework provides extensive code generation facilities and reuse, and facilitates a layered definition of events, which allows viewing a system at multiple levels of abstraction.

The second research part is concerned with how to define adequate pro- cess support of this kind, i.e., support that is efective, correct, and adopted by the developers. The method we use is inspired from agile methodologies that advocate iterative software development, and emphasize the human aspect. Several related activities were conducted, where in the main one support for the Test-Driven Development practice (TDD) was implemented in an agile fashion, starting from basic and simple support that was itera- tively refined through several experiments done with student developers.