Introdução à Engenharia de Software e UML

81
Introdução à Engenharia de Software e UML

Transcript of Introdução à Engenharia de Software e UML

Introdução à Engenharia de Software e UML

Natanael Simõesnatanaelsimoes

[email protected]

Professor de Informática no Instituto Federal de Rondônia – Campus Ariquemes

Bel. Sistemas de Informação – IESUR 2012Esp. Planejamento Educacional e Docência no Ensino Superior – IESUR

2013Mestrando em Computação Aplicada – UEFS 2016

Projeto

“conjunto de atividades temporárias, realizadas em grupo, destinadas a produzir um produto, serviço ou resultado únicos”

Project Management Institute, 2013

Gerenciamento de Projetos• Administração é o principal interessado• Demanda aplicação de conhecimentos,

habilidades e técnicas na elaboração de atividades

• Define prazos, custos e qualidade• Mobiliza recursos técnicos e humanos

Como gerenciar um projeto1. Adote uma metodologia2. Comunique-se3. Defina o escopo4. Monte o time5. Desenvolva o cronograma6. Monitore os riscos7. Formalize o início e fim do projeto BARBI, 2013

Engenharia de Software• Sistemas de Informação e Análise de Sistemas são

os principais interessados• Gerencia o ciclo de vida dos softwares

Application Lifecycle Management – ALM• Aplica os conceitos de Gerência de Projetos aos

sistemas de informação• Uso constante de modelos abstratos

Engenharia de Software

“Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe em máquinas

reais”BAUER, 1960

Como gerenciar um projeto de software1. Adote uma metodologia de desenvolvimento

Metodologia de Desenvolvimento

Processo

MétodosFerramentas

Como gerenciar um projeto de software1. Adote uma metodologia de desenvolvimento

─ Processo• Cascata• Iterativo incremental• Evolucional• Espiral• Ágil

Como gerenciar um projeto de software1. Adote uma metodologia de desenvolvimento

─Métodos• Análise Estruturada• DFD – Diagrama de fluxo de dados• MER – Modelo Entidade-Relacionamento• Orientação a objetos• Scrum• XP• FDD – Feature Driven Development• TDD – Test Driven Develpment• UML

Como gerenciar um projeto de software1. Adote uma metodologia de desenvolvimento

─ Ferramentas• CASE – Computer-aided software engineering• IDE• Editor• Compilador• Debug• Testes• Refactoring

Como gerenciar um projeto de software2. Comunique-se com a equipe de desenvolvimento

Sei não Frank, essas “mina” parecem problema “não é só o peixe

que morre pela boca!”

BARBI, 2013

Como gerenciar um projeto de software3. Defina o escopo do sistema• O que o sistema vai fazer e o que não vai• "O ótimo é inimigo do bom"

CORTA PRA 18!

19

R$ 1.450.000,00usado

R$ 55.590,00Zero bala

Como gerenciar um projeto de software4. Monte o time de desenvolvimento• Conheça os stakeholders

(qualquer um pode ser um membro)• Enquanto se define o escopo as habilidades

necessárias para ser membro serão mais claras• Monte equipes com competências diversificadas

Como gerenciar um projeto de software5. Desenvolva o cronograma com sua equipe de

desenvolvimento• Defina as atividades a serem desenvolvidas• Defina quem executará a atividade e o tempo• Verifique a progressão das atividades

Como gerenciar um projeto de software

MICROSOFT PROJECT 2013

Como gerenciar um projeto de software6. Monitore os riscos que podem atrasar o desenvolvimento• Recursos

Orçamento, ferramentas, pessoas...• Funcionalidades

Alteração de requisitos...• Cronograma

Tempo estipulado foi pouco...

Como gerenciar um projeto de software7. Formalize o início e fim do projeto do sistema

─ Por que formalizar o início?• Expressa autoridade para envolver pessoas e recursos

