Ivan Mathias Filho ivan@inf.puc-rio.br LES/PUC-Rio Programa Captulo 1 Princpios de Modelagem O Paradigma Funcional O Paradigma Orientado a Objetos LES/PUC-Rio Programa Captulo 1 Princpios de Modelagem O Paradigma Funcional O Paradigma Orientado a Objetos LES/PUC-Rio A Importncia da Modelagem (1) Sistemas de pouca complexidade podem ser construdos sem um planejamento prvio. LES/PUC-Rio A Importncia da Modelagem (2) Sistemas complexos exigem planejamento rigoroso e trabalho em equipe. LES/PUC-Rio O Que um Modelo? Um modelo uma simplificao da realidade. LES/PUC-Rio Por Que Construmos Modelos? O ser humano limitado em relao sua capacidade de compreender sistemas complexos; Devemos dividir grandes problemas em problemas menores dividir para conquistar; A modelagem nos ajuda na tarefa de compreender sistemas grandes e complexos. Construmos modelos de sistemas complexos porque no possvel compreend-los na sua totalidade. LES/PUC-Rio Controle da Complexidade LES/PUC-Rio Controle da Complexidade LES/PUC-Rio Objetivos da Modelagem (1) Visualizar um sistema como ele ou como desejamos que ele seja; Especificar a estrutura ou o comportamento de um sistema; Criar especificaes que sirvam de guias para a construo de um sistema; Documentar as decises tomadas em relao a um sistema. LES/PUC-Rio Objetivos da Modelagem (2) O Objetivo da Engenharia de Software no construir modelos e documentos, mas desenvolver sistemas que satisfaam as necessidades dos clientes. LES/PUC-Rio Mltiplas Vises (1) Projetos complexos demandam modelos com diferentes nveis de preciso. LES/PUC-Rio Mltiplas Vises (2) Vises distintas e quase independentes de um sistema complexo nos ajudam na sua investigao. LES/PUC-Rio Programa Captulo 1 Princpios de Modelagem O Paradigma Funcional O Paradigma Orientado a Objetos LES/PUC-Rio Dimenses do Software Qualquer discusso sobre a busca de uma arquitetura adequada a um sistema de software deve levar em conta os seguintes aspectos: LES/PUC-Rio O Problema da Decomposio Se nos abstrairmos da existncia de mltiplos processadores reais ou virtuais a questo passa a ser a seguinte: LES/PUC-Rio Decomposio Funcional (1) A decomposio funcional clssica de um sistema baseia-se em refinamentos sucessivos, comeando com a definio da sua funo principal: [ F0] Emi t e Cont r acheque dos Funci onr i os Cada etapa seguinte deve diminuir o nvel de abstrao dos elementos obtidos: [ F1] Lei a os dados dos f unci onr i os [ F2] Lei a os r egi st r os de pont o dos f unci onr i os [ F3] Cal cul e os sal r i os br ut os emf uno das hor as t r abal hadas [ F4] Cal cul e os i mpost os a ser emdeduzi dos [ F5] Emi t a os cont r acheques dos f unci onr i os LES/PUC-Rio Decomposio Funcional (2) Se optarmos por um pseudo-linguagem de programao, a decomposio anterior assumiria a seguinte forma: incio i ni ci al i ze acumul ador es e abr a ar qui vos; l ei a ar qui vo de f unci onr i os; enquanto houver f unci onr i os faa: l ei a pont o do f unci onr i o; enquanto houver r egi st r o de pont o do f unci onr i o faa: acumul e hor as t r abal hadas; l ei a pont o do f unci onr i o; fim-enquanto cal cul e sal r i o br ut o; cal cul e i mpost os e sal r i o l qui do; i mpr i ma cont r acheque; l ei a ar qui vo de f unci onr i os; fim-enquanto i mpr i ma r el at r i o comos t ot ai s de pagament o; f eche os ar qui vos; fim LES/PUC-Rio Desvantagens da Decomposio Funcional Uma das desvantagens da decomposio funcional por refinamentos sucessivos a nfase prematura nas restries temporais; Cada refinamento expande uma parte da estrutura abstrata em uma seqncia de operaes com estruturas de controle detalhadas; Tais restries de controle passam a ser essenciais arquitetura obtida, embora elas estejam sujeitas mudanas; Isso diminui a flexibilidade da arquitetura em relao acomodao de futuras alteraes nos requisitos do sistema. LES/PUC-Rio Uso de DFDs Algumas das deficincias decorrentes da amarrao prematura das estruturas de controle podem ser corrigidas com o uso de Diagramas de Fluxos de Dados (DFDs): LES/PUC-Rio Vantagens da Decomposio Funcional A decomposio funcional por refinamentos sucessivos possui vrias caractersticas positivas: uma disciplina logicamente bem organizada; Pode ser ensinada e aplicada de modo efetivo; Encoraja o desenvolvimento de sistemas bem organizados; Ajuda os projetistas a lidar com a complexidade dos sistemas nos estgios iniciais do desenvolvimento. LES/PUC-Rio Limitaes da Decomposio Funcional Entretanto, a decomposio funcional por refinamentos sucessivos e os mtodos de design dela derivados, como a Anlise Estruturada, possuem importantes limitaes: A idia central destes mtodos a de que um sistema pode ser caracterizado por uma nica funo bastante duvidosa: sistemas reais fornecem aos seus usurios uma srie de servios; Usar as propriedades de um sistema mais sujeitas a mudanas suas funes como base para a decomposio modular no se coaduna com a natureza evolucionria dos sistemas de software. LES/PUC-Rio A Anlise Essencial Uma das deficincias da Anlise Estruturada, a sua natureza estritamente top-down, foi corrigida pelo mtodo conhecido por Anlise Essencial; Nesta abordagem, a decomposio funcional feita tomando-se por base os eventos que ocorrem na interface do sistema com os seus usurios; No contexto da Anlise Essencial, um evento definido como um acontecimento no mundo exterior que requer uma resposta do sistema. LES/PUC-Rio Particionamento por Eventos Os pares estmulo/resposta so representados na Anlise Essencial por um modelo chamado de DFD Particionado por Eventos: LES/PUC-Rio Limitaes da Anlise Essencial A Anlise Essencial corrigiu uma importante deficincia da Anlise Estruturada: a natureza estritamente top-down desta ltima; Entretanto, ela ainda usa as funes de um sistema suas propriedades mais sujeitas mudanas como base para a decomposio modular do mesmo; Uma ltima e importante deficincia de ambas as abordagens ser vista a seguir: a obteno de um modelo hierrquico de mdulos a partir do DFD de um sistema. LES/PUC-Rio O Projeto Estruturado (1) A derivao do projeto modular a partir do modelo de fluxo de dados um processo de cinco etapas: O tipo de fluxo de informaes estabelecido; As fronteiras do fluxo so indicadas; O DFD mapeado para uma estrutura de programa; A hierarquia de controle definida por fatorao; A estrutura resultante aprimorada usando-se medidas e heursticas de projeto. LES/PUC-Rio Tipos de Fluxos de Dados As caracterizao dos tipos de fluxos de dados presentes no modelo funcional de um sistema fundamental para a derivao do seu projeto modular; Segundo o Projeto Estruturado, os fluxos de dados de um sistema assumem duas formas bsicas Fluxo orientado a transformaes; Fluxo orientado a transao; LES/PUC-Rio Fluxo de Transformaes (1) Os dados entram no sistema atravs dos fluxos de entrada; Os dados que chegam atravessam um centro de transformao; Os dados saem do sistema atravs dos fluxos de sada; O fluxo global de dados ocorre em uma forma seqencial e segue um ou somente alguns caminhos em uma linha reta. LES/PUC-Rio Fluxo de Transformaes (2) LES/PUC-Rio Fluxo de Transao (1) Caracterizado por um nico item de dados, denominado transao, que dispara outro fluxo de dados ao longo de um dentre muitos caminhos; A transao avaliada e, com base no seu valor, o fluxo ao longo de um dos muitos caminhos de ao iniciado; O ponto central do fluxo de informaes, a partir do qual muitos caminhos de ao emanam, denominado centro de transao; Grandes sistemas podem apresentar tanto fluxos de transformaes como fluxos de transao. LES/PUC-Rio Fluxo de Transao (2) LES/PUC-Rio O Processo do Projeto Estruturado (1) LES/PUC-Rio O Processo do Projeto Estruturado (2) LES/PUC-Rio Anlise de Transformaes LES/PUC-Rio Fronteiras do Fluxo LES/PUC-Rio Fatorao de 1 Nvel (1) LES/PUC-Rio Fatorao de 1 Nvel (2) LES/PUC-Rio Fatorao de 2 Nvel (1) LES/PUC-Rio Fatorao de 2 Nvel (2) LES/PUC-Rio Estrutura de 1 Corte LES/PUC-Rio Estrutura de 2 Corte LES/PUC-Rio Anlise de Transao (1) LES/PUC-Rio Anlise de Transao (2) LES/PUC-Rio Fatorao de 1 Nvel LES/PUC-Rio Fatorao de 2 Nvel LES/PUC-Rio Anlise do Processo A estrutura hierrquica do projeto modular resultado da natureza top-down da decomposio funcional; A abordagem atende bem o objetivo de garantir que o projeto modular atenda as especificaes iniciais do problema, mas nenhum esforo dirigido para promover a reutilizao de mdulos; A derivao do projeto modular baseada exclusivamente na forma do DFD, no levando em considerao importantes aspectos de uma boa decomposio modular, tais como continuidade e reutilizao. LES/PUC-Rio Programa Captulo 1 Princpios de Modelagem O Paradigma Funcional O Paradigma Orientado a Objetos LES/PUC-Rio Na modelagem orientada a objetos a nfase est na descoberta e na descrio dos objetos ou conceitos do domnio de um problema e na representao dos relacionamentos entre os mesmos; Neste paradigma, os objetos de domnio devem ser mapeados para objetos de software, que iro colaborar entre si com o objetivo de realizar os requisitos de um sistema. AModelagemOrientada a Objetos (1) LES/PUC-Rio AModelagemOrientada a Objetos (2) A modelagem orientada a objetos, usada em conjunto com alguma linguagem orientada a objetos, ajuda a diminuir o gap semntico entre os componentes de software e a concepo humana de um domnio de aplicao, facilitando, assim, a compreenso do design de um sistema. LES/PUC-Rio O Que Significa UML? UML significa Unified Modeling Language; uma linguagem para especificar, visualizar, construir e documentar artefatos de software; Pode ser usada na modelagem de negcios e em outros tipos de sistemas; uma linguagem visual para modelagem de sistemas. LES/PUC-Rio Sistema de Computao Processos de Negcios Item A modelagem captura as partes essenciais do sistema. James Rumbaugh Modelagem visual significa modelar com a utilizao de notaes padronizadas. Pedido Envio O Que Modelagem Visual? LES/PUC-Rio A modelagem visual favorece o entendimento das regras de negcio e a representao das mesmas em um design orientado a objetos. Ferramenta de Comunicao LES/PUC-Rio A UML uma Linguagem Uma linguagem fornece um vocabulrio, e as regras para a combinao de palavras desse vocabulrio, com o objetivo de comunicar algo; Uma linguagem de modelagem uma linguagem cujo vocabulrio e as regras tm seu foco voltado para a representao conceitual e fsica de um sistema; O vocabulrio e as regras de uma linguagem de modelagem indicam como criar e ler modelos bem formados, mas no apontam quais modelos devem ser criados e nem em que seqncia. LES/PUC-Rio A UML para Visualizao e Especificao UML facilita a construo de modelos visuais de um sistema, especificando a sua estrutura (parte esttica ) e ao seu comportamento (parte dinmica); A UML fornece os smbolos grficos para a representao de artefatos de software; Por trs de cada smbolo empregado na notao da UML, existe sintaxe e semntica bem-definidas; Dessa forma, a UML favorece a construo de modelos precisos, completos e sem ambigidades. LES/PUC-Rio A UML para Construir Os modelos de UML podem ser diretamente traduzidos para vrias linguagens de programao; Isso significa que possvel mapear os modelos da UML para linguagens de programao tais como, Java, C++ e C#; Esse mapeamento permite a realizao de uma engenharia de produo (gerao de cdigo) a partir de modelos UML; possvel tambm reconstruir alguns modelos a partir do cdigo fonte escrito em alguma linguagem de programao. Este processo inverso chamado de engenharia reversa. LES/PUC-Rio A UML para Documentar Os requisitos do sistema; A arquitetura do sistema e todos os seus detalhes; As atividades de planejamento do projeto; As atividades de realizao de testes; O gerenciamento de verses. LES/PUC-Rio As Vantagens da UML Padro aberto e no proprietrio (OMG); Independncia do processo de desenvolvimento; Aplicvel a todas as fases do ciclo de desenvolvimento; Independncia da linguagem de programao; Integrao das melhores prticas de modelagem; uma linguagem extensvel. LES/PUC-Rio Interface com o usurio (Swing, .NET, HTML) Projete o seu sistema independente da tecnologia de implementao Persistncia (SQL, EJB, Hibernate) Lgica do negcio (Java, C++, C#) Suporte a Diferentes Tecnologias LES/PUC-Rio Mltiplas Plataformas Componentes Reutilizveis Promoo da Reutilizao LES/PUC-Rio A Histria da UML (1) o resultado da unificao das notaes utilizadas nos mtodos Booch, OMT (Object Modeling Technique) e OOSE (Object-Oriented Software Engineering); Adotada como linguagem padro de modelagem por grande parte da indstria de software e por fornecedores de ferramentas CASE. LES/PUC-Rio A Histria da UML (2) LES/PUC-Rio Descrio da Arquitetura Diferentes participantes usurios finais, analistas, programadores, equipe de testes, gerentes de sistemas e etc. tm vises e interesses distintos em relao a um sistema; Cada um destes participantes traz contribuies prprias ao projeto, em diferentes momentos ao longo do desenvolvimento; A descrio da arquitetura do sistema deve permitir o gerenciamento adequado destes diferentes pontos de vista ao logo do ciclo de vida de um sistema. LES/PUC-Rio O Que Arquitetura? A arquitetura o conjunto de decises significativas sobre: A organizao do sistema de software; A seleo dos elementos estruturais que compem o sistema; O comportamento do sistema, conforme especificado nas colaboraes entre esses elementos; A decomposio desses elementos estruturais e comportamentais em subsistemas progressivamente maiores; O estilo arquitetural que orienta a organizao: os elementos estticos e dinmicos, suas interfaces, colaboraes e composies. LES/PUC-Rio A arquitetura de um sistema complexo pode ser descrita mais adequadamente atravs de cinco vises complementares: Vises da Arquitetura LES/PUC-Rio Descreve o sistema de um ponto de vista externo como um conjunto de interaes entre o sistema e os agentes externos ao sistema. Viso de Casos de Uso (1) LES/PUC-Rio Descrio textual Diagramas de casos de uso Diagramas de estados Diagramas de interaes Diagramas de atividades Utiliza os seguintes recursos: Viso de Casos de Uso (2) LES/PUC-Rio Enfatiza as caractersticas do sistema que do suporte, tanto estrutural quanto comportamental, s funcionalidades externamente visveis do sistema. Viso de Projeto (1) LES/PUC-Rio Diagramas de classes Diagramas de interaes Diagramas de estados Utiliza os seguintes recursos: Viso de Projeto (2) LES/PUC-Rio Mostra o fluxo de controle entre as vrias partes, incluindo mecanismos de concorrncia e sincronizao. Essa viso cuida principalmente das questes referentes ao desempenho, escalabilidade e ao throughput do sistema. Viso de Processos (1) LES/PUC-Rio Utiliza os mesmos diagramas da viso de projeto, mas com o foco voltado para as classes ativas (processos ou threads) que controlam o sistema e as mensagens que passam por elas. Viso de Processos (2) LES/PUC-Rio Abrange o gerenciamento de verses de um sistema e dos componentes e artefatos utilizados para a montagem e distribuio do mesmo. Diz respeito tambm ao mapeamento dos componentes lgicos para os artefatos fsicos. Viso de Implementao (1) LES/PUC-Rio Diagramas de componentes Diagramas de interaes Diagramas de estados Diagramas de atividades Utiliza os seguintes recursos: Viso de Implementao (2) LES/PUC-Rio Abrange os ns que formam a topologia do hardware onde o sistema ser executado. Essa viso trata principalmente da distribuio, do fornecimento e da instalao dos componentes fsicos de um sistema. Viso de Implantao (1) LES/PUC-Rio Diagramas de implantao Diagramas de interaes Diagramas de estados Diagramas de atividades Utiliza os seguintes recursos: Viso de Implantao (2) LES/PUC-Rio Bibliografia (1) Bezerra, E. Princpios de Anlise e Projeto de Sistemas com UML. 1 edio, Campus, 2006. Larman, C. Utilizando UML e Padres. 3 edio, Bookman, 2007. Meyer, B. Object-Oriented Software Construction. 2nd edition, Prentice Hall PTR, 2000. Page-Jones, M. Practical Guide to Structured Systems Design. 2nd edition, Prentice Hall PTR, 1988. LES/PUC-Rio Bibliografia (2) Pressman, R.S. Software Engineering: A Practitioner's Approach. 5th edition. McGraw-Hill, 2003. LES/PUC-Rio Exemplo Descrio de Caso de Uso LES/PUC-Rio Exemplo Diagrama de Casos de Uso LES/PUC-Rio Exemplo Diagrama de Estados LES/PUC-Rio Exemplo Diagrama de Interao LES/PUC-Rio Exemplo Diagrama de Atividades LES/PUC-Rio Exemplo Diagrama de Classes LES/PUC-Rio Exemplo Diagrama de Atividades LES/PUC-Rio Exemplo Diagrama de Interao LES/PUC-Rio Exemplo Diagrama de Componentes LES/PUC-Rio Exemplo Diagrama de Implantao