Juliana Jenny Kolb
Home > Engenharia de Software > Sumário
Conceitos Básicos – Desenvolvimento de Software
Um processo de desenvolvimento de software pode ser visto como um conjunto de atividades organizadas, usadas para definir, desenvolver, testar e manter um software.
Desenvolvimento de Software
Existem diversos processos de desenvolvimento de software (estruturados (+) e ágeis (+)), no entanto há algumas atividades básicas comuns à grande parte dos processos existentes, nesse artigo será descrito algumas dessas atividades, como: Levantamento de requisitos; Análise de Requisitos; Projeto; Implementação; Testes; Implantação.
Levantamento e Análise de Requisitos
Sommerville (2003) propõe um processo genérico de levantamento e análise que contém as seguintes atividades:
- Compreensão do domínio: Os analistas devem desenvolver sua compreensão do domínio da aplicação;
- Coleta de requisitos: É o processo de interagir com os stakeholders do sistema para descobrir seus requisitos. A compreensão do domínio se desenvolve mais durante essa atividade;
- Classificação: Essa atividade considera o conjunto não estruturado dos requisitos e os organiza em grupos coerentes;
- Resolução de conflitos: Quando múltiplos stakeholders estão envolvidos, os requisitos apresentarão conflitos. Essa atividade tem por objetivo solucionar esses conflitos;
- Definição das prioridades: Em qualquer conjunto de requisitos, alguns serão mais importantes do que outros. Esse estágio envolve interação com os stakeholders para a definição dos requisitos mais importantes;
- Verificação de requisitos: Os requisitos são verificados para descobrir se estão completos e consistentes e se estão em concordância com o que os stakeholders desejam do sistema.
O Levantamento de Requisitos tem como objetivo, compreender o problema, dando aos desenvolvedores e usuários, a mesma visão do que deve ser construído para resolução do problema. Desenvolvedores e clientes, em conjunto, buscam levantar e priorizar as necessidades dos futuros usuários do software (necessidades essas denominadas como requisitos).
O Levantamento de Requisitos é a etapa mais importante, no que diz respeito ao retorno de investimentos no projeto. Vários projetos são abandonados pelo baixo levantamento de requisitos, ou seja, membros da equipe não disponibilizaram tempo suficiente para essa fase do projeto, em compreender as necessidades dos clientes em relação ao sistema a ser desenvolvido.
E como um sistema de informações geralmente é utilizado para automatizar processos de negócio em uma organização, esses processos da organização devem ser bem compreendidos para que o restante das atividades do processo de desenvolvimento flua de acordo com as reais necessidades do cliente.
A Análise de Requisitos, também chamada de especificação de requisitos, é onde os desenvolvedores fazem um estudo detalhado dos dados levantados na atividade anterior. De onde são construídos modelos a fim de representar o sistema de software a ser desenvolvido.
O interesse nessa atividade é criar uma estratégia de solução, sem se preocupar como essa estratégia será realizada, ou seja, utilizar as necessidades dos clientes, depois de compreendido o problema, para resolução do problema solicitado. Assim é necessário definir o que o sistema deve fazer, antes de definir como o sistema irá fazer.
*Mais detalhes: Engenharia de Requisitos (+)
Alguns exemplos de documentos desta etapa:
- Diagramas UML: Caso de Uso (UML (+));
- Documento de Requisitos do Sistema (Regras de Negócio, Requisitos Funcionais e Não Funcionais) – (Engenharia de Requisitos (+)) ;
- Matriz de Rastreabilidade de Requisitos (Controle) – (Matriz de Rastreabilidade de Reuisitos (+));
- Fluxo dos Processos de Negócio (BPMN) – (BPM (+));
- Atas de Reunião;
- Matriz RACI.
Projeto
Nesta fase é que deve ser considerado, como o sistema funcionará internamente, para que os requisitos do cliente possam ser atendidos. Alguns aspectos devem ser considerados nessa fase de projeto do sistema, como: arquitetura do sistema, linguagem de programação utilizada, Sistema Gerenciador de Banco de Dados (SGBD) utilizado, padrão de interface gráfica, entre outros.
No projeto é gerada uma descrição computacional, mencionando o que o software deve fazer, e deve ser coerente com a descrição realizada na fase de análise de requisitos (documentação).
O projeto possui duas atividades básicas: projeto da arquitetura (ou projeto de alto nível), e projeto detalhado (ou projeto de baixo nível).
Em um processo de desenvolvimento orientado a objetos, o projeto da arquitetura normalmente é realizado por um arquiteto de software. O projeto da arquitetura visa distribuir as classes de objetos relacionados do sistema em subsistemas e seus componentes, distribuindo também esses componentes pelos recursos de hardware disponíveis.
Já no projeto detalhado, são modeladas as relações de cada módulo com o objetivo de realizar as funcionalidades do módulo. Além de desenvolver o projeto de interface com o usuário e o projeto de banco de dados.
Alguns exemplos de documentos desta etapa:
- Diagramas UML: Classes, Sequência – (UML (+));;
- Modelo de Dados (MER) – (Modelagem de Dados(+));
- Estimativas de tempo e custo – (Métricas(+));
- Projeto Arquitetural do Software;
- Plano de Testes.
Implementação
Nessa etapa, o sistema é codificado a partir da descrição computacional da fase de projeto em uma outra linguagem, onde se torna possível a compilação e geração do código-executável para o desenvolvimento software.
Em um processo de desenvolvimento orientado a objetos, a implementação se dá, definindo as classes de objetos do sistema em questão, fazendo uso de linguagens de programação como, por exemplo: Delphi (Object Pascal), C++, Java, etc. Pode-se também utilizar na implementação ferramentas de software e bibliotecas de classes preexistentes para agilizar a atividade, como também o uso de ferramentas CASE, que dinamizam o processo de desenvolvimento, nas várias atividades, onde inclui-se geração de código-fonte, documentação, etc.
Alguns exemplos de documentos desta etapa:
- Documentação de código;
- Manuais de uso do sistema.
Testes
Diversas atividades de testes são executadas a fim de se validar o produto de software, testando cada funcionalidade de cada módulo, buscando, levando em consideração a especificação feita na fase de projeto. Onde o principal resultado é o relatório de testes, que contém as informações relevantes sobre erros encontrados no sistema, e seu comportamento em vários aspectos. Ao final dessa atividade, os diversos módulos do sistema são integrados, resultando no produto de software.
Nesta fase deve-se então realizar a validação e verificação dos modelos construídos, antes de partir para solução do problema.
- Validação: tem por objetivo, assegurar que o sistema de software está atendendo às reais necessidades do cliente;
- Verificação: verifica se os modelos construídos na análise estão em conformidade com os requisitos do cliente.
Alguns exemplos de documentos desta etapa:
- Refinamento do Plano de Testes;
- Documento de Evidências de Testes.
*Mais detalhes: Teste de Software (+)
Implantação
Por fim a implantação compreende a instalação do software no ambiente do usuário. O que inclui os manuais do sistema, importação dos dados para o novo sistema e treinamento dos usuários para o uso correto e adequado do sistema. Em alguns casos quando da existência de um software anterior, também é realizada a migração de dados anteriores desse software.
Alguns exemplos de documentos desta etapa:
- Manuais de uso do sistema;
- Manuais de operacionalização/configuração do sistema;
- Materiais para treinamento.
Documentação
A documentação permeia todo o processo de desenvolvimento de software.
Os principais objetivos da documentação são:
- Gerar a documentação necessária para o desenvolvimento de novos sistemas;
- Garantir que o sistema seja desenvolvido de acordo com as necessidades do cliente;
- Documentar os sistemas em operação, a fim de possibilitar manutenções futuras e garantir a continuidade operacional;
- Permitir a tranparência e aderência dos sistemas automatizados aos negócios da organização;
- Apoiar o sistema de “controle interno e compliance”;
- Capturar e documentar as regras do negócio embutidos no sistema;
- Unificar a documentação de sistemas,independentemente de feramenta ou ambiente de desenvolvimento.