3 research outputs found

    A framework to improve the architecture quality of software intensive systems

    Get PDF
    Over the past decade, the amount and complexity of software for almost any business sector has increased substantially. Unfortunately, the increased complexity of software in the systems to be built has often lead to a significant mismatch between the planned and the implemented products. One common problem is that system-wide quality attributes such as safety, reliability, performance, and modifiability are not sufficiently considered in software architecture design. Typically, they are addressed in an ad-hoc and unstructured fashion. Since rationales for architectural decisions are frequently missing, risks associated with those decisions can be neither identified, nor mitigated in a systematic way. Consequently, there is a high probability that the resulting software architecture fails to meet business goals and does not allow the building of an adequate system. This work presents QUADRAD, a framework for Quality-Driven Architecture Development. QUADRAD is capable of improving architecture quality for software-intensive systems in a systematic way. It supports the development of architectures that are optimized according to their essential quality requirements. Such architectures permit the building of systems that are better aligned to the principal market needs and business goals. QUADRAD is complemented by the Architecture Exploration Tool (AET), which supports architecture evaluations and helps in documenting the fundamental design decisions of an architecture. QUADRAD has been validated in three industrial projects. For each of these projects the architecture quality could be significantly increased. The results confirm the hypothesis of this work and demonstrate how critical problems in the transition from requirements to architecture design can be mitigated

    Vers une approche automatique pour l'extraction des règles d'affaires d'une application

    Get PDF
    Les compagnies font face à d'énormes coûts pour maintenir leurs applications informatiques. Au fil des ans, le code de ces applications a accumulé des connaissances corporatives importantes (règles d'affaires et décisions de conception). Mais, après plusieurs années d'opération et d'évolution de ce code, ces connaissances deviennent difficiles à récupérer. Les développeurs doivent donc consacrer beaucoup de leur temps à l'analyser: une activité connue sous le nom de \ud « compréhension du logiciel ». Comme il a été estimé que cette activité accapare entre 50 % et 90 % du travail d'un développeur, simplifier le processus de compréhension du logiciel peut avoir un impact significatif dans la réduction des coûts de développement et de maintenance. L'une des solutions au problème de compréhension du logiciel est la rétro-ingénierie. Celle-ci est le processus d'analyse du code source d'une application pour (1) identifier les composantes de l'application et les relations entre ces composantes et (2) créer une représentation de haut niveau de l'application. Plusieurs approches ont été proposées pour la rétro-ingénierie ; cependant, la représentation abstraite du code source extraite par la plupart de ces approches combine la logique d'affaires de l'application et son architecture (ou son infrastructure). Dans ce mémoire, nous présentons une nouvelle approche qui permet d'analyser le code source d'une application orientée objet afin d'en extraire un modèle abstrait ne décrivant que les règles d'affaires de cette application. Ce modèle prend la forme d'un diagramme de classes UML, présentant les classes d'affaires de cette application ainsi que les relations entre ces classes. Cette approche a été validée sur plusieurs systèmes (écrits en Java) de différentes tailles. L'approche donne de bons résultats pour les systèmes possédant une bonne architecture et un bon style de programmation. Dans le cas contraire, les résultats sont moins convaincants
    corecore