Você está na página 1de 53

Engenharia de Software I

Processos de Software
Plano

 Modelos de Processo de Software

 Iteração de Processo

 Processos por Fase de Desenvolvimento de Software

 Metodologias Desenvolvimento de Software

2
Modelos de Processo de Software

3
Processos de Software
 Um processo de software é um conjunto estruturado de atividades
(ou fases) necessárias para produzir um produto de software.

 Existe uma diversidade de processos, não há um processo ideal.

 Embora existam muitos processos de software diferentes, há


atividades fundamentais comuns a todos:
 Especificação do software
 Projeto Desenvolvimento do Software
 Implementação
 Validação do software
 Manutenção/Evolução do software

4
Modelos de Processo
 Modelo de processo de software – Descrição simplificada de um
processo de software, apresentada a partir de uma perspectiva
específica.

 Exemplos de tipos de modelos de processo de software


 Modelo Workflow (sequência de actividades no processo)

 Modelo de fluxo de dados ou de actividades (apresenta como


a entrada para o processo é transformada em uma saída)

 Modelo de papel/acção (Apresenta o papel das pessoas


envolvidas no projecto)

5
Modelo de Desenvolvimento
 Representação abstrata das fases de um processo de software e suas
interdependências

 Não são descrições definitivas de processos de software.

 Modelos genéricos ou Paradigmas


 Cascata (ou Clássico) – Considera as actividades do processo de desenvolvimento de
software como fases separadas do processo, assumindo a conclusão e aprovação de uma
fase antes de passar para a próxima.

 Desenvolvimento Evolucinário – Intercala as actividades de especificação,


desenvolvimento e validação.

 Transformação Formal - Transforma especificação formal matemática do sistema em


um programa, utilizando métodos matemáticos.

 Reuso de componentes – Concentra-se na integração das partes do sistema já existente


aos componentes desenvolvidos, em vez de desenvolvê-las do zero.
6
Características do Modelo Cascata
 Uma fase não inicia enquanto a outra não esteja terminada

 Abordagem sistemática e seqüencial

 Estágios do modelo retratam as actividades de desenvolvimento


fundamentais:
 Análise e definição de requisitos
 Projecto de sistemas e de software
 Implementação e teste de sistema
 Operação e manutenção

 Uma alteração no processo envolve custos elevados

7
Características do Modelo Cascata
 Processo organizado em fases distintas e separadas (o que não
se verifica na prática)

 Baseado nos processos convencionais de engenharia

 Requer especificação completa e bem entendida

 Dificulta a introdução de mudanças após o início do processo

8
O Modelo Cascata
Especificação

Projeto

Implementação

Validação

Manutenção

9
Desenvolvimento Evolucionário

 Tem como base a ideia de desenvolver uma implementação


inicial, expor o resultado ao comentário do utilizador e fazer
o seu aprimoramento por meio de muitas versões, até que o
resultado final seja o sistema adequado.

10
Desenvolvimento Evolucionário
 Há dois tipos de desenvolvimento evolucionário:
 Desenvolvimento exploratório
 Possui como objectivo o trabalho com o cliente, a fim de
explorar seus requisitos e entregar um sistema final.
 O desenvolvimento do sistema inicia com as partes do
sistema que são compreendidas.
 O sistema evolui com o acréscimo de novas características, à
medida que elas são propostas pelo cliente.

 Fazer protótipo descartáveis


 São feitos protótipos sucessivos e melhorados com os requisitos do cliente na
tentativa de melhor os compreender.

11
Desenvolvimento Evolucionário
 Ciclos de desenvolvimento
 Fases entrelaçadas
 Especificação evolui junto com o sistema
 Suporta requisitos parcialmente definidos
 Protótipo “descartável” (Throw-away prototyping)
 Jogar fora a primeira versão?
 Pode ser aplicado para partes do sistema
 Ex.: Interface do usuário

 São identificados três grandes problemas:


 O processo não é visível
 Os sistemas são frequentemente mal estruturados
 Podem ser exigidas ferramentas e técnicas especiais

12
Desenvolvimento Evolucionário
Atividades
Concorrentes

Especificação Versão
Inicial

Descrição Versões
Desenvolvimento
Inicial Intermediárias

Versão
Validação
Final

13
Desenvolvimento Formal de Sistemas
 Abordagem muito próxima ao modelo em cascata, mas cujo processo de
