Introdução à Engenharia de Software e
UML
Natanael Simões
natanaelsimoes
natanael.simoes@ifro.edu.br
Professor de Informática no Instituto Federal de Rondônia – Campus Ariquemes
Bel. Sistemas de Informação – IESUR 2012
Esp. Planejamento Educacional e Docência no Ensino Superior – IESUR 2013
Mestrando 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 projeto
1. Adote uma metodologia
2. Comunique-se
3. Defina o escopo
4. Monte o time
5. Desenvolva o cronograma
6. Monitore os riscos
7. 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 software
1. Adote uma metodologia de desenvolvimento
Metodologia de
Desenvolvimento
Processo
MétodosFerramentas
Como gerenciar um projeto de software
1. Adote uma metodologia de desenvolvimento
─ Processo
• Cascata
• Iterativo incremental
• Evolucional
• Espiral
• Ágil
Como gerenciar um projeto de software
1. 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 software
1. Adote uma metodologia de desenvolvimento
─ Ferramentas
• CASE – Computer-aided software engineering
• IDE
• Editor
• Compilador
• Debug
• Testes
• Refactoring
Como gerenciar um projeto de software
2. 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 software
3. 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,00
usado
R$ 55.590,00
Zero bala
Como gerenciar um projeto de software
4. 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 software
5. 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 software
6. 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 software
7. 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!
“Quero colocar minha foto no perfil”
Como gerenciar um projeto de software
1. Adote uma metodologia de desenvolvimento
2. Comunique-se com a equipe de desenvolvimento
3. Defina o escopo do sistema
4. Monte o time de desenvolvimento
5. 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
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ção
Estruturação
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
35
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
Diagrama de Caso de Uso
• Representa as funções globais de um sistema
• Notações gráficas:
Ator
Caso de uso
Relacionamento
Limite
Ator
• Representa um agente externo ao sistema
Pessoa
Dispositivo (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 usa
Gerar
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ção
Sequência
Estados
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ões
natanaelsimoes
natanael.simoes@ifro.edu.br

Introdução à Engenharia de Software e UML

  • 1.
    Introdução à Engenhariade Software e UML
  • 2.
    Natanael Simões natanaelsimoes natanael.simoes@ifro.edu.br Professor deInformática no Instituto Federal de Rondônia – Campus Ariquemes Bel. Sistemas de Informação – IESUR 2012 Esp. Planejamento Educacional e Docência no Ensino Superior – IESUR 2013 Mestrando em Computação Aplicada – UEFS 2016
  • 3.
    Projeto “conjunto de atividadestemporárias, realizadas em grupo, destinadas a produzir um produto, serviço ou resultado únicos” Project Management Institute, 2013
  • 4.
    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
  • 5.
    Como gerenciar umprojeto 1. Adote uma metodologia 2. Comunique-se 3. Defina o escopo 4. Monte o time 5. Desenvolva o cronograma 6. Monitore os riscos 7. Formalize o início e fim do projeto BARBI, 2013
  • 6.
    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
  • 7.
    Engenharia de Software “Engenhariade 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
  • 8.
    Como gerenciar umprojeto de software 1. Adote uma metodologia de desenvolvimento Metodologia de Desenvolvimento Processo MétodosFerramentas
  • 9.
    Como gerenciar umprojeto de software 1. Adote uma metodologia de desenvolvimento ─ Processo • Cascata • Iterativo incremental • Evolucional • Espiral • Ágil
  • 10.
    Como gerenciar umprojeto de software 1. 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
  • 11.
    Como gerenciar umprojeto de software 1. Adote uma metodologia de desenvolvimento ─ Ferramentas • CASE – Computer-aided software engineering • IDE • Editor • Compilador • Debug • Testes • Refactoring
  • 12.
    Como gerenciar umprojeto de software 2. 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
  • 15.
    Como gerenciar umprojeto de software 3. Defina o escopo do sistema • O que o sistema vai fazer e o que não vai • "O ótimo é inimigo do bom"
  • 18.
  • 19.
  • 20.
  • 21.
  • 24.
    Como gerenciar umprojeto de software 4. 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
  • 25.
    Como gerenciar umprojeto de software 5. 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
  • 26.
    Como gerenciar umprojeto de software MICROSOFT PROJECT 2013
  • 27.
    Como gerenciar umprojeto de software 6. Monitore os riscos que podem atrasar o desenvolvimento • Recursos Orçamento, ferramentas, pessoas... • Funcionalidades Alteração de requisitos... • Cronograma Tempo estipulado foi pouco...
  • 28.
    Como gerenciar umprojeto de software 7. 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! “Quero colocar minha foto no perfil”
  • 31.
    Como gerenciar umprojeto de software 1. Adote uma metodologia de desenvolvimento 2. Comunique-se com a equipe de desenvolvimento 3. Defina o escopo do sistema 4. Monte o time de desenvolvimento 5. 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
  • 33.
    UML • 1997, porBooch, 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
  • 34.
  • 35.
    Diagramas UML Diagramas de Comportamento Diagrama de Atividades Diagramade 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 35
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 53.
    Diagrama de Casode Uso • Representa as funções globais de um sistema • Notações gráficas: Ator Caso de uso Relacionamento Limite
  • 54.
    Ator • Representa umagente externo ao sistema Pessoa Dispositivo (Impressora, leitor) Organização (IFRO, Prefeitura) Departamento (Recursos Humanos, Financeiro) Outro sistema (Webservice, DLL) Ator
  • 55.
    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…”
  • 56.
    E os atoressã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…”
  • 57.
    Caso de Uso •Representa uma grande função do sistema Gerar relatório
  • 58.
    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…”
  • 59.
    E os casossã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…”
  • 60.
    Relacionamentos • Definem comoatores e casos de uso se relacionam entre si • Entre ator e caso de uso Associação: O que o ator usa Gerar relatório Ator
  • 61.
    Relacionamentos • Entre atores Generalizaçãoou Especialização: herança de usos Ator C Ator A Ator B
  • 62.
    Relacionamentos • Entre atore casos de uso Generalização ou Especialização: herança de funções Gerar relatório Imprimir
  • 63.
    Relacionamentos • Entre atore casos de uso Include: processamento obrigatório Marcar consulta Procurar registro do paciente <<include>>
  • 64.
    Relacionamentos • Entre atore casos de uso Extend: processamento condicional Verificar nível do compartimento Reabastecer compartimento <<extend>>
  • 65.
    Limite do Sistema •Conhecido como System Boundary • Delimita o sistema computacional Exemplar
  • 66.
    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…”
  • 67.
    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ção Sequência Estados
  • 68.
    Classe • Representação dascaracterísticas e comportamentos abstraídos de objetos em comum do mundo real • Possui atributos, métodos e relacionamentos
  • 69.
    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
  • 70.
    Identificação da Classe •<<class>> • <<entity>> • <<control>> • <<boundary>> • <<interface>> • <<abstract>> <<class>> Cachorro Estereótipo Nome
  • 71.
    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
  • 72.
    Métodos [visibilidade] [nome] ([tipop1] [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
  • 73.
    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
  • 74.
    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
  • 75.
    Relacionamento entre classes •Associação FuncionárioEmpresa
  • 76.
    Relacionamento entre classes •Multiplicidade FuncionárioEmpresa 1 0 .. *
  • 77.
    Relacionamento entre classes •Agregação BA - b: B 1 1
  • 78.
  • 79.
    Relacionamento entre classes •Composição BA - b: B 1 1
  • 80.
  • 81.

Notas do Editor

  • #17 Taylor Lautner
  • #22 Com o valor do gallardo da pra comprar exatamente 26 new fiesta