ENGENHARIA DE SOFTWARE
Prof. João Paulo Campolina Lamas
Definições de Engenharia de
Software



O estabelecimento e uso de princípios de engenharia
para a produção economicamente viável de software
de qualidade que funcione em máquinas reais.
A engenharia de software é a disciplina envolvida
com a produção e manutenção sistemática de
software que são desenvolvidos com custos e prazos
estimados.
Disciplina que aborda a construção de software
complexo:


com muitas partes interconectadas e diferentes versões
por uma equipe de analistas, projetistas,programadores,
gerentes, "testadores", etc.
João Paulo Campolina Lamas
2
Qual a diferença entre engenharia de
software e ciência da computação?



Ciência da computação aborda as teorias e
fundamentos; engenharia de software está
interessada nos aspectos práticos de desenvolver e
entregar no prazo um software útil.
Todo engenheiro de software deve ter uma boa base
em ciência da computação, tal como um engenheiro
mecânico, civil ou elétrico deve ter conhecimentos
em física.
Atualmente, a ciência da computação ainda não
possui teorias suficientes a engenharia de software.
João Paulo Campolina Lamas
3
Software - Sistemas


Um conjunto de elementos que é
organizado para executar certo método,
procedimento ou um controle ao
processar informações.
Sistemas de Informação: Um
mecanismos composto de várias partes
que agem de maneira coordenada para
prestar serviços à uma área de negócio.
João Paulo Campolina Lamas
4
Desenvolvimento de Sistemas


É o trabalho de produzir os sistemas.
Envolve as atividades de requisitos,
análise, projeto, implementação, teste,
implantação e manutenção.
João Paulo Campolina Lamas
5
Problemas no
Desenvolvimento







Produtividade da Equipe;
Correção da Especificação;
Confiabilidade;
Manutenibilidade;
Desempenho;
Portabilidade;
Segurança.
João Paulo Campolina Lamas
6
Método de Desenvolvimento


Definição – Seqüência de tarefas que
determinam como um sistema é
construído.
Objetivo – Os métodos de
desenvolvimento de sistemas criam
diferentes níveis de abstração.
João Paulo Campolina Lamas
7
Abstração
João Paulo Campolina Lamas
8
Abstração


É o exame seletivo de determinados
aspectos de um problema;
Objetivo – É isolar os aspectos que
sejam importantes para algum
propósito e suprimir os que não o
forem.
João Paulo Campolina Lamas
9
Modelos


Um modelo é uma descrição da
realidade que ressalta alguns aspectos
em detrimentos de outros.
Cada tipo de modelo utiliza uma
notação precisa e uma conjunto de
regras sintáticas e semânticas.
João Paulo Campolina Lamas
10
Modelos
Os modelos são úteis para:
 O entendimento de problemas;
 A difusão do conhecimento entre os
componentes da equipe do projeto;
 Testar hipóteses antes de realizá-las;
 Construir sistemas complexos.
João Paulo Campolina Lamas
11
Processo de Desenvolvimento
Um conjunto de tarefas necessárias para transformar
os requisitos dos usuários em sistemas. Nesta
definição devem ser considerados as seguintes
informações atividades a serem realizadas recursos
utilizados, artefatos consumidos e gerados,
procedimentos adotados, paradigma e tecnologia
adotados, e o modelo de ciclo de vida utilizado.
Objetivos





Determinar uma ordem;
Guiar os desenvolvedores;
Padronização das atividades;
Servir de base para estimativas de recursos e
acompanhamento de projeto;
João Paulo Campolina Lamas
12
Modelo de Ciclo de Vida


Um modelo de ciclo de vida de um sistema é
uma visão das atividades que ocorrem
durante o desenvolvimento de um software,
definindo, assim, os estágios ou fases que um
produto de sistema atravessa ao ser
desenvolvido.
Um modelo de ciclo de vida possibilita um
melhor entendimento das atividades básicas e
características do sistema em
desenvolvimento.
João Paulo Campolina Lamas
13
Modelo de Ciclo de Vida
A classificação dos modelos de ciclo de
vida são:
 Clássico ou em cascata;
 Cascata revisto
 Prototipagem;
 Modelo Espiral;
 Interativo e Incremental.
João Paulo Campolina Lamas
14
Atividades Básicas de um Ciclo
de Vida







Requisitos;
Análise;
Projeto;
Implementação;
Testes;
Implantação; e
Manutenção.
João Paulo Campolina Lamas
15
Atividade de Requisitos



