• Nenhum resultado encontrado

ES1 03 Fases modelos processo software

N/A
N/A
Protected

Academic year: 2019

Share "ES1 03 Fases modelos processo software"

Copied!
84
0
0

Texto

(1)

Engenharia de Software 1

03 - Fases de um processo de software

Modelos de processo de desenvolvimento de software

Alexandre de Andrade Barbosa

(2)

Objetivos

Objetivos

Descrever o que s˜

ao processos de desenvolvimento de software

Especificar em termos gerais quais s˜

ao as fases de um processo

Descrever alguns dos principais modelos de processo de software

Apresentar as vantagens e desvantagens de tais modelos

(3)
(4)
(5)
(6)
(7)

Desenvolvimento de software

(8)

Desenvolvimento de software

(9)

Desenvolvimento de software

O desenvolvimento de software sempre enfrentou problemas

como o atraso e cancelamento de projetos, software sem

qualidade, longos ciclos de desenvolvimento e alto custo.

(10)

Desenvolvimento de software

Uma analogia...

(11)

Desenvolvimento de software

Uma analogia...

Em alguns aspectos o desenvolvimento software pode ser

comparado com a constru¸c˜ao civil...

´

E necess´ario construir o produto de forma organizada para se

obter sucesso.

(12)

Desenvolvimento de software

Uma analogia...

Em alguns aspectos o desenvolvimento software pode ser

comparado com a constru¸c˜ao civil...

´

E necess´ario construir o produto de forma organizada para se

obter sucesso.

Mudan¸cas ap´

os a constru¸c˜ao do produto s˜ao mais caras do que

em etapas iniciais.

... em

MUITOS

outros aspectos n˜ao!!

(13)

Desenvolvimento de software

(14)

Desenvolvimento de software

O que ´e software?

(15)

Desenvolvimento de software

(16)

Desenvolvimento de software

O que ´e um processo de software?

“Um processo de desenvolvimento ´e um conjunto de atividades

