# Aperçu du développement logiciel

Le plan suivant est fourni à titre d'aperçu et de guide thématique sur le développement de logiciels :
Développement logiciel – développement d'un produit logiciel, qui implique la programmation informatique (processus d'écriture et de maintenance du code source ), mais englobe également un processus planifié et structuré depuis la conception du logiciel souhaité jusqu'à sa manifestation finale. Par conséquent, le développement de logiciels peut inclure la recherche, le nouveau développement, le prototypage, la modification, la réutilisation, la réingénierie, la maintenance ou toute autre activité aboutissant à des produits logiciels.

## Quel type de chose est le développement de logiciels ?

Le développement logiciel peut être décrit comme l'ensemble des éléments suivants :
* Recherche et développement
* Vocation
* Profession

## Branches de développement de logiciels

* Génie logiciel
* Programmation informatique
* Développement de jeux vidéo
* développement web
* Développement d'applications Web
* Développement d'applications mobiles

## Histoire du développement logiciel

* Histoire des systèmes d'exploitation
* Histoire des langages de programmation

## Participants au développement logiciel

* Développeur de logiciels
* Ingénieur logiciel
* Ingénieur conseil en logiciel
* Programmeur
* Éditeur de logiciels
* développeur web

## Problèmes de développement logiciel

* Pelles
* Gonflement logiciel
* Bogue logiciel

## Gestion de projet logiciel

* Gestion de projets logiciels – art et science de la planification et de la conduite de projets logiciels. C'est une sous-discipline de la gestion de projet dans laquelle les projets logiciels sont planifiés, suivis et contrôlés.
** Gestion de la configuration logicielle

## Stratégies de développement logiciel

* R&D logicielle offshore – fourniture de services de développement logiciel par un fournisseur externe positionné dans un pays géographiquement éloigné de l'entreprise cliente ; un type d'externalisation offshore.

## Processus de développement logiciel

* Processus de développement logiciel
** Cycle de vie des versions logicielles
*** Stades de développement
**** Pré-alpha
**** Version alpha
**** Version bêta
***** Bêta fermée
***** Bêta ouverte
**** Candidat à la libération
*** Sortie
**** Relâchement à la fabrication (RTM)
**** Version de disponibilité générale (GA)
**** Version Web (RTW)
*** Soutien technique
**** Fin de vie – fin du support du produit

### Activités et étapes

* Analyse des besoins
** Estimation de l'effort de développement logiciel
* Spécification fonctionnelle
* Architecture logicielle
* Conception de logiciels
* Programmation informatique
* Test de logiciel
* Déploiement logiciel
** Version du logiciel
** Mise en place du produit
** Activation du produit
** Désactivation
** Adaptation
** Mise à jour logicielle
** Désinstallation
*** Programme de désinstallation
** Retrait de produit
* Maintenance logiciel

### Méthodologies de développement logiciel

Méthodologie de développement logiciel
* Développement logiciel orienté aspect
* Ingénierie logicielle pour salles blanches
* Développement itératif et incrémental
* Méthodologie de financement progressif
* Développement rapide d'applications
* Processus unifié IBM Rational
* Modèle en spirale
* Modèle cascade
* Programmation extrême
* Développement logiciel simplifié
* Mêlée
* Modèle en V
* Développement piloté par les tests (TDD)

#### Développement logiciel agile

Développement logiciel agile
* Équipe interfonctionnelle
* Programmation extrême
* Développement itératif et incrémental
* Programmation en binôme
* Auto-organisation
* Timeboxing

### Disciplines de soutien

* Programmation informatique –
* Documentation du logiciel –
* Génie logiciel –
* Assurance qualité logicielle (SQA) –
* Conception de l'expérience utilisateur –

### Outils de développement logiciel

* Outil de programmation
** Compilateur
** Débogueur
** Analyse de performance
** Constructeur d'interface utilisateur graphique
** Environnement de développement intégré

## Formation pertinente au développement de logiciels

* Baccalauréat en informatique – type de baccalauréat décerné pour l'étude de l'informatique, mettant l'accent sur les fondements mathématiques et théoriques de l'informatique, plutôt que sur l'enseignement de technologies spécifiques qui peuvent rapidement devenir obsolètes. Un baccalauréat en informatique est un baccalauréat initial commun pour ceux qui entrent dans le domaine du développement de logiciels.

## Organisations de développement de logiciels