Identificar desejos, interações, procedimentos
atuais e dados relevantes;
Esta etapa deve geras as informações que
vão permitir os projetistas modelar todo o
sistema sem ambigüidades.
E especificação de requisitos, também,
propicia ao desenvolvedor, e ao cliente os
critérios para avaliar a qualidade do sistema.
João Paulo Campolina Lamas
16
Atividade de Análise



O domínio de informação de um problema
deve ser representado e compreendido;
Os modelos devem descrevem as
informações, funções e o comportamento do
sistema;
O processo de análise deve mover-se da
informação essencial para os detalhes de
implementação.
João Paulo Campolina Lamas
17
Atividade de Projeto

Uma atividade de múltiplos passos que deve
se concentrar em quatro atributos distintos
do sistema:





Estrutura de Dados;
Arquitetura de Sistemas;
Detalhes Procedimentais;
Caracterização das Interfaces.
Independe da tecnologia onde será
implementado o sistema.
João Paulo Campolina Lamas
18
Atividade de Implementação


Essa atividade traduz a anterior em
uma forma legível para o computador
executar;
Se o projeto for executado
detalhadamente, a implementação
poderá ser executada mecanicamente.
João Paulo Campolina Lamas
19
Atividade de Testes


Esta atividade deve começar assim que o
código tenha sido gerado;
Essa atividade se concentra nos aspectos
lógicos internos ao sistema, garantido que
todas as instruções tenham sido testadas, e
concentra-se também nos aspectos funcionais
externos, ou seja, os teste são para descobrir
erros e garantir que a entrada definida
produz os resultados esperados.
João Paulo Campolina Lamas
20
Atividade de Implantação

Atividade para por o sistema em
operação:




Treinamento de operadores;
Conversão de dados;
Disponibilização dos manuais; e
Suporte à operação.
João Paulo Campolina Lamas
21
Atividade de Manutenção


Sempre, o sistema sofrerá mudanças
depois que for entregue ao cliente;
Motivos:



Erros encontrados;
Adaptar para possíveis mudanças de
requisitos; e
Acréscimo de funcionalidades.
João Paulo Campolina Lamas
22
Modelo Clássico ou em
Cascata


Foi primeiro modelo a ser proposto;
Defende a idéia que o desenvolvimento
ocorra através de uma seqüência de
atividade encadeadas, em que uma
atividade só é iniciada quando a
atividade antecedente é terminada.
João Paulo Campolina Lamas
23
Modelo Clássico ou em
Cascata
João Paulo Campolina Lamas
24
Modelo Cascata Revisto
João Paulo Campolina Lamas
25
Modelo de Prototipagem


Propõe a construção rápida de um
protótipo como uma forma de validar e
refinar os requisitos, permitindo ao
desenvolvedor um melhor
conhecimento do que necessita ser
feito;
O protótipo deve ser descartado.
João Paulo Campolina Lamas
26
Modelo Espiral


Propõe a combinação das atividades de
desenvolvimento com as de
gerenciamento de risco, com o objetivo
de minimizar e controlar os riscos
envolvidos no projeto;
Quando os riscos são identificados, os
gerentes do projeto devem decidir
como minimizá-los ou eliminá-los.
João Paulo Campolina Lamas
27
Modelo Espiral
João Paulo Campolina Lamas
28
Modelo Interativo e
Incremental


Muito utilizado atualmente, defende a
idéia do desenvolvimento de versões do
sistema;
Este modelo não pressupõe que todos
os requisitos sejam conhecidos no início
do projeto, e propõe que para cada
versão sejam selecionados apenas os
requisitos que estejam bem definidos.
João Paulo Campolina Lamas
29
Modelo Interativo e
Incremental
João Paulo Campolina Lamas
30
Como Escolher o Modelo de
Ciclo de vida?



Não é uma atividade trivial;
Devemos considerar as características do projeto, da
equipe de desenvolvimento e gerência, e dos
próprios usuários;
Alguns critérios:





Paradigma de desenvolvimento adotado;
Necessidade do sistema ser colocado em uso rapidamente
com funcionalidade total ou parcial;
Grau de definição do problema;
Tamanho e complexidade da aplicação;
Nível de formação, atualização e experiência da equipe de
desenvolvimento e de gerência.
João Paulo Campolina Lamas
31
Análise Estruturada





Técnicas de análise de sistemas que constrói
modelos funcionais do sistema;
Centrada em processos;
Mais utilizada;
Notação gráfica criada por DeMarco, em
1979;
Adaptada por outros autores:


Chris Gane;
Yourdon.
João Paulo Campolina Lamas
32
Elementos Utilizados