que leva `a produ¸c˜ao (amplia¸c˜ao ou modifica¸c˜ao) de um produto

de software” (Ian Sommerville).

(17)

Fases de um processo de desenvolvimento de software

Existem v´arios processos de desenvolvimento, cada um define um

conjunto de fases (ou atividades) diferente.

Algumas atividades s˜ao comuns para a maioria dos processos.

Sommerville

Pressman

Eduardo Bezerra

Requisitos

-

Levantamento de requisitos

An´alise

An´alise

Projeto

Projeto

Projeto

Desenvolvimento

Codifica¸c˜ao

Implementa¸c˜ao

Verifica¸c˜ao

Teste

Teste

Valida¸c˜ao

-

Manuten¸c˜ao

(18)

Exerc´ıcio

De maneira sucinta descreva sobre o que cada uma das fases a seguir deve tratar...

An´alise

Projeto

Codifica¸c˜ao

(19)

Fases de um processo de desenvolvimento de software

Cada uma das fases pode produzir diversos artefatos (marcos,

documentos, ...)

Basicamente os objetivos s˜ao:

definir o que ser´a implementado...(An´alise)

especificar como ser´a implementado...(Projeto)

criar um programa execut´avel...(Codifica¸c˜ao)

checar se o programa corresponde ao esperado... (Verifica¸c˜ao e

valida¸c˜ao)

(20)

An´

alise

Compreens˜ao e defini¸c˜ao de quais servi¸cos s˜ao necess´arios

Identifica¸c˜ao das restri¸c˜oes de opera¸c˜ao e desenvolvimento do

sistema

(21)

An´

alise

(22)

An´

alise

Estudo de viabilidade

avalia-se se as necessidades dos usu´arios podem ser satisfeitas

com as tecnologias dispon´ıveis;

verifica-se se os custos s˜ao adequados e se o produto pode ser

desenvolvido dentro das restri¸c˜

oes de or¸camento.

(23)

An´

alise

Elicita¸c˜ao e an´alise de requisitos

deriva¸c˜ao dos requisitos (entrevistas, question´arios, observa¸c˜ao,

...)

pode-se criar um prot´otipo

Especifica¸c˜ao de requisitos

tradu¸c˜ao das informa¸c˜

oes coletadas para produ¸c˜ao de um

documento de requisitos

(24)

An´

alise

Valida¸c˜ao de requisitos

deve-se checar se os requisitos documentados s˜ao realistas e

consistentes

(25)

Exerc´ıcio

Forne¸

ca um exemplo de projeto invi´

avel. Justifique.

Forne¸

ca um exemplo de projeto vi´

avel. Justifique.

Qual seria uma maneira interessante para “Elicitar” os requisitos do projeto descrito

na resposta anterior?

(26)

Projeto

O projeto de um sistema ´e uma descri¸c˜ao da estrutura que ser´a

implementada, dos dados e das interfaces do programa, entre

outros

(27)

Projeto

(28)

Projeto

Projeto de arquitetura

descri¸c˜ao dos subsistemas constituintes e dos relacionamentos

entre estes

um modelo arquitetural deve ser adotado

uma arquitetura inadequado pode prejudicar a adequa¸c˜ao aos

requisitos

Especifica¸c˜ao abstrata

(29)

Projeto

Projeto de interface

descri¸c˜ao de como cada subsistema deve interagir com outros

subsistemas

(30)

Projeto

Projeto de componente

componente podem fornecer servi¸cos necess´ario no sistema

´e preciso descrever as interfaces destes componente com o

restante do sistema

Projeto de estruturas de dados

descri¸c˜ao de quais estruturas de dados s˜ao mais adequadas para

resolu¸c˜ao dos problemas pertinentes ao sistema

Projeto de algoritmos

(31)

Projeto

(32)

Projeto

Outros projetos importantes associados aos projetos de ES...

Projeto de banco de dados

descri¸c˜

ao do esquema no qual os dados ser˜

ao persistidos

pode-se definir o SGBD que ser´

a utilizado

Projeto de interface com o usu´ario

descri¸c˜

ao (baixa ou alta fidelidade) dos meios de intera¸c˜

ao com o

usu´

ario

(33)

Exerc´ıcio

Qual ou quais atividades de projeto vocˆ

e considera mais importantes? Por que?

(34)

Codifica¸c˜

ao

Transforma¸c˜ao dos modelos criados na fase de projeto para um

programa execut´avel.

N˜ao ´e necess´ario desenvolver tudo internamente, algumas

alternativas:

componentes;

frameworks

;

ferramentas de gera¸c˜ao de c´

odigo

(35)

Verifica¸c˜

ao e valida¸c˜

ao

Consiste em verificar e validar se a solu¸c˜ao codificada:

possui todas as caracter´ısticas desejadas pelo cliente;

n˜ao possui erros (

bugs

) em sua execu¸c˜ao.

(36)

Verifica¸c˜

ao e valida¸c˜

ao

Testar corresponde a identificar erros existentes

Debug consiste em corrigir um determinado erro j´a identificado

(37)

Verifica¸c˜

ao e valida¸c˜

ao

Teste de componente

(38)

Verifica¸c˜

ao e valida¸c˜

ao

Teste de sistema

quando as partes do sistema s˜ao combinadas podem surgir erros

decorrentes das intera¸c˜

oes entre os subsistemas

visa encontrar erros resultantes das intera¸c˜

oes n˜ao previstas e dos

problemas existentes entre as interfaces

(39)

Verifica¸c˜

ao e valida¸c˜

ao

Teste de aceita¸c˜ao

est´agio final do processo de teste

(40)
(41)

Exerc´ıcio

Como vocˆ

e realiza debug em seus c´

odigos?

Como vocˆ

e testa seus c´

odigos?

Vocˆ

e adota algum planejamento para realizar os testes?

(42)

Evolu¸c˜

ao

Sistemas devem mudar para que permane¸cam ´

uteis.

´

E a fase onde o software deve passar a maior parte de seu ciclo

de vida.

(43)

Evolu¸c˜

ao

Sistemas devem mudar para que permane¸cam ´

uteis.

´

E a fase onde o software deve passar a maior parte de seu ciclo

de vida.

(44)

Evolu¸c˜

ao

(45)

Exerc´ıcio

(46)

Engenharia de software

Engenharia de Software (ES) ´e uma tecnologia em camadas

O foco da ES ´e a qualidade do produto

A base da ES ´e o processo de desenvolvimento

Os m´etodos da ES envolve um conjunto de conhecimentos

t´ecnicos para constru¸c˜ao de software

(47)
(48)

Engenharia de software

Um processo de software ´e um conjunto de atividades que leva a

produ¸c˜ao de um produto de software

Processos de software s˜ao complexos, s˜ao processos intelectuais e

criativos, ent˜ao dependem do julgamento humano

(49)

Engenharia de software

Arcabou¸co (framework) de um processo de software:

atividades comuns a todos os projetos;

conjunto de tarefas, marcos, produtos e pontos de garantia de

qualidade

(50)
(51)

Modelos de processo de software

Como as fases descritas anteriormente interagem?

(52)

Modelos de processo de software

(53)

Modelos de processo de software

Para desenvolver um produto de software a equipe deve utilizar

um processo, m´etodos e ferramentas

Um modelo de processo ´e uma representa¸c˜ao abstrata de um

processo

Tamb´em descrito pelos termos:

(54)

Modelos de processo de software

Cascata

Prototipagem

Iterativo e incremental

Espiral

(55)

Cascata

Baseado em processos tradicionais de engenharia de sistemas

Tamb´em chamado de:

Modelo sequencial linear

Modelo de desenvolvimentos cl´assico

(56)
(57)

Cascata

(58)

Cascata

Vantagens:

Simples de gerenciar

Simples de identificar a fase atual

Documenta¸c˜ao pode refletir fielmente o que foi produzido

(59)

Cascata

Vantagens:

Simples de gerenciar

Simples de identificar a fase atual

Documenta¸c˜ao pode refletir fielmente o que foi produzido

Desvantagens:

Projetos reais raramente seguem o fluxo seq¨

uencial

Modifica¸c˜

oes s˜ao onerosas e complicadas

Propaga¸c˜ao de erros pelas fases do processo

Cliente s´o recebe o produto no final do ciclo

(60)

Prototipagem

Objetivos gerais s˜ao definidos inicialmente...dificilmente entradas

e sa´ıdas detalhadas s˜ao descritos

Desenvolvimento inicial

coment´arios do cliente

detalhamento dos requisitos

Um produto final s´o existe ap´os a execu¸c˜ao do ´

ultimo ciclo

Duas abordagens para cria¸c˜ao de prot´otipos:

(61)
(62)

Prototipagem

(63)

Prototipagem

Vantagens:

modifica¸c˜

oes s˜ao mais f´aceis de realizar

modifica¸c˜

oes s˜ao menos onerosas

cliente fornece feedback sobre o desenvolvimento

(64)

Prototipagem

Vantagens:

modifica¸c˜

oes s˜ao mais f´aceis de realizar

modifica¸c˜

oes s˜ao menos onerosas

cliente fornece feedback sobre o desenvolvimento

Desvantagens:

o processo n˜ao ´e vis´ıvel, ´e complicado acompanhar o progresso

os sistemas podem ser mal estruturados, a mudan¸ca cont´ınua

tende a corromper a estrutura do software

(65)

Iterativo e incremental

A mudan¸ca ´e inevit´avel em todos os projetos de software

Combina vantagens dos modelos cascata e prototipagem

Partes funcionais do produto final s˜ao entregues ao cliente ao

longo do ciclo

Cliente prioriza as entregas e define requisitos para o incremento

atual

(66)
(67)

Iterativo e incremental

(68)

Iterativo e incremental

Vantagens:

cliente recebe a parte mais importante em cada incremento

modifica¸c˜

oes de requisitos s˜ao mais f´aceis de realizar e n˜ao s˜ao

t˜ao onerosas

menor risco de falha geral do projeto

vers˜oes iniciais (mais importantes) recebem mais testes

(69)

Iterativo e incremental

Vantagens:

cliente recebe a parte mais importante em cada incremento

modifica¸c˜

oes de requisitos s˜ao mais f´aceis de realizar e n˜ao s˜ao

t˜ao onerosas

menor risco de falha geral do projeto

vers˜oes iniciais (mais importantes) recebem mais testes

Desvantagens:

incrementos devem ser relativamente pequenos e devem entregar

um funcionalidade importante

(70)

Espiral

Fases de desenvolvimento s˜ao apresentadas de forma diferente

Loops correspondem as fases de desenvolvimento

Loops divididos em quatro setores:

(71)
(72)

Espiral

(73)

Espiral

Vantagens:

reconhecimento de riscos

r´apido desenvolvimento de vers˜oes incrementais de software

outras vantagens do modelo incremental

(74)

Espiral

Vantagens:

reconhecimento de riscos

r´apido desenvolvimento de vers˜oes incrementais de software

outras vantagens do modelo incremental

Desvantagens:

gerenciamento complicado

atividades relacionadas a identifica¸c˜ao e an´alise de riscos devem

ser realizadas por especialistas

(75)

Modelo de Desenvolvimento Baseado em Componentes

´

E um meio de reuso de software

Incorpora caracter´ısticas do modelo espiral

Busca de componentes que realizem atividades desejadas

“Um componente ´e uma unidade de composi¸c˜ao com uma

interface contratual especificada e somente com

dependˆencias contextuais. O componente pode ser

configurado em um ambiente de execu¸c˜ao (deployed)

independentemente e est´a sujeito `a composi¸c˜ao por

