(SWEBOK)
A área da Engenharia de Software passou por um estudo de uma comissão internacional de especialistas, visando a uma definição das fronteiras que a delimitam. Esse estudo foi conduzido no
âmbito da IEEE e chama-se SWEBOK (Software Engineering Body of Knowledge, ou Corpo de
Conhecimento de Engenharia de Software) (IEEE, 2004).
O SWEBOK é dividido em um total de onze áreas de conhecimento (KOSCIANSKI; SOARES, 2007; IEEE, 2014), sendo elas:
1) Requisitos de Software: A área de conhecimento de Requisitos de Software se preocupa
com a licitação, análise, especificação e validação de requisitos de software, bem como o gerenciamento de requisitos durante todo o ciclo de vida do produto de software. Os Requisitos de Software expressam as necessidades e restrições colocadas em um produto de software que contribui para a solução de algum problema do mundo real.
2) Design de Software: Visto como um processo, projeto de software é a atividade do ciclo
de vida em que os requisitos de software são analisados a fim de produzir uma descrição da estrutura interna do software que servirá como base para a sua construção. Um projeto de software (o resultado), descreve a arquitetura de software, isto é, como o software é decomposto e organizado em componentes, e as interfaces entre os componentes. Deve também descrever os componentes em um nível de detalhe que permite a sua construção.
3) Construção de Software: O termo construção de software refere-se à criação detalhada
de software através de uma combinação de codificação, verificação, testes unitários, testes de integração e depuração. A área de conhecimento de Construção de Software está ligada a todas as outras, mas é mais fortemente ligada ao Design de Software e Teste de Software, porque o processo de construção de software envolve design de
50
software e testes, significativamente. O processo utiliza a saída de projeto e fornece uma entrada para testar ("design" e "teste" neste caso referindo-se às atividades, e não as áreas de conhecimento). Limites entre projeto, construção e testes (se houver) irão variar de acordo com os processos de ciclo de vida de software que são usados em um projeto. Embora alguns detalhes de projetos possam ser realizados antes da construção, o trabalho de design é realizado durante as atividades de construção.
4) Teste de Software: O teste de software consiste na verificação dinâmica de
comportamentos esperados, que um programa fornece em conjunto com um finito de casos de teste.
5) Manutenção de Software: Esforços de desenvolvimento de software resultarão na
entrega de um produto de software que satisfaça as necessidades dos utilizadores. Assim, o produto de software deve mudar ou evoluir. Uma vez em operação, os defeitos são descobertos, ambientes operacionais mudam, e surgem novas necessidades dos utilizadores. A fase de manutenção do ciclo de vida começa após um período de garantia de atividades ou pós implementação de entrega.
6) Gerenciamento de Configuração de Software: O gerenciamento de configuração, é a
disciplina de identificar a configuração de um sistema em pontos distintos com a finalidade de controlar sistematicamente as alterações da configuração e manutenção, da integridade e rastreabilidade da configuração ao longo do ciclo de vida do sistema.
7) Gestão de Engenharia de Software: Gestão de engenharia de software pode ser definida
como a aplicação de atividades de planejamento, coordenação, medição, monitoramento, controle e emissão de relatórios, para garantir que os produtos de software e serviços de engenharia de software sejam entregues de forma eficiente, eficaz e em benefício das partes interessadas.
8) Software Engenharia de Processos: Um processo de engenharia consiste em um
conjunto de atividades inter-relacionadas que transformam uma ou mais entradas em saídas ao consumir recursos para realizar essa transformação.
9) Modelos e Métodos de Engenharia de Software: Modelos e métodos de engenharia de
com que as atividades sistemáticas e repetíveis estejam orientadas para o sucesso. Modelos fornecem uma abordagem para a resolução de problemas, através de procedimentos para análise e construção do modelo. Métodos fornecem uma abordagem sistemática para a especificação, projeto, construção, teste e verificação de software.
10)Qualidade de Software: A qualidade do software também é considerada em muitas das
áreas do SWEBOK porque é um parâmetro fundamental de um esforço de engenharia de software. Para todos os produtos de engenharia, o principal objetivo é entregar o valor máximo das partes interessadas, enquanto equilibra as restrições do custo de desenvolvimento e cronograma. Essa área de conhecimento aborda definições e fornece uma visão geral de práticas, ferramentas e técnicas para a definição de qualidade de software e para avaliar o estado da qualidade do software durante o desenvolvimento, manutenção e implantação.
11)Prática de Engenharia de Software Profissional: Esta área de conhecimento está
preocupada com o conhecimento, habilidades e atitudes que os engenheiros de software devem possuir para a prática de engenharia de software de uma forma profissional, responsável e ética. Por causa das aplicações generalizadas de produtos de software na vida pessoal e social, a qualidade de produtos de software pode ter um impacto profundo em nossa vida pessoal, bem-estar e harmonia social.
12)Economia em Engenharia de Software: Esta área trata sobre a tomada de decisões
relacionadas com a engenharia de software em um contexto de negócios. O sucesso de um produto de software, serviços e solução depende de uma boa gestão empresarial. No entanto, em muitas empresas e organizações, as relações comerciais para desenvolvimento de software e engenharia de software podem permanecer vagas. Esta área do conhecimento fornece uma visão geral sobre a economia da engenharia de software.
13)Fundamentos Computacionais: O escopo desta área de conhecimento, engloba o
ambiente de desenvolvimento e operacional em que o software evolui e executa. Porque nenhum software pode existir em um vácuo, o núcleo de tal ambiente é o computador e seus diversos componentes. O conhecimento sobre o computador e seus princípios
52
subjacentes de hardware e software serve como um quadro para a engenharia de software.
14)Fundamentos Matemáticos: A área de conhecimento Fundamentos Matemáticos ajuda
os engenheiros de software compreender a lógica, que por sua vez é traduzida em código de linguagem de programação. A matemática que é o foco principal da área de conhecimento é bastante diferente da aritmética típica, em que os números são tratados e discutidos. Lógica e raciocínio são a essência da matemática que um engenheiro de software deve conhecer.
15)Fundamentos da Engenharia: Como a teoria e prática da engenharia de software
amadurece, é cada vez mais evidente que a engenharia de software é uma disciplina da engenharia que se baseia em conhecimentos e habilidades comuns a todas as disciplinas de engenharia. Esta área de conhecimento está preocupada com os fundamentos de engenharia que se aplicam a engenharia de software e outras disciplinas de engenharia.