Diagrama de Fluxo de dados (DFD);
Dicionário de Dados;
Especificação dos processos;
Modelo de Entidade e Relacionamento;
Projeto Estruturado; e
Diagrama de Transição de Estados;
João Paulo Campolina Lamas
33
Diagrama de Fluxo de Dados


Especificam as funções de um sistema;
Representam o trânsito das informações de
um sistema e sua transformação pelos
processos;
João Paulo Campolina Lamas
34
Diagrama de Fluxo de Dados




Processos – Transforma/processa as
informações;
Fluxo de dados – São as informações em
trânsito entre os processos; A seta indica a
direção do fluxo de dados;
Entidade Externas – Elementos na fronteira
do sistema. Produzem ou recebem as
informações do sistema; e
Depósitos – Lugar aonde as informações são
armazenadas.
João Paulo Campolina Lamas
35
Diagrama de Fluxo de Dados


Inicialmente constrói-se um DFD
apresentando os limites do sistema.
Este DFD é denominado de Diagrama de
Contexto:



Apresenta o sistema como um único processo;
Determina os fluxo de entrada e saída do sistema;
Apresenta as entidades externas.
João Paulo Campolina Lamas
36
Diagrama de Fluxo de Dados

Em seguida, o diagrama de contexto é
explodido:



Constrói-se um DFD que detalha os
processos que compõe o sistema;
Cada processo pode ser posteriormente
refinado em novos DFDs;
Processos não refinados são denominados
processos primitivos.
João Paulo Campolina Lamas
37
Dicionário de Dados

Refinam as informações do sistema:



Informações dos fluxos de dados;
Informações dos repositórios.
Determinam:


A estrutura e o significado das
informações;
Os limites de valores para as informações.
João Paulo Campolina Lamas
38
Dicionário de Dados
(Estruturas de Dados)

Para o Tom DeMarco:







= -> é equivalente à
+ -> e
[] -> ou
{} -> interações de
() -> opcional
@ -> Chave Primária
& -> Chave estrangeira
João Paulo Campolina Lamas
39
Dicionário de Dados (Elemento
de Dados)





Descrição Sucinta;
Tipo de Dado;
Tamanho;
Sinal;
Tipo de Elemento (Discreto ou contínuo):

Se for discreto


Definir os valores
Se for contínuo


Valor Mínimo
Valor máximo
João Paulo Campolina Lamas
40
Especificação de Processos

Especificar os passos nos processos primitivos


Cada processo primitivo possui uma especificação;
Especificações podem ser descritivas através
de:




Português estruturado;
Linguagens formais;
Fluxogramas; e
Qualquer outro recursos do tipo.
João Paulo Campolina Lamas
41
Modelo de Entidades e
Relacionamentos

Entidades:

É qualquer objeto de interesse do mundo
real, do qual se deseja conhecer, controlar
e/ou acompanhar suas características, cujo
comportamento deve ser tratado por um
sistema de informação. Podem ser
pessoas, instituições, eventos, objetos
materiais, etc.
CLIENTES
PRODUTOS
João Paulo Campolina Lamas
42
Modelo de Entidades e
Relacionamentos

Relacionamentos:

É qualquer associação de interesse entre
as entidades de um determinado estudo.
Representa basicamente as regras de
gestão.
CLIENTES
compram
João Paulo Campolina Lamas
PRODUTOS
43
Cardinalidade

É a representação da freqüência com que
uma determinada ocorrência em uma
entidade se corresponde a outras ocorrências
em outra entidade, através do
relacionamento. São identificadas as
cardinalidades mínimas e máximas do
relacionamento. Quando a cardinalidade
máxima for conhecida, esta deverá ser
explicitamente informada.
João Paulo Campolina Lamas
44
Atributos

É uma característica existente em uma
entidade ou em um relacionamento, que se
deseja conhecer, controlar e/ou acompanhar
em um determinado estudo. Representa
informação (dados) a manipular.
(0,N)
CLIENTES
CGC
RAZÃO SOCIAL
(1,N)
compram
DATA COMPRA
QUANTIDADE
ENDEREÇO
TELEFONE
PRODUTOS
CÓDIGO
DESCRIÇÃO
PREÇO BÁSICO
João Paulo Campolina Lamas
PESO
45
Tipos de Relacionamento



1-1: É quando as cardinalidades máximas do relacionamento
forem 1 e 1.
 FUNCIONÁRIOS possuem DADOS RESCISÃO
 PEDIDOS geram FATURAS
