Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de...

33
Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012

Transcript of Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de...

Page 1: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Engenharia de Requisitos

Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos

Recife, Agosto de 2012

Page 2: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Objetivo

• Apresentação inicial da disciplina• Como a Engenharia de Requisitos, associada à

UML é usada para o bom desenvolvimento de software

Page 3: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Tópicos

• Introdução• Revisão do Paradigma Orientado a Objetos• Revisão de UML• Alinhamento com a Governança de TI nas

Empresas

Page 4: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto OO são essenciais para a criação de um software bem projetado, robusto e capaz de ser corrigido ou evoluído, usando tecnologias e linguagens orientadas a objetos, tais como Java, C#, C++

Page 5: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Em relação à tecnologia de objetos, é válido o provérbio: “Possuir um martelo não torna alguém um arquiteto”– Para criar sistemas orientado a objetos é preciso

pensar em termos de objetos, antes de conhecer uma linguagem orientada a objetos

Page 6: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise X Projeto– Análise enfatiza uma investigação do problema e

dos requisitos, em vez de uma solução• Responde-se às perguntas:

– Como o sistema deverá ser usado– Quais as suas funções

– Melhor seria chamar: Análise de Requisitos ou Análise orientada a objetos

Page 7: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise X Projeto– O Projeto enfatiza uma solução conceitual em

software ou em hardware que satisfaça os requisitos• A descrição do esquema de banco de dados e a

descrição dos objetos do sistema são exemplos– Melhor seria definir como o projeto de objetos ou

o projeto de bancos de dados

Page 8: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise X Projeto Orientados a Objetos– Na análise orientada a objetos, há uma ênfase em

encontrar e descrever os objetos ou conceitos do domínio do problema• E.g., Sistema de informações de vôo inclui conceitos de

avião, vôo e piloto

Page 9: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise X Projeto Orientados a Objetos– Projeto Orientado a Objetos enfatiza a definição

dos objetos e como eles colaboram para a satisfação dos requisitos• E.g., Objeto avião possui atributo numDaCauda e

método obterHistoricoDoVoo

Page 10: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise X Projeto Orientados a Objetos– Na implementação ou programação OO os objetos

de projeto são implementados• E.g., Classe Aviao em Java

Page 11: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise X Projeto Orientados a Objetos– Na implementação ou programação OO os objetos

de projeto são implementados• E.g., Classe Aviao em Java

Page 12: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

Conceito do domínio

Aviao

numDaCaudaVisualização do Conceito do domínio

Representação em uma

Linguagem OO

public class Aviao { private String numDaCauda; public List obterHistoricoDoVoo() { ... }}

Page 13: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados– Um jogador lança dois dados e ganha caso o

resultado seja sete– Passos:

Definir Casos de Uso

Definir Modelo de Domínio

Definir Diagramas de Interação

Definir Diagramas de Classes de

Projeto

Page 14: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados

– A Análise de Requisitos pode incluir narrativas ou cenários sobre como as pessoas usam a aplicação• Tais narrações podem ser escritas como casos de uso

– Casos de Uso não são artefatos OO, são apenas narrações escritas

Definir Casos de Uso

Page 15: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados

– Caso de Uso Jogar um Jogo de Dados• Um jogador pede que os dados sejam lançados. O

sistema apresenta o resultado. Se a soma do valor das faces dos dois dados totalizar sete, o jogador vence, caso contrário, perde.

Definir Casos de Uso

Page 16: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados

– Mostra os conceitos ou objetos do domínio que são relevantes

Definir Modelo de Domínio

Page 17: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados

Definir Modelo de Domínio

Jogador

nome

Dado

valorDaFace

JogoDeDados

1 2

2

1

11

Joga

Lança

Inclui

Page 18: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados

– Além da definição das responsabilidades, o Projeto OO preocupa-se com as colaborações entre os objetos• Diagrama de sequencia – diagrama de interação da

UML, mostra o fluxo de mensagem (invocação de método) entre os objetos de software

Definir Diagramas de Interação

Page 19: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados

:JogoDeDados dado1:Dado dado2:Dado

jogar()

lancar()

vf1 := obterValorDaFace()

vf2 := obterValorDaFace()

lancar()

Definir Diagramas de Interação

• Diagrama de Sequencia ilustrando mensagem entre os objetos• Apresenta uma visão dinâmica dos objetos colaborativos

