Modern computer games show potential not just for engaging and entertaining users, but also in promoting learning. Game designers employ a range of techniques to promote long-term ...
Modularity is one of the most important properties of a software design, with significant impact on changeability and evolvability. However, a formalized and automated approach i...
The rapidly expanding diversity of technology available at the nanoscale is disrupting the existing transistorcentric microelectronics design paradigm, resulting in nearly decade-l...
The implementation of software systems with large numbers of heterogeneous components calls for a powerful design methodology. Although several such methodologies have been propos...
An important goal of software engineering is to exploit commonalities in system design in order to reduce the complexity of building new systems, support largescale reuse, and pro...