desenvolvimento tem como base a transformação matemática formal de
uma especificação de sistema em um programa executável.

 As principais diferenças entre o desenvolvimento formal e o modelo em


cascata são:
 A especificação de requisitos de software é redefinida em uma especificação
formal detalhada, que é expressa em uma notação matemática.

 Os processos de desenvolvimento de projecto, implementação e teste de


unidade são substituídos por um processo de desenvolvimento
transformacional, em que a especificação formal é refinada por meio de uma
série de transformações, em um programa.

14
Desenvolvimento Formal de Sistemas

15
Reuso de Componentes

 Técnica que supões que parte do sistema já exista.

 Processo de desenvolvimento direccionado para a


interligação das partes existentes do sistema.

16
Reuso de Componentes
Fases do processo orientado a reuso
 Análise de componentes - identificação de componentes que
implementam determinada especificação de requisitos.
 Modificação de requisitos - modificação dos requisitos para
que se adequam aos componentes encontrados.
 Projecto com reuso – projecção ou reutilização de infra-
estrutura existente.
 Desenvolvimento e integração – Desenvolvimento e
integração do software produzido com o existente.

 A Vantagem deste processo é a redução da quantidade de software


a ser desenvolvida, reduzindo assim custos e riscos.
17
Reuso de Componentes

Modelo genérico de processo para o desenvolvimento orientado a reuso.

18
Iteração de Processo

19
Iteração de Processo

 Em algumas abordagens de desenvolvimento de software,


verifica-se a necessidade de repetirem-se fases do processo.

 Estes modelos podem ser chamados de híbridos ou modelos


iterativos

 Pode-se identificar dois modelos híbridos:


1. Desenvolvimento Incremental
2. Desenvolvimento em Espiral

20
Desenvolvimento Incremental
 Fornece ao cliente a oportunidades de adiar decisões sobre seus
requisitos detalhados, até que ele tenha alguma experiência com o
sistema.

 É um meio de reduzir o retrabalho no processo de desenvolvimento.

 Uma evolução dessa abordagem é o “Extreme Programming”


desenvolvida por [Beck, 1999]*

21
Desenvolvimento Incremental
 Vantagens
 O cliente pode tirar proveito do sistema antes mesmo do seu
término.
 Os primeiros incrementos podem servir de protótipos e base para
definição de requisitos.
 Existe um risco menor de fracasso completo do sistema.
 As funções mais importantes do sistema passam a ser testadas mais
vezes porque as funções prioritárias são entregues primeiro.

 Desvantagens
 Propensão a desestruturação do software
 Dificuldade na compreensão e manutenção do sistema
 Incrementos devem ser relativamente pequenos (não mais do que 20
mil linhas de código)

22
Desenvolvimento Espiral
 O processo de software passa a ser como uma espiral possibilitando
retorno de informação entre as actividades.

 Combina a natureza iterativa da prototipagem com os aspectos


controlados e sistemáticos do modelo em cascata

 Cada loop é dividido em 4 sectores


1. Definição de objectivos, alternativas e restrições
2. Avaliação de riscos, identificar e resolver riscos
3. Desenvolvimento e validação do produto
4. Planear a próxima fase

 Um dos seus pontos fortes é a sua consideração explícita dos riscos na


produção de software.

23
Desenvolvimento Espiral

24
Processos por Fase de
Desenvolvimento de Software

25
Processos de software
 Processos de software não são só por si garantia para considerar que está sendo
satisfeito o conjunto básico de critérios apontado pela engenharia de software.

 Relacionamento entre processo de software e os métodos aplicados para a sua


avaliação e melhoria.

26
Processos por Fase de
Desenvolvimento de Software

 Cada fase do processo de desenvolvimento de software possui


processos inerentes.

 Principais actividades para os seguintes processo:


 Especificação de software
 Projecto e Implementação de Software
 Validação de Software
 Manutenção e Evolução de Software

27
Especificação de software
 Destina-se a estabelecer quais funções são requeridas pelo
sistema e as restrições sobre a operação do sistema.

 Esta fase é também conhecida por Engenharia de


Requisitos.

 Estágio importante do processo de software pela implicância,


sobre o projecto e implantação de software, que erros nesta
fase produzem.

28
Especificação de Software
 Existem quatro fases principais no processo de engenharia de