terceiros” [Szyperski, 1998]

(76)
(77)

Outros modelos de processo

RAD

(78)

Exerc´ıcio

Descreva um produto de software segundo seu conjunto de funcionalidades

(79)

A equipe de desenvolvimento

O termo

stakeholder

´e utilizado para se referir a qualquer pessoa

envolvida com o projeto

(80)

A equipe de desenvolvimento

Gerente de projeto - Deve coordenar as pessoas e tarefas de um

processo

Analista - Deve capturar as necessidades do cliente e explic´a-las

para o restante da equipe

Projetista - Deve avaliar as alternativas e fornecer uma

especifica¸c˜ao de uma solu¸c˜ao para uma parte do software (e.g.

interface, banco de dados)

(81)

Exerc´ıcio

Quais s˜ao as fases de um processo de software?

Quais os objetivos de cada fase?

(82)

Resumo

Resumo

Software ´

e mais do que somente um programa

Processos de software descrevem atividades envolvidas no desenvolvimento de

software

Todo processo inclui atividades de especifica¸

ao, projeto, implementa¸

ao, teste e

manuten¸

ao

Modelos s˜

ao representa¸

oes abstratas de processos

Todos os processo incluem: an´

alise, projeto, codifica¸

ao, v & v e evolu¸

ao