Page 20: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de Dados

– Diagrama de Classes do Projeto especifica uma visão estática das definições de classes • Ilustra atributos e métodos das classes• Baseado no diagrama de sequencia podemos definir

quais atributos e métodos deveremos definir nas classes

Definir Diagramas de Classes de

Projeto

Page 21: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Análise e Projeto de um Jogo de DadosDefinir Diagramas

de Classes de Projeto

JogoDeDados

dado1 : Dadodado2 : Dado

jogar()

Dado

valorDaFace : int

obterValorDaFace() : int lancar()

1 2

Page 22: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Exercício– Baixe e instale o Eclipse Galileo com JavaSE 1.6– Implemente o projeto Jogo

Page 23: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos• Resposta Exercício

– Classe Dadoimport java.util.Random;

public class Dado {private int valorDaFace;

public void lancar(){// implementar geracao aleatoria de um numero de 1 a 6Random r = new Random();valorDaFace = r.nextInt(5) + 1;

}

public int obterValorDaFace(){return valorDaFace;}

}

Page 24: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos• Resposta Exercício

– Classe JogoDeDadospublic class JogoDeDados {

public static void Jogar(){Dado dado1 = new Dado();Dado dado2 = new Dado();

dado1.lancar();int vf1 = dado1.obterValorDaFace();

dado2.lancar();int vf2 = dado2.obterValorDaFace();

System.out.println("O dado 1 deu " + vf1);System.out.println("O dado 2 deu " + vf2);

int resultado = vf1 + vf2;

System.out.println("O resultado do jogo foi " + resultado);

}

public static void main(String[] args) {// Comentar a chamada de método Jogar() abaixo e descomentar as duas próximas linhas caso não defina o método Jogar() como static //JogoDeDados j = new JogoDeDados();//j.Jogar();

Jogar();}

}

Page 25: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• O que é UML ?– A Linguagem de Modelagem Unificada (UML) é

uma linguagem visual para especificar, construir e documentar os artefatos dos sistemas [OMG03a]

Page 26: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Três modos de Aplicar UML, segundo Fowler:– UML como rascunho– UML como planta de software– UML como linguagem de programação

Page 27: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Três modos de Aplicar UML, segundo Fowler:– UML como rascunho• Diagramas incompletos e informais criados para

explorar partes difíceis do problema ou espaço de soluções, explorando o poder das linguagens visuais

Page 28: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Três modos de Aplicar UML, segundo Martin Fowler:– UML como planta de software• Diagramas de projeto relativamente detalhados usados

para:– Engenharia reversa

» Para visualizar e melhor entender o código existente através de diagramas UML

– Engenharia avante» Geração de código a partir dos diagramas UML

elaborados

Page 29: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Três modos de Aplicar UML, segundo Martin Fowler:– UML como linguagem de programação• Especificação executável completa de um sistema de

software em UML. Código executável será automaticamente gerado, mas não é normalmente visto ou modificado por desenvolvedores• Apoio de ferramentas robustas• Ainda na teoria

Page 30: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Análise e Projeto Orientado a Objetos

• Exercício– Baixe e instale o plugin OMONDO para o Eclipse

Galileo que foi instalado anteriormente– Implemente o diagrama de classes do projeto Jogo

e faça a geração automática de código JAVA a partir dos diagramas UML (Engenharia avante)

Page 31: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Iterativo, Evolutivo e Ágil

• O desenvolvimento iterativo e evolutivo

Page 32: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Iterativo, Evolutivo e Ágil

• O que é o Processo Unificado (PU) ?– Um processo de desenvolvimento de software

descreve uma abordagem para a construção, implantação e, possivelmente, a manutenção do software

– PU surgiu como um processo iterativo popular para o desenvolvimento de software visando à construção de sistemas orientados a objetos

– O Rational Unified Process (RUP) é um refinamento detalhado do PU.

Page 33: Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.

Iterativo, Evolutivo e Ágil

• O que é desenvolvimento iterativo e evolutivo ?– Uma prática no PU é o desenvolvimento iterativo.,

onde o ciclo de vida, o desenvolvimento é organizado em uma série de miniprojetos curtos, de curta duração (3 semanas) chamados iterações

– O produto de cada iteração é um sistema parcial, executável, testável e integrável

– Cada iteração inclui suas próprias atividades de análise de projeto, requisitos, projeto, implementação e teste.