requisitos
1. Estudo de viabilidade: Analisam-se as necessidades dos
utilizadores, a viabilidade do sistema do ponto de vista comercial e
até que ponto o sistema pode ser implementado e a que custo
2. Levantamento e análise de requisitos: permite a obtenção dos
requisitos do sistema pela observação de componentes existentes
ou por conversa com utilizadores, entre outros.
3. Especificação de requisitos: Traduz as informações colectadas
durante a actividade de análise em um documento que defina um
conjunto de requisitos.
4. Validação de requisitos: Verifica os requisitos quanto a sua
pertinência, consistência e integridade.

29
Especificação de Software

Processo de Engenharia de Requisitos


30
Desenvolvimento do Software
(Projecto e Implementação)
 Projecto de software é a descrição de estrutura de software a
ser implementada, dos dados que são parte do sistema, das
interfaces entre os componentes dos sistemas e algumas vezes
dos algoritmos utilizados.

 Este processo de projecto desenvolve-se iterativamente com


o acréscimo de formas e detalhes, à medida que o projecto é
desenvolvido, com “retornos” constantes.

 O processo de projecto pode envolver o desenvolvimento de


vários modelos de sistema, em diferentes níveis de
abstracção.
31
Desenvolvimento do Software
(Projecto e Implementação)
 Projecto de software – actividade na qual são definidos os componentes,
estruturas e relacionamentos do sistema permitindo e agilizando a sua
codificação.

 Não existe nenhum método de projecto padrão. Este é definido


mediante as necessidades do problema em causa.

 Programação e depuração
 A programação é a actividade que consiste em codificar um sistema
mediante requisitos solicitados.
 A depuração consiste na actividade do programador testar o seu próprio
código, podendo assim identificar erros e corrigi-los.

 O processo de desenvolvimento de um sistema é ou deve ser fruto dos


processos de projecto de sistemas
32
Desenvolvimento do Software
(Projecto e Implementação)
 As actividades específicas de processo de projecto são:
1. Projecto de arquitectura – Os subsistemas que constituem o sistema e suas
relações são identificados e documentados.

2. Especificação abstracta – Para cada subsistema, é produzida uma especificação


abstracta de suas funções e das restrições dentro das quais deve operar.

3. Projecto de interface – Para cada subsistema, sua interface com outros subsistemas
é projectada e documentada.

4. Projecto de componentes – Funções são alocadas a diferentes componentes e as


interfaces desses componentes são projectadas.

5. Projecto de estrutura de dados – As estruturas de dados utilizadas na


implementação de sistemas são projectadas em detalhe e especificadas.
6. Projecto de algoritmos – Os algoritmos utilizados para proporcionarem serviços
são projectados detalhadamente e especificados.

33
Desenvolvimento do Software
(Projecto e Implementação)

Um modelo geral do processo de projecto

34 O processo de depuração
Validação de Software
 Destina-se a mostrar que um sistema está de acordo com a sua
especificação e que ele atende às expectativas do cliente comprador do
sistema.

 Excepto para pequenos programas, os sistemas não devem ser testados


como uma unidade isolada, “monolítica”.

 Os grandes sistemas são constituídos a partir de subsistemas, que são


construídos a partir de módulos, que são compostos por procedimentos
e funções.

 O processo de teste deve, por conseguinte, evoluir em estágios, ou seja,


os testes são realizados incrementalmente, em conjunto com a
implementação do sistema.

35
Validação de Software
 Estágios do processo de testes

 Teste de unidade - ?

 Teste de módulo: - ?

 Teste de subsistema: - ?

 Teste de sistema: - ?

 Teste de aceitação: - ?

36
Validação de Software

O processo de teste

37
Validação de Software

Fases de teste no processo de software

38
Manutenção/Evolução de software
 A manutenção de software é o processo de modificar um
software já em fase de produção, i. é. depois que ele entrou
em operação.
 A flexibilidade de sistemas é uma das principais razões pelas
quais, cada vez mais os softwares estão sendo incorporados
em sistemas grandes e complexos.

39 Evolução de sistema
Metodologias de Desenvolvimento de
Software

40
Metodologias Desenvolvimento de
Software
 Para além da sequência de etapas e procedimentos
recomendados para serem aplicados durante o processo de
desenvolvimento de sistemas de informação, acrescenta a esta
definição a utilização de um conjunto de ferramentas, técnicas e
notações [Booch94].

 O processo de desenvolvimento de software é um acto complexo,


