
This paper proposes a methodology for specifying and verifying real time schedulers using the B method. It is based on the refinement mechanism. We introduce successively the notions of scheduling and time. After having specified time management through stopwatches, a refinement introduces the notion of clocks. The obtained B machine can thus be considered as a timed automaton which refines the initial specification.
In spite of its expressive capacity, UML does not transport in itsef a a very precise semantics to describe software architectures. We recommend an opening of UML on the formal ADL Wright via our W-UML profile. Moreover, in order to more analyze architectural descriptions as Wright, we propose a systematic approach of translation of Wright towards Ada. This allows the use of the tools for formal verification of the concurrent programs associated Ada such as FLAVERS in order to analyze and reason formally on the architectures described initially in W-UML.
L'industrie du logiciel tente de produire des systemes a un rythme toujours plus rapide tout en restant previsible dans les temps de production et la qualite des systemes produits. Pour ce faire, beaucoup de nouvelles approches ont ete proposees, telles que les lignes de produits logiciels, le developpement generatif ou les usines logicielles. Dans le but d'aider les neophytes a s'y retrouver, nous avons regroupe dans cet article quelques notions de bases. Nous presenterons les trois concepts avec leurs principales caracteristiques. Nous les comparerons aussi les un aux autres pour mieux comprendre leurs specificites. Finalement, nous citerons les outils et nous proposerons quelques references actuelles pour aider les lecteurs interesses e rechercher plus d'information sur le sujet.
The design of a Software Product Line (SPL) is based on the identification of common and variable parts of the members of the line. The common parts (commonalities) are a basis on which variable parts (variabilities) are grafted to derive specific products. This paper discusses requirements modeling of SPL systems. Variabilities and commonalities need to be identified, composed and verified early in the development life cycle. We propose extending the use-case model with a relation called «variability». This relationship is a specialization of a relationship introduced for aspect-oriented modeling of use cases. A composition mechanism allows the derivation of executable behavior models for each member of a SPL by integrating common elements with variable elements.
La traçabilité est la possibilité de relié entre eux tous les artefacts produits lors du développement d'un logiciel, des besoins jusqu'au code.Dans le cadre des lignes de produits logiciels, le problème de la traçabilité est accrut par certaines spécificités de cette méthode de développement.Dans cet article nous discutons les problèmes liés à la traçabilité dans les lignes de produits logiciels et proposons une catégorisation des liens de traçabilité.Un modèle de gestion de la traçabilité en présence d'incertitude est aussi présenté.ABSTRACT.Traceability is defined as the possibility to correlate the various artefacts (from requirement to source code) generated when developing a software.In the context of software product line development, the problem is made even harder due to some characteristics specific to this software development approach.In this paper we discuss these problems specific to traceability for software product line development.We propose a taxonomy of traceability links.We also present a model to manage traceability of design decisions in the presence of uncertainty.
De nombreuses architectures logicielles ont été proposées dans le cadre de la simulation centrée individu, notamment à travers des plates-formes parfois très abouties.Néanmoins, il n'y a pas dans ces plates-formes de découpage logiciel entre les agents, leurs comportements, et le processus de sélection d'action.Nous proposons au contraire une architecture où les interactions sont réifiées indépendamment des agents qui les utilisent.Un agent peut alors subir ou effectuer un ensemble quelconque d'interactions qui n'ont pas été spécifiquement développées pour lui.Outre la réutilisabilité des interactions, cette architecture logicielle a l'avantage, à l'instar des systèmes experts, de séparer le déclaratif du procédural, donc de faciliter à la fois la conception et la montée à l'échelle dans la richesse des comportements.ABSTRACT.This article deals with the software architecture for individual-centered simulations, whithin which many entities interact one with another.Many software architecture have been developped in this context, especially many advanced -but domain specific -frameworks.Yet those frameworks lead to tight software dependencies between agents, behaviors and action selection mechanisms.We propose an architecture where interactions are reified regardless of agents using them.An agent may perform or undergo a set of interactions which are not specifically developped for it.Thus most interactions can be re-used in many contexts.In addition, this architecture clearly separates data from processing, and thus makes the design of simulations easier.Moreover, this new approach enables programmers to build simulations with a large number of different behaviors at the same time.
Nous proposons une aide au diagnostic et a la correction de specifications a partir du retour des outils de verification. L'approche est validee dans le cadre du developpement de specifications par assemblage de composants et de la verification de l'interoperabilite sur le plan des protocoles entre les differents composants utilises, ceux-ci n'etant ni modifies, ni substitues. Les specifications sont decrites en termes de diagrammes UML qui sont ensuite transformes en B, permettant de disposer des outils de verification associes. La correction prend en compte une typologie des erreurs, une mauvaise utilisation possible d'un composant, la non conformite entre les differentes specifications du systeme et le composant responsable de l'erreur diagnostiquee.
Software architecture modeling and representation are a main phase of the development process of complex systems. In fact, software architecture representation provides many advantages during all phases of software life cycle. Nevertheless, for many systems, like legacy or eroded ones, there is no available representation of their architectures. In order to benefit from this representation, we propose, in this paper, an approach called ROMANTIC which focuses on extracting a component-based architecture of an existing object-oriented system. The main idea of this approach is to propose a quasi-automatic process of architecture recovery based on the quality characteristics of an architecture by formulating it as a search-based problem. This last acts on the space composed ofall possible architectures abstracting the object-oriented system.
Le déploiement de systèmes distribués met en jeu de nombreuses technologies hétérogènes.L'administrateur système doit 1) maîtriser le déploiement de chaque logiciel 2) l'adapter aux propriétés des machines, et 3) l'exécuter en respectant l'ordre des dépendances.Ces tâches sont fortement propices aux erreurs.Dans cet article, nous présentons DeployWare, une approche à base de modèles pour le déploiement de systèmes distribués complexes.Cette approche repose sur un méta-modèle en deux parties.La première permet de décrire les propriétés, les dépendances, et actions à effectuer pour déployer des logiciels.La seconde permet d'assembler des instances de logiciels.Ces deux parties sont réalisées de manière à rendre possible la validation comportementale des procédures de déploiement et des systèmes.Les modèles DeployWare sont projetés vers une plate-forme d'exécution à base de composants qui gère automatiquement l'hétérogénéité des machines et l'orchestration des dépendances.ABSTRACT.Deployment of distributed systems involves many heterogeneous technologies.The system administrator has to 1) master the deployment of each technology 2) adapt it to machine properties 3) execute it in respect with order dependencies.These tasks are strongly prone to errors.In this article, we present DeployWare, a model-based approach for complex distributed systems deployment.This approach relies on a metamodel split in two parts.The first allows to describe properties, dependencies, and actions to perform to deploy software.The second allows to compose many software instances.This metamodel allows some behavioural deployment validations to be performed.DeployWare models can be projected onto a component-based execution platform which manages automatically machine's heterogeneity and orchestration of dependencies.
RESUME. Afin de faire face a la complexite du logiciel due a la variabilite de ses environnements et de ses utilisations, l’ingenierie des lignes de produits permet d’important gains en termes de couts et de qualite de developpement en systematisant la reutilisation d’elements communs. Neanmoins, les approches actuelles manquent de flexibilite dans la prise en compte des exigences particulieres a un utilisateur. Nous illustrons ici comment, en utilisant des techniques d’ingenierie des modeles telles que la composition et la transformation et en les outillant dans l’environnement de metamodelisation Kermeta, il est possible de concilier flexibilite et efficacite lors de la derivation de produits.
Component-based software engineering proposes to build complex applications from COTS (Commercial Off-The-Shelf) organized into component markets. The main development effort is required in selection of the components that fit the specifie needs of an application. In this article, we propose a mechanism allowing the automatic selection of a component among a set of candidate COTS, according to functional and non-functional properties. This mechanism has been tested on an example using the ComponentSource component market. MOTS-CLES : selection de composants logiciels, composants sur etagere, comparaison fonctionnelle et non fonctionnelle, composant recherche, indice de satisfaction.
Les plates-formes dynamiques de services permettent d'executer simultanement plusieurs composants fournis par des tiers. Ceci apporte une grande flexibilite dans leur utilisation, aussi bien en environnements a ressources limitees que dans le cas de serveurs d'applications. Toutefois, les implications pour la securite du systeme sont encore mal connues: quels sont les risques poses par l'execution de composants tiers pour la plate-forme d'execution ? pour les autres composants ? Comment y remedier ? A partir d'experimentations realisees sur la plate-forme Java/OSGi, nous proposons une classification des vulnerabilites des platesformes dynamiques de services. Deux cas sont consideres: les vulnerabilites de la plate-forme elle-meme, et les vulnerabilites des composants. Plusieurs solutions sont proposees pour resoudre ces vulnerabilites. Premierement, le Controle d'acces base Composants (CBAC, pour Component-based Access Control) permet de limiter l'acces a des methodes dangereuses de la plate-forme ou des composants. La validation est effectuee par analyse statique de code. La configuration est entierement declarative, ce qui rend cette approche extensible, et adaptee pour la protection de methodes fournies par des composants tiers. Deuxiemement, l'Analyse de Composants faibles (WCA, pour Weak Component Analysis) permet d'identifier les vulnerabilites des composants, par analyse statique de code egalement. CBAC et WCA exploitent la phase d'installation des composants pour realiser les verifications necessaires. Seuls les composants valides sont installes. WCA peut egalement etre utilise lors du developement pour ameliorer la qualite du code.
Software engineering becomes more and more important for the software industry (editors and services business). In facts the rules of the market have changed with international economic competition. In the same time the strategic importance of information systems and technical complexity has increase. It's time for this industry to revolve its state of mind and to build a new offer for its customers. This market opportunity is a new way of benefits for software companies.
Self-adapting software adapts its behavior in an autonomic way, by dynamically adding, suppressing and recomposing components, and by the use of computational reflection. One way to enforce software robustness while adding adaptative behavior is disposing of a formal support allowing these programs to be modeled, and their properties specified and verified. We propose FracL, a formal framework for specifying and reasoning about dynamic reconfiguration programs being written in a Fractal-like programming style. FracL is founded on first order logic, and allows the specification and proof of properties concerning either functional concerns or control concerns. Its encoding using the Focal proof framework, enabled us to prove FracL coherence and to obtain a mechanized framework for reasoning on concrete architectures.
This paper presents a state of the art of service oriented architectures and speciall how services adaptability is managed in this kind of open environments. Then, a summary notices the relevance of a component / agent mixed approach and the use of P2P (Peer-to-Peer) technologies. Taking into account this analysis, we introduce the main lines of the CompAAapproach. Finally, an experimentation in the area of collaborative learning on the Grid validates our approach.
De toutes les étapes qui constituent le processus de maintenance, l'étape de compréhension d'une application avant son évolution, et l'étape de vérification de sa progression et de sa non-régression après évolution sont de loin les plus coûteuses. Nous présentons une approche qui aide à diminuer les coûts associés à ces deux étapes pour des applications conçues à l'aide de composants. Elle propose de documenter formellement, à chaque étape du cycle de vie, les liens unissant les attributs qualité d'une application et les choix architecturaux qui leur sont dédiés. Lors d'une évolution, un outil d'assistance exploite cette documentation pour, d'une part, garantir sa mise à jour, et, d'autre part, notifier au développeur les effets possibles sur les exigences qualité des changements architecturaux qu'il réalise.ABSTRACT.Among all the stages which constitute the maintenance process, the comprehension of an application before its evolution, and regression testing after its evolution are by far the most expensive.We present an approach which helps to reduce the costs associated with these two stages for component-based software.It proposes to formally document at each stage of the software life cycle the links between quality attributes of an application and the architectural decisions implementing them.During an evolution, a tool uses this documentation, for guaranteeing on the one hand its update, and for notifying the developer of the possible effects of architectural changes on quality attributess he made on the other hand.
In this paper we propose an approach, both analytical and experimental, to analyze and predict change impact in object-oriented systems. We use a meta-model (PTIDEJ) to calculate the change impact. Data obtained from real systems are exploited to empirically study causality hypotheses between some software internal attributes and change impact. To evaluate our approach, an empirical study was conducted on a real system (BOAP). This study targeted a correlation hypothesis between coupling and change impact for a specific change starting from coupling metrics. The hypothesis was studied using machine-learning techniques. Results showed that import coupling is by far the most influent factor for change impact.
Writing transformation rules is a complex task due to navigation constraints. Relaxing these constraints for the transformation time eases the rules conception. It may also be necessary, for example to transform or to use graphical editor, to add features into domain metamodels. However, these features additions as well as the relaxation of the navigation constraints must be contained in a well defined context in order to authorize exchange of models between tools manipulating several variants of the same domain metamodel. In this article, we introduce the concept of morph that corresponds to a variant of the original domain metamodel and the concept of gene that specifies these variations. The notion of morph insures the interoperability of models. We also show how to perform these morph. An experimentation with EMF is also described
RÉSUMÉ. La réutilisation, l’évolution ou l’adaptation rapide du code d’une application figurent parmi les préoccupations fortes des entreprises. L’ingénierie des modèles tente d’apporter une solution en plaçant le modèle au centre du développement logiciel et en capturant le savoir-faire métier initialement décrit dans le code de l’application. Cette approche a l’avantage de rendre la description indépendante des plates-formes d’exécution. Notre objectif dans cet article est de présenter une synthèse de trois approches différentes pour la composition de modèles, de les évaluer par rapport aux critères mis en évidence par le réseau d’excellence AOSD-EUROPE pour en retirer des enseignements pertinents et ainsi faire de nouvelles propositions. L’évaluation met en évidence la capacité de chacune des approches à composer à la fois des préoccupations fonctionnelles et extra-fonctionnelles. ABSTRACT. The reuse, the evolution or the fast adaptation of the code of an application are among the strongest concerns of companies. Model engineering tries to bring a solution putting the model in the center of the software development and by capturing the business know-how initially described in the code of the application. This approach has the advantage to make the description independant of software platforms. Our objective in this paper is to present three different approaches for the composition of models, to evaluate them using the criteria proposed by the AOSD-EUROPE network of excellence in order to extract relevant information. From this evaluation, this paper provides new proposals. The evaluation aims at showing the capacity of each approach to support the composition of both functional and extra-functional concerns.