Processos
Vamos entender o que são processos de desenvolvimento de software?
O que é um processo de desenvolvimento de software?
É uma sequência lógica de atividades que tem por objetivo final de produzir ou evoluir um produto de software.
É caracterizado por um conjunto de:
- Atividades
- Papéis
- Artefatos ou produtos de trabalho de entrada ou saída
- Fluxos
Atividade
“É uma unidade de trabalho que um indivíduo naquele papel poderá ser solicitado a executar” (Kruchten, 2003).
Atividades definem o como fazer
Em um primeiro nível, as atividades são ordenadas e interligadas e descrevem um fluxo de tarefas.
Exemplos:
- Analisar solicitação do cliente
- Levantar requisitos
- Documentar requisitos
- Realizar estimativas de tamanho
- Validar requisito junto ao cliente
- Realizar planejamento do projeto
- Validar projeto junto aos stakeholders
- Especificar requisitos
- Projetar arquitetura
- Desenvolver requisitos
- Realizar testes
Papel
“Define as responsabilidades ou atribuições de um indivíduo ou grupo de indivíduos que trabalham juntos como uma equipe” [1]
Define o que uma pessoa poderá fazer.
É o “chapéu” que alguém poderá utilizar durante um projeto.
Uma pessoa pode ter vários “chapéus” em um projeto. É o famoso funcionário “Bombril”.
Cargo funcional <> Papel
Não existe uma definição padrão mundial para cada papel, aonde suas atribuições são iguais em qualquer parte do mundo.
Uma pessoa que é designado como Design em uma empresa pode ter atribuições complemente diferentes de uma outra pessoa que é designado como Design em outra empresa.
Exemplos de papéis:
- Atendente
- Analista de Requisitos ou Analista de Negócios
- Analista de Sistemas, Engenheiro de Software ou Projetista
- Arquiteto de Software
- Gerente de Projetos
- Analista de Configuração ou Gerente de Configuração
- Desenvolvedor
- Analista de Testes ou Testador
- Engenheiro da Qualidade ou SQA
- Projetista de Banco de Dados ou Analista de BD
- Administrador de Banco de Dados ou DBA
Artefatos ou Produtos de Trabalho
“É um pedaço de informação que é produzida, modificada ou utilizada em um processo” [1]
São produtos tangíveis de um processo:
- Documentos (nunca somente documentos)
- Especificações
- Modelos
- Post-its
- Código-fonte
- Executáveis
- O próprio processo
São utilizados como entradas, necessárias para a execução das atividades. São também criadas ou modificadas após o término das atividades. São os artefatos de saída.
Exemplos:
- Solicitações dos interessados
- Documento de Visão
- Especificação de Caso de Uso
- Diagrama Entidade-Relacionamento
- Código-fonte x
- Plano de Projeto
- Cronograma de Operações ou Cronograma do Projeto
Fluxos
“É uma sequência de atividades que produz um resultado de valor observável” [1] Pode ser expresso de várias formas:
- Diagrama de Atividades UML
- Diagramas PEPP
- Diagramas BPMN
- Fluxogramas
Diagramas
Diagrama de Atividades UML
Segue exemplo de digrama de atividades em UML.
Os retângulos são atividades e os losangos são decisões. As setas indicam o fluxo de atividades. As barras horizontais indicam o início e o fim do paralelismo de atividades. Os círculos indicam o início e o fim do fluxo de atividades.
Diagramas PEPP
Adaptado por Aguiar e Rouiller (2005) de BPMN e de fluxogramas.
PEPP é um modelo de Processos para Empresas de Pequeno Porte, criado por estudantes e pesquisadores da UFLA. [3]
Possui a seguinte estrutura:
Diagramas BPMN
BPMN é a sigla para Business Process Model and Notation. É um padrão de modelagem de processos de negócio.
É necessário conhecer bem a especificação BPMN para poder compreender os diagramas BPMN. Para mais informações, veja a especificação BPMN 2.0 em BPMN 2.0.
Modelos de processos de software
“Um modelo de processo é uma representação abstrata de um processo de software” [2]
Principais modelos de processos: [3]
- Modelo cascata
- Desenvolvimento evolucionário
- Engenharia de software baseada em componentes.
Modelo cascata ou waterfall
É o modelo mais antigo e mais conhecido. Foi o primeiro modelo a ser utilizado na indústria de software. É o modelo mais simples de ser compreendido. É sequencial, aonde as atividades são executadas em sequência, uma após a outra.
Desenvolvimento evolucionário
É um modelo iterativo e incremental. É um modelo mais flexível que o modelo cascata. É um modelo mais adequado para projetos de software de grande porte.
Podem ser de dois tipos:
- Prototipação
- Desenvolvimento incremental (em espiral)
O RUP é um modelo de processo de software que utiliza o modelo evolucionário. [1] Ele é representado por um diagrama de “baleias” (whales) ou “ondas” (waves).
O SCRUM é um modelo de processo de software que utiliza o modelo evolucionário. É o principal método utilizado no desenvolvimento ágil de software.
Ferramentas CASE
Ferramenta CASE é o nome dado ao software utilizado para apoiar as atividades de processo de software. Significa “Engenharia de Software Auxiliada por Computador”
Incluem:
- editores de diagramas,
- dicionário de dados,
- compiladores,
- debuggers,
- ferramentas para construção de sistemas de software etc.
Segue uma lista de ferramentas CASE:
Classificação CASE
- Ferramentas: apoiam tarefas individuais do processo, como verificação de consistência de um projeto, compilação de um programa e comparação de resultados de um teste;
- Workbenches: apoiam as fases ou atividades de processo, como especificação, projeto etc. Consistem geralmente em um conjunto de ferramentas com integração;
- Ambientes: apoiam todo ou pelo menos parte uma parte substancial do processo de software.
Referências
- [1] Kruchten, P. Introdução ao RUP – Rational Unified Process. Edição Revisada. Rio de Janeiro: Editora Ciência Moderna, 2003.
- [2] Sommerville, I. Engenharia de Software, 8ª edição. São Paulo: Pearson Addison-Wesley, 2007.
- [3] AGUIAR, Heron Vieira ; ROUILLER, Ana Cristina . PEPP: Processo de Software para Empresas de Pequeno Porte baseado no Modelo CMMI. 2005.