0% ont trouvé ce document utile (0 vote)
9 vues21 pages

Projet IFT 2255 : Suivi des déchets

Transféré par

Moussa Bosco
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues21 pages

Projet IFT 2255 : Suivi des déchets

Transféré par

Moussa Bosco
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Génie logiciel

Introduction

Louis-Edouard LAFONTANT
Courte bio.
• Étudiant au doctorat en informatique à l’UdeM
• Maitrise en informatique, spécialisé en génie logiciel
• Membre du GEODES – Groupe de recherche du
DIRO dédié au génie logiciel
• Intérêts: Interaction humain-machine (HCI),
Environnement dynamique, Modélisation,
Vulgarisation
• Travaux de recherche
• Domain-specific modeling
• Low-code development
• Projectional editing
 Gentleman (collab. avec E. SYRIANI)
Organisation du cours

Slides du cours et démos Annonces et Questions-réponses


Quiz et révisions Communication direct avec les enseignants
Remises des travaux Travail en équipe
Ressources et liens rapides Lien: [Link]

IFT 2255
www Plan de cours
Suivi de la semaine (calendrier + résumé)
Ressources et liens rapides
Lien: [Link]
Projet
Permettre à chacun de faire le suivi
de ces déchets domestiques
• 3 remises
• Remise 1: 10%
• Remise 2: 15%
• Remise 3: 25%
• Travail en équipe de 3 ou 4
• Langage de programmation: Java
• Rapport en HTML
• Visite d’un expert (bonus🤞)

Ceci☝️ est un vrai projet!


Génie logiciel
Qu’est-ce que c’est?
Qu’entend-on par
genie ou ingénieur?
L'habit ne fait pas le moine
Il faut observer la rigueur dans tout ce qu’on fait
Ce n’est pas
une question
de confiance,
mais de
compétences
Mauvaise ingénierie à de
graves conséquences
Génie
Rigueur et Garantie
• Méthodologie
• Outils
• Observation
• Analyse
• Conception
• Éthique
• …
• Esprit d’équipe & Communication
• Imagination & Créativité
Quelle est la nature
du logiciel?
Complexité

• Les programmes sont parmi les


systèmes les plus complexes
jamais créés
• Notre mémoire à court terme
peut accommoder ±7 choses
(Miller, 1956)
Programmes en nombre de ligne de codes

[Link]

13
Invisible

• Pouvez-vous toucher une classe


ou une fonction?
• Diffère des lois de la physique et
des mathématiques (continues)
• Pas moyen de représenter un
produit au complet
• Nos sens ne peuvent pas être
facilement utilisés pour
comprendre le logiciel
Discontinuité

• L’humain comprend facilement


les systèmes linéaires ou semi-
linéaires
• Les logiciels sont discontinus:
petits changements en entrée
résultent en un énorme
changement en sortie
• Le feedback est insuffisant pour
permettre à l’utilisateur
d’anticiper certains
comportements
Versatilité

• Logiciels évoluent et changent constamment


• Changement dans les besoins
• Ce qu’on savait hier peut être obsolète aujourd’hui
• Nouvelle/meilleure techno émerge continuellement (loi de Moore)

• Le logiciel est facile à modifier


• Mais la défi est de le modifier correctement
Complexité accidentelle

• Due aux technologies utilisées


• Imprévus de l’environnement
• Problèmes transitoires

Logiciel Complexité essentielle

• Complexité
• Versatilité
• Invisibilité
• Discontinuité
Origines
du Génie
logiciel
Rapport conférence 1968
Origines du génie logiciel
Naissance du
génie logiciel
Décrire: besoins, spécification de conception,
documentation

Implémenter: conception, programmation

Activités de
l’ingénieur Évaluer: test, vérification, validation, révision

logiciel Gérer: planification, échelonnage,


communication

Faire fonctionner: déploiement, installation,


maintenance

Common questions

Alimenté par l’IA

Software complexity is characterized by discontinuity, meaning small input changes can lead to significant output variations, unlike linear or semi-linear systems which humans more easily comprehend. This discontinous nature makes it challenging for users to predict software behavior and requires developers to ensure software can adapt to these unpredictable outcomes, thereby highlighting the need for rigorous testing and validation methods .

Software versatility poses challenges as it continuously evolves due to changing needs and emerging technologies, making it outdated rapidly. Developers address these challenges by designing software that is easily modifiable while ensuring changes are made correctly, requiring adept use of development tools and methodologies to manage constant technological advancements effectively .

Before the formalization of software engineering in the 1960s, software was often constructed haphazardly without a defined methodology, leading to programs that became increasingly complex. The diversity of programmers, such as hardware engineers and mathematicians, further complicated the development process. Additionally, the high cost of computer usage, which was more expensive than operator salaries, exacerbated these challenges .

Essential complexity arises from the inherent problems a software solution must solve, while accidental complexity stems from the implementation details and development processes. Distinguishing between the two is important because it helps developers focus on reducing accidental complexity through better tools and processes, thus allowing them to manage essential complexity more effectively .

Human cognition plays a significant role in understanding complex software, as our short-term memory is limited in handling numerous elements at once. Software design methodologies address this by employing techniques such as modular design and abstraction to align with human cognitive capabilities, enabling easier comprehension and interaction with complex systems .

The 1968 NATO conference proposed software engineering methodologies that laid the groundwork for modern practices by emphasizing the need for structured approaches such as requirements gathering, design specification, and robust testing. These early recommendations anticipated today's emphasis on systematic processes and tools used in software development to manage complexity and improve reliability .

Emerging technologies continually influence software engineering by introducing new tools and frameworks that can improve software functionality or development efficiency. Developers must remain adaptable by continuously updating their skills, understanding new patterns, and employing flexible development methodologies that allow quick integration of new technologies into existing systems while maintaining software integrity and user experience .

Emphasizing competence and ethics in software engineering is crucial because poor engineering can lead to severe consequences, such as software failures that may harm users or businesses. Neglecting these aspects could result in unreliable software, legal liabilities, and loss of user trust, underscoring the need for rigorous development processes and ethical standards .

The 1968 NATO conference was pivotal in recognizing software engineering as a distinct discipline, advocating for it to follow methodologies similar to traditional engineering fields. This formalization aimed to address the complexity of software development and involved major participants such as Dijkstra and Naur, who proposed guidelines to improve software development practices .

Low-code development and domain-specific modeling enhance modern software engineering practices by facilitating quicker development cycles and more tailored software solutions. Low-code platforms enable developers to create applications with minimal hand-coding, increasing efficiency, while domain-specific modeling provides frameworks that are finely tuned to specific application domains, thus improving both productivity and software reliability .

Vous aimerez peut-être aussi