(83)

Leituras recomendadas

Ian Sommerville.

Engenharia de Software

, 8

a

ed., 2007.

Cap´ıtulo 4: Processos de software

Roger S. Pressman.

Engenharia de Software

, McGraw-Hill, 6

a

ed., 2006.

(84)

Perguntas?

Alexandre de Andrade Barbosa

Referências

Documentos relacionados

Acompanhando as turmas de quinta série desde maio deste ano percebemos a dificuldade que os alunos apresentam em aprender multiplicações. A professora das turmas

Projetil encamisado por uma camisa pré-sulcada de latão endurecido, contendo chumbo não endurecido no seu interior, dotado de uma ponta oca. HYDRA SHOCK centro, que

15, estão representados os teores médios de safrol contido em óleo essencial obtido, no decorrer do progresso de extração, da biomassa aérea de pimenta longa procedente de cultivos

As técnicas são baseadas em descontinuidade: detecção de pontos isolados, detecção de linhas e detecção de bordas, e similaridade: limiares (Thresholding), crescimento de

A partir deste ensaio, é obtida diretamente a resposta do sistema em função da sua acelerância directa, ou seja, o ponto de excitação e de análise da resposta do sistema é o

O PROGRAMA AGENTES LOCAIS DE INOVAÇÃO, por este Edital, torna público a Retificação do Edital 03/2011, a Lista de Convocados para Realização das Dinâmicas de Grupo e

General: Knowing the conceptual and methodological foundations of the main projective methods; Identify and understand the operational concepts of projection and distress; Identify

II - os docentes efetivos, com regime de trabalho de 20 (vinte) horas semanais, terão sua carga horária alocada, preferencialmente, para ministrar aulas, sendo o mínimo de 8 (oito)