Download Free Integration Des Activites De Preuve Dans Le Processus De Developpement De Logiciels Pour Les Systemes Embarques Book in PDF and EPUB Free Download. You can read online Integration Des Activites De Preuve Dans Le Processus De Developpement De Logiciels Pour Les Systemes Embarques and write the review.

En dépit de l'efficacité des méthodes formelles, en particulier les techniques d'analyse de modèles (model checking), à identifier les violations des exigences dans les modèles de conception, leur utilisation au sein des processus de développement industriel demeure limitée. Ceci est dû principalement à la complexité des modèles manipulés au cours de ces processus (explosion combinatoire) et à la difficulté de produire des représentations formelles afin d'exploiter les outils de vérification existants. Fort de ce constat, mes travaux de thèse contribuent au développement d'un volet méthodologique définissant les activités conduisant à l'obtention des artefacts formels. Ceux-ci sont générés directement à partir des exigences et des modèles de conception manipulés par les ingénieurs dans leurs activités de modélisation. Nos propositions s'appuient sur les travaux d'exploitation des contextes pour réduire la complexité de la vérification formelle, en particulier le langage CDL. Pour cela, nous avons proposé une extension des cas d'utilisation, afin de permettre la description des scénarios d'interaction entre le système et son environnement directement dans le corps des cas d'utilisation. Aussi, nous avons proposé un langage de spécification des exigences basé sur le langage naturel contrôlé pour la formalisation des exigences. Cette formalisation est opérée par transformations de modèle générant des propriétés CDL formalisées directement des exigences textuelles des cahiers des charges ainsi que les contextes CDL à partir des cas d'utilisations étendus. L'approche proposée a été instanciée sur un cas d'étude industriel de taille et de complexité réelles développées par notre partenaire industriel.
Ce livre s’adresse aux développeurs, concepteurs et intégrateurs de logiciels ainsi qu’aux chefs de projets et aux architectes. Avec la montée en charge du big data, et du cloud computing, la fiabilité des logiciels est plus importante que jamais. Concevoir du premier coup et sans aucune erreur un logiciel qui comporte plusieurs millions de lignes de code et plusieurs centaines de composants est évidemment impossible. La nécessité de faire des tests au cours des différentes phases de conception paraît évidente et pourtant, dans la pratique, les tests sont souvent négligés et relégués au second plan. L’objectif de cet ouvrage est triple : –– donner les bases et les bonnes pratiques pour concevoir et mener à bien des tests ; –– fournir un référentiel en termes de méthodes et de vocabulaire ; –– préparer la certification ISTQB du métier de testeur. Cette quatrième édition rend compte des évolutions dans la pratique des tests logiciels au cours des trois dernières années.
Concernant la partie logicielle des systèmes embarqués, on constate le besoin d’un modèle de la structuration du logiciel qui facilite le processus de développement, la capacité de faire évoluer le comportement du système lors de son exécution, afin de s’adapter aux changements de son environnement, et la prise en compte des limitations des ressources physiques des plates-formes d’exécution. L’utilisation de composants logiciels est une approche de conception qui, via l'abstraction des détails techniques, facilite la gestion de la complexité du logiciel. La question que nous nous posons est : comment les composants doivent être développés de façon à satisfaire les exigences liées aux fortes contraintes physiques et au besoin d’évolution du logiciel ? Pour y répondre, nous introduisons a notion de réification de composant. Une réification est une collection de données et de comportements qui encapsulent des aspects du composant à un moment précis de son cycle de vie. Nous proposons ensuite des techniques d’optimisation pour la génération du code « glue » qui assure l’interopérabilité des composants, afin de satisfaire les contraintes liées aux ressources limitées. Elles rendent possible la définition de niveaux d’optimisation pour chaque instance des entités du modèle à composants, ce qui nous permet de régler la performance du logiciel en fonction de ses besoins (extra) fonctionnels. Ensuite, nous définissons quatre profils d’évolution en fonction des caractéristiques d’évolution de chaque entité du modèle, et nous mettons en place des infrastructures d’évolution adaptées aux besoins d’évolution du système, couplées avec les exigences de performance du logiciel.
À l'heure actuelle, les dispositifs embarqués regroupent une grande variété d'applications, ayant des fonctionnalités complexes et demandant une puissance de calcul de plus en plus importante. Ils évoluent actuellement de systèmes multiprocesseur sur puce vers des architectures many-core et posent de nouveaux défis au développement de logiciel embarqué. En effet, Il a classiquement été guidé par les performances et donc par les besoins spécifiques des plates-formes. Or, cette approche s'avère trop couteuse avec les nouvelles architectures matérielles et leurs évolutions rapprochées. Actuellement, il n'y a pas un consensus sur les environnements à utiliser pour programmer les nouvelles architectures embarquées. Afin de permettre une programmation plus rapide du logiciel embarqué, la chaîne de développement a besoin d'outils pour la mise au point des applications. Cette mise au point s'appuie sur des techniques d'observation, qui consistent à recueillir des informations sur le comportement du système embarqué pendant l'exécution. Les techniques d'observation actuelles ne supportent qu'un nombre limité de processeurs et sont fortement dépendantes des caractéristiques matérielles. Dans cette thèse, nous proposons EMBera~: une approche à base de composants pour l'observation de systèmes multiprocesseurs sur puce. EMBera vise la généricité, la portabilité, l'observation d'un grand nombre d'éléments, ainsi que le contrôle de l'intrusion. La généricité est obtenue par l'encapsulation de fonctionnalités spécifiques et l'exportation d'interfaces génériques d'observation. La portabilité est possible grâce à des composants qui, d'une part, ciblent des traitements communs aux MPSoCs, et d'autre part, permettent d'être adaptés aux spécificités des plates-formes. Le passage à l'échelle est réussi en permettant une observation partielle d'un système en se concentrant uniquement sur les éléments d'intérêt~: les modules applicatifs, les composants matériels ou les différents niveaux de la pile logicielle. Le contrôle de l'intrusion est facilité par la possibilité de configurer le type et le niveau de détail des mécanismes de collecte de données. L'approche est validée par le biais de différentes études de cas qui utilisent plusieurs configurations matérielles et logicielles. Nous montrons que cette approche offre une vraie valeur ajoutée dans le support du développement de logiciels embarqués.
Dans cette these, nous nous sommes intéressés à la conception d'un environnement d'execution pour des applications réparties dynamiques. Nous avons défmi et utilisé le modèle des réseaux de processus distribués de Kahn, comme modèle de base de notre environnement d'exécution. L'extension du modèle de Kahn pour supporter la distribution a permis de faire le lien entre les systèmes distribués et les applications des réseaux de processus de Kahn (simulation des systèmes embarqués, application de traitement de signal, traitement vidéo, ...) ouvrant ainsi la voie à la construction d'applications de simulation dans un environnement distribué. Bien que le modèle des réseaux de Kahn soit le modèle de prédilection des applications de simulation, notre environnement n'est pas limité à ce type d'applications, et peut servir comme support d'exécution pour des applications où l'objectif derrière la distribution est l'amélioration des performances. La gestion des communications est l'un des points critiques dans de tels systèmes distribués, et notre approche ne néglige pas ce point. Elle permet d'optimiser les temps de transfert de données en utilisant la vectorisation, le recouvrement des calculs par les communications et l'équilibrage de charge. Ainsi, notre support reste aussi ouvert à des applications de haute performance dans un cadre de métacomputing. Nos travaux couvrent essentiellement trois facettes: 1. La simulation distribuée: nous avons proposé et développé un support d'exécution capable d'assurer le fonctionnement d'une application de simulation de systèmes embarqués dans un environnement réparti. La facilité de développement se traduit dans notre approche par l'utilisation d'une méthodologie à' base de composants, la transparence des communications et l'interactivité du déploiement. II. La dynamicité des systèmes distribués: bien que l'environnement soit motivé par la simulation de composants distribués dans un contexte de "cyber-entreprise", son domaine d'application ne se limite pas à la simulation distribuée. C'est ainsi qu'en plus des performances des communications et de la charge des processus, l'aspect dynamique de l'application distribuée a été pris en compte. Cette dynamicité que procure notre environnement est l'une des contributions principales de notre approche. III. Le traitement de signal: le langage Array-OL est dédié aux applications de traitement de signal et plus particulièrement aux applications de traitement de signal multidimensionnel. Nous avons proposé une projection du modèle Array-OL qui spécifie des dépendances de données vers le modèle des réseaux de processus qui est basé sur le flux de données. L'approche proposée combine la distribution de données et de tâches avec des exécutions de type pipeline et de type SPMD. De plus, l'application bénéficie de la dynamcité que procure notre support d'exécution.
Dans un processus d'ingénierie dirigée par les modèles (IDM), l'ingénieur modélise son système à l'aide d'une notation semi-formelle, le valide puis l'implante. L'étape de validation est cruciale pour les systèmes temps-réel répartis et embarqués (TR2E), pour s'assurer de leur bon fonctionnement logique ou temporel. Cependant, une démarche IDM n'est pas suffisante car elle n'indique pas comment utiliser les modèles pour faire des analyses. Il est nécessaire d'adopter une démarche d'Ingénierie Dirigée par les Vérifications et les Validations (IDV2) pour s'assurer que le système est correctement construit(vérification), et qu'il satisfait un ensemble de propriétés spécifiées en amont dans le processus de développement (validation). Cette thèse propose un processus de développement, de validation et de vérification basé sur des notations formelles, et dédié aux applications TR2E. Le langage AADL(Architecture Analysis and Design Language) est utilisé comme notation pivot. Le processus proposé prend en compte les aspects comportementaux de l'application et les aspects architecturaux de l'exécutif. Il repose sur des notations standardisées, pour faire face aux problèmes d'interopérabilités des outils mis en oeuvre. Notre démarche permet d'obtenir des retours aussi bien à propos de l'applicatif que de l'exécutif, et permet de corriger ou modifier les modèles dans un processus de développement itératif. Au cours de notre démarche, nous transformons les spécifications AADL vers différentes notations standardisées : les réseaux de Petri pour la validation de l'applicatif, la notation Z pour la vérification de l'exécutif utilisé, PolyORB.
Les activités de validation et vérification de modèles sont devenues essentielles dans le développement de systèmes complexes. Les efforts de formalisation de ces activités se sont multipliés récemment étant donné leur importance pour les systèmes embarqués critiques. Notre travail s'inscrit principalement dans cette voie. Nous abordons deux visions complémentaires pour traiter cette problématique. La première est une description syntaxique implicite macroscopique basée sur une ontologie pour aider les concepteurs dans le choix des outils selon leurs exigences. La seconde est une description sémantique explicite microscopique pour faciliter la construction de techniques de vérification compositionnelles. Nous proposons dans la première partie de cette thèse une ontologie pour expliquer et expliciter les éléments fondateurs du domaine que nous appelons VVO. Cette ontologie pourra avoir plusieurs autres utilisations : une base de connaissance, un outil de formation ou aussi un support pour le choix de la méthode à appliquer et l'inférence de correspondance entre outils. Nous nous intéressons dans la seconde partie de cette thèse à une formalisation dans un assistant à la preuve de l'introduction de composants dans un langage de modélisation et des liens avec les activités de validation et vérification. Le but est d'étudier la préservation des propriétés par composition : les activités de vérification sont généralement coûteuses en terme de temps et d'effort, les faire d'une façon compositionnelle est très avantageux. Nous partons de l'atelier formel pour l'Ingénierie Dirigée par les Modèles Coq4MDE. Nous suivons la même ligne directrice de développement prouvé pour formaliser des opérateurs de composition et étudier la conservation des propriétés par assemblage. Nous nous intéressons au typage puis à la conformité de modèles par rapport au métamodèle et nous vérifions que les opérateurs définis permettent de conserver ces propriétés. Nous nous focalisons sur l'étude d'opérateurs élémentaires que nous exploitons pour spécifier des opérateurs de plus haut niveau. Les préconditions des opérateurs représentent les activités de vérification non compositionnelles qui doivent être effectuées en plus de la vérification des composants pour assurer la postcondition des opérateurs qui est la propriété souhaitée. Nous concluons en présentant des perspectives pour une formalisation algébrique en théorie des catégories.
Nous nous sommes intéressés aux systèmes embarqués temps-réel critiques (SETRC) qui soulèvent des problématiques de criticité, de respect de contraintes temporelles et de disponibilité des ressources telles que la mémoire. Pour maîtriser la complexité de conception de ces systèmes, l'Ingénierie Dirigée par les Modèles (IDM) propose de les modéliser pour les analyser au regard de leurs exigences et pour générer en partie leur code d'exécution. Cependant ces deux phases doivent s'articuler correctement de sorte que le système généré respecte toujours les propriétés du modèle initialement analysé. Par ailleurs, le générateur de code doit s'adapter à de multiples critères : notamment pour assurer le respect des performances ou bien pour cibler différentes plates-formes d'exécution qui ont leurs propres contraintes et sémantiques d'exécution. Pour réaliser cette adaptation, le processus de développement requiert de faire évoluer les règles de transformation selon ces critères. Son architecture doit également de permettre de sélectionner les composants logiciels répondant à ces critères. Nous répondons à cette problématique en proposant un processus de génération s'appuyant sur l'IDM. Lorsque l'utilisateur a spécifié et validé un modèle de haut niveau, une transformation traduit automatiquement ce modèle en un second modèle détaillé proche du code généré. Pour assurer la conservation des exigences, le modèle détaillé est exprimé dans le même formalisme que le modèle initial de sorte qu'il reste analysable. Cette démarche détermine l'impact de la stratégie du générateur sur les performances du système final et permet au générateur de changer de stratégie, à une étape donnée, pour assurer le respect des contraintes du système. Pour faciliter le développement et la sélection de stratégies alternatives, nous proposons une méthodologie qui s'articule autour d'un formalisme pour l'orchestration des transformations, un ensemble de patrons de transformation (qui factorisent et généralisent les règles de transformation) et une adaptation de composants logiciels selon leur impact sur les performances. Nous avons mis en place ce processus au sein de l'environnement OSATE, pour lequel nous avons développé le framework RAMSES (Refinment of AADL Models for Synthesis of Embedded Systems). Nous l'avons expérimenté sur la génération des communications entre tâches pour lesquelles plusieurs stratégies d'implémentation ont été définies.
LES TRAVAUX DANS LE DOMAINE DES PROCESSUS LOGICIELS VISENT A DEFINIR DES METHODES ET DES OUTILS POUR GUIDER ET ASSISTER LES DEVELOPPEURS DANS LEURS ACTIVITES DE DEVELOPPEMENT. ILS PORTENT SUR LA DEFINITION DE MODELES DE PROCESSUS POUR DECRIRE LA DEMARCHE A SUIVRE ET SUR LA REALISATION D'ENVIRONNEMENTS APPELES ENVIRONNEMENTS CENTRES PROCESSUS LOGICIELS POUR EXECUTER CES MODELES. LES TRAVAUX ACTUELS S'ORIENTENT DE PLUS EN PLUS VERS L'INGENIERIE DES PROCESSUS PLUTOT QUE VERS L'INGENIERIE DU LOGICIEL. EN EFFET, LES PROCESSUS LOGICIELS SONT DE NATURE INSTABLE ET DOIVENT ETRE CONTROLES CONTINUELLEMENT. LA CONDUITE DES ACTIVITES HUMAINES IMPLIQUEES EST DIFFICILEMENT PREVISIBLE ET EST LAISSEE A L'INITIATIVE DES DEVELOPPEURS ECHAPPANT SOUVENT AU CONTROLE DU PROCESSUS. IL EST DONC IMPERATIF DE SE BASER SUR DES MOYENS QUI PERMETTENT DE SURVEILLER LE DEROULEMENT DES PROCESSUS. NOTRE ETUDE VISE LE SUPPORT A L'EXECUTION DES PROCESSUS LOGICIELS, ET LEUR OBSERVATION EN SE BASANT SUR LE CONTROLE ET LE SUIVI DE LEUR EXECUTION. NOUS PROPOSONS UN ENVIRONNEMENT CENTRE PROCESSUS LOGICIEL TEMPO+ POUR LE SUPPORT A LA MODELISATION, L'INSTANCIATION, L'EXECUTION ET L'OBSERVATION DES PROCESSUS. DANS LE BUT DE DETECTER LES DEFAUTS DES PROCESSUS A L'EXECUTION, NOUS INTRODUISONS LE CONCEPT DE VUE D'OBSERVATION QUI PERMET DE CONTROLER LES PARTIES DES PROCESSUS QUI ONT UN INTERET POUR LES OBSERVATEURS. LES VUES D'OBSERVATION SONT DEFINIES A LA DEMANDE DES UTILISATEURS ET INTEGREES DYNAMIQUEMENT A L'ENVIRONNEMENT D'EXECUTION. NOUS DEFINISSONS UNE INFRASTRUCTURE FONDEE SUR LE CONCEPT D'EVENEMENT POUR CAPTURER LES ETATS DES PROCESSUS ET SUR LE CONCEPT DE VUE POUR OBSERVER LEUR COMPORTEMENT.