Livres de Génie logiciel


Conception et programmation orienté objet

img du livre

Ce livre ne s'adresse pas à un langage en particulier. C'est un livre de référence pour la création de logiciel. Une excellente base de ce qui est nécessaire de connaitre lors du développement d'une application est écrit dans ce bouquin. L'auteur explique en plusieurs étapes et méthodes la façon de développer un logiciel pour qu'il réponde aux normes les plus strictes.

Il explique d'une façon très intelligente la POO. Il explique le pourquoi des choses. Les principes et les exemples utilisent le langage eiffel. C'est le livre par excellence pour la POO.


Designing the User Interface

img du livre

Ce livre aborde la création d'interface graphique de façon très complète. Plusieurs facteurs doivent être pris en compte afin de créer une interface graphique: public visé, expérience, domaine relié, matériel utilisé...

Beaucoup de livre existe sur la programmation, mais sur la conception d'interface graphique, il en existe beaucoup moins, alors que cette partie devient de plus en plus importante.

Un historique ainsi que des concepts plus novateurs encore très peu répandus y sont discutés. L'auteur aborde l'aspect physiologique de l'être l'humain et l'impact engendré sur la création d'interface. Plusieurs exemples sur de bonne interface et de mauvaise interface sont présenté.

On y traite de divers concepts afin de diminuer les temps d'apprentissage de l'usager. Beaucoup d'exemples concrets y sont traités.

En bref, les concepts clé y sont traités: uan, klm, sémaphore, gestion, le matériel, la documentation... C'est un livre assez avancé qui s'adresse aux gens désirant de mieux comprendre cette facette du développement logiciel.


Conception de bases de données

img du livre

Ce livre s'adresse aux gens devant concevoir une base de données. Plusieurs exemples sont expliqués afin de mieux cerner les besoins de l'usager, intégrer les règles de gestion et modéliser les données et processus.

Beaucoup de diagrammes et d'illustrations facilitent la compréhension des concepts et méthodes présentés. Les non-initiés apprécieront que les concepts et commandes du SQL soient aussi bien expliqués en détail. Beaucoup de conseils sont donnés par les auteurs.

Le cycle complet de conception de base de données y est présenté, de l'analyse jusqu'à la maintenance. Beaucoup d'exemples sont présentés.

Ceux ayant déjà de très bonne connaissance en SQL trouveront surement ce livre moins utile, mais pourra servir à se remémorer certains principes oubliés


Software Engineering: Theory and Practice

img du livre

Ce livre introduit les concepts du génie logiciel. Le développement avec l'approche procédurale et orienté objet y sont discuté.

L'emphase du livre est mise sur la modélisation. Les concepts montrés sont appuyés par deux exemples: un système d'information et un système temps réel.

En plus de cet aspect, la planification et la gestion de projet y fait partie. L'analyse chez le client afin de pouvoir définir les spécifications, le design du système ainsi que les tests font partie des chapitres que couvre ce livre.

Un livre très complet qui permet de faire le pont entre la théorie et la pratique.


Le développement de systèmes d'information

img du livre

Cet ouvrage met l'emphase sur l'étape d'analyse du système. Des méthodes sont présentées afin d'améliorer les processus d'affaire et de développement du système. Les méthodes employés peuvent être vraiment utile, même si je trouve qu'elles sont souvent sous-utilisés.

Plusieurs méthodes pouvant être utilisées par les analystes: étude préliminaire, analyse de besoin, modélisation, normalisation des données... Ce livre permet de bien débuter dans l'analyse des systèmes. De mauvais processus occasionnent un système mal adapté au besoin du client. Le livre commence par présenter des façons de bien analyser les processus existants, les améliorer et créer un système. Beaucoup d'exemples complètent les concepts présentés dans le livre. Les méthodes de travail présentées dans ce livre devraient être appréciées par quiconque devant développer un système.

Le genre de méthodes employés est très intéressante pour les systèmes de gestions.

C'est un livre à livre pour ceux qui veulent améliorer leur analyse informatique. Il m'est jamais été donné d'avoir autant d'exemple sur cette notion dans un livre


Software Architecture in Practice

img du livre

Ce livre introduit les concepts de base de l'architecture logicielle. L'architecture du logiciel est comme la fondation d'une maison, c'est la base. Un mauvais départ aura des répercussions si aucun changement n'est apporté. Il permet d'élaborer la base du système afin qu'il réponde à certain critère donné.

Ce livre présente différente architecture, les avantages et inconvénients de chacune. Un exemple sur l'aviation est présenté tout au long du livre. Les auteurs mettent l'emphase sur la période de conception de l'architecture, sur la création et l'analyse de l'architecture.

La réutilisation d'architecture et le passage à une autre architecture y sont discutés. Ces concepts font partis de plusieurs chapitres du livre. Ce livre permet de voir le développement d'un système d'une autre façon. Il permet de mieux comprendre l'importance d'élaborer de bonne base afin de limiter les problèmes possibles et de pouvoir réutiliser les bases créées.

Il est nécessaire d'avoir une certaine base en informatique afin d'apprécier ce livre à ça juste valeur. Ce n'est pas un livre aisé, il peut servir de référence lors de la l'architecture d'une application. Il sera alors utile de relire certain passage afin de répondre au spécification désiré.


A First Course in Database Systems

img du livre

Ce livre s'adresse au débutant en base de données soucieux de connaitre la base théorique.

Un peu de conception est discuté, mais l'emphase du livre est mise sur l'implémentation de base de données. Chaque concept apporte son lot d'exemple qui facilite énormément la compréhension de passage plus complexe telle que l'algèbre relationnelle.

Le livre passe au travers du langage SQL. On présente souvent la méthode de l'algèbre relationnelle et ensuite son équivalent SQL ce qui permet de mieux comprendre les concepts appris, même si la compréhension de l'algèbre n'est pas requise.