1-N: É quando as cardinalidades máximas do relacionamento
forem 1 e N.
 PESSOAS possuem CARROS
 DEPARTAMENTOS alocam FUNCIONÁRIOS
 RESPONSÁVEIS possuem DEPENDENTES
N-N: É quando as cardinalidades máximas do relacionamento
forem N e N.
 CLIENTES compram PRODUTOS
 ALUNOS matriculam em DISCIPLINAS
João Paulo Campolina Lamas
46
Diagrama de Transição de
Estados



Mostra uma máquina de estados, dando ênfase ao
fluxo de controle de um estado para o outro;
Uma máquina de estados é um comportamento que
especifica as seqüências de estados pelos quais um
objeto passa durante seu tempo de vida em resposta
a eventos, juntamente com suas respostas a esses
eventos;
São criados para objetos que tenham um
comportamento dinâmico significativo;
João Paulo Campolina Lamas
47
Diagrama de Transição de
Estados
Estado do
Objeto
Evento
CriaFatura
Estado
Inicial
não
paga
pagar
paga
Fatura
Destruída
Estado
Final
João Paulo Campolina Lamas
48
Estado

Estado


É uma condição ou situação na vida de um objeto
durante a qual ele satisfaz a alguma condição,
realiza alguma atividade ou aguarda algum
evento;
Exemplo de estados:

A duplicata(objeto) foi paga (estado)

O carro (objeto) está parado (estado)

O motor (objeto) está funcionando (estado)

João (objeto) está solteiro (estado)
João Paulo Campolina Lamas
49
Evento

Evento


É uma especificação de uma ocorrência
significativa que tem uma localização no
tempo e no espaço;
No contexto de uma máquina de estado,
um evento é uma ocorrência de um
estímulo capaz de ativar uma transição de
estado;
João Paulo Campolina Lamas
50
Transição

Transição

É um relacionamento entre dois estados,
indicando que um objeto no primeiro
estado realizará certas ações e entrará no
segundo estado quando um evento
especificado ocorrer e as condições
especificadas estiverem satisfeitas;
João Paulo Campolina Lamas
51
Condição de Guarda

É uma expressão booleana colocada na
transição de estados, que deve ser
verdadeira, para que ocorrência do
evento a transição ocorra.
João Paulo Campolina Lamas
52
Ação

É uma atividade ou operação que deve
ser feita ao chegar, permanecer ou sair
de um estado;



Ações executadas ao entrar no estado
(entry);
Ações executadas dentro do estado (do);
Ações executadas ao sair do estado (exit).
João Paulo Campolina Lamas
53
Aplicabilidade

Permite o controle do comportamento de um
objeto ao longo de um período, possuindo as
seguintes aplicações:


Representação do diálogo homem X máquina, identificando
a necessidade de intervenção humana (do usuário) em um
dado algoritmo (função implementacional).
Representação das transições de um objeto controlado entre
situações relevantes a um contexto estudado. Este objeto
poderá estar representado em um Modelo de Entidade e
Relacionamentos (MER) ou Diagrama de Classes.
João Paulo Campolina Lamas
54
Banco Investir
João Paulo Campolina Lamas
55
Banco Investir
João Paulo Campolina Lamas
56
Arquitetura e Projeto de
Software
Arquitetura e Projeto de
Software

A arquitetura de software estuda um conjunto de
aspectos estruturais que envolve:







a forma de organizar um sistema como um conjunto de
componentes interconectados;
as estruturas de controles responsáveis pela forma de
seqüenciamento do programa;
os protocolos para comunicação, sincronismo de acesso a
dados entre estes componentes;
a alocação de funcionalidade a cada um dos componentes;
a distribuição física dos componentes;
estudo de desempenho;
formas de evolução.
João Paulo Campolina Lamas
58
Arquitetura e Projeto de
Software

Definição:


Fornecer um nível de abstração no qual os
projetistas podem argumentar sobre o
comportamento de um sistema: funcionalidade,
desempenho, confiabilidade, etc.
Fornecer uma “consciência” para a evolução do
sistema, indicando quais aspectos do sistema
podem ser facilmente alterados sem comprometer
a integridade do sistema.
João Paulo Campolina Lamas
59
Arquitetura e Projeto de
Software

A criação da arquitetura de um sistema
apresenta um conjunto de questões
arquiteturais que devem ser respondidas
antes de um projeto ser desenvolvido:



Como organizar o controle do sistema?
Qual a forma de armazenamento de dados?
Qual a política de tratamento das exceções?
João Paulo Campolina Lamas
60
Organização e Controle do
Sistema