com múltiplas variáveis e inúmeras vezes com qualidade reduzida,
ultrapassando os prazos e os orçamentos previstos.

 Metodologias tradicionais e Metodologias ágeis

41
Metodologias Desenvolvimento de
Software
 Metodologias clássicas
 RUP – Rational Unified Process
 ICONIX
 Microsoft Solution Framework

 Metodologias ágeis
 XP – Extreme Programming
 Scrum
 DSDM – Dynamic Systems Development Method

42
Metodologias Clássica - RUP

 O RUP, abreviação de Rational Unified Process (ou


Processo Unificado da Rational) é um processo de
Engenharia de software criado pela Rational Software
Corporation.

 É uma métodologia proprietário de desenvolvimento de


software, e provê técnicas a serem seguidas pelos membros
da equipe de desenvolvimento de software com o objectivo
de aumentar a sua produtividade.

43
Metodologias Clássica - RUP
 Linhas mestras:

 Desenvolvimento iterativo

 Gestão de requisitos

 Uso de arquitectura baseada em componentes

 Uso de software de modelos visuais

 Verificação da qualidade do software

 Gestão e Controle de Mudanças do Software

44
Metodologias Clássica – RUP
 O RUP é composto por 4 fases com
objectivos específicos. :
 Concepção – Elaboração – Construção -
Transição

45
Metodologias Clássica – RUP

46
Metodologias Ágeis
A agilidade é dinâmica, específica em conteúdo, agressiva no acolhimento de
modificações e orientada ao crescimento.
Steven Goldman et. Al.

 Processo Ágil – Caracterizado para que atenda três suposições-


chave sobre a maioria dos projectos de software.
1. Dificuldade de prever os requisitos de software que irão modificar-
se ou permanecer.
2. Dificuldade de prever o quanto de projecto é necessário antes que a
construção seja usada para comprovar o projecto.
3. Análise, projecto, construção e testes não são tão previsíveis (do
ponto de vista de planeamento) como gostaríamos.

47
Equipa Ágil
 Características de uma equipa ágil
 Competência – talento inato, habilidades específicas relacionadas a
software e conhecimento global do processo.
 Foco comum – Focados em uma meta.
 Colaboração – Colaborar entre membros da equipa, com o cliente e
com os gerentes do negócio.
 Capacidade de tomada de decisão – Equipa autónoma, com
autoridade para tomada de decisão sobre tópicos técnicos e de
projectos.
 Respeito e confiança mútua.
 Auto-organização – A equipa:
1. Organiza-se para o trabalho feito;
2. Organiza o processo para melhor acomodar seu ambiente local
3. Organiza o cronograma de trabalho para conseguir melhor entrega do
incremento de software.

48
Metodologias Ágeis –
Extreme Programming (XP)
 Abordagem orientada a objecto

 Inclui um conjunto de regras e práticas que ocorrem no


contexto das quatro actividades que a compõem:
 Planeamento
 Projecto
 Codificação
 Teste

49
Extreme Programming (XP)
Extreme Programming é uma
disciplina de desenvolvimento
de software baseada em valores
de simplicidade, comunicação,
feedback e coragem.
Ron Jeffries

50
Metodologia Ágil - Scrum
 Metodologia para gestão e planeamento de projectos de
software.

 Os projectos scrum são divididos em ciclos chamados Spints.

 O Sprint representa um Time Box dentro do qual um


conjunto de atividades deve ser executado.

51
Scrum
 Lista de funcionalidades –
Product Backlog

 Sprint Planning Meeting

 Product Owner

 Daily Scrum meeting

 Sprint Review Meeting

 Sprint Retrospective

52
Prática
 Problema: Criar um sistema de gestão de vendas e stock de
uma loja, considerando que a mesma já possui uma pequena
aplicação de gestão de vendas feita com o access2007. O
banco de dados já possui aproximadamente 1Gb de
informação. Teve-se a informação que o cliente deseja abrir
outra loja, querendo no entanto, poder partilhar a
informação entre as lojas. Ex: Caso não tenha um produto na
loja 1, possibilitar uma pesquisa e verificar sua existência na
loja2.
 Mediante o conteúdo apresentado, discutir sobre como, quais
serão os passos e metodologia a utilizar para a produção do
software solicitado.

53

Você também pode gostar