À chaque chapitre, le lecteur est invité à faire les exercices présentés. Des concepts plus avancés tels que la récursion ainsi que le SQL3 sont aussi couverts.


Les cahiers du programmeur Swing

img du livre

Ce livre aborde plusieurs aspects du génie logiciel: patron, uml, test, outils de gestion du code. L'approche de l'auteur consiste à montrer par l'exemple est excellente. L'auteur explique différentes étapes pour la création d'un logiciel.

L'application développé est un logiciel d'architecture et représente bien une application réel et non une application bidon. Des annotations sont omniprésentes dans ce livre afin de clarifier certains points.

Par exemple les différences en Swing et SWT. En plus d'apprendre différent concept, l'auteur explique comment utiliser les composants JTree, JTable. L'api swing y est bien présenté. Le patron MVC est employé. Il est plutôt rare d'avoir un exemple aussi complet qui utilise ce patron.

Ce livre permettra aussi de mieux découper un projet. Le livre utilise une approche XP, comme dans un vrai projet. Certaine personne se pose des questions, à partir de ça , une certaine façon de faire est utilisé. Par la suite, il est montré si cette façon était bonne ou mauvaise.

Cet un livre qui montrer les bonnes approches pour développer un système informatique. Ce livre n'a pas d'équivalent. Enfin un livre qui combine la théorie à la pratique.


97 Things Every Programmer Should Know

img du livre

Ce livre est composé de 97 bonnes pratiques que tout développeur devrait connaître. Les astuces sont présentées par des programmeurs expérimentés. Elles sont courtes, mais précises. Ce n'est pas pas nécessairement des trucs sur la façon de coder, mais bien des idéologies à mettre en place afin d'arriver à produire du meilleur code, avoir un esprit plus rigoureux qui permettra de résoudre un problème donné de façon plus optimale.

Ce ramassis d'astuces permettra à quiconque du débutant à l'expert de parfaire ses connaissances dans l'art du développement. Au lieu de prendre des conseils à droite et à gauche et qui prendrait plusieurs années, ici on a l'essentiel qui est condensé.

Par exemple, on y dit qu'il est est important de bien maitriser son ide, savoir estimer, améliorer son code en enlevant le superflu. Ce livre présente plusieurs facettes du génie logiciel.

C'est un livre à posséder et à relire.


Language Implementation Pattern

img du livre

Ce livre présente différents patrons utilisés pour l'interprétation, analyse et la traduction de langage de programmation. Le livre utiliser ANTLR afin d'aller à l'essentiel et réduire la complexité. Les différentes étapes de la syntaxe du langage à l'exécutable sont passées en revue.

La première partie est consacrer au parsing le langage différente technique sont présenté tel que "backtracking, memoizin, predicated"... La deuxième partie consiste à analyser ce qui a été lu. La troisième partie est liée à la création d'interpréteur (haut niveau et bytecode). La dernière partie consiste à traduire à un langage à un autre.

Ce livre permettra à celui qui veut créer un langage de mieux décerner le patron qu'il pourra utiliser. Certains patrons sont plus adaptés à certains types de syntaxe. Le lecteur pourra avoir une idée pour implémenter un interpréteur pour un langage dynamique.

La traduction d'un langage à un autre permet grâce à l'exemple d'avoir une meilleure idée de la façon de faire pour un langage plus complexe.

J'ai trouvé que les explications n'étaient pas toujours claires et manquaient d'exemple réellement concret. Néanmoins, il constitue une excellente entrée pour quiconque veut implémenter un langage de programmation.

Peu de livres présentent d'une façon si épurée autant de concept, ce livre fait moins de 400 pages. La concurrence fait souvent plus du double ou triple et est axé trop souvent sur la théorie.

C'est un livre à compléter par un livre plus axé sur la pratique.


Programming Language Processors in Java

img du livre

Programming Language Processors in Java fournie diverses techniques pour concevoir un langage de programmation. Ce livre comporte moins de 450 pages et comporte de multiple exemples pratiques.

Des exemples concrets pour les différentes sections du livre

  • Langage processeur
  • Compilation
  • Analyse synxtaxique
  • Analyse contextuel
  • Géneration de code
  • Interpretation
sont présentés et les liens avec la théorie sont très claire.

Les différents chapitres peuvent être lu de façon indépendant ce qui permet d'alléger la lecture et de la rendre plus accesible. Les auteurs ne tombent pas dans le piège d'être trop théorique. Les exemples permettent de mieux comprendre l'aspect théorique et de se faire de meilleur idée sur d'autre approche d'implémentation possible.

Les analyses de type LL, LR sont présentés et permettent d'avoir une meilleure idées de laquelle employés selon le langage qu'on cherche à créer ou bien à analyser.

Une étude de cas est utilisé en employant le langage Triangle. Il est ainsi possible de comprendre les différentes parties du compilateur qui est fait en Java pour ce langage. Le tout en employant de bonne pratiques du génie logiciel.Ce langague est utilisé pour tous les chapitres.

Divers algorithmes sont présentés pour chaque section du livre.

Le code java employé n'est pas parfait mais il reste de très bonne augure.

Un chapitre peut s'avérer intéressant pour ceux qui n'ont pas de connaissance sur l'architecture de base des cpu. Il permet en autre de comprendre les variables sont mis sur la pile, comment les paramètres sont envoyés au fonction. Ce chapitre est très instructif pour la création d'une machine virtuelle.

L'auteur a su bien dosé chaque aspect, il n'a pas entré dans des détails trop futile.

Après avoir lu le livre, le lecteur pourra être en mesure de créer son propre langage de programmation ou de faire un interpréteur de commande. Surement le livre idéal si on veut apprendre en codant.