Processo de
Desenvolvimento de
Software
Processo de Software
“Processo de Software pode ser compreendido
como um conjunto de todas as atividades necessárias para transformar requisitos do usuário em software”
Historia
A Tecnologia de Processo de Software surgiu em
meados da década de 1980 e representou um
importante passo em direção à melhoria da qualidade de software através de mecanismos que proporcionam o gerenciamento automatizado do desenvolvimento de software.
Diversas teorias, conceitos, formalismos, metodologias
e ferramentas surgiram nesse contexto, enfatizando a descrição formal do modelo de processo de software, para que possa ser automatizado por um ambiente integrado de desenvolvimento de software.
O que um Processo define?
Workflows. Atividades. Artefatos.
Workflows, Atividades e
Artefatos
Um workflow define um conjunto de atividades
que produz um resultado. Cada workflow requer, usualmente, a interação de diversos
participantes.
As atividades produzem artefatos.
Um artefato é qualquer informação produzida por
um participante (modelos, documentos). Um artefato pode ter suas versões controladas.
Participantes (Workers)
Um participante é um papel assumido por um
indivíduo no processo.
Um participante pode assumir mais de um papel. Analistas, Projetistas, Programadores,
A Escolha do Processo
Não existe um modelo pronto. Considerações:
– Tamanho da organização – Natureza da aplicação
– Experiência da equipe
– Prioridades relativas: facilidades a oferecer, prazo de entrega, ...
O Modelo
Os modelos de processos de software descrevem o conhecimento
de uma organização e, portanto, modelos que descrevem
experiências bem sucedidas devem ser continuamente disseminados para reutilização em diferentes projetos.
Comunicação é uma parte fundamental do processo.
Um modelo é uma coleção de artefatos, cada um expressando uma
visão do sistema.
Um modelo = várias visões.
Uma forma de analisar o Processo de
Software é através de sua descrição
Modelo de Processo de Software
A Descrição Formal deste modelo permite a
sua Automação
Execução das características planejadas pelos
Reuso de Processo
A reutilização de processos de software é uma técnica
de aproveitamento de informações produzidas durante a implementação de processos de software anteriores, com o objetivo de reduzir o esforço necessário para o desenvolvimento de um novo processo de software.
O pressuposto básico da reutilização é produzir
processos de software de maior qualidade e
confiabilidade de forma mais produtiva e atendendo às características organizacionais e de tipo de projeto de software.
Reuso de processo não é exatamente igual a
reuso de componentes. isso é apenas
parcialmente verdade, visto que os processos
envolvem elementos relacionados com aspectos sociais, organizacionais, tecnológicos e
ambientais.
A crescente complexidade da atual modelagem
de processos vem influenciando a investigação de tecnologias de reutilização que sejam viáveis nesse campo específico.
O fato de que as definições de processo podem ser
reunidas em uma biblioteca para reutilização é uma das vantagens principais do uso de ambientes
orientados a processo. Ambientes de
Desenvolvimento Orientados a processo.
Assim, um processo realizado com sucesso pode
servir de acesso por outros sem muito esforço.
Esta característica faz com que a organização não
somente economize em recursos, mas também possa atingir o nível 3 de maturidade do modelo CMMI.
Nível 3 CMMI: Definido
O processo de software em relação às
atividades de gerenciamento e
desenvolvimento é documentado,
padronizado e integrado em um processo de software padrão para a organização. Todos os projetos utilizam uma versão aprovada e adaptada do processo padrão para
Exemplo: ProReuse
Ferramenta de suporte ao ImPProS com o objetivo de
prover o reuso de processos de software ao longo da implementação de um processo de software.
Possibilita criar uma base de processos reusados a
fim de ajudar no momento da definição de um processo de acordo com as características
(organizacionais, de projetos de software e de produto) configuradas ao mesmo no ImPProS.
Pessoal Modelo de Ciclo de Vida Atividades Artefatos Procedimentos Processos Recursos
ProReuse
dados.xml Documento XML 5 1 2 3 4 1 7 6 Grupo 1
Requisitos:
RUP:
Tela Splash
Tela de Controle de Acesso Tela de Alteração de Senha Tela Principal
XP:
Controle de Acesso às Funcionalidades do ProReuse Integração com o ImPProS
Tela Sobre ProReuse
Grupo 2
Requisitos:
RUP:
Definindo Projeto de Reuso de Processo de Software Tela Listando os Itens dos Projetos do ProReuse
Tela Abrindo Projeto de Reuso de Processo de Software
Definição de um Processo
deve ocorrer em níveis de caracterização:
Processo Padrão;
Processo Especializado;
Processo Instanciado.
Permitir uma análise das diferentes
características que levam a sua composição para um projeto ou organização específica.
Processo Padrão
A definição de um processo padrão estabelece
uma estrutura comum a ser utilizada pela
organização nos seus projetos de software e constitui a base para a definição de todos os seus processos.
Descreve as atividades que devem ser
realizadas no desenvolvimento de sistemas de software em todos os projetos de uma
O uso de modelos de processo genéricos como
base para o planejamento do processo de
software específico para um projeto permite aos gerentes definir planos em conformidade com os padrões de qualidade e procedimentos da organização (MAURER et al., 1999;
HENNINGER, 2001).
A definição do processo padrão considera as
Para a elaboração de um processo padrão para a
organização, é preciso dispor de conhecimento sobre as atividades de desenvolvimento e manutenção de software que são sempre realizadas na organização independente de um projeto específico.
O processo de software padrão da organização deverá
ser adaptado (especializado) considerando-se as
características relacionadas ao tipo de software (por exemplo, sistemas de informação) e ao paradigma de desenvolvimento utilizado (por exemplo, orientação a objetos).
Tipo de Software
O tipo do software a ser desenvolvido tem impacto no
processo de software a ser definido.
Um software interativo, por exemplo, requer a inclusão
de atividades no processo de desenvolvimento para otimização da interação homem-máquina.
Por outro lado no desenvolvimento de sistemas de
informação é fundamental garantir que as regras de negócio estão bem definidas e atendem os requisitos especificados bem como garantir a segurança dos
Paradigma de
Programação
A escolha do paradigma está fortemente ligada ao tipo
de software a ser desenvolvido.
A escolha do paradigma implica em modificações na
definição de algumas das atividades do modelo padrão, previamente definido.
A atividade de análise, por exemplo, tem uma
abordagem diferente do paradigma estrutural para o orientado a objetos.
Processo Instanciado
A instanciação para projetos específicos consiste na adaptação
de um processo especializado a um projeto, considerando-se as suas peculiaridades.
Para ser utilizado em um projeto específico, o processo
especializado mais adequado deve ser instanciado para atender às características do projeto específico, devendo-se considerar o tamanho e complexidade do produto, as características da
equipe de desenvolvimento, a expectativa de vida útil do
software e demais características do projeto (MACHADO, 2000; BORGES, 2001).
Durante o planejamento de um novo projeto o
gerente identifica e analisa as características principais deste projeto, que são usadas como base para a adaptação do padrão, gerando um processo instanciado para o projeto.
Isso inclui a seleção de atividades e métodos
do modelo de processo genérico que devem fazer parte do processo instanciado. Implica, também, na seleção de um modelo de ciclo de vida e no mapeamento das atividades do
Conclusões
Um processo não deve ser seguido cegamente,
gerando trabalho desnecessário e produzindo artefatos sem valor. O processo deve ser o mais simples
possível, cumprindo sua missão de produzir rapidamente software de qualidade previsível. (KRUCHTEN, 1999).
O processo deve se tornar um recurso valioso em que
A descrição do processo de software pode ser
usada para gerar planos de projeto, apoiar estimativas de esforço e obter informações
sobre como realizar as atividades, entre outros (HENNINGER, 2001; NAGEL, 2001).
É uma tarefa difícil abstrair o modelo de
processo a partir de um padrão e, então, instanciá-lo para um projeto específico.
Em uma situação típica, a pessoa responsável
pela definição do processo parte do processo padrão e mentalmente o mapeia para o modelo de ciclo de vida desejado.
Durante ou depois da definição deste processo,
é feita uma verificação manual dos processo, para garantir sua conformidade com o padrão. Este processo leva a um grande consumo de recursos (PURPER, 2000).