Escolar Documentos
Profissional Documentos
Cultura Documentos
Sobre o curso
Estes slides foram criados no Departamento de Informtica da Universidade Federal do Esprito Santo (UFES) e esto disponvel no seguinte endereo: http://www.inf.ufes.br/~vsouza/ O material usado como base foi cedido pelo professor Dr. Ricardo de Almeida Falbo, do DI/UFES: http://www.inf.ufes.br/~falbo/ Este curso tem como objetivo apresentar os conceitos da anlise e projeto orientado a objetos a profissionais e estudantes de Engenharia de Software.
Processo de desenvolvimento
O que um processo?
Entrada Processamento Sada
So necessrios?
Em pequenos projetos, podem no ser; Em grandes projetos, eles:
Formalizam a comunicao; Guiam o desenvolvimento; Auxiliam na garantia da qualidade.
O que qualidade?
Um sistema correto, rpido, confivel, fcil de usar, eficiente, etc.; Um sistema fcil de entender, de modificar, reutilizvel, portvel, etc.
Definio do processo
Definio das atividades-chave:
Planejamento, requisitos, anlise, projeto, etc.
Escolha de um paradigma:
Orientado a Objetos, Estruturado, etc.
Atividades-chave
Planejamento; Levantamento de Requisitos; Anlise; Projeto; Implementao; Testes; Implantao; Operao; Manuteno.
Planejamento
Definio de estimativas de custo, tempo e utilizao de recursos; Plano de projeto: proposta de desenvolvimento, definio do processo; Informaes atualizadas regularmente (revises a cada final de etapa).
Levantamento de requisitos
Refinamento do escopo; Identificao dos requisitos; Compreenso do domnio do problema.
Anlise
Modelagem, avaliao e documentao dos requisitos; Foco no que o software deve fazer, e no em como ele far.
Projeto
Definio da plataforma de implementao; Incorporao de requisitos tecnolgicos; Foco em como cada requisito ser implementado; Refinamentos sucessivos at chegar ao nvel de implementao.
Implementao
Traduo do projeto para uma linguagem de programao; Objetiva ter um software executvel.
Testes
Validao da funcionalidade por parte do time de desenvolvimento; Diversos tipos:
Testes de unidade; Testes de integrao; Testes de sistema; Testes de carga/estresse; Etc.
Implantao
Colocao do sistema em produo; Envolve outros aspectos:
Treinamento de usurios; Configurao do ambiente; Converso de tecnologias; Etc.
Operao
Software em utilizao pelo cliente.
Manuteno
Alteraes no software:
Erros encontrados; Adaptaes a alteraes do ambiente; Funcionalidade adicional; Ajuste fino; Etc.
O paradigma
Vantagens do paradigma OO:
Mesma notao durante todo o processo; Reduo do gap semntico; Promove desenvolvimento incremental e evolutivo; Reusabilidade; Extensibilidade; Modularidade; Etc.
Modelo incremental
Variao do seqencial linear; Levantamento de requisitos e anlise so feitos seqencialmente; Projeto, implementao e testes so feitos em incrementos; Cada incremento gera uma parte operacional do sistema.
Modelos evolutivos
Premissa de que os requisitos evoluem ao longo do tempo; Em geral so processos iterativos; Cada iterao constri um incremento de software, que evolui com o tempo.
Evolutivo bsico
Modelo espiral
Modelos geis
Nova filosofia que valoriza:
Indivduos e interaes ao invs de processos e ferramentas; Software funcional ao invs de documentao; Colaborao ao invs de negociao; Responder s mudanas ao invs de seguir um plano.
Exemplos:
Extreme Programming (XP); Agile Modeling; SCRUM; Etc.
Exemplo de processo OO
Planejamento
Levantamento de Requisitos
Anlise OO
Plano de Projeto
Especificao de Requisitos
Especificao de Anlise
Exemplo de processo OO
Projeto OO
Implementao
Testes
Especificao de Anlise
Especificao de Projeto
Cdigo-Fonte
Neste curso...
J vimos Levantamento de Requisitos:
Resumo de Engenharia de Requisitos; Tcnicas de levantamento de requisitos; Modelagem de casos de uso.
UML
Aprovada e homologada pela OMG (Object Management Group) em 1997. Sua verso atual 2.0; A notao pode ser unificada, mas a deciso de qual artefato produzir depende do processo definido para o projeto; Pode ser utilizada em diferentes processos de desenvolvimento orientados a objetos, em todas as etapas do ciclo de desenvolvimento.
Diagramas da UML
de Casos de Uso; de Classes; de Objetos; de Estrutura Composta; de Seqncia; de Comunicao; de Estados; de Atividades; de Componentes; de Implantao; de Pacotes; de Interface Geral; de Tempo.
Diagramas de classes
Herana
Diagramas de estados
Estado Final
Diagramas de seqncia
Ator Objeto
Mensagem
Retorno
Condio Excluso
Modelagem esttica
11/04/2006
Modelagem dinmica:
Determinao do comportamento; Definio de operaes.
Classes
Em ltima instncia, um sistema OO um conjunto de objetos que se comunicam; Objetos so categorizados em classes; No modelamos objetos, modelamos classes; Logo, o processo central da Anlise OO a descoberta de classes que devem ser includas no modelo.
Papis desempenhados pelas diferentes pessoas que interagem direta ou indiretamente com o sistema:
Ex.: piloto, atendente, gerente etc.
Unidades organizacionais (departamentos, divises etc) que possam ser relevantes para o sistema:
Ex.: local para entrega, setor, etc.
Se estiver em itlico, a classe abstrata. Sintaxe: <escopo> <nome> : <tipo> = <valor default> Escopo: - privado + pblico # protegido Tipo: ignorado na fase de anlise. Sintaxe: <escopo> <nome> (<parmetros>) : <tipo> <parmetros> = lista de pares <nome> : <tipo>, separada por vrgula. Tipo: ignorado na fase de anlise.
Hierarquias
Um dos principais mecanismos de estruturao de conceitos; Captura similaridades entre classes.
Especializao
Generalizao
Subclasses devem suportar toda a funcionalidade das superclasses e possivelmente mais; Funcionalidade comum a diversas classes deve estar o mais alto possvel na hierarquia; A herana deve estar no domnio do problema e fazer parte das responsabilidades do sistema; Classes que no adicionam funcionalidade nem redefinem funcionalidades existentes devem ser eliminadas.
Separao em subsistemas
Projetos grandes podem conter centenas de classes e estruturas diversas; Diviso das classes em pacotes:
Coleo de classes que colaboram entre si; Conjunto coeso de responsabilidades; Caixa preta.
Vantagens:
Facilita o entendimento para leitores; Auxilia na organizao de grupos de trabalho; Organiza a documentao.
Nos pacotes de casos de uso: casos de uso do Subsistema 01 dependem (<<include>>, <<extends>>, etc.) de casos de uso do Subsistema 02.
Identificando relacionamentos
Classes se relacionam por meio de associaes simples, agregaes ou composies; Indicam possveis ligaes entre os objetos das classes associadas.
Cardinalidades
Indicam quantos objetos podem participar de um determinado relacionamento.
Objetos da ClasseA podem se relacionar com no mnimo zero e no mximo trs objetos da ClasseB.
Um e somente um.
Papis
Indicam o papel que a classe desempenha na associao (so usados substantivos); opcional, usado quando melhora o entendimento do modelo; Sintaxe: <escopo> <nome>.
Relacionamentos n-para-n
Perfeitamente legais; Requerem ateno possveis atributos do relacionamento (eventos a serem lembrados).
Classes associativas
Relacionamentos recursivos
Perfeitamente legais; Geralmente pedem definio de papis.
Associaes n-rias
Associaes entre trs ou mais classes; Extremamente raras, muitas vezes as ferramentas CASE nem do suporte.
Agregao e composio
Tipos especiais de associao, j estudados.
Outra viso:
Na agregao, as partes podem existir sem o todo e viceversa; A composio difere da agregao por restringir que o todo no vive sem as partes.
Atributos de classes
Atributos so informaes de estado (propriedades) para o qual cada objeto em uma classe tem seu valor; Muito similares s associaes:
Como atributos tm um tipo, podemos considerar que so associaes com um tipo; Para tipos primitivos definimos atributos, do contrrio modelamos uma associao; Em ltima instncia, associaes e atributos so implementados da mesma forma; Atributos e associaes definem uma classe.
Descoberta de atributos
No h mgica. Usamos as mesmas tcnicas da descoberta de classes; Caractersticas de um atributo:
Informao relevante no contexto do problema; Captura um conceito atmico (do contrrio seria uma classe).
Muitas classes identificadas e que no passam nos critrios de classe podem vir a ser atributos.
Posicionamento de atributos
Ateno hierarquias de classes:
Atributos genricos ficam mais acima na hierarquia; Por outro lado, se ele no se aplica a algumas subclasses, deve ser trazido para baixo, somente para as classes apropriadas.
Reviso da hierarquia:
Descoberta de atributos nos leva a um melhor entendimento, o que possivelmente implicar reviso de hierarquias.
Especificao de atributos
Escolha um nome com significado; Siga um padro de nomenclatura; Inclua-o na modelagem de classes:
Dicionrio de dados
Includo na especificao de anlise; Descreve cada atributo:
Seu significado no domnio; Unidades de medida; Intervalo / limite; Enumerao; Preciso; Valor default; Obrigatoriedade; Etc.
Modelagem dinmica
11/04/2006
Comportamento dinmico
Os diagramas de classes representam apenas elementos estticos, dados; preciso, ainda, representar o comportamento da aplicao em funo do tempo e de eventos especficos; Modelar o comportamento:
Indica como o sistema ir responder a eventos ou estmulos externos; Auxilia o processo de descoberta das operaes das classes do sistema.
Modelos da UML
Diagramas de Estados:
Descrevem os estados possveis pelos quais um particular objeto pode passar e suas transies, estmulos e atividades;
Diagramas de Interao:
Descrevem como grupos de objetos colaboram entre si em um certo comportamento.
Notao
Estado Inicial Estado Final
Transio
Estado
Estados
Nome: deve descrever claramente o estado; Atividades:
De entrada: ocorrem ao entrarmos no estado; De sada: ocorrem ao sarmos do estado; Convencional: ocorrem enquanto o objeto estiver naquele estado.
Os estados ligados a um estado final so aqueles dos quais o objeto no mais sair;
No obrigatrio ter e pode ter mais de um; Um estado ligado a um estado final no pode ter transies para outros estados.
Ao x atividade
Ao x atividade convencional:
Uma ao ocorre durante a transio (ela atmica); Uma atividade ocorre enquanto o objeto permanece no estado (quando ela acabar, ele muda de estado);
Ao x atividades de entrada/sada:
Caso s haja uma transio de entrada/sada, no h diferena na prtica.
Exemplos
Ao ser criado, o objeto da classe em questo encontra-se no estado E-1.
Se o objeto estiver no estado E-1 e ocorrer o evento E, se a condio C = true, ocorre a ao A e o objeto passa para o estado E-2.
Enquanto estiver no estado E-1, o objeto realiza a atividade A. Ao terminar a atividade A, automaticamente ele muda para o estado E-2.
Um estado uma situao durante a vida de um objeto durante a qual ele satisfaz alguma condio, realiza alguma atividade ou aguarda algum evento.
Dicas prticas
Preste ateno nas classes prximas, pois podem ser alvos de aes ou participar de condies; Identifique na especificao os eventos aos quais os objetos da classe devem responder; Se um estado for muito complexo, considere criar um subdiagrama s para ele; Verifique se todas as aes esto condizentes com sua modelagem de classes; Simule o sistema em execuo e procure estados noalcanveis, loops ou deadlocks.
Mais um exemplo
Diagramas de interao
Ajudam a compreender e capturar o fluxo global de controle; Modelam um conjunto de objetos e as mensagens que trocam; Foco em uma funcionalidade especfica (caso de uso); Dois tipos de diagrama:
Diagrama de Sequncia (temporal); Diagrama de Colaborao (estrutural).
Diagramas de seqncia
Foco no tempo e no controle; Usaremos como uma formalizao de um fluxo de um caso de uso / cenrio.
Notao geral
Classe Objeto
F L U X O
Escopo
Criao de objetos
Excluso de objetos
referncia a um objeto
Condicionais e loops
Para loops: [for i = 0; i < 10; i++] ou [for each obj in lista]
UML 2.0
Diagrama de colaborao
nfase na organizao dos objetos que participam da interao; Notao similar a grafos: objetos so vrtices e mensagens so arestas.
Exemplo