Présentation du génie logiciel
Voyons d'abord ce que signifie le génie logiciel. Le terme est composé de deux mots, logiciel et ingénierie.
Software est plus qu'un simple code de programme. Un programme est un code exécutable, qui sert à des fins de calcul. Le logiciel est considéré comme une collection de code de programmation exécutable, de bibliothèques associées et de documentations. Le logiciel, lorsqu'il est conçu pour une exigence spécifique, est appelésoftware product.
Engineering d'autre part, il s'agit de développer des produits, en utilisant des principes et des méthodes scientifiques bien définis.
Software engineeringest une branche d'ingénierie associée au développement de produits logiciels en utilisant des principes, méthodes et procédures scientifiques bien définis. Le résultat du génie logiciel est un produit logiciel efficace et fiable.
Définitions
IEEE définit le génie logiciel comme:
(1) L'application d'une approche systématique, disciplinée et quantifiable du développement, de l'exploitation et de la maintenance des logiciels; c'est-à-dire l'application de l'ingénierie au logiciel.
(2) L'étude des approches comme dans la déclaration ci-dessus.
Fritz Bauer, un informaticien allemand, définit le génie logiciel comme:
L'ingénierie logicielle est l'établissement et l'utilisation de principes d'ingénierie solides afin d'obtenir des logiciels économiquement fiables et fonctionnant efficacement sur des machines réelles.
Evolution du logiciel
Le processus de développement d'un produit logiciel utilisant des principes et des méthodes de génie logiciel est appelé software evolution. Cela comprend le développement initial du logiciel, sa maintenance et ses mises à jour, jusqu'à ce que le produit logiciel souhaité soit développé, qui satisfasse les exigences attendues.
L'évolution commence par le processus de collecte des exigences. Après quoi, les développeurs créent un prototype du logiciel prévu et le montrent aux utilisateurs pour obtenir leurs commentaires au début du développement du produit logiciel. Les utilisateurs suggèrent des changements, sur lesquels plusieurs mises à jour et maintenance consécutives continuent également de changer. Ce processus change pour le logiciel d'origine, jusqu'à ce que le logiciel souhaité soit accompli.
Même une fois que l'utilisateur a souhaité le logiciel en main, les progrès de la technologie et les exigences changeantes obligent le logiciel à changer en conséquence. Il n'est pas possible de recréer un logiciel à partir de zéro et de répondre individuellement aux exigences. La seule solution réalisable et économique consiste à mettre à jour le logiciel existant afin qu'il corresponde aux dernières exigences.
Lois d'évolution logicielle
Lehman a donné des lois pour l'évolution des logiciels. Il a divisé le logiciel en trois catégories différentes:
- S-type (static-type) - Il s'agit d'un logiciel qui fonctionne strictement selon des spécifications et des solutions définies . La solution et la méthode pour y parvenir, toutes deux sont immédiatement comprises avant le codage. Le logiciel de type s est le moins sujet aux modifications, c'est donc le plus simple de tous. Par exemple, programme de calculatrice pour le calcul mathématique.
- P-type (practical-type) - Il s'agit d'un logiciel avec une collection de procédures. Ceci est défini par exactement ce que les procédures peuvent faire. Dans ce logiciel, les spécifications peuvent être décrites mais la solution n'est pas évidente instantanément. Par exemple, un logiciel de jeu.
- E-type (embedded-type) - Ce logiciel fonctionne étroitement comme l'exigence de l' environnement du monde réel . Ce logiciel a un haut degré d'évolution car il y a divers changements dans les lois, les taxes, etc. dans les situations du monde réel. Par exemple, un logiciel de trading en ligne.
Évolution du logiciel E-Type
Lehman a donné huit lois pour l'évolution du logiciel E-Type -
- Continuing change - Un système logiciel de type E doit continuer à s'adapter aux changements du monde réel, sinon il devient progressivement moins utile.
- Increasing complexity - Au fur et à mesure qu'un système logiciel de type E évolue, sa complexité a tendance à augmenter à moins que des travaux ne soient effectués pour le maintenir ou le réduire.
- Conservation of familiarity - La familiarité avec le logiciel ou les connaissances sur la façon dont il a été développé, pourquoi il a été développé de cette manière particulière, etc. doivent être conservés à tout prix, pour mettre en œuvre les changements dans le système.
- Continuing growth- Pour qu'un système de type E destiné à résoudre un problème commercial, sa taille de mise en œuvre des changements augmente en fonction des changements de style de vie de l'entreprise.
- Reducing quality - Un système logiciel de type E décline en qualité à moins d'être rigoureusement entretenu et adapté à un environnement opérationnel changeant.
- Feedback systems- Les systèmes logiciels de type E constituent des systèmes de rétroaction multi-boucles et multi-niveaux et doivent être traités comme tels pour être modifiés ou améliorés avec succès.
- Self-regulation - Les processus d'évolution du système de type E s'autorégulent avec la distribution des mesures de produit et de processus proche de la normale.
- Organizational stability - Le taux d'activité global effectif moyen dans un système de type E en évolution est invariant sur la durée de vie du produit.
Paradigmes logiciels
Les paradigmes logiciels font référence aux méthodes et aux étapes qui sont prises lors de la conception du logiciel. De nombreuses méthodes sont proposées et sont en cours de travail aujourd'hui, mais nous devons voir où se situent ces paradigmes dans l'ingénierie logicielle. Ceux-ci peuvent être combinés en différentes catégories, bien que chacune d'elles soit contenue l'une dans l'autre:
Le paradigme de programmation est un sous-ensemble du paradigme de conception de logiciel qui est en outre un sous-ensemble du paradigme de développement de logiciel.
Paradigme de développement logiciel
Ce paradigme est connu sous le nom de paradigmes d'ingénierie logicielle où tous les concepts d'ingénierie relatifs au développement de logiciels sont appliqués. Il comprend diverses recherches et la collecte des exigences qui aident le produit logiciel à se construire. Cela consiste en -
- Recueil des exigences
- Conception de logiciels
- Programming
Paradigme de conception de logiciel
Ce paradigme fait partie du développement logiciel et comprend -
- Design
- Maintenance
- Programming
Paradigme de programmation
Ce paradigme est étroitement lié à l'aspect programmation du développement logiciel. Ceci comprend -
- Coding
- Testing
- Integration
Besoin de génie logiciel
Le besoin de génie logiciel survient en raison du taux plus élevé de changement des exigences des utilisateurs et de l'environnement sur lequel le logiciel fonctionne.
- Large software - De même, il est plus facile de construire un mur que de construire une maison ou un bâtiment, car la taille du logiciel devient grande, l'ingénierie doit faire un pas pour lui donner un processus scientifique.
- Scalability- Si le processus logiciel n'était pas basé sur des concepts scientifiques et techniques, il serait plus facile de recréer un nouveau logiciel que de mettre à l'échelle un logiciel existant.
- Cost- Comme l'industrie du matériel a montré ses compétences et son énorme fabrication, le prix du matériel informatique et électronique a baissé. Mais le coût du logiciel reste élevé si le processus approprié n'est pas adapté.
- Dynamic Nature- La nature toujours croissante et adaptative des logiciels dépend énormément de l'environnement dans lequel l'utilisateur travaille. Si la nature du logiciel change constamment, de nouvelles améliorations doivent être apportées au logiciel existant. C'est là que le génie logiciel joue un bon rôle.
- Quality Management- Un meilleur processus de développement logiciel fournit un produit logiciel meilleur et de qualité.
Caractéristiques d'un bon logiciel
Un produit logiciel peut être jugé en fonction de ce qu'il offre et de sa capacité à être utilisé. Ce logiciel doit satisfaire pour les raisons suivantes:
- Operational
- Transitional
- Maintenance
On s'attend à ce qu'un logiciel bien conçu et conçu présente les caractéristiques suivantes:
Opérationnel
Cela nous indique à quel point le logiciel fonctionne bien dans les opérations. Il peut être mesuré sur:
- Budget
- Usability
- Efficiency
- Correctness
- Functionality
- Dependability
- Security
- Safety
De transition
Cet aspect est important lorsque le logiciel est déplacé d'une plateforme à une autre:
- Portability
- Interoperability
- Reusability
- Adaptability
Entretien
Cet aspect explique dans quelle mesure un logiciel a les capacités de se maintenir dans un environnement en constante évolution:
- Modularity
- Maintainability
- Flexibility
- Scalability
En bref, l'ingénierie logicielle est une branche de l'informatique, qui utilise des concepts d'ingénierie bien définis nécessaires pour produire des produits logiciels efficaces, durables, évolutifs, dans le budget et dans les délais.