Création de logiciels

Computer

La création d’un logiciel repose sur des idées conceptuelles précises et une mise en œuvre au moyen d’outils informatiques adaptés.

Recherche d’une idée de logiciel

Pour vendre un produit sur le marché, il est préférable que ce produit ne soit pas une copie plus ou moins déguisée d’un produit existant.
Cette règle est aussi valable pour les logiciels. Si nous créons un logiciel de traitement de texte comparable à MSWord avec quelques améliorations alors dès le début de la mise en vente, nous allons éveiller l’attention de la concurrence et il deviendra très difficile de percer sur les marchés.

Il n’est pas inutile d’effectuer une étude de marché concernant les logiciels. Les logiciels présents dans les différents magasins de logiciels sur internet permettent d’avoir un aperçu du marché. Ajoutons que des recherches sur internet peuvent donner des informations sur les ventes.

Généralement, il faut éviter de penser à des logiciels qui s’adressent à un public trop restreint, qui ne touchent que plusieurs centaines de personnes ou dont l’utilité laisse perplexe.
Par exemple, il ne faut pas espérer intéresser beaucoup d’utilisateurs avec un logiciel de mémorisation de phrases, qui enregistre dans un répertoire du texte saisi au clavier avec la date et l’heure.

Il faut aussi laisser tomber les idées de logiciels qui se rapprocheraient de logiciels gratuits ou fournis par défaut avec certains systèmes d’exploitation ou encore de certains logiciels devenus des exercices classiques de programmation dans les écoles d’informatiques.

Mais il y a parfois la chance d’avoir la bonne idée et au bon moment. Les meilleurs exemples illustrant ce dicton sont les jeux Flappy Bird et Candy Crush Saga.

Conception d’un logiciel

Le concepteur doit commencer par effectuer une ébauche du logiciel en réfléchissant sur les points suivants :

  • les fonctionnalités,

  • les interactions avec l’utilisateur,

  • l’apparence

Ensuite, il doit choisir un langage de programmation dans lequel le logiciel va être réalisé. Cela dépend du type de logiciel (pour ordinateur de bureau, téléphone mobile, …) et de la plateforme ciblée.
Puis il doit déterminer, les difficultés algorithmiques qu’il pourrait rencontrer. Par exemple, si le logiciel doit reconnaître des chiffres dactylographiés dans une grille, connaît-il un algorithme efficace pour le faire ou dispose-t-il d’une bibliothèque qui accomplit cette tâche de reconnaissance de caractères ? Il est préférable de résoudre ce type de problème avant de se lancer dans la programmation.
Il pourra ensuite décrire la logique du programme à l’aide de diagrammes, souvent composés de boîtes nommées, reliées par des flèches. Ces boîtes regroupent souvent des fonctions ou méthodes ayant un trait commun (manipulant une même structure de données ou contribuant à effectuer une tâche précise).
Lorsque l’organisation du programme est suffisamment détaillée, le codage peut commencer.
Une partie assez souvent négligée est celle de l’apparence du logiciel.
La raison principale est qu’elle demande du temps (création de thèmes, d’images, de logos, d’objets graphiques mobiles, polices de caractères, …) ou qu’elle rajoute un coût considérable au logiciel.

Programmation d’un logiciel

La programmation d’un logiciel demande la connaissance d’au moins un langage de programmation et de beaucoup de pratique.
En plus du langage de programmation, le développeur doit savoir utiliser certaines bibliothèques ou technologies courantes.
Dans la réalisation d’un logiciel, la programmation représente généralement la partie qui demande le plus de concentration et d’attention. Les erreurs de codage peuvent compromettre la finition du logiciel dans les délais souhaités.

Examinons quels outils de développement peuvent être utiles à la mise en œuvre d’un logiciel.

Outils de développement

Les outils de développement principaux sont les langages de programmation (compilateurs ou interprètes) et auxiliairement les langages programmation pour les bases de données relationnelles.

Mais il est presque indispensable de disposer d’un débogueur et d’un « moteur de production » du type make.

Pour travailler sur le source d’une programme, certains continuent à développer avec des éditeurs de code comme Vim, Emacs, …​, mais d’autres préfèrent opter pour un environnement de développement intégré (EDI) comme Eclipse, NetBeans, Visual Studio, KDevelop, QDevelop, …​

Un peu à mi-chemin entre un éditeur de code et un EDI, VSCode est souvent utilisé pour les applications Web.

