Les ingénieurs logiciels et les programmeurs informatiques développent tous deux les applications logicielles nécessaires aux ordinateurs en fonctionnement. La différence entre les deux postes réside dans les responsabilités et l'approche du travail. Les ingénieurs logiciels utilisent des principes et des procédures scientifiques bien définis pour fournir un produit logiciel efficace et fiable.
L'ingénierie logicielle traite l'approche du développement de logiciels comme un processus formel semblable à celui que l'on retrouve dans l'ingénierie traditionnelle. Les ingénieurs logiciels commencent par analyser les besoins des utilisateurs. Ils conçoivent le logiciel, le déploient, le testent pour la qualité et le maintiennent. Ils enseignent aux programmeurs informatiques comment écrire le code dont ils ont besoin. Les ingénieurs logiciels peuvent écrire ou non le code eux-mêmes, mais ils ont besoin de solides compétences en programmation pour communiquer avec les programmeurs et maîtrisent fréquemment plusieurs langages de programmation..
Les ingénieurs logiciels conçoivent et développent des jeux informatiques, des applications commerciales, des systèmes de contrôle de réseau et des systèmes d'exploitation logiciels. Ce sont des experts de la théorie des logiciels informatiques et des limites du matériel qu'ils conçoivent.
L'ensemble du processus de conception logicielle doit être officiellement géré bien avant l'écriture de la première ligne de code. Les ingénieurs logiciels produisent de longs documents de conception à l'aide d'outils de génie logiciel assistés par ordinateur. L'ingénieur logiciel convertit ensuite les documents de conception en documents de spécifications de conception, qui sont utilisés pour concevoir le code. Le processus est organisé et efficace. Il n'y a pas de programmation en cours.
Une caractéristique distinctive de l'ingénierie logicielle est la trace papier qu'elle produit. Les conceptions sont approuvées par les gestionnaires et les autorités techniques, et le rôle de l'assurance qualité est de vérifier la trace papier. De nombreux ingénieurs logiciels admettent que leur travail consiste à 70% de paperasse et 30% de code. C'est une façon coûteuse mais responsable d'écrire des logiciels, ce qui explique pourquoi l'avionique dans les avions modernes est si chère.
Les fabricants ne peuvent pas construire de systèmes complexes vitaux comme les avions, les commandes de réacteurs nucléaires et les systèmes médicaux et s'attendre à ce que le logiciel soit assemblé. Ils exigent que l'ensemble du processus soit entièrement géré par les ingénieurs logiciels afin que les budgets puissent être estimés, le personnel recruté et le risque d'échec ou d'erreurs coûteuses minimisé.
Dans les domaines critiques pour la sécurité tels que l'aviation, l'espace, les centrales nucléaires, la médecine, les systèmes de détection d'incendie et les montagnes russes, le coût d'une défaillance logicielle peut être énorme car des vies sont en danger. La capacité de l'ingénieur logiciel à anticiper les problèmes et à les éliminer avant qu'ils ne se produisent est critique.
Dans certaines parties du monde et dans la plupart des États américains, vous ne pouvez pas vous appeler ingénieur logiciel sans formation formelle ou certification. Plusieurs des grandes sociétés de logiciels, notamment Microsoft, Oracle et Red Hat, proposent des cours de certification. De nombreux collèges et universités proposent des diplômes en génie logiciel. Les ingénieurs en génie aspirants peuvent se spécialiser en informatique, en génie logiciel, en mathématiques ou en systèmes informatiques..
Les programmeurs écrivent du code selon les spécifications qui leur sont données par les ingénieurs logiciels. Ce sont des experts des principaux langages de programmation informatique. Bien qu'ils ne soient généralement pas impliqués dans les premières étapes de la conception, ils peuvent être impliqués dans les tests, la modification, la mise à jour et la réparation du code. Ils écrivent du code dans un ou plusieurs des langages de programmation demandés, notamment: