Melhor resposta
A Engenharia de Software é um vasto playground com muitos tipos e subtipos, mas os principais tipos de engenharia de software são dois: Software de sistemas e software de aplicativo.
Software de sistemas: os exemplos incluem, mas não se limitam a programas dedicados ao gerenciamento do computador ou algum dispositivo dedicado a uma tarefa específica, como: Sistema operacional Windows (Microsoft Windows 10), Sistema operacional IOS (OS X 10.10 Yosemite., 4.13 OS X 10.11 El Capitan, 4.16 macOS 10.14 Mojave ……), Sistema operacional Android (SO Android), Linux (Ubuntu…)
Software de aplicativo: Programas de usuário final que permitem ao usuário realizar tarefas como criar documentos (Microsoft Word, Pages …), enviar e-mail (aplicativo do Gmail), desenhar gráficos (Photoshop) etc.
E todos os itens acima podem ser corrompidos em subcomponentes menores / categorias que compõem subárvores de software de aplicativo e subárvores de software de sistemas.
Um exemplo de uma subcategoria de software de aplicativo: Photoshop é um aplicativo que pertence a um conjunto de aplicativos de software no Adobe Creative Software Suite que consiste em photoshop, InDesign e outros.
Em Engenharia de Software, quando um engenheiro de software desenvolve um site, um aplicativo móvel ou um jogo: Todos esses aplicativos se enquadram na categoria de software de aplicativo.E se um software O engenheiro desenvolve software que pode ser executado em um dispositivo físico de caixa preta projetado especificamente para um avião específico: Este desenvolvimento específico pode se enquadrar no software de aplicativo, bem como no software de sistema, porque é projetado para fazer um dispositivo funcionar especificamente e este dispositivo depende especificamente daquele software para inicializar e executar outro componente que abrange ou faz a caixa preta funcionar: Vamos agora assumir que o mesmo desenvolvedor de software desenvolveu um componente adicional para essa caixa preta para permitir que os usuários acessem a caixa preta e visualizem a localização atual do avião: Esse componente, esteja ele em execução na caixa preta ou em um dispositivo móvel, está incluído no software do aplicativo.
Resposta
Existem engenheiros de software terríveis. Existem apenas engenheiros de software ruins. Existem engenheiros de software medíocres. Existem engenheiros de software muito bons. Existem bons engenheiros de software. Existem excelentes engenheiros de software.
E existem engenheiros de software que entregam software dentro do prazo e do orçamento. Deus te ajude se você tiver que manter esse software, mas ele estava dentro do prazo e do orçamento.
Mas sério …
Esta lista não é inclusiva. Além disso, o mesmo SWE pode desempenhar vários papéis, talvez em momentos diferentes, e talvez em momentos diferentes. A propósito, essas não são as melhores práticas.
Existem SWEs que escrevem documentos de requisitos. Eles podem nem saber programar, mas entendem os requisitos de negócios e os traduzem em requisitos de programa.
Existem designers que pegam os requisitos e criam um design de software. Normalmente, sua saída é algo como um diagrama UML ou um fluxograma (horrores!) Ou um diagrama de fluxo de dados ou algum tipo de pseudocódigo. Eles também fazem frequentemente uma análise de vários designs competitivos para ver qual é o “ideal”. Eles também compõem um plano de teste.
Então, são os engenheiros de desenvolvimento de software (SDEs) que realmente convertem os requisitos em código. Costumávamos chamar essas pessoas de “programadores” porque eles escreviam programas, mas essa palavra caiu em desuso (hoje em dia, todo mundo é engenheiro ou cientista. Os bibliotecários agora são cientistas bibliotecários. Pais que ficam em casa são engenheiros domésticos. Os zeladores são agora são engenheiros de construção. Os motoristas de caminhão agora são engenheiros operacionais de transporte e assim por diante).
O código vai para os engenheiros de desenvolvimento de software em teste. Eles testam o software de acordo com o plano de teste. Normalmente, existem duas fases de teste: teste de unidade e teste de sistema.
Finalmente, o software vai para os engenheiros de lançamento. Não sou exatamente o que eles fazem, porque fui um por um tempo.
Também existem escritores técnicos que escrevem documentação do cliente e engenheiros de suporte que ajudam os clientes quando algo dá errado.
Existem engenheiros de suporte de vendas e seu trabalho é deslumbrá-los com brilho ou confundi-los com besteiras. Disseram-me que seria bom nisso. Isso me preocupa.