─ Por que formalizar o fim?• Momento de avaliar erros e acertos (Know-how) • Clientes acham que podem mudar o tempo todo• Novas necessidades? Novo projeto!

“Adiciona mais uma telinha

simples”

“Muda a cor do texto”“Quero colocar minha foto no perfil”

Como gerenciar um projeto de software

1. Adote uma metodologia de desenvolvimento2. Comunique-se com a equipe de desenvolvimento3. Defina o escopo do sistema4. Monte o time de desenvolvimento5. Desenvolva o cronograma com sua equipe de

desenv.6. Monitore os riscos que podem atrasar o desenv.7. Formalize o início e fim do projeto do sistema

Let`s get started!

UML• 1997, por Booch, Rumbaugh e Jacobson•Não é uma metodologia!• Auxilia na visualização sistêmica de um problema•Não é depende de processo•Mais que uma ferramenta, um padrão de modelagem

UML•Objetivos:

Especificação DocumentaçãoEstruturação

35

Diagramas UML

Diagramas de Comportamento

Diagrama de Atividades

Diagrama de Caso de Uso

Diagrama de Estados

Diagramas de Interação

Diagrama de Sequência

Diagrama de Comunicação

Diagrama de Interatividade

Diagrama de Tempo

Diagramas de Estrutura

Diagrama de Classes

Diagrama de Componentes

Diagrama de Objetos

Diagrama de Perfil

Diagrama de Estrutura Composta

Diagrama de Instalação

Diagrama de Pacotes

Diagrama de Caso de Uso

Diagrama de Atividades

Diagrama de Estados

Diagrama de Sequência

Diagrama de Comunicação

Diagrama de Interatividade

Diagrama de Tempo

Diagrama de Classes

Diagrama de Componentes

Diagrama de Componentes

Diagrama de Componentes

Diagrama de Objetos

Diagrama de Perfil

Diagrama de Estrutura Composta

Diagrama de Instalação

Diagrama de Pacotes

Let`s get deep inside!

Diagrama de Caso de Uso• Representa as funções globais de um sistema• Notações gráficas:

AtorCaso de usoRelacionamentoLimite

Ator• Representa um agente externo ao sistema

PessoaDispositivo (Impressora, leitor)Organização (IFRO, Prefeitura)Departamento (Recursos Humanos, Financeiro)Outro sistema (Webservice, DLL)

Ator

Vamos encontrar o(s) ator(es)a) “… o sistema possibilita ao cliente atualizar seus dados cadastrais

acessando o site na internet…”

b) “… o caixa eletrônico permitirá ao associado da cooperativa emitir um extrato da sua conta, bem como retirar ou depositar uma quantia financeira na sua conta…”

c) “… a secretária pode importar os Registros Acadêmicos do sistema administrativo, desde que informe o seu login e senha…”

E os atores são...a) “… o sistema possibilita ao cliente atualizar seus dados cadastrais acessando o site na internet…”

b) “… o caixa eletrônico permitirá ao associado da cooperativa emitir um extrato da sua conta, bem como retirar ou depositar uma quantia financeira na sua conta…”

c) “… a secretária pode importar os Registros Acadêmicos do sistema administrativo, desde que informe o seu login e senha…”

Caso de Uso• Representa uma grande função do sistema

Gerar relatório

Vamos encontrar o(s) caso(s)a) “… o sistema possibilita ao cliente atualizar seus dados cadastrais acessando o site na internet…”

b) “… o caixa eletrônico permitirá ao associado da cooperativa emitir um extrato da sua conta, bem como retirar ou depositar uma quantia financeira na sua conta…”

c) “… a secretária pode importar os Registros Acadêmicos do sistema administrativo, desde que informe o seu login e senha…”

E os casos são...a) “… o sistema possibilita ao cliente atualizar seus dados cadastrais acessando o site na internet…”

b) “… o caixa eletrônico permitirá ao associado da cooperativa emitir um extrato da sua conta, bem como retirar ou depositar uma quantia financeira na sua conta…”