L’inconvénient majeur des EDI est qu’il sont très gourmands en ressources et demandent donc un ordinateur puissant pour ne pas ramer.

L’autre inconvénient est qu’ils ne sont pas toujours multiplate-formes et cela peut être un problème pour ceux qui travaillent sur plusieurs systèmes d’exploitation.

Choix du langage de programmation

Sur certaines systèmes d’exploitation propriétaires, le choix des langages de programmation pour développer une applications commerciale est restreint volontairement par les propriétaires de ces systèmes.

Sur Mac OS, sont pratiquement imposés les langages suivants

  • Swift

  • Objective C

Sur Windows, sont privilégiés les langages suivants

  • C#

  • VB.NET

  • et dans certains cas le C++

Sur Android, sont privilégiés les langages suivants

  • Kotlin

  • Java

  • éventuellement le C++

Signalons au passage qu’il existe des systèmes de développement multiplate-formes comme Xamarin, Qt ou Windev permettant de programmer des logiciels pour plusieurs systèmes d’exploitation.

Sur les systèmes d’exploitation basés sur Linux, ou *BSD, il n’y a pas de langage de programmation privilégié, mais les plus utilisés pour les applications sont le C et le C++.

Concernant la programmation d’applications Web, Il y a au moins un langage de programmation à connaître pour le côté client et un langage de programmation côté serveur, qui peut être différent du premier.

Côté serveur, selon l’hébergement tous les langages de programmation ne sont pas disponibles. Le langage PHP demeure le plus répandu et pratiquement installé par défaut sur les serveurs.

Certains hébergeurs proposent d’autres langages comme le Java, C#, Golang, Python, Ruby, Lua, JavaScript avec Node.js.

Dans certains Nuages (clouds), ce sont des langages comme le Java ou le C# qui sont privilégiés.

Côté client, il y a de multiples options malgré que le JavaScript soit le seul langage à être implanté dans tous les navigateurs.
Depuis longtemps, certains développeurs souhaitaient le remplacement du JavaScript par une machine virtuelle basée sur une pile dans les navigateurs. Cela aurait permis une ouverture de la programmation côté client à d’autres langages. Mais il y a peu de chance pour que cela se réalise dans un avenir proche, étant donné que beaucoup de technologies reposent sur le JavaScript. Cependant, un langage de la catégorie bytecode, appelé Wasm (WebAssemby) est apparu en 2017 pour complémenter le JavaScript et avec des performances supérieures.
Les navigateurs récents intègrent une machine d’exécution de Wasm mais qui ne peut pas interagir avec la DOM (Document Object Model). Ainsi le Wasm ne remplace pas entièrement le JavaScript qui reste incontournable.

Pour éviter certains problèmes de JavaScript comme l’absence de typage ou le manque de certaines fonctionnalités vous pouvez utiliser des compilateurs d’autres langages de programmation vers le JavaScript.

Les plus courants sont:

  • Dart

  • TypeScript

  • Elm

  • PureScript

  • CoffeeScript

  • ClojureScript

  • Scala.js

  • Reason

  • Haxe

  • Nim

Mais le JavaScript reste le langage préféré pour la programmation frontale et il dispose d’une quantité impressionnante de bibliothèques et de cadres logiciels.

Auparavant, la bibliothèque jQuery qui facilite l’accès à la DOM était considérée comme indispensable étant données les disparités entre les différentes implantations de JavaScript dans les navigateurs. Mais cette bibliothèque tend à être de moins en moins utilisée par les développeurs, car le JavaScript des navigateurs récents est un peu plus normalisé. Beaucoup de cadres logiciels JavaScript ont été créés pour tenter de faciliter la création de composants graphiques réutilisables en programmation frontale. Citons par exemple Backbone, Ember, knockout, …​+ Deux cadriciels Angular et Vue et une bibliothèque JavaScript React se sont imposés et intègrent une DOM virtuelle qui les rend performants en cas d’accès intensifs à la DOM. Ces derniers permettent de créer des applications Web en une simple page et du même coup des applications mobiles. Mais il y a un bémol concernant l’optimisation du classement dans les moteurs de recherche des sites Web créés avec Angular, Vue ou React puisque le JavaScript n’est exécuté qu’après le chargement du code HTML.
Par ailleurs, le fait que Vue.js soit léger permet de l’utiliser en remplacement de jQuery.


RSS


Mail


Follow


Preferencesoft Website Privacy Policy