Pular para o conteúdo principal

Processo de Software

Vimos que a engenharia de software requer que as atividades para desenvolver o software sejam feitas de forma planejada, gerenciada, com pessoal capacitado, custos e prazos estimados e utilizando teorias, métodos, técnicas e ferramentas adequadas.

Elaborar um processo de software significa determinar de forma precisa e detalhada quem faz o que, quando e como. Um processo pode ser visto como uma instância de um modelo de processo ou método com suas técnicas e ferramentas associadas. O processo é definido durante a etapa de planejamento, no qual as atividades que o compõem foram alocadas aos membros da equipe de desenvolvimento, com prazos definidos e métricas para se avaliar como elas estão sendo realizadas.

Enquanto um método é algo teórico, o processo deve determinar ações práticas a serem realizadas pela equipe como prazos definidos. O processo é o resultado do planejamento e precisa ser gerenciado no decorrer de sua execução.

Não é objetivo deste texto a elaboração de processos de desenvolvimento. Apenas podemos fazê-lo após estudarmos técnicas de planejamento e gerenciamento. Neste capítulo vamos nos limitar a estudar alguns modelos de processo que nos indique como as diversas etapas e atividades do desenvolvimento podem ser estruturadas.

Conceitos importantes

  • Um processo é organizado em atividades.
  • Atividades são de responsabilidade de um membro da equipe (trabalhador).
  • Atividades devem gerar um artefato de saída, que possa ser verificado, e podem requisitar um artefato de entrada.
  • Um artefato é um modelo, documento ou código produzido por uma atividade.
  • Uma entrega (liberação) é um artefato entregue ao cliente
  • Um processo deve estabelecer uma série de marcos.
  • Um marco é um ponto final de uma atividade de processo.

Modelos de Processo

Um modelo para um processo de desenvolvimento é uma proposta teórica que junto com o planejamento deve determinar quais atividades devem ser realizadas, quando, como e por quem. Nesta seção vamos apresentar alguns dos mais conhecidos modelos do processo de desenvolvimento. Eles são o modelo Cascata, o modelo Evolutivo, o modelo Incremental, o modelo Espiral, o modelo Transformação, o modelo XP (eXtreme Programming), e RUP (Processo Unificado da Rational).

A escolha de um destes modelos envolve diversos fatores. Um deles é o tipo de software - se é um software de banco de dados, um software de tempo-real, um software embutido, um sistema especialista. Outro fator importante é se a equipe de desenvolvimento é uma empresa de desenvolvimento (software house), uma fábrica de software (desenvolvimento em linha de produção) ou se é a equipe de engenheiros da própria organização que utilizará o produto. A maneira como o produto será vendido e instalado é um outro fator importante - se o software é para ser vendido para um público amplo (software genérico) ou se será instalado em uma única empresa, sob encomenda.

Um conjunto de modelos de processo ou métodos, as técnicas de desenvolvimento é uma metodologia de desenvolvimento.

Para saber mais, recomendo os artigos:

  1. Fuggetta, A. Software process: a roadmap, in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  2. Sommervile, I.Software Process Models, ACM Computing Surveys, Vol.28, no.1, March 1996.
Veja os slides em PDF.

Comentários

Anônimo disse…
Saudacoes!
Ja fico um pouco confuso em relacao a Processo de Sw e Modelo de Processo de Sw.
Isso porque entendia o RUP como algo fora dos modelos de processo (Cascata, Iterativo, etc)

Espero poder ter um esclarecimento melhor!
Obrigado
Stelio - Maputo(Moz)
stelyosm@yahoo.com.br

Postagens mais visitadas deste blog

Ciclo de Vida do Software

O ciclo de vida de um software descreve as fases pelas quais o software passa desde a sua concepção até ficar sem uso algum. O conceito de ciclo de vida de um software é muitas vezes confundido com o de modelo de processo (assunto do próximo artigo). Existem várias propostas e denominações para as fases do ciclo de vida de um software. Nossa proposta identifica 4 fases que são delimitadas por eventos típicos em diversos ciclos de vida. Cada fase inclui um conjunto de atividades ou disciplinas que devem ser realizadas pelas partes envolvidas. Essas fases são: Definição Desenvolvimento Operação Retirada Fase de Definição A fase de definição do software ocorre em conjunto com outras atividades como a modelagem de processos de negócios e análise de sistemas . Nesta atividade, diversos profissionais buscam o conhecimento da situação atual e a identificação de problemas para que possam elaborar propostas de solução de sistemas computacionais que resolvam tais problemas. Dentre as propostas...

O que é Engenharia de Software?

O que é Engenharia? Vejamos duas definções: Engenharia é a atividade em que os conhecimentos científicos e técnicos e a experiência prática são aplicados para exploração dos recursos naturais, para o projeto, construção e operação de objetos úteis (Origem: Wikipédia, a enciclopédia livre). Engenharia é a aplicação de métodos científicos ou empíricos à utilização dos recursos da natureza em benefício do ser humano (Dicionário Houaiss) Essas definições não são suficientes para designar tudo aquilo que envolve engenharia. Para entender melhor o que é engenharia, propomos que você faça uma pesquisa para responder as seguintes questões: Qual a diferença entre o desenvolvimento de um produto de forma artesanal e o desenvolvimento seguindo os princípios de engenharia? Em outras palavras, qual a diferença entre o trabalho de um artesão e o de um engenheiro? Qual a diferença entre cozinhar e fazer engenharia de alimentos? O que as diferentes engenharias (civil, mecânica, elétrica/eletrônica, qu...

O Modelo Espiral

O objetivo do modelo espiral é prover um metamodelo que pode acomodar diversos processos específicos. Isto significa que podemos encaixar nele as principais características dos modelos vistos anteriormente, adaptando-os a necessidades específicas de desenvolvedores ou às particularidades do software a ser desenvolvido. Este modelo prevê prototipação, desenvolvimento evolutivo e cíclico, e as principais atividades do modelo cascata. Sua principal inovação é guiar o processo de desenvolvimento gerado a partir deste metamodelo com base em análise de riscos e planejamento que é realizado durante toda a evolução do desenvolvimento. Riscos são circunstâncias adversas que podem surgir durante o desenvolvimento de software impedindo o processo ou diminuindo a qualidade do produto. São exemplos de riscos: pessoas que abandonam a equipe de desenvolvimento, ferramentas que não podem ser utilizadas, falha em equipamentos usados no desenvolvimento ou que serão utilizados no produto final, etc....