De acordo com o Guide to the Software Engineering Body of Knowledge (SWEBOK) - documento de 2024, organizado pela IEEE Computer Society, a área de Engenharia de Software pode ser definida por 15 áreas do conhecimento:
Requisitos de Software
Análise e Projeto de Software (Software Design)
Construção de Software
Testes de Software
Manutenção de Software
Gerência de Configuração
Gerência de Projetos de Software
Processos de Software
Modelos e Métodos
Qualidade de Software
Prática Profissional
Aspectos Econômicos
Fundamentos de Computação (interdisciplinar)
Fundamentos de Matemática (interdisciplinar)
Fundamentos de Engenharia (interdisciplinar)
Sendo as áreas de Requisitos de Software, Análise e Projeto de Software (Software Design) e Modelos e Métodos de Software as principais áreas estudadas nas disciplinas de Análise e Projeto de Sistemas dos cursos do Instituto de Computação (UFMT).
Condições necessárias para a obtenção de certo objetivo ou para o preenchimento de certo fim.
“Os requisitos de um sistema são as descrições dos serviços fornecidos pelo sistema e suas restrições operacionais.” - Ian Sommerville
Segundo a ISO/IEC/IEEE 24774:2021 Systems and software engineering — Life cycle management — Specification for process description, um requisito pode ser definido como:
"Uma condição ou capacidade que deve ser alcançada ou possuída por um sistema, produto, serviço, resultado ou componente para satisfazer um contrato, padrão, especificação ou outro documento formalmente imposto. Requisitos incluem as necessidades quantificadas e documentadas, desejos e expectativas do patrocinador, clientes e outras partes interessadas."
Depois que os requisitos do sistema são identificados, é hora de analisá-los e transformá-los em uma solução de software. Essa transformação acontece por meio das etapas de Análise e Projeto de Sistemas — momentos fundamentais no ciclo de desenvolvimento.
Essas etapas fazem a ponte entre o problema do mundo real e o código que será implementado. São elas que ajudam a responder perguntas como:
“O que o sistema precisa fazer?” (Análise)
“Como o sistema será construído?” (Projeto)
Fonte: Lexica.
A análise (do grego ανάλυσις, transl. análysis, "dissolução") é o processo de decomposição de um tópico complexo em seus diversos elementos constituintes, a fim de se obter uma melhor compreensão sua.
Na prática, analisar é observar algo complexo e dividi-lo em partes menores para entender melhor.
Esse processo é comum em várias áreas, como a ciência, a lógica e a matemática. Filósofos e cientistas como Galileu e Newton utilizavam a análise para entender os fenômenos do mundo.
No contexto da computação, analisar um sistema é entender profundamente o problema que o sistema precisa resolver. Envolve investigar o funcionamento atual (se houver), entender os objetivos, os usuários(as), os dados e os processos envolvidos.
Desta forma, a Análise de Sistemas é a etapa em que atividades para a decomposição e compreensão do sistema são realizadas.
Durante a Análise de Sistemas, o foco das atividades está na identificação, investigação e representação do conhecimento sobre o problema.
Análise de Sistemas é a etapa em que o(a) analista examina o problema a fundo. Desta forma, as principais questões levantadas nesta etapa são do tipo: “O que?”, “Quais?”, por exemplo:
O que precisa ser feito?
Quais são as funcionalidades esperadas?
Quais os principais conceitos relacionados ao domínio do sistema?
Quais dados o sistema deve manipular?
Quais são as regras de negócio envolvidas?
Quem são os(as) usuários(as) e suas necessidades?
Essa fase envolve atividades como levantamento de requisitos, entrevistas com usuários(as), modelagem de processos e criação de diagramas. O foco está em compreender o problema com clareza, sem ainda pensar na implementação.
Por exemplo, se vamos criar um sistema de biblioteca, a análise busca responder perguntas como:
Que tipo de livros o sistema deve armazenar?
Quem pode emprestar livros?
Como é feita uma reserva?
Fonte: Lexica.
Um projeto é um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo. Projetar é representar a idealização de uma criação.
A palavra “projeto” geralmente indica um plano ou proposta para construir algo.
Na computação, o projeto define como o sistema será implementado. Isso envolve escolhas como:
Arquitetura do sistema
Estrutura dos Dados
Componentes e classes
Interfaces e fluxos
Durante o Projeto de Sistemas, o foco passa a ser em questões do tipo “Como?”, a fim de buscar soluções para a implementação do sistema, por exemplo:
Como o sistema será desenvolvido?
Como implementar as funcionalidades identificadas?
Como deve ser a arquitetura do sistema?
Como os conceitos do domínio serão representados no sistema?
Como será a interação entre os componentes?
Voltando ao exemplo da biblioteca: após entender que o sistema precisa permitir reservas de livros, o projeto vai definir como isso será feito tecnicamente — por exemplo, com uma classe Livro, uma interface GUI para Reserva, e regras de negócios implementadas em serviços específicos.
As atividades de Análise e Projeto de sistemas diminuem a distância entre o mundo físico e o código.
O processo de abstração do mundo físico para o código passa pela análise e projeto de sistemas. Fonte: Autoral, feito com Canva para Educação.
A análise enfatiza o problema enquanto o projeto enfatiza a solução. Fonte: Autoral, feito com Canva para Educação.
A orientação a objetos tornou nebulosa a fronteira entre as atividades de análise e projeto de sistemas.
Atualmente, a Engenharia de Requisitos é a principal conexão entre estas etapas.
Curricularmente, no curso de Sistemas de Informação, a disciplina de Análise e Projeto de Sistemas I foca nas atividades da etapa de Análise, enquanto a disciplina de Análise e Projeto de Sistemas II foca nas atividades da etapa de Projeto.
Artefatos são produtos ou subprodutos resultantes de um processo de produção.
No processo de desenvolvimento de software, artefatos de sistemas compreendem todos os tipos de subprodutos concretos (tangíveis) produzidos durante as etapas do desenvolvimento de software.
Alguns exemplos de artefatos de um sistema são: Modelos, Plano de Negócios, Backlog do Produto, Arquivos de Código, Design System, Apresentações, etc.
Artefatos de sistema podem ser analógicos ou digitais, executáveis ou não e testáveis ou não.
Modelos são abstrações da realidade.
Modelos focam no que realmente importa, a partir de uma determinada visão, em um determinado momento.
Modelos são úteis para:
Facilitar a comunicação entre pessoas;
Analisar problemas complexos;
Testar hipóteses e experimentar situações antes de executar uma ação mais custosa.
Um modelo oferece uma representação em mais alto nível de um sistema do que o seu código fonte.
Geralmente, o objetivo de um modelo de sistema é permitir que diferentes pessoas da equipe de projeto de um sistema possam analisar propriedades, características e comportamentos essenciais do sistema de modo mais fácil e rápido, sem ter que lidar com detalhes de código e outras tecnologias.
Modelos são uma forma de documentar um sistema.
Frequentemente, modelos de software são baseados em notações gráficas.
Algumas possíveis aplicações de modelos de sistemas são:
Engenharia Avante (Forward Engineering): primeiro cria-se um modelo para ter um entendimento de mais alto nível de um sistema, antes de partir para a implementação do código.
Engenharia Reversa (Reverse Engineering): modelos criados para ajudar a entender uma base de código existente, criados a partir de outros artefatos do sistema.
Método é uma palavra proveniente do termo grego méthodos (transl. do grego μέθοδος, "caminho" ou "via") que se refere ao meio utilizado para chegar a um fim. Ex.: Método científico, Métodos de pagamento, Métodos contraceptivos, etc.
Em análise e projeto de sistemas, existem vários métodos para ajudar a orientar o processo de desenvolvimento de software.
Alguns exemplos de métodos de análise e projeto de sistemas são: Análise e Projeto Orientados a Objetos, Análise Essencial ou Análise Estruturada (em desuso), Análise Orientada a Dados, Design Orientado a Componentes (CBD, do inglês Component-Based Design).
Geralmente, métodos para análise e projeto de sistemas possuem orientações e atividades específicas, podendo ter um conjunto de notações a ser utilizado e um conjunto de artefatos que deve ser produzido.
Nas disciplinas de Análise e Projeto de Sistemas, veremos diferentes atividades e técnicas para a Análise e Projeto Orientados a Objetos (o método mais utilizado na atualidade).
Fonte: Lexica.
A palavra técnica vem do grego tékhne (transl. do grego τέχνη) , que se traduz por "arte" ou "tecnologia".
Uma técnica é um procedimento que tem como objetivo a obtenção de um determinado resultado, seja na ciência, na tecnologia, na arte ou em qualquer outra área. Em outras palavras, técnicas são práticas utilizadas como meio para chegar a fim.
Nas disciplinas de Análise e Projeto de Sistemas, estudaremos diferentes técnicas para as atividades de análise e projeto de sistemas em metodologias ágeis ou tradicionais.
Exemplo de relação entre método (rota traçada) e técnica (veículo escolhido). Fonte: Autoral, feito com Canva para Educação.