Alors que l'industrie informatique subit des changements plus rapides que tout autre domaine, la plupart des experts techniques s'accordent à dire qu'il faut avoir la communauté qu'ils peuvent consulter, apprendre ou partager leur expérience. Voici la liste des organisations de développement de logiciels bien connues.
* Normes professionnelles de l'Association des ingénieurs et techniciens en informatique (ACE - ACET) au sein de l'industrie informatique.
* L'Association for Computing Machinery (ACM) est l'une des communautés scientifiques les plus anciennes et les plus importantes qui traitent de l'informatique et de la technologie. Il couvre un large éventail de sujets, notamment le commerce électronique, la bioinformatique et les réseaux.
* L'Association des professionnels indépendants de l'information (AIIP) est une association de professionnels de l'information travaillant de manière indépendante ou au sein des industries connexes.
* L'Association of Information Technology Professionals (AITP) est une communauté mondiale qui se concentre sur l'enseignement des technologies de l'information. Il aide à connecter des experts de différents domaines informatiques.
* ASIS International (ASIS) est la principale communauté qui relie les professionnels de la sécurité du monde entier.
* L'Association of Shareware Professionals (ASP) met en relation des développeurs et des spécialistes techniques qui travaillent avec des services et des applications sur une base "essayez avant d'acheter".
* L'Association for Women in Computing (AWC) organise des événements éducatifs et de réseautage pour les femmes spécialistes de la technologie afin d'augmenter la part des femmes dans l'industrie.
* Black Data Processing Associates (BDPA) rassemble une communauté d'Afro-Américains travaillant dans les technologies de l'information pour la croissance éducative et professionnelle.
* Computer &amp; Communications Industry Association (CCIA) plaide pour des marchés, des systèmes et une concurrence ouverts.
* Computing Technology Industry Association (CompTIA) fournit des certifications pour l'industrie informatique et éduque les individus et les groupes sur les changements et les tendances de l'industrie.
* Computer Professionals for Social Responsibility (CPSR) une organisation préoccupée par l'impact de la technologie sur la société. Le groupe fournit l'évaluation du développement technologique et de son impact sur divers domaines de la vie.
* Data & Analysis Center for Software (DACS) recueille et sert les informations sur les diverses entités et logiciels qu'ils produisent, ainsi que leur fiabilité.
* EDUCAUSE est une organisation à but non lucratif dont la mission est de « faire progresser l'enseignement supérieur grâce aux technologies de l'information ».
* L'Association européenne des fabricants d'ordinateurs (ECMA) est une organisation européenne qui facilite les normes et les systèmes d'information et de communication.
* L'Association internationale des ingénieurs (IAENG) est une association internationale qui était autrefois un réseau privé. De nos jours, accueille le Congrès mondial annuel sur l'ingénierie pour la R&D et les ingénieurs.
* L'Institute of Electrical and Electronics Engineers (IEEE) Computer Society fournit des services éducatifs à ses membres dans le monde entier. Cette société possède l'un des plus grands réseaux et offre de nombreux avantages à ses membres.
* L'Information Systems Security Association (ISSA) est une organisation à but non lucratif qui encourage l'utilisation de pratiques visant à protéger la confidentialité et l'intégrité des ressources d'information.
* Network Professional Association (NPA) encourage ses membres à adhérer au code de déontologie, à suivre les dernières meilleures pratiques et à s'auto-éduquer en permanence.
* Technology Services Industry Association (TSIA) est une association professionnelle qui offre des services de recherche et de conseil.
* La Society for Technical Communication (STC) offre un soutien et un partage de connaissances aux spécialistes impliqués dans la communication technique et les domaines connexes.
* L'association des professionnels de l'expérience utilisateur (UXPA) est une organisation qui partage les connaissances sur l'expérience utilisateur et aide ses membres à développer, développer et améliorer leurs produits.
* Women in Technology (WIT) préconise l'éducation des représentantes féminines dans l'industrie, de la formation élémentaire aux programmes avancés.

## Personnes influentes dans le développement de logiciels
### Créateurs/concepteurs de langage

* Kathleen Booth ( Assemblée )
* Bjarne Stroustrup ( C++ )
* Brendan Eich ( JavaScript )
* James Gosling ( Java )
* Guido van Rossum ( Python )

### Influenceurs de la conception de logiciels

* Bill Joie
* Martin Fowler
* "Oncle Bob" Martin