c) “… a secretária pode importar os Registros Acadêmicos do sistema administrativo, desde que informe o seu login e senha…”

Relacionamentos• Definem como atores e casos de uso se relacionam

entre si• Entre ator e caso de uso

Associação: O que o ator usaGerar

relatório

Ator

Relacionamentos• Entre atores

Generalização ou Especialização: herança de usos

Ator C Ator A Ator B

Relacionamentos• Entre ator e casos de uso

Generalização ou Especialização: herança de funções

Gerar relatório Imprimir

Relacionamentos• Entre ator e casos de uso

Include: processamento obrigatório

Marcar consulta

Procurar registro do paciente

<<include>>

Relacionamentos• Entre ator e casos de uso

Extend: processamento condicional

Verificar nível do

compartimento

Reabastecer compartimento

<<extend>>

Limite do Sistema• Conhecido como System Boundary• Delimita o sistema computacional

Exemplar

Mão na massa!a) “… o sistema possibilita ao cliente atualizar seus dados cadastrais acessando o site na internet…”

b) “… o caixa eletrônico permitirá ao associado da cooperativa emitir um extrato da sua conta, bem como retirar ou depositar uma quantia financeira na sua conta…”

c) “… a secretária pode importar os Registros Acadêmicos do sistema administrativo, desde que informe o seu login e senha…”

Diagrama de Classes• Conjunto de representações de estruturas de objetos do mundo real e suas relações• Pré-requisito para os diagramas de:

ComunicaçãoSequênciaEstados

Classe• Representação das características e comportamentos abstraídos de objetos em comum do mundo real• Possui atributos, métodos e relacionamentos

Classe<<class>>Cachorro

- Cor:string- Altura:double- Tamanho:double- Peso:double- Raça:string- Nome:string

+ EmitirSom():void+ Correr(int velocidade):void+ Comer(Comida c):void+ Comer(Objeto o):void

Identificação da classe

Atributos

Métodos

Identificação da Classe

• <<class>>• <<entity>>• <<control>>• <<boundary>>• <<interface>>• <<abstract>>

<<class>>Cachorro

Estereótipo

Nome

Atributos[visibilidade] [nome] : [tipo]

• Visibilidade• Pública (+)• Protegida (#)• Privada (-)

• Nome do atributo• Tipo de dado

- Cor:string- Altura:double- Tamanho:double- Peso:double- Raça:string- Nome:string

Métodos[visibilidade] [nome] ([tipo p1] [nome p1], [tipo p2] [nome p2]):

[tipo]

• Visibilidade• Pública (+)• Protegida (#)• Privada (-)

• Nome do Método• Tipo e Nome de cada parâmetro• Tipo de retorno do método

- Cor:string- Altura:double- Tamanho:double- Peso:double- Raça:string- Nome:string

Relacionamento entre classes• Herança

Cachorro

+ Pegar(Bolinha b):boolean+ Pegar(Graveto g): boolean+ EmitirSom():void+ Correr(int velocidade):void

Mamifero

- Cor:string- Altura:double- Tamanho:double- Peso:double- Raça:string- Nome:string

+ EmitirSom():void+ Correr(int velocidade):void+ Comer(Comida c):void

Relacionamento entre classes• Realização

MySQL

<<interface>>DB

+ AbrirConexao(string host, string usuario, string senha, string porta, string banco):boolean+ Executar(string query): boolean+ Selecionar(string query): Collection+ FecharConexao:void

PostgreSQL SQLServer

Relacionamento entre classes• Associação

FuncionárioEmpresa

Relacionamento entre classes• Multiplicidade

FuncionárioEmpresa

1 0 .. *

Relacionamento entre classes• Agregação

BA- b: B

1 1

Relacionamento entre classes• Agregação

Relacionamento entre classes• Composição

BA- b: B

1 1

Relacionamento entre classes• Composição

Obrigado!Perguntas?

Natanael Simõesnatanaelsimoes

[email protected]