A primeira pergunta é respondida
através dos modelos de casos de uso,
no qual descreve as funcionalidades de
um sistema. Cada caso de uso segue
um roteiro ordenado que indica quais
passos devem ser seguidos para que o
passo possa ser executado com
sucesso.
João Paulo Campolina Lamas
61
Armazenamento e Persistência


Na grande maioria dos SGBDs comerciais
modernos, todas as informações são
arranjadas em relações de itens chamadas de
tabelas. As linhas da tabela são chamadas de
ocorrências e as colunas de atributos. A
associação de uma ocorrência de uma tabela
a uma ou mais ocorrência de outra tabela é
feita pelos identificadores referenciais
Persistência é o nome dado a um problema
de armazenamento dos objetos de um
sistema em uma memória permanente.
João Paulo Campolina Lamas
62
Tratamento de Exceções

A confiabilidade da arquitetura de um
software está ligada ao cumprimento
dos requisitos não funcionais de
correção, confiabilidade e robustez.
Cada uma dessas propriedades não
funcionais é de grande importância
arquitetônica, pois influenciam bastante
no desenvolvimento, manutenção e
extensão do software.
João Paulo Campolina Lamas
63
Engenharia de Software
Orientada a Objetos
Paradigma Orientado à
Objetos

Conjunto de conceitos e regras que
determinam como desenvolver software
utilizando a tecnologia de orientação à
objetos.
João Paulo Campolina Lamas
65
Objetos


Representam elementos do mundo real
Possuem:


Atributos (estado);
Serviços (comportamento);
João Paulo Campolina Lamas
66
Atributos e Serviços

Atributo


É um dado (informação de estado) para o
qual cada objeto em uma classe tem seu
próprio valor.
Serviço

É um comportamento específico que um
objeto deve exibir.
João Paulo Campolina Lamas
67
Atributos e Serviços


Serviços só têm acesso aos atributos da
classe para a qual foram definidos.
Atributos de uma classe só podem ser
manipulados por serviços desta classe.
João Paulo Campolina Lamas
68
Classe




Uma descrição de um ou mais objetos
com os mesmos atributos e serviços.
Uma classe pode ser vista como uma
“fábrica de objetos”.
Objetos pertencentes à classe são ditos
INSTÂNCIAS da classe.
Instanciação: ato de criar (instanciar)
objetos de uma classe.
João Paulo Campolina Lamas
69
Classe
João Paulo Campolina Lamas
70
Tipos de Classes

Classe Concreta


Pode instanciar objetos.
Classe Abstrata

Não pode instanciar objetos.
João Paulo Campolina Lamas
71
Classe e Objetos
João Paulo Campolina Lamas
72
Classificação
João Paulo Campolina Lamas
73
Dificuldade da Classificação
João Paulo Campolina Lamas
74
Abstração


Princípio de ignorar os aspectos de um
assunto não relevantes para o propósito
em questão, tornando possível uma
concentração maior nos assuntos
principais.
A abstração consiste então na seleção
de alguns aspectos, ignorando outros.
João Paulo Campolina Lamas
75
Encapsulamento
(Ocultamento de Informações)



O encapsulamento proíbe a visualização
interna de um objeto.
Atributos são associados à serviços e só
podem ser acessados por estes.
A interface para cada módulo é definida
de forma a revelar o menos possível
sobre seu funcionamento interno.
João Paulo Campolina Lamas
76
Encapsulamento
João Paulo Campolina Lamas
77
Herança


Mecanismo para expressar a
similaridade entre classes, simplificando
a definição de classes iguais a outras
que já foram definidas.
Representa a estrutura Generalização e
Especialização (Gen-Espec), tornando
explícitos os atributos e serviços
comuns em uma hierarquia de classes.
João Paulo Campolina Lamas
78
Herança
João Paulo Campolina Lamas
79
Herança



Superclasses representam abstrações
generalizadas.
Subclasses representam abstrações onde
variáveis de instância e métodos são
adicionados, modificados ou removidos.
Superclasses podem possuir serviços
abstratos (virtuais), que devem ser
implementados nas subclasses
João Paulo Campolina Lamas
80
Herança


Com o mecanismo de herança, ao se
criar uma classe a partir de outra
classe, a nova classe (subclasse da
classe original) herda todas as suas
características (atributos e serviços).
Dois tipos:


Simples
Múltipla
João Paulo Campolina Lamas
81
Herança Simples

Subclasse herda de apenas uma
superclasse
João Paulo Campolina Lamas
82
Herança Múltipla

Subclasse herda de mais de uma
superclasse

Principal problema: conflito de nomes
João Paulo Campolina Lamas
83
Polimorfismo


Possibilidade de enviar um mesmo
seletor de mensagem para diferentes
objetos, mesmo que estes sejam
instâncias de classes diferentes.
Significa que a mesma operação pode
atuar de modos diferentes em classes
diferentes.
João Paulo Campolina Lamas
84
Associação

Um modelo de mapeamento de domínio
que um objeto precisa ter com outros,
para cumprir suas responsabilidades.
João Paulo Campolina Lamas
85
Composição (Agregação)


Utilizado quando objetos de
determinadas classes são utilizados em
conjunto e um faz parte do outro.
Representa a estrutura Todo-Parte.
João Paulo Campolina Lamas
86
Tecnologias Orientadas à Objetos
x Baseadas em Objetos



As orientadas à objetos suportam todos
os conceitos como encapsulamento,
heranças nas classes e polimorfismo
nas operações.
As baseadas em objetos apenas aderem
parcialmente a estes conceitos.
Nem todas as ferramentas visuais são
orientadas à objetos.
João Paulo Campolina Lamas
87
Reutilização



O reuso é inerente ao processo de solução de
problemas utilizado pelos seres humanos.
Na medida em que soluções são encontradas,
estas são utilizadas em problemas similares.
A capacidade de abstração é o que garante a
adaptação necessária ao novo contexto.
João Paulo Campolina Lamas
88
Reutilização

Definições:


É a utilização de produtos de software
desenvolvidos ao longo do ciclo de vida em uma
situação diferente daquela para a qual foram
originalmente produzidos
É o processo de utilização de software préexistente (programas, procedimentos,
documentação e dados associados) durante o
desenvolvimento de um novo sistema ou
componente
João Paulo Campolina Lamas
89
Reutilização

Motivação:




Melhores índices de produtividade;
produtos de melhor qualidade, mais
confiáveis, consistentes e padronizados;
redução dos custos e tempo envolvidos no
desenvolvimento de software;
maior flexibilidade na estrutura do software
produzido, facilitando sua manutenção e
evolução.
João Paulo Campolina Lamas
90
Projeto Orientado a Objetos
O que é o RUP?



O nome é uma abreviação de Rational Unified
Process;
É um processo de engenharia de software
desenvolvido por três dos principais gurus da
indústria de software: Ivar Jacobson, James
Rumbaugh e Grady Booch, sendo o resultado
de mais de 30 anos de experiência
acumulada;
É o primeiro processo de desenvolvimento a
explorar integralmente as capacidades do
padrão UML.
João Paulo Campolina Lamas
92
RUP é um Processo



dirigido por casos de uso;
centrado na arquitetura;
iterativo e incremental.
João Paulo Campolina Lamas
93
Processo Dirigido por Casos de
Uso



caso de uso é um modelo que define o que o
sistema deve fazer da perspectiva dos
usuários, subsistemas ou periféricos;
ator é algo que interaja com o sistema a ser
desenvolvido;
todos os casos de uso de um sistema compõe
a especificação funcional do sistema (modelo
de casos de uso), ou seja, definem os
requisitos do sistema;
João Paulo Campolina Lamas
94
Processo Dirigido por Casos de
Uso

Dirigem várias atividades de
desenvolvimento:





Criação e validação da arquitetura do
sistema;
Criação de casos de teste;
Planejamento das iterações;
Criação de documentação do usuário;
Implantação do sistema;
João Paulo Campolina Lamas
95
Processo Centrado na
Arquitetura




Fornece uma base sólida para a construção
do software;
Melhor compreensão do sistema e
organização do desenvolvimento;
Descrição da arquitetura envolve elementos
mais importantes, como a coleção de visões
dos modelos do sistema;
A arquitetura representa a forma, enquanto
que os casos de uso representam as
funcionalidades;
João Paulo Campolina Lamas
96
Processo Iterativo e
Incremental





Identificação de riscos é adiantada;
Preparação do Sistema para requisitos que
mudam;
Integração contínua (facilita testes) e
aprendizado facilitado;
Desenvolvimento em mini-projetos (iterações)
que incrementam o desenvolvimento;
Modelos evoluem nas iterações.
João Paulo Campolina Lamas
97
O RUP é iterativo e
incremental

O desenvolvimento iterativo controlado é
superior a tradicional abordagem cascata por
muitas razões:








suporta mudanças de requisitos;
permite integração contínua;
atenua os riscos;
permite mudanças táticas;
facilita a reutilização;
resulta em uma arquitetura mais robusta;
facilita o entendimento;
refina os processos;
João Paulo Campolina Lamas
98
O RUP é iterativo e
incremental




Concepção (define o escopo do projeto)
Elaboração (detalha os requisitos e a arquitetura)
Construção (desenvolve o sistema)
Transição (implanta o sistema)
João Paulo Campolina Lamas
99
O RUP é iterativo e
incremental

Cada iteração:



é planejada;
realiza uma seqüência de atividades (de
elicitação de requisitos, análise e projeto,
implementação, etc.) distintas geralmente
resulta em uma versão executável do
sistema;
é avaliada segundo critérios de sucesso
previamente definidos;
João Paulo Campolina Lamas
100
RUP – Fluxos de Trabalho

Modelagem de Negócio


Requisitos



Desenvolvimento baseado em componentes.
Mecanismos de colaboração entre componentes de forma a realizar
os cenários dos casos de uso.
• Implementação


Casos de Uso + Protótipo Interface com Usuário + Glossário +
Modelo de domínio.
Análise e Projeto


Definição dos Processos e Regras de negócio.
Produção de código e testes de unidade.
Testes

Testes do sistema, baseados nos casos de uso e demais requisitos.
João Paulo Campolina Lamas
101
Fases x Iterações


O conjunto das 4 fases (Concepção,
Elaboração, Construção e Transição) formam
um ciclo de desenvolvimento;
Cada ciclo produz a geração de um produto
(com infra-estrutura de manutenção e
suporte).





Ciclos de evolução podem ser originados de:
sugestões de usuários
modificações no contexto do negócio
mudanças tecnológicas
reação à competição
João Paulo Campolina Lamas
102
Fases x Iterações



Cada fase (concepção, elaboração,
construção, transição) é composta por 1 ou
mais iterações;
Cada iteração gera um release interno ou
externo;
O que é um release?

Uma versão estável, completa em si e executável
do sistema bem como qualquer outros elementos
necessários para sua utilização.
João Paulo Campolina Lamas
103
Fases x Iterações
João Paulo Campolina Lamas
104
Concepção

Responder às seguintes perguntas:








Quais serão as principais funcionalidades do sistema?
Em linhas gerais, como será a arquitetura do sistema?
Qual é a estimativa inicial de tempo e custo para o projeto?
Quais são os principais riscos?
Entendimento geral do problema e da tecnologia
envolvida;
Estabelecer o escopo do projeto;
Garantir o financiamento do projeto;
Verificar a viabilidade do projeto;
João Paulo Campolina Lamas
105
Elaboração






Detalhamento dos requisitos do sistema;
Protótipo Descartável - Interface com Usuário;
Garantir uma arquitetura estável e testada para a
construção (evitar surpresas técnicas durante a
construção);
Minimizar os riscos relacionados à fase de
construção;
Plano de desenvolvimento para as próximas fases;
Estimativa realista de custo e prazo para a
construção;
João Paulo Campolina Lamas
106
Construção





Construção do produto em uma seqüência de
iterações;
Ênfase em Projeto Detalhado, Implementação
e testes;
Gerar o software propriamente dito;
Manuais / Documentação do usuário;
Produto ao final da Construção ainda pode
conter erros, que serão descobertos e
removidos na fase de transição;
João Paulo Campolina Lamas
107
Transição









Fazer a transição do produto para a comunidade de usuários;
Foco na correção de problemas e não em adição de novas
funcionalidades;
Sugestões são avaliadas, podendo ser incorporadas ainda neste
release;
Modificações em função de feedback dos usuários;
Otimização;
Treinamento dos usuários;
Montagem da estrutura de suporte;
Definição do processo de manufatura;
Teste beta - Aceitação final.
João Paulo Campolina Lamas
108
Modelagem de Negócio
João Paulo Campolina Lamas
109
Requisitos
João Paulo Campolina Lamas
110
Análise e Projeto
João Paulo Campolina Lamas
111
Implementação
João Paulo Campolina Lamas
112
Testes
João Paulo Campolina Lamas
113
Implantação
João Paulo Campolina Lamas
114
Mecanismos Fundamentais





Abstração de Dados;
Herança;
Poliformismo;
Tratamento de Exceções;
Persistência;
João Paulo Campolina Lamas
115
Objetos em Software

Idéias Básicas:


O modelo representa em software objetos que
encontramos no mundo real;
Tipos de objetos:



Entidades Físicas;
Entidades Abstratas;
A características mais importante (e diferente)
desta abordagem para a tradicional é a unificação
de dados e funções;
João Paulo Campolina Lamas
116
Modelagem Conceitual

E dois aspectos fundamentais:


Abstração – relacionada com os nossos
pensamentos na observação do domínio do
problema e na definição dos objetos,
propriedades e ações relevantes para a
solução;
Representação – está relacionada com a
notação adotada para expressar o modelo
concreto (ou realidade física)
João Paulo Campolina Lamas
117
Abstração


O mecanismo através do qual observa-se o
domínio de um problema e foca-se nos
objetos, ações e propriedades, que são
relevantes para uma aplicação específica;
Noções diferentes podem ser abstraídas:



Categoria ou classes;
Ações; e
Propriedades.
João Paulo Campolina Lamas
118
Herança

É um mecanismo para derivar novas
classes a partir de classes existentes
através de um processo de refinamento.
Uma classe derivada herda a
representação de dados e operações,
estende a representação de dados ou
redefini a implementação de operações
já existentes.
João Paulo Campolina Lamas
119
Problemas com a Herança




Conjuntos Equivocados;
Hierarquia Invertida;
Confundir Classe com Instância; e
Utilização Inadequada.
João Paulo Campolina Lamas
120
Conjuntos Equivocados
João Paulo Campolina Lamas
121
Hierarquia Invertida
João Paulo Campolina Lamas
122
Confundir Classe com
Instância
João Paulo Campolina Lamas
123
Confundir Classe com
Instância
João Paulo Campolina Lamas
124
Confundir Classe com
Instância
João Paulo Campolina Lamas
125
Utilização Inadequada
João Paulo Campolina Lamas
126
Utilização Inadequada
João Paulo Campolina Lamas
127
Polimorfismo



Palavra é derivada do grego e significa
“muitas formas” ou “tendo muitas formas”;
No contexto da orientação a objetos, significa
que varáveis podem referenciar mais do que
um tipo;
É a habilidade pela qual uma única operação
ou nome de atributo pode ser definido em
mais de uma classe e assumir
implementações diferentes em cada uma
dessas classes.
João Paulo Campolina Lamas
128
Polimorfismo
João Paulo Campolina Lamas
129
Tolerância a Falhas

A partir do momento que os computadores se
tornaram uma ferramenta indispensável na
sociedade moderna, um princípio
fundamental surgiu: os benefícios trazidos
pelos sistemas computacionais são tantos
quantos os prejuízos que estes nos
proporcionam quando deixam de funcionar
ou quando funcionam incorretamente.
João Paulo Campolina Lamas
130
Tolerância a Falhas

É a melhor forma de manter a confiabilidade
e disponibilidade;


Sistemas confiáveis - são sistemas que não irão
desviar das intenções de seus projetistas diante
de falhas de projeto, físicas ou interação com os
usuários, ou ainda permitir que vírus ou ataques
maliciosos afetem seus serviços essenciais;
Sistemas disponíveis - são sistemas que se
mantém disponíveis mesmo diante de falhas de
projeto, físicas ou humanas.
João Paulo Campolina Lamas
131
Tolerância a Falhas


Uma falha num componente do sistema pode
causar um erro no estado interno, o que pode
levar a um defeito no sistema em algum
momento, que pode implicar as sua parada
total;
Técnicas conhecidas para eliminar os erros
dos estados de um sistema:


Recuperação de erros por avanço; e
Recuperação de erros por retrocesso.
João Paulo Campolina Lamas
132
Recuperação de Erros por
Avanço



Tenta retornar o sistema para um estado livre
de erros aplicando correções ao estado
danificado do sistema;
Esta técnica requer um certo conhecimento
dos erros possíveis de ocorrer;
Exceções e tratamento de exceções
consistem num mecanismo comumente
aplicado para a provisão de recuperação de
erros por avanço.
João Paulo Campolina Lamas
133
Recuperação de Erros por
Retrocesso


Tenta recuperar o sistema para um estado
prévia livre de erros, não requerendo nenhum
conhecimento prévio dos erros do sistema;
Desde que falhas de software e os erros
causados por elas são de natureza
imprevisível, recuperação de erros por
retrocesso é geralmente aplicada para tolerar
falhas de software.
João Paulo Campolina Lamas
134
Persistência


A maioria das aplicações requer o
armazenamento e a recuperação de
informações em um mecanismo de
armazenamento persistentes, tal como um
banco de dados relacional;
Os gerenciadores de banco de dados, mais
utilizados pelo mercado atualmente, seguem
o modelo relacional.
João Paulo Campolina Lamas
135
Download

ENGENHARIA DE SOFTWARE