2/2/2015 Análise e Projeto de Software Material preparado pelo Prof. Marcelo Maia Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 363 Análise e Projeto Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 364 1 2/2/2015 Projeto e Modelos Elicitação de Requisitos CIM Análise de Requisitos PIM Projeto do Sistema PSM Código Implementação Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Artefatos de Projeto Razões das Decisões (Design Rationale) Modelos de Projeto Modelos Arquiteturais Modelos de Dados Modelos da Interface com Usuário Modelos de Componentes Modelos de Implantação Padrões Arquiteturais Padrões de Projeto Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 2 2/2/2015 Influências no Projeto Requisitos funcionais Requisitos não-funcionais Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Architecture “The overall structure of the software and the ways in which that structure provides conceptual integrity for a system.” [SHA95a] Structural properties. This aspect of the architectural design representation defines the components of a system (e.g., modules, objects, filters) and the manner in which those components are packaged and interact with one another. For example, objects are packaged to encapsulate both data and the processing that manipulates the data and interact via the invocation of methods Extra-functional properties. The architectural design description should address how the design architecture achieves requirements for performance, capacity, reliability, security, adaptability, and other system characteristics. Families of related systems. The architectural design should draw upon repeatable patterns that are commonly encountered in the design of families of similar systems. In essence, the design should have the ability to reuse architectural building blocks. Fonte: Pressman Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 3 2/2/2015 Software architecture The design process for identifying the sub-systems making up a system and the framework for sub-system control and communication is architectural design. The output of this design process is a description of the software architecture. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Architectural design An early stage of the system design process. Represents the link between specification and design processes. Often carried out in parallel with some specification activities. It involves identifying major system components and their communications (structural properties) Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 4 2/2/2015 Advantages of explicit architecture Stakeholder communication System analysis Architecture may be used as a focus of discussion by system stakeholders. Means that analysis of whether the system can meet its non-functional requirements is possible. Large-scale reuse The architecture may be reusable across a range of systems. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Architecture and system characteristics Performance Security Localise safety-critical features in a small number of subsystems. Availability Use a layered architecture with critical assets in the inner layers. Safety Localise critical operations and minimise communications. Use large rather than fine-grain components. Include redundant components and mechanisms for fault tolerance. Maintainability Use fine-grain, replaceable components. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 5 2/2/2015 Architectural conflicts Trade-offs Using large-grain components improves performance but reduces maintainability. Introducing redundant data improves availability but makes security more difficult. Localising safety-related features usually means more communication so degraded performance. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. System structuring Concerned with decomposing the system into interacting sub-systems. The architectural design is normally expressed as a block diagram presenting an overview of the system structure. More specific models showing how sub-systems share data, are distributed and interface with each other may also be developed. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 6 2/2/2015 Box and line diagrams Very abstract - they do not show the nature of component relationships nor the externally visible properties of the sub-systems. However, useful for communication with stakeholders and for project planning. Difficult for profound evaluation Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Packing robot control system Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 7 2/2/2015 Diagrama de componentes Abstract, but they do show the nature of component relationships and the externally visible properties of the sub-systems. Yet, useful for communication with stakeholders and for project planning. Better for more profound evaluation Next step: refine Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Diagrama de Componentes Sistema Web Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 8 2/2/2015 Architectural design decisions Architectural design is a creative process so the process differs depending on the type of system being developed. However, a number of common decisions span all design processes. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Architectural design decisions Is there a generic application architecture that can be used? How will the system be distributed? What architectural styles are appropriate? What approach will be used to structure the system? How will the system be decomposed into modules? What control strategy should be used? How will the architectural design be evaluated? How should the architecture be documented? Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 9 2/2/2015 Architecture reuse Systems in the same domain often have similar architectures that reflect domain concepts. Application product lines are built around a core architecture with variants that satisfy particular customer requirements. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Architectural styles Architecture patterns The architectural model of a system may conform to a generic architectural model or style. An awareness of these styles can simplify the problem of defining system architectures. However, most large systems are heterogeneous and do not follow a single architectural style. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 10 2/2/2015 Architectural models Used to document an architectural design. Static structural model that shows the major system components. Dynamic process model that shows the process structure of the system. Interface model that defines sub-system interfaces. Relationships model such as a data-flow model that shows subsystem relationships. Distribution model that shows how sub-systems are distributed across computers. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Fonte: Sommerville Reference architectures Reference models are derived from a study of the application domain rather than from existing systems. May be used as a basis for system implementation or to compare different systems. It acts as a standard against which systems can be evaluated. OSI model is a layered model for communication systems. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 11 2/2/2015 OSI reference model Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Key points The software architecture is the fundamental framework for structuring the system. Architectural design decisions include decisions on the application architecture, the distribution and the architectural styles to be used. Different architectural visions such as a structural model, a control model may be developed. System organisational models (patterns) include repository models, client-server models and abstract machine models. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 12 2/2/2015 Key points Modular decomposition models include object models and pipelining models. Control models include centralised control and event-driven models. Reference architectures may be used to communicate domain-specific architectures and to assess and compare architectural designs. Fonte: Sommerville Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Padrões de Arquitetura Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 13 2/2/2015 Padrões Nome do padrão Problema: quando aplicar o padrão? Descreve o problema e seu contexto. Solução: elementos que definem o projeto, seus relacionamentos, responsabilidades e colaborações. É como um “template”que pode ser usado em várias situações. Conseqüências são resultados e trade-offs (compromissos) de se aplicar os padrões. Relacionadas aos trade-offs de espaço e tempo. Como o reúso é um fator importante as conseqüências incluem o impacto na flexibilidade, estensibilidade e portabilidade do sistema. Fonte: GoF Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Classificação de Padrões Padrões Os padrões de projeto podem ser classificados de acordo com a fase de desenvolvimento em que são mais adequados: Padrões de Análise (Analysis patterns) Padrões de Arquitetura (Architectural patterns) Padrões de Projeto (Design patterns) Seu foco é na fase de análise ou modelamento de negócio Padrões ligados ao domínio do problema Seu foco é na arquitetura do software Foco no projeto de componentes do software Muitas das vezes os padrões podem estar muito ligados tanto ao domínio da solução, quanto do problema Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 390 14 2/2/2015 Classificação de Padrões Padrões Padrões de Análise (Analysis patterns) Padrões de Arquitetura (Architectural patterns) Martin Fowler , 1996 Apresentado inicialmente por Frank Buschmann et al., 1996 Computação Distribuída - Frank Buschmann et al., 2007 Padrões de Projeto (Design patterns) GOF (Gang of Four) E. Gamma, R. Helm, R. Johnson, J. Vlissides – 1995 Aplicações Concorrentes e em Rede - Frank Buschmann et al. – 2000 Enterprise Integration Patterns – Gregor Hohpe, 2003 Real-time Design Patterns – Bruce Douglass, 2003 .Net Design Patterns - Christian Thilmany, 2003 J2EE Design Patterns - Deepak Alur, 2003 Web Services Patterns – Paul Monday, 2003 Ajax Design Patterns - Michael Mahemoff, 2006 SOA Design Patterns – Thomas Erl, 2009 Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 391 Padrões de Análise (Analysis Patterns) Proposto por Martin Fowler, em livro publicado em 1996 Notação do Livro não é baseada em UML Baseada em áreas (domínios) específicas como: manufatura; financeira e saúde Mesmo assim, padrões podem apresentados podem ser úteis em outros domínios Alguns princípios apresentados Um modelo não está certo ou errado, eles podem ser mais ou menos úteis Modelos conceituais estão ligados a tipos (interfaces) e não implementações (classes) Padrões são o ponto de partida, não o destino Sempre que possível, quando existir um tipo e um supertipo, considere colocar os recursos no supertipo, desde que isto faça sentido Quando múltipos atributos possuam um comportamento relacionado e presente em muitos tipos, combine estes atributos em um novo tipo fundamental Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 392 15 2/2/2015 Padrões de Análise (Analysis Patterns) Exemplos de alguns padrões de projeto Quantity (3.1) Conversion Ratio (3.2) Compound Units (3.3) Measurement (3.4) Observation (3.5) Range (4.3) Name (5.1) Account (6.1) Transaction (6.2) Summary Account (6.3) Plan (8.4) Contract (9.1) Product (10.3) Associative Type (15.1) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 393 Padrões de Arquitetura (Architectural patterns) Expressam uma organização fundamental de estrutura de um software O ponto de partida da análise orientada a objetos é a criação do chamado Domain Model O “Domain Model” expressa as classes ligadas ao domínio do problema Os padrões de arquitetura auxiliam na concepção do software e na transição para o domínio da solução Alguns padrões de arquitetura Layers Model-View-Controler (MVC) Pipes and Filters Microkernel Shared Repository Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 394 16 2/2/2015 Padrões de Projeto (Design Patterns) Trabalho proposto inicialmente por Erich Gamma, Richard Helm, Ralph Jonhson, John Vlissides (Gang of Four) em 1995 Famílias de Padrões De Criação Estruturais Responsáveis pela criação de objetos Permitem que o sistema fique independente da forma como os objetos são criados Factory, Abstract Factory, Singleton, Builder, Prototype Relacionados com a forma com que classes e objetos são compostos a fim de formar estruturas maiores Adapter, Bridge, Composite, Decorator, Facade, Proxy Comportamentais Relacionados com a atribuição de responsabilidades entre objetos Descrevem a comunicação entre objetos Chain of Responsibility, Command, Flyweigth, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template, Visitor Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 395 Layer Permite o desenvolvimento de forma independente de diferentes partes do sistema de software Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 396 17 2/2/2015 Layer Usos com outros padrões Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 397 Estilos (padrões) de Arquitetura Camadas Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 18 2/2/2015 Camadas (Windows NT) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Pipes and Filters Arquitetura especializada em tratar fluxos de dados (data streams) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 400 19 2/2/2015 Pipes and Filters Uso com outros padrões Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 401 Estilos (padrões) de Arquitetura Dutos e Filtros Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 20 2/2/2015 Estilos (padrões) de Arquitetura Dutos e Filtros Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Dutos e Filtros Atividade começando com o data source Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 21 2/2/2015 Dutos e Filtros Atividade começando com o data sink Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Dutos e Filtros Mix pull-push (Source/Sink passivos) Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 22 2/2/2015 Dutos e Filtros Filtros ativos Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Broker - estrutura Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 23 2/2/2015 Broker – dinâmica requisição de serviço pelo cliente Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Broker – dinâmica uso de pontes Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 24 2/2/2015 Model-View-Controller Uso Em situações onde a interface do usuário de uma aplicação pode mudar de forma mais frequente que o seu domínio Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 411 Model-View-Controller Uso do MVC com outros padrões Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 412 25 2/2/2015 MVC - Estrutura Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. MVC – Dinâmica –Inicialização Engenharia de Software Fonte: Buschmann Prof. Flávio de Oliveira Silva, Ph.D. 26 2/2/2015 MVC – Dinâmica Tratamento de eventos Fonte: Buschmann Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Microkernel Uso Arquitetura com suporte para escalabilidade funcional e adaptável para diferentes cenários de implantação Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 416 27 2/2/2015 Microkernel Uso com outros padrões Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 417 Microkernel Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 28 2/2/2015 Microkernel Cliente chamando serviço Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Microkernel Servidor externo requisitando serviço Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 29 2/2/2015 Monolítico x Microkernel Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. JBoss - JMX Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 30 2/2/2015 JBoss – JMX Camadas - Microkernel Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Shared Repository Uso Aplicações em que partes operam e são coordenadas através de um conjunto de dados compartilhados Caso de aplicações orientadas a dados e onde a interação entre os componentes não seguem regras específicas que possibilitem sua conexão A conexão entre os componentes e aplicações é feita através dos dados Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 424 31 2/2/2015 Shared Repository Uso com outros padrões Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 425 Integração de Aplicações Orientada a processos Enterprise Application Integration Enterprise Service Bus Orientada a Dados ETL (Expose, Transform, Load) EII (Enterprise Information Integration) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 32 2/2/2015 Integração de Aplicações Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Comparação das abordagens Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 33 2/2/2015 Enterprise Application Integration (EAI) EAI refers to message-based, transaction-oriented, application-to-application integration using either an integration pattern point- to-point or; a point-to-hub (brokering or bus) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Padrões para integração orientada a processos Hub (broker) x Ponto a ponto Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 34 2/2/2015 Evolução de integração de aplicações 1960 – Hardware incompatível implicava em reescrever tudo (ex: 1991) Aplicações em batch (lotes) escrita em silos e compartilhamento através de arquivos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Evolução de integração de aplicações Cliente-servidor Escolhas da infra-estrutura de rede. No início não havia arquitetura de rede amplamente aceita. Funções de comunicação tinham que ser adicionadas na aplicação requerendo maior habilidade dos programadores As APIs eram bastante complexas, sendo necessário muito tratamento de exceção e lógica de recuperação para se ter sucesso. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 35 2/2/2015 Evolução de arquiteturas clienteservidor Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. RPC requer o servidor sempre disponível... Middleware de Filas de Mensagens Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 36 2/2/2015 Adaptadores de formato Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Message brokers Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 37 2/2/2015 Integração via Business Process Management Um requisição de serviço de um cliente pode chegar por inúmeros canais, tais como, telefone, mensagem de voz, fax, e-mail e até mesmo via carta convencional. Tal evento precisa ser capturado, categorizado e enviado pela organização através de um caminho predefinido, sendo monitorado por um sistema de gerenciamento que garante que a solução (e satisfação do cliente) serão atingidas dentro de certo prazo, e que qualquer intercorrência seja detectada, escalonada e remediada de acordo com parâmetros específicos de níveis de serviço. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Impacto da Internet Tecnologia para Web Services Extensible Markup Language (XML) SOAP (originally an acronym for Simple Object Access Protocol) is na application-to-application protocol that isolates network, transport, programming language, and platform differences to allow a client to call a remote service without knowledge of how the service is coded or where the service is hosted. The message format is XML. Web Services Description Language (WSDL) is an XML-based interface and interface description language. The service provider uses a WSDL document in order to specify the operations a Web service provides, the parameters and data types of these operations and the location and transport bindings to be used to access the service. Web Services Inspection Language (WSIL) is an XML-based specification about how to locate Web services without the necessity of using UDDI. However, WSIL can be also used together with UDDI, that is, it is orthogonal to UDDI and does not replace it. Universal Description, Discovery, and Integration (UDDI) is both a client-side API and a SOAP-based server implementation that can be used to store and retrieve information on service providers and Web services. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 38 2/2/2015 Evolução de EAI Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Service-oriented Architecture SOA is an integration architecture approach based on the concept of a service. The business and infrastructure functions are provided as services that collectively, or individually, deliver application functionality to either end-user applications or other services. Applications collaborate by invoking each other’s services. Services are composed into larger sequences to implement business processes. SOA requires a consistent mechanism for services to communicate: loosely coupled use of explicit interfaces. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 39 2/2/2015 O que é serviço? A service is a discrete function that is offered to an external consumer. Consumer: Web page, another business function, or a collection of functions that together form a process. Additional aspects: Services encapsulate reusable business function. Services are defined by explicit, implementationindependent interfaces. Services are defined in a way that stress location and transport transparency. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. SOA x Web Services Web Services • A means to create well- SOA documented interfaces for services using standards such as Web services Definition Language (WSDL) and document-style SOAP • A means to compose Web services using Business Process Execution Language for Web Services (WS-BPEL) • Simple communication mechanisms that are Architectural patterns for realizing a business design through the implementation and composition of software services A reference architecture model to decompose the functional components of an integration solution A model for the life cycle and governance of services to help make reusability of services a reality location-transparent and interoperable Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 40 2/2/2015 Evolução de EAI Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. SOA Service Oriented Architecture Registro Procura Consumidor Contrato Interage Publica Provedor Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 444 41 2/2/2015 Abstrações de SOA Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Elementos do serviço Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 42 2/2/2015 Elementos de SOA Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Tipos de serviços Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 43 2/2/2015 Arquitetura tradicional x SOA Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Exemplo companhia aérea Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 44 2/2/2015 Evolução de EAI • Providing a consumer view of a service decoupled from the deployed implementation of the underlying application or service • Decoupling technical aspects of service interactions • Unifying access to applications using a common service model • Providing dynamic access to services described in a service repository Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. SOA sem ESB Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 45 2/2/2015 SOA com ESB Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Funções de Middleware do ESB Map service requests from one protocol and address to another. Transform data formats. Support a variety of security and transactional models between service consumers and service providers and recognize that consumers and providers may support or require different models. Aggregate or disaggregate service requests and responses. Support communication protocols between multiple platforms with appropriate qualities of service. Provide messaging capabilities such as message correlation and publish/subscribe to support different messaging models such as events and asynchronous request/response. E idealmente: Support high volumes of individual interactions. Support more established integration styles, such as message-oriented and eventdriven integration, to extend the reach of the SOA. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 46 2/2/2015 Visão de alto nível do ESB Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Arquitetura de referência SOA Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 47 2/2/2015 Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Service component architecture Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 48 2/2/2015 Análise e Projeto Orientado a Objetos Utilizando UML 2.0 Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 459 Orientação a Objetos Alguns Conceitos OBJETO MÉTODO MENSAGEM CLASSE CLASSIFICAÇÃO GENERALIZAÇÃO ESPECIALIZAÇÃO HERANÇA POLIMORFISMO SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 460 49 2/2/2015 Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) A utilização do orientação à Objetos solicita uma nova forma de abstrair e entender o problema. A linguagem UML é um padrão de diagramação para visualizar os resultados da análise e projeto orientados à objetos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 461 Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) Exemplo O conceito “Livro” em um sistema de biblioteca Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 462 50 2/2/2015 Análise Orientada a Objetos(OOA) Objetivo básico Identificar classes a partir das quais objetos serão representados como instâncias Envolve as seguintes tarefas Identificação de Objetos Especificação de Atributos Definição de métodos Comunicações entre objetos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 463 Análise Orientada a Objetos(OOA) IDENTIFICAÇÃO DE OBJETOS Entidades externas (Outros sistemas; dispositivos;Pessoas) Coisas ligadas ao domínio do problema (Relatórios;Displays;…) Ocorrências ou Eventos (Conclusão de um movimento;Alarme disparado; Clique do mouse; etc.) Papéis ou funções (Engenheiro; Gerente; Vendedor) desempenhados por pessoas Unidades organizacionais (Grupo; Equipe;…) Lugares (Piso de fábrica; área de descarga) Estruturas (Sensores; veículos de quatro rodas;…) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 464 51 2/2/2015 Análise Orientada a Objetos(OOA) IDENTIFICAÇÃO DE OBJETOS – CRITÉRIOS 1. 2. 3. 4. 5. 6. RETENÇÃO DE INFORMAÇÃO – Objeto deve guardar informação que será utilizada pelo sistema SERVIÇOS NECESSÁRIOS – Conjunto de operações identificáveis que podem mudar o valor de seus atributos MÚLTIPLOS ATRIBUTOS – Objeto deve conter mais de um atributo ATRIBUTOS COMUNS – Conjunto de atributos deve ser aplicado a todos os objetos OPERAÇÕES COMUNS – Conjunto de operações devem ser aplicáveis a todos os objetos. REQUISITOS ESSENCIAIS – Entidades externas que aparecem no espaço problema que consomem e/ou produzem informação Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 465 Análise Orientada a Objetos(OOA) Em uma especificação: NOMES são potenciais objetos (e classes) VERBOS são potenciais métodos A regra acima deve ser utilizada apenas como referência. O entendimento do contexto, das necessidades do usuário são fundamentais para classificar possíveis objetos e métodos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 466 52 2/2/2015 Análise Orientada a Objetos(OOA) Exemplo Especificação O software SafeHome possibilita que o dono da casa configure o sistema de segurança quando ele for instalado, monitora todos os sensores ligados ao sistema de segurança e interage com o dono da casa através de um teclado (key pad) e teclas de função contidas no painel de controle do SafeHome. Durante a instalação o painel de controle é usado para “programar” e configurar o sistema. A cada sensor é atribuído um número e um tipo, uma senha mestra é programada para armar e desarmar o sistema e números telefônicos são introduzidos para serem discados quando ocorrer um evento sensor. Quando um evento sensor é sentido pelo software, ele dispara um alarme sonoro ligado ao sistema. Após um tempo de espera, que é especificado pelo dono da casa durante as atividades de configuração do sistema, o software disca um número telefônico do serviço de monitoração, oferece informações sobre o local, registrando a natureza do evento que foi detectado. O número será novamente discado a 20 segundos até que a ligação telefônica seja completada. Todas as interações com o SafeHome são gerenciadas por um subsistema de interação com o usuário, que lê a entrada fornecida através do teclado e das chaves de função, exibe mensagens de prompting e informações sobre o status do sistema no mostrador de cristal líquido (LCD). A interação com o teclado assume a seguinte forma... Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 467 Análise Orientada a Objetos(OOA) Exemplo Especificação O software SafeHome possibilita que o dono da casa configure o sistema de segurança quando ele for instalado, monitora todos os sensores ligados ao sistema de segurança e interage com o dono da casa através de um teclado (key pad) e teclas de função contidas no painel de controle do SafeHome. Durante a instalação o painel de controle é usado para “programar” e configurar o sistema. A cada sensor é atribuído um número e um tipo, uma senha mestra é programada para armar e desarmar o sistema e números telefônicos são introduzidos para serem discados quando ocorrer um evento sensor. Quando um evento sensor é sentido pelo software, ele dispara um alarme sonoro ligado ao sistema. Após um tempo de espera, que é especificado pelo dono da casa durante as atividades de configuração do sistema, o software disca um número telefônico do serviço de monitoração, oferece informações sobre o local, registrando a natureza do evento que foi detectado. O número será novamente discado a 20 segundos até que a ligação telefônica seja completada. Todas as interações com o SafeHome são gerenciadas por um subsistema de interação com o usuário, que lê a entrada fornecida através do teclado e das chaves de função, exibe mensagens de prompting e informações sobre o status do sistema no mostrador de cristal líquido (LCD). A interação com o teclado assume a seguinte forma... Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 468 53 2/2/2015 Análise Orientada a Objetos(OOA) NOME CRITÉRIO dono da casa sistema de segurança sensores teclado teclas de função painel de controle número Tipo senha mestra números telefônicos evento sensor alarme sonoro tempo de espera Serviço de monitoração informações sobre o local natureza do evento subsistema entrada chaves de função mensagens mostrador de cristal líquido Papel ou entidade externa Coisa Entidade externa Entidade externa Entidade externa Entidade externa Atributo do sensor Atributo do sensor Coisa Coisa Ocorrência Entidade externa Atributo do sistema Unidade Organizacional ou Ent. Externa Atributo do sistema Atributo do sistema Entidade externa Entidade externa Entidade externa Entidade externa Entidade externa Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 469 Análise Orientada a Objetos(OOA) NOME CRITÉRIO dono da casa sistema de segurança sensores teclado teclas de função painel de controle número Tipo senha mestra números telefônicos evento sensor alarme sonoro tempo de espera Serviço de monitoração informações sobre o local natureza do evento subsistema entrada chaves de função mensagens mostrador de cristal líquido Rejeitado: 1 e 2 falham embora 6 se aplique Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se aplicam Aceito: 2, 3, 4, 5 e 6 Rejeitado: 3 falha Rejeitado: 1 e 2 falham embora 6 se aplique Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se aplicam Rejeitado: 3 falha Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 470 54 2/2/2015 Identificação de Objetos Os objetos do painel de controle serão considerados separadamente. Os objetos abaixo são o ponto de partida para o desenvolvimento do sistema Objetos ainda não possuem atributos e métodos class Classes Sistema PainelControle Sensor - atributos - atributos - atributos + metodos() : void + metodos() : void + metodos() : void Ev entoSensor AlarmeSonoro - atributos - atributos + metodos() : void + metodos() : void Engenharia de Software 471 Prof. Flávio de Oliveira Silva, Ph.D. Especificação de Atributos Necessário estudar e analisar a descrição do sistema Pergunta Importante – “Quais informações definem este objeto?” class Classes Sistema PainelControle - senhaMestra tempoEspera numerosTelefonicos informacoesLocal naturezaEvento + metodos() : void Sensor - atributos + metodos() : void Ev entoSensor - tipo numero + metodos() : void AlarmeSonoro - atributos - atributos + metodos() : void + metodos() : void Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 472 55 2/2/2015 Definição dos Métodos Necessário estudar e analisar a descrição do sistema Verbos são potenciais operações Configure Instalado Monitora Ligados Interage Instalação “programar” configurar programada armar desarmar introduzidos serem discados ocorrer sentido dispara especificado configuração disca registrando detectado Discado ligação interações gerenciadas interação lê fornecida exibe class Classes Sistema - senhaMestra tempoEspera numerosTelefonicos informacoesLocal naturezaEvento + + + + + + programar() : void armar() : void desarmar() : void monitorar() : void dispararAlarme() : void discar() : void Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 473 Análise Orientada a Objetos(OOA) O departamento de obras públicas da cidade de Uberlândia decidiu desenvolver um sistema de computador para rastreamento e conserto de buracos de rua (SIRCOB). À medida que são registrados buracos de rua, eles recebem um número de identificação e são armazenados de acordo com o endereço da rua, tamanho (numa escala de 0 a 10), localização (no meio dar rua; na calçada; etc.), bairro (determinado a partir do endereço da rua) e prioridade de reparo (determinada a partir do tamanho do buraco). Dados de ordem de trabalho são associados a cada buraco, e eles incluem localização e tamanho do buraco, número de identificação da equipe de reparos, número de pessoas na equipe, equipamentos designados, horas aplicadas ao reparo, status do trabalho (em andamento, concluído, não concluído), quantidade de material de enchimento usado e custo do reparo (computado a partir das horas trabalhadas, número pessoas, material e equipamentos usados). Finalmente, um arquivo de danos ocorridos é criado para guardar informações sobre danos registrados devido ao buraco, o qual inclui o nome do cidadão, endereço, número telefônico, tipo de dano e a quantia em reais a ser paga. O SIRCOB é um sistema on-line; as consultas devem ser feitas interativamente. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 474 56 2/2/2015 Análise Orientada a Objetos(OOA) O departamento de obras públicas da cidade de Uberlândia decidiu desenvolver um sistema de computador para rastreamento e conserto de buracos de rua (SIRCOB). À medida que são registrados buracos de rua, eles recebem um número de identificação e são armazenados de acordo com o endereço da rua, tamanho (numa escala de 0 a 10), localização (no meio dar rua; na calçada; etc.), bairro (determinado a partir do endereço da rua) e prioridade de reparo (determinada a partir do tamanho do buraco). Dados de ordem de trabalho são associados a cada buraco, e eles incluem localização e tamanho do buraco, número de identificação da equipe de reparos, número de pessoas na equipe, equipamentos designados, horas aplicadas ao reparo, status do trabalho (em andamento, concluído, não concluído), quantidade de material de enchimento usado e custo do reparo (computado a partir das horas trabalhadas, número pessoas, material e equipamentos usados). Finalmente, um arquivo de danos ocorridos é criado para guardar informações sobre danos registrados devido ao buraco, o qual inclui o nome do cidadão, endereço, número telefônico, tipo de dano e a quantia em reais a ser paga. O SIRCOB é um sistema online; as consultas devem ser feitas interativamente. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 475 Identificação dos Objetos NOMES departamento sistema buracos número de identificação endereço da rua tamanho localização bairro prioridade ordem de trabalho número de identificação da equipe número de pessoas equipamentos horas quantidade custo arquivo de danos nome do cidadão Endereço número telefônico tipo de dano CLASSIFICAÇÃO Unidade Organizacional coisa coisa coisa coisa coisa coisa bairro coisa coisa coisa coisa coisa coisa coisa coisa estrutura coisa coisa coisa coisa ANÁLISE Rejeitado: 1 e 2 Falham Aceito: Todas se aplicam Aceito: Todas se aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se Aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 476 57 2/2/2015 Identificação dos Atributos NOMES departamento sistema buracos número de identificação endereço da rua tamanho localização bairro prioridade ordem de trabalho número de identificação da equipe número de pessoas equipamentos horas quantidade custo arquivo de danos nome do cidadão Endereço número telefônico tipo de dano CLASSIFICAÇÃO Unidade Organizacional coisa coisa coisa coisa coisa coisa bairro coisa coisa coisa coisa coisa coisa coisa coisa estrutura coisa coisa coisa coisa ANÁLISE Rejeitado: 1 e 2 Falham Aceito: Todas se aplicam Aceito: Todas se aplicam Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Aceito: Todas se Aplicam Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Aceito: Todas se aplicam Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Engenharia de Software 477 Prof. Flávio de Oliveira Silva, Ph.D. Identificando Classes e Atributos Além dos objetos mostrados a seguir que são identificados diretamente a partir da especificação do sistema outros objetos podem ser necessários dependendo de como o sistema será construído. (Ex.: Equipe; Trabalhador; etc.) class Classes Sistema OrdemTrabalho Buraco + identificador endereco tamanho localizacao bairro prioridade - localizacao tamanho equipe equipamentos horas status quantidadeMaterial custo + metodos() : void Dano - cidadao endereco telefone tipo quantia + metodos() : void Equipe - numeroIdentificacao + metodos() : void metodos() : void Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 478 58 2/2/2015 Identificando os Métodos Verbos destacados registrados Recebem Armazenados Associados Guardar Consultar Outras operações serão necessárias para que o sistema funcione corretamente Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 479 Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) As técnicas tradicionais (Análise e Projeto Estruturado) não são adequadas para o desenvolvimento de software utilizando a orientação à objetos. A utilização do orientação à Objetos solicita uma nova forma de abstrair e entender o problema. A linguagem UML é um padrão de diagramação para visualizar os resultados da análise e projeto orientados à objetos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 480 59 2/2/2015 Análise Orientada a Objetos (OOA) Projeto Orientado a Objetos (OOD) Exemplo O conceito “Livro” em um sistema de biblioteca Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 481 Análise Orientada a Objetos(OOA) Objetivo básico Identificar classes a partir das quais objetos serão representados como instâncias Envolve as seguintes tarefas Identificação de Objetos Especificação de Atributos Definição de métodos Comunicações entre objetos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 482 60 2/2/2015 Análise Orientada a Objetos(OOA) IDENTIFICAÇÃO DE OBJETOS Entidades externas (Outros sistemas; dispositivos;Pessoas) Coisas ligadas ao domínio do problema (Relatórios;Displays;…) Ocorrências ou Eventos (Conclusão de um movimento;Alarme disparado; Clique do mouse; etc.) Papéis ou funções (Engenheiro; Gerente; Vendedor) desempenhados por pessoas Unidades organizacionais (Grupo; Equipe;…) Lugares (Piso de fábrica; área de descarga) Estruturas (Sensores; veículos de quatro rodas;…) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 483 Análise Orientada a Objetos(OOA) IDENTIFICAÇÃO DE OBJETOS – CRITÉRIOS 1. 2. 3. 4. 5. 6. RETENÇÃO DE INFORMAÇÃO – Objeto deve guardar informação que será utilizada pelo sistema SERVIÇOS NECESSÁRIOS – Conjunto de operações identificáveis que podem mudar o valor de seus atributos MÚLTIPLOS ATRIBUTOS – Objeto deve conter mais de um atributo ATRIBUTOS COMUNS – Conjunto de atributos deve ser aplicado a todos os objetos OPERAÇÕES COMUNS – Conjunto de operações devem ser aplicáveis a todos os objetos. REQUISITOS ESSENCIAIS – Entidades externas que aparecem no espaço problema que consomem e/ou produzem informação Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 484 61 2/2/2015 Análise Orientada a Objetos(OOA) Em uma especificação: NOMES são potenciais objetos (e classes) VERBOS são potenciais métodos A regra acima deve ser utilizada apenas como referência. O entendimento do contexto, das necessidades do usuário são fundamentais para classificar possíveis objetos e métodos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 485 Análise Orientada a Objetos(OOA) Exemplo Especificação O software SafeHome possibilita que o dono da casa configure o sistema de segurança quando ele for instalado, monitora todos os sensores ligados ao sistema de segurança e interage com o dono da casa através de um teclado (key pad) e teclas de função contidas no painel de controle do SafeHome. Durante a instalação o painel de controle é usado para “programar” e configurar o sistema. A cada sensor é atribuído um número e um tipo, uma senha mestra é programada para armar e desarmar o sistema e números telefônicos são introduzidos para serem discados quando ocorrer um evento sensor. Quando um evento sensor é sentido pelo software, ele dispara um alarme sonoro ligado ao sistema. Após um tempo de espera, que é especificado pelo dono da casa durante as atividades de configuração do sistema, o software disca um número telefônico do serviço de monitoração, oferece informações sobre o local, registrando a natureza do evento que foi detectado. O número será novamente discado a 20 segundos até que a ligação telefônica seja completada. Todas as interações com o SafeHome são gerenciadas por um subsistema de interação com o usuário, que lê a entrada fornecida através do teclado e das chaves de função, exibe mensagens de prompting e informações sobre o status do sistema no mostrador de cristal líquido (LCD). A interação com o teclado assume a seguinte forma... Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 486 62 2/2/2015 Análise Orientada a Objetos(OOA) Exemplo Especificação O software SafeHome possibilita que o dono da casa configure o sistema de segurança quando ele for instalado, monitora todos os sensores ligados ao sistema de segurança e interage com o dono da casa através de um teclado (key pad) e teclas de função contidas no painel de controle do SafeHome. Durante a instalação o painel de controle é usado para “programar” e configurar o sistema. A cada sensor é atribuído um número e um tipo, uma senha mestra é programada para armar e desarmar o sistema e números telefônicos são introduzidos para serem discados quando ocorrer um evento sensor. Quando um evento sensor é sentido pelo software, ele dispara um alarme sonoro ligado ao sistema. Após um tempo de espera, que é especificado pelo dono da casa durante as atividades de configuração do sistema, o software disca um número telefônico do serviço de monitoração, oferece informações sobre o local, registrando a natureza do evento que foi detectado. O número será novamente discado a 20 segundos até que a ligação telefônica seja completada. Todas as interações com o SafeHome são gerenciadas por um subsistema de interação com o usuário, que lê a entrada fornecida através do teclado e das chaves de função, exibe mensagens de prompting e informações sobre o status do sistema no mostrador de cristal líquido (LCD). A interação com o teclado assume a seguinte forma... Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 487 Análise Orientada a Objetos(OOA) NOME CRITÉRIO dono da casa sistema de segurança sensores teclado teclas de função painel de controle número Tipo senha mestra números telefônicos evento sensor alarme sonoro tempo de espera Serviço de monitoração informações sobre o local natureza do evento subsistema entrada chaves de função mensagens mostrador de cristal líquido Papel ou entidade externa Coisa Entidade externa Entidade externa Entidade externa Entidade externa Atributo do sensor Atributo do sensor Coisa Coisa Ocorrência Entidade externa Atributo do sistema Unidade Organizacional ou Ent. Externa Atributo do sistema Atributo do sistema Entidade externa Entidade externa Entidade externa Entidade externa Entidade externa Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 488 63 2/2/2015 Análise Orientada a Objetos(OOA) NOME CRITÉRIO dono da casa sistema de segurança sensores teclado teclas de função painel de controle número Tipo senha mestra números telefônicos evento sensor alarme sonoro tempo de espera Serviço de monitoração informações sobre o local natureza do evento subsistema entrada chaves de função mensagens mostrador de cristal líquido Rejeitado: 1 e 2 falham embora 6 se aplique Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se aplicam Aceito: 2, 3, 4, 5 e 6 Rejeitado: 3 falha Rejeitado: 1 e 2 falham embora 6 se aplique Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se aplicam Rejeitado: 3 falha Aceito: Todas se aplicam Aceito: Todas se aplicam Aceito: Todas se aplicam Engenharia de Software 489 Prof. Flávio de Oliveira Silva, Ph.D. Identificação de Objetos Os objetos do painel de controle serão considerados separadamente. Os objetos abaixo são o ponto de partida para o desenvolvimento do sistema Objetos ainda não possuem atributos e métodos class Classes Sistema PainelControle Sensor - atributos - atributos - atributos + metodos() : void + metodos() : void + metodos() : void Ev entoSensor AlarmeSonoro - atributos - atributos + metodos() : void + metodos() : void Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 490 64 2/2/2015 Especificação de Atributos Necessário estudar e analisar a descrição do sistema Pergunta Importante – “Quais informações definem este objeto?” class Classes Sistema PainelControle - senhaMestra tempoEspera numerosTelefonicos informacoesLocal naturezaEvento + metodos() : void Sensor - atributos + metodos() : void Ev entoSensor - tipo numero + metodos() : void AlarmeSonoro - atributos - atributos + metodos() : void + metodos() : void Engenharia de Software 491 Prof. Flávio de Oliveira Silva, Ph.D. Definição dos Métodos Necessário estudar e analisar a descrição do sistema Verbos são potenciais operações Configure Instalado Monitora Ligados Interage Instalação “programar” configurar programada armar desarmar introduzidos serem discados ocorrer sentido dispara especificado configuração disca registrando detectado Discado ligação interações gerenciadas interação lê fornecida exibe class Classes Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Sistema - senhaMestra tempoEspera numerosTelefonicos informacoesLocal naturezaEvento + + + + + + programar() : void armar() : void desarmar() : void monitorar() : void dispararAlarme() : void discar() : void 492 65 2/2/2015 Análise Orientada a Objetos(OOA) O departamento de obras públicas da cidade de Uberlândia decidiu desenvolver um sistema de computador para rastreamento e conserto de buracos de rua (SIRCOB). À medida que são registrados buracos de rua, eles recebem um número de identificação e são armazenados de acordo com o endereço da rua, tamanho (numa escala de 0 a 10), localização (no meio dar rua; na calçada; etc.), bairro (determinado a partir do endereço da rua) e prioridade de reparo (determinada a partir do tamanho do buraco). Dados de ordem de trabalho são associados a cada buraco, e eles incluem localização e tamanho do buraco, número de identificação da equipe de reparos, número de pessoas na equipe, equipamentos designados, horas aplicadas ao reparo, status do trabalho (em andamento, concluído, não concluído), quantidade de material de enchimento usado e custo do reparo (computado a partir das horas trabalhadas, número pessoas, material e equipamentos usados). Finalmente, um arquivo de danos ocorridos é criado para guardar informações sobre danos registrados devido ao buraco, o qual inclui o nome do cidadão, endereço, número telefônico, tipo de dano e a quantia em reais a ser paga. O SIRCOB é um sistema on-line; as consultas devem ser feitas interativamente. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 493 Análise Orientada a Objetos(OOA) O departamento de obras públicas da cidade de Uberlândia decidiu desenvolver um sistema de computador para rastreamento e conserto de buracos de rua (SIRCOB). À medida que são registrados buracos de rua, eles recebem um número de identificação e são armazenados de acordo com o endereço da rua, tamanho (numa escala de 0 a 10), localização (no meio dar rua; na calçada; etc.), bairro (determinado a partir do endereço da rua) e prioridade de reparo (determinada a partir do tamanho do buraco). Dados de ordem de trabalho são associados a cada buraco, e eles incluem localização e tamanho do buraco, número de identificação da equipe de reparos, número de pessoas na equipe, equipamentos designados, horas aplicadas ao reparo, status do trabalho (em andamento, concluído, não concluído), quantidade de material de enchimento usado e custo do reparo (computado a partir das horas trabalhadas, número pessoas, material e equipamentos usados). Finalmente, um arquivo de danos ocorridos é criado para guardar informações sobre danos registrados devido ao buraco, o qual inclui o nome do cidadão, endereço, número telefônico, tipo de dano e a quantia em reais a ser paga. O SIRCOB é um sistema online; as consultas devem ser feitas interativamente. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 494 66 2/2/2015 Identificação dos Objetos NOMES departamento sistema buracos número de identificação endereço da rua tamanho localização bairro prioridade ordem de trabalho número de identificação da equipe número de pessoas equipamentos horas quantidade custo arquivo de danos nome do cidadão Endereço número telefônico tipo de dano CLASSIFICAÇÃO Unidade Organizacional coisa coisa coisa coisa coisa coisa bairro coisa coisa coisa coisa coisa coisa coisa coisa estrutura coisa coisa coisa coisa ANÁLISE Rejeitado: 1 e 2 Falham Aceito: Todas se aplicam Aceito: Todas se aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se Aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Aceito: Todas se aplicam Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Rejeitado: 3 falha Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 495 Identificação dos Atributos NOMES departamento sistema buracos número de identificação endereço da rua tamanho localização bairro prioridade ordem de trabalho número de identificação da equipe número de pessoas equipamentos horas quantidade custo arquivo de danos nome do cidadão Endereço número telefônico tipo de dano CLASSIFICAÇÃO Unidade Organizacional coisa coisa coisa coisa coisa coisa bairro coisa coisa coisa coisa coisa coisa coisa coisa estrutura coisa coisa coisa coisa ANÁLISE Rejeitado: 1 e 2 Falham Aceito: Todas se aplicam Aceito: Todas se aplicam Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Aceito: Todas se Aplicam Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Aceito: Todas se aplicam Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Rejeitado: 3 falha (ATRIBUTO) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 496 67 2/2/2015 Identificando Classes e Atributos Além dos objetos mostrados a seguir que são identificados diretamente a partir da especificação do sistema outros objetos podem ser necessários dependendo de como o sistema será construído. (Ex.: Equipe; Trabalhador; etc.) class Classes Sistema OrdemTrabalho Buraco + identificador endereco tamanho localizacao bairro prioridade - localizacao tamanho equipe equipamentos horas status quantidadeMaterial custo + metodos() : void Dano - cidadao endereco telefone tipo quantia + metodos() : void Equipe - numeroIdentificacao + metodos() : void metodos() : void Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 497 Identificando os Métodos Verbos destacados registrados Recebem Armazenados Associados Guardar Consultar Outras operações serão necessárias para que o sistema funcione corretamente Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 498 68 2/2/2015 UML – Diagramas Um diagrama é a apresentação gráfica de um conjunto de elementos, onde os vértices são ITENS e os arcos RELACIONAMENTOS UML 2.0 possui os seguintes diagramas: Diagrama de Classes (Class Diagram) Diagrama de Objetos (Object Diagram) Diagrama de Componente (Component Diagram) Diagrama de Implantação (Deployment Diagram) Diagrama de Composição (Composite Struture Diagram) Diagrama de Pacotes (Package Diagram) Diagrama de Caso de Uso (Use Case) Diagrama de Seqüência (Sequence Diagram) Diagrama de Comunicação (Communication Diagram) Diagrama de Atividade (Activity Diagram) Diagrama de Estados (State Machine Diagram) Diagrama de Interação (Interaction Overview Diagram) Diagrama de Tempo (Timing Diagram) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 499 UML – Diagramas Os diagramas da UML podem ser divididos em dois grandes grupos: DIAGRAMAS ESTRUTURAIS e DIAGRAMAS COMPORTAMENTAIS DIAGRAMA ESTRUTURAIS Permitem modelar os aspectos estáticos de um sistema. DIAGRAMA COMPORTAMENTAIS Permitem modelar os aspectos dinâmicos de um sistema. Os aspectos dinâmicos são as partes do sistema que sofrem alteração durante a utilização do sistema Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 500 69 2/2/2015 UML – Diagramas Estruturais Diagrama de Classes (Class Diagram) Diagrama de Objetos (Object Diagram) Diagrama de Componente (Component Diagram) Diagrama de Implantação (Deployment Diagram) Diagrama de Estrutura Composta (Composite Struture Diagram) Diagrama de Pacotes (Package Diagram) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 501 UML – Diagramas Comportamentais Diagrama de Caso de Uso (Use Case) Diagrama de Seqüência (Sequence Diagram) Diagrama de Comunicação (Communication Diagram) Diagrama de Atividade (Activity Diagram) Diagrama de Estados (State Machine Diagram) Diagrama de Geral Interação (Interaction Overview Diagram) Diagrama de Tempo (Timing Diagram) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 502 70 2/2/2015 UML – Diagramas Comportamentais Caso de Uso Este diagrama representa um conjunto de casos de uso, atores e seus relacionamento. Permitem visualizar o comportamento de um sistema, subsistema ou classe a fim de que desenvolvedores e usuários possam se comunicar. Usos Modelagem do Contexto do Sistema Modelagem do Contexto do Sistema e Modelagem dos Requisitos de um Sistema Mostra o sistema considerando os atores que se encontram de fora do mesmo e sua ligação com o sistema. Este diagrama é semelhante a um DFD de contexto. Modelagem dos Requisitos do Sistema Neste caso o diagrama irá representar um requisito do projeto. A preocupação não é “como” o sistema faz mas “o que” o sistema faz. Este tipo de diagrama está ligado à fase de ANÁLISE de cada uma das iterações. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 503 UML – Diagramas Comportamentais Caso de Uso Normalmente os casos de uso possuem uma descrição que contém uma combinação de nome/verbo Os atores são aqueles que interagem com o caso de uso Exemplo: Criar Conta; Realizar Venda; Efetuar Pedido Exemplos: Pessoas; Equipamentos; Outros Sistemas; Casos de uso definem o escopo do sistema, facilitando o entendimento da complexidade e tamanho do mesmo. A “soma” dos casos de uso deve ser igual ao sistema como um todo. Desta forma o que não é mostrado como caso de uso, não é parte do sistema O caso de uso descreve “o que” um sistema (ou subsistema) faz, mas não descreve “como” isto é feito Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 504 71 2/2/2015 UML – Diagramas Comportamentais Caso de Uso Os casos de uso podem ser organizados segundo suas características: Casos de Alto Risco Casos básicos da Arquitetura Casos que utilizam amplas funcionalidades do sistema Casos de uso que necessitam de pesquisa ou que utilizam novas tecnologias Casos de Uso Acessórios A partir da classificação dos casos de uso as iterações devem ser planejadas, com o foco nos casos de uso de maior prioridade, conforme a classificação realizada Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 505 UML – Diagramas Comportamentais Caso de Uso Os casos de uso são utilizados para a comunicação entre o desenvolvedor e os usuários, devido a sua simplicidade Os caso de uso são a base do desenvolvimento, pois podem ser utilizados para o planejamento de todas as fases do desenvolvimento e de cada uma das iterações. Os casos de uso podem ser utilizados como base a criação de testes do sistema Pode-se também utilizá-los como base para a criação da documentação para o sistema. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 506 72 2/2/2015 UML – Diagramas Comportamentais Caso de Uso Complexidade Um caso de uso não deve ser complexo Basicamente o caso de uso deve: “Satisfazer o objetivo do Ator” Esta regra é valida principalmente nas etapas iniciais Posteriormente, o caso de uso de pode ser decomposto e detalhado nas etapas seguintes Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 507 UML – Diagramas Comportamentais Caso de Uso Complexidade Considere uma série de iterações entre o usuário e um sistema para saques bancários: Inserir Cartão Entrar com a Senha Selecionar o Valor a ser sacado Confirmar o valor a ser sacado Remover o Cartão Nas etapas iniciais não é necessário um caso de uso com tantos detalhes. A complexidade será tratada nas fases seguintes, inclusive,podendo ser utilizados outros diagramas O ideal é que o diagrama acima tenha apenas um caso de uso: “Realizar Saque” Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 508 73 2/2/2015 UML – Diagramas Comportamentais Caso de Uso - Relacionamentos Os seguintes relacionamentos são utilizados no diagrama de casos de uso Associação Generalização Extensão Inclusão Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 509 UML – Diagramas Comportamentais Caso de Uso - Relacionamentos Associação Representa a ligação entre um ator e um caso de uso O ator pode ser um outro sistema, um usuário, um dispositivo de hardware; etc. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 510 74 2/2/2015 UML – Diagramas Comportamentais Caso de Uso - Relacionamentos Generalização A generalização indica que o caso de uso filho herda o comportamento do caso de uso pai Porém o caso de uso filho contém terá comportamentos que sobrescrevem aqueles do pai ou mesmo comportamentos particulares. A generalização pode ser aplicada tanto ao caso de uso como ao ator. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 511 UML – Diagramas Comportamentais Caso de Uso - Relacionamentos Inclusão Na relação de inclusão um caso de uso, inclui em seu comportamento, o comportamento de outro caso de uso A inclusão permite que o caso de uso se complemente adicionando o comportamento do caso de uso incluído O caso de uso depende do caso de uso incluído para efetuar suas operações Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 512 75 2/2/2015 UML – Diagramas Comportamentais Caso de Uso - Relacionamentos Extensão A extensão de um caso de uso é utilizada para modelar um comportamento opcional Desta forma separa-se o comportamento obrigatório do comportamento opcional Os pontos em que o caso de uso pode ser estendido são conhecidos como “pontos de extensão” e devem ser bem definidos Através da extensão é possível adicionar diferentes comportamentos a um caso de uso Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 513 UML – Diagramas Comportamentais Caso de Uso - Exemplo Diagrama de Contexto Caso de uso que mostra a visão geral de um sistema com os seus principais casos de uso e atores envolvidos Os casos de usos estão em pacotes. Alguns atores como TEF, SPC e fornecedor na realidade representam outros sistemas Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 514 76 2/2/2015 UML – Diagramas Comportamentais Caso de Uso - Exemplo Caso de uso que mostra uma parte do sistema anterior em maiores detalhes O caso de uso principal – “Vender Produto” foi um pouco detalhado indicando diferentes operações de venda que podem ser realizadas e ainda a possível necessidade de atualizar o cadastro de cliente no momento da venda. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 515 Praticando seus conceitos... Considerando o sistema que você está trabalhando atualmente criar um diagrama de caso de uso, utilizando os seguintes conceitos: Associação; Generalização; Inclusão e Extensão Considere um sistema na Web que será responsável por gerenciar contatos. Além de cadastrar os contatos é possível; consultar os contatos; alterar suas informações; imprimir seus dados e finalmente enviar e-mail para um determinado contato Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 516 77 2/2/2015 UML – Diagramas Estruturais Classes Mostra um conjunto de classes, interfaces e colaborações bem como seus relacionamentos O diagrama de classes representa aspectos estruturais de um software No uso da Orientação a Objetos em última análise o objetivo das etapas concepção e Elaboração é estabelecer quais as classes serão criadas, quais seus atributos e os seus métodos, além dos relacionamentos entre estas várias classes. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 517 UML – Diagramas Estruturais Classes A medida que um software é modelado as classes necessárias bem como suas características como atributos e métodos vão sendo detalhadas. Existem classes que estão ligadas ao domínio do problema. Neste caso as classes representam objetos existentes no mundo real e ligados a um software em questão. Exemplos: Pedido; Cliente; Produto; Empregado; Paciente; Curso; etc. Existem classe que estão ligadas ao domínio da solução e que existem para representar objetos existentes do ponto de vista lógico para a construção de um software. Exemplos: Janela; Fila; Lista; Pilha; Aplicacao; Menu; Form; Window; Vector; Conexao; HttpServlet; etc. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 518 78 2/2/2015 UML – Diagramas Estruturais Classes - Usos O diagrama de classes pode ser representado em vários níveis de detalhamento Diagrama de Classes em nível de Modelamento do Negócio e Especificação Requisitos Diagrama de Classes em nível de Análise Neste caso o diagrama contém poucos detalhes sobre cada classe, visto que as características do sistema, seu escopo e requisitos ainda estão sendo especificados Contém mais detalhes sobre as classes como seus atributos e alguns métodos Em geral representa apenas classes ligadas ao domínio do problema Diagrama de Classes em Nível de Projeto Contém todos os detalhes referentes aos atributos e ao métodos como seu tipo, já mapeado em alguma linguagem de programação, os parâmetros de cada método e seu tipos de retorno Contém classes ligadas tanto ao domínio do problema quanto ao domínio da solução. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 519 UML – Diagramas Estruturais Classes - Usos USOS: Modelamento do Vocabulário; Modelamento de colaborações; Modelamento lógico do banco de dados Modelamento do Vocabulário O diagrama de classes pode ser utilizado para a modelagem do vocabulário do sistema que consiste nas classes, seus atributos e operações Modelamento de Colaborações Um colaboração é um conjunto de classes que realizam determinados papéis. Através do diagrama de classes é possível mostrar a sua parte estrutural Modelamento Lógico do Banco de Dados Os diagramas de classes da UML são um superconjunto dos diagramas de entidade-relacionamento (E-R). Os diagramas de classes vão um pouco além, permitindo ainda a modelagem de comportamentos, que poderão ser tornar procedimentos armazenados (stored procedures) Um mesmo aspecto do sistema pode ser representado por diferentes diagramas de classe. Exemplo: um diagrama pode privilegiar apenas os relacionamentos de herança, outro as dependências entre as classe e outro ainda as associações entre as mesmas Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 520 79 2/2/2015 UML – Diagramas Estruturais Classes - Exemplos Diagrama de Classe em nível de Especificação de Requisitos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 521 UML – Diagramas Estruturais Classes - Exemplos Diagrama de Classe em nível de Análise Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 522 80 2/2/2015 UML – Diagramas Estruturais Classes - Exemplos Diagrama de Classe em nível de Projeto Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 523 UML – Diagramas Estruturais Classes - Exemplos Diagrama de Classe em nível de Projeto Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 524 81 2/2/2015 Praticando seus conceitos... Considere um sistema na Web que será responsável por gerenciar contatos, conforme caso de uso anterior Informações adicionais Além de cadastrar os contatos é possível; consultar os contatos; alterar suas informações; imprimir seus dados e finalmente enviar e-mail para um determinado contato Um usuário pode possuir vários contatos e o sistema deverá manter os dados de cada usuário individualmente Um contato pode possui até 4 diferentes endereços de e-mail e para cada email está associado um tipo (comercial; particular; prioritário; final de semana; etc.) As informações associadas ao contato são as seguintes: Nome; Telefone Principal; Email Construir os diagramas de classe em nível de análise Construir um diagrama de classe que representa a modelagem de dados Engenharia de Software 525 Prof. Flávio de Oliveira Silva, Ph.D. Praticando seus conceitos... Informações adicionais x Representação em UML 1. 2. 3. Um usuário pode possuir vários contatos e o sistema deverá manter os dados de cada usuário individualmente Um contato pode possui vários endereços de e-mail e para cada e-mail está associado um tipo (comercial; particular; prioritário; final de semana; etc.) As informações associadas ao contato são as seguintes: Nome; Telefone Principal; Email class Contatos-Class-An... class Contatos-Class-... Contato class Contatos-Class-Analysis Usuario Contato - Contato 1 nome: String telefone: String email: Email 1 0..* 1..* Email Regra 1 - tipo: String email: String Regra 3 Regra 2 526 Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 82 2/2/2015 Praticando seus conceitos... Diagramas de classe em nível de análise 1. 2. 3. Um usuário pode possuir vários contatos e o sistema deverá manter os dados de cada usuário individualmente Um contato pode possui vários endereços de e-mail e para cada e-mail está associado um tipo (comercial; particular; prioritário; final de semana; etc.) As informações associadas ao contato são as seguintes: Nome; Telefone Principal; Email class Contatos-Class-Analysis Contato Usuario - login: String senha: String + login() 1 0..* - nome: String telefone: String email: Email + + + + + create() : void read() : void update() : void delete() : void sendMail() : void Email 1 - tipo: String email: String 1..* 527 Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. Praticando seus conceitos... Diagrama de classe que representa a modelagem de dados class Contatos-Class-DataModel TContato TUsuario «column» *PK id: ROWID login: VARCHAR2(30) senha: VARCHAR2(15) «PK» + PK_TUsuario(ROWID) +PK_TUsuario (idUser = id) +FK_TContato_TUsuario 0..* «FK» 1 «column» *PK id: ROWID FK idUser: ROWID nome: VARCHAR2(50) telefone: VARCHAR2(15) «FK» + FK_TContato_TUsuario(ROWID) +PK_TContato 1 «PK» + PK_TContato(ROWID) (idContact = id) «FK» TEmail +FK_TEmail_TContato «column» *PK id: ROWID FK idContact: ROWID tipo: VARCHAR2(30) email: VARCHAR2(50) 0..* «FK» + FK_TEmail_TContato(ROWID) «PK» + PK_TEmail(ROWID) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 528 83 2/2/2015 UML – Diagramas Comportamentais Diagrama de Seqüência Este diagrama mostra as interações entre um conjunto de objetos e seus relacionamentos, incluindo as mensagens que serão trocadas entre os mesmos. Consiste de uma tabela que mostra objetos distribuídos no eixo X e mensagens em ordem crescente de tempo no eixo Y. Os Diagramas de Seqüência são conhecidos também como Diagramas de Interação e a partir de um diagrama de seqüência é possível obter o diagrama de comunicação a ele relacionado Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 529 UML – Diagramas Comportamentais Diagrama de Seqüência - Exemplo Diagrama de Seqüência em nível de modelamento de negócio e especificação de requisitos Mostra um fluxo de trabalho, indicando as mensagens trocadas no tempo. Neste caso as mensagens ainda estão em um alto nível de abstração Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 530 84 2/2/2015 UML – Diagramas Comportamentais Diagrama de Seqüência - Exemplo Diagrama de Seqüência em nível implementação Realiza o modelamento de um método (ou operação) Neste caso as mensagens ainda estão em um baixo nível de abstração, sendo que o diagrama está muito próximo do código-fonte Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 531 UML – Diagramas Comportamentais Diagrama de Comunicação Este diagrama mostra as interações entre um conjunto de objetos e seus relacionamentos, incluindo as mensagens que serão trocadas entre os mesmos, considerando a ordem seqüencial que estas mensagens ocorrem entre os vários objetos. Os Diagramas de Comunicação são conhecidos também como Diagramas de Interação e a partir de um diagrama de comunicação é possível obter o diagrama de seqüência a ele relacionado USOS: Modelagem de Fluxos de Controle Por Organização Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 532 85 2/2/2015 UML – Diagramas Comportamentais Diagrama de Comunicação - Exemplo Diagrama de comunicação em nível de implementação Este diagrama é análogo ao diagrama de seqüência apresentado anteriormente Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 533 UML – Diagramas Comportamentais Diagrama de Atividades Este diagrama mostra o fluxo de uma atividade para outra. Uma atividade é uma execução em andamento em uma máquina de estados. Um diagrama de atividades pode ser decomposto em outro diagrama de atividades e além disso as atividades podem conter operações de alto nível. A utilização das “raias de natação” são úteis para mostrar processos de negócio. USOS: Modelagem de Fluxo de Trabalho (nível especificação); Modelagem de uma Operação (nível projeto); Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 534 86 2/2/2015 UML – Diagramas Comportamentais Diagrama de Atividades Modelagem do Fluxo de Trabalho Através do diagrama é possível modelar os processo de negócios e regras, considerando o relacionamento entre vários sistemas e atores É possível especificar e detalhar regras de negócios em sistemas, que muitas das vezes podem ser complexas, principalmente em sistemas de missão crítica e corporativos Pode ser utilizado para modelar os fluxos de um caso de uso Modelagem de uma Operação Neste caso o diagrama de atividades é semelhante a um fluxograma das ações de uma operação. A vantagem neste caso é que todos os elementos apresentados neste diagramas são semanticamente relacionados com outros diagramas. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 535 UML – Diagramas Comportamentais Diagrama de Atividades - Exemplo Diagrama de Atividades em alto nível Pode ser utilizado para detalhar aspectos de um caso de uso Desta forma o diagrama auxiliará no entendimento do caso de uso e nas atividades que serão realizadas Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 536 87 2/2/2015 UML – Diagramas Comportamentais Diagrama de Atividades - Exemplo Diagrama Atividades em nível de implementação Neste caso a atividade representa a chamada de métodos Pode ser utilizado para representar aspectos do código-fonte Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 537 UML – Diagramas Comportamentais Diagrama de Atividades - Exemplo Diagrama Atividades em nível de Especificação Os diagramas abaixo mostram como podem ser utilizados sinais em um diagrama de atividade. Um sinal pode ser enviado, recebido, ou ainda ser um sinal que indica algum momento no tempo As junções (joint) e bifurcações (fork) podem ter associadas às mesmas critérios (joinspec) indicando quando a junção ou bifurcação pode acontecer Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 538 88 2/2/2015 UML – Diagramas Comportamentais Diagrama de Atividades - Ações Modelamento de Sinais (Estado de Ação) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 539 UML – Diagramas Comportamentais Diagrama de Atividades – Reg. Expansão Regiões de Expansão Indicam atividades que serão executadas para cada item de uma coleção de valores ou objetos A execução pode ser: iterativa(iteractive) – Execução das atividades são feitas de forma seqüencial Paralela (parallel) – Execução das atividades podem ocorrer de forma concorrente Fluxo (Stream) – Execução das atividades acontece de forma contínua Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 540 89 2/2/2015 UML – Diagramas Comportamentais Diagrama de Atividades - Sinais É possível indicar a existência de parâmetros de entrada e de saída em uma atividade Além disso é possível indicar nós de expansão que representam uma coleção como parâmetro de entrada e/ou saída de uma região de expansão ou atividade. Esta coleção será então utilizada por outra atividade Finalmente uma atividade pode possuir um nó objeto, também chamado pin. O Pin representa um objeto que é enviado de uma atividade para outra e consiste de uma outra forma de representar o fluxo de objeto Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 541 Praticando seus conceitos... Considere um sistema na Web que será responsável por gerenciar contatos, conforme caso de uso anterior Informações adicionais Além de cadastrar os contatos é possível; consultar os contatos; alterar suas informações; imprimir seus dados e finalmente enviar e-mail para um determinado contato Um usuário pode possuir vários contatos e o sistema deverá manter os dados de cada usuário individualmente Um contato pode possui até 4 diferentes endereços de e-mail e para cada e-mail está associado um tipo (comercial; particular; prioritário; final de semana; etc.) As informações associadas ao contato são as seguintes: Nome; Telefone Principal; Email Construir os diagramas de classe em nível de análise Construir um diagrama de classe que representa a modelagem de dados Construir os diagramas de atividade. Cada atividade será então realizada por um diagrama de seqüência, neste caso o interesse são nos objetos envolvidos Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 542 90 2/2/2015 Praticando seus conceitos... Sistema de Pedidos Informações Gerais Existem 3 níveis de usuário: Supervisor; Gerente e Diretor, com acesso a diferentes funcionalidades Supervisor pode cadastrar pedidos. O gerente aprova pedidos deste que o mesmo não ultrapasse o valor total associado ao cliente para cada pedido. Caso ultrapasse o diretor é o responsável pela aprovação. Um pedido é associado a um cliente e o mesmo contém os itens de pedido. Cada item de pedido contém: Produto; Quantidade; Valor total. Caso não seja aprovado o pedido poderá também ser cancelado. Após realizar o login na página principal são mostradas os pedidos que necessitam de aprovação. Um supervisor tem sob sua responsabilidade um ou mais clientes. Pede-se: Criar os Diagramas de Casos de Uso Modelar as classes considerando os conceitos de: Interface; Polimorfismo; Sobrecarga Construir os diagramas de atividade que demonstre os fluxos principais do sistema. Criar o diagrama de seqüência para os fluxos de aprovação, levando em conta os objetos de negócio envolvidos. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 543 Visões da Arquitetura Cenários (Scenarios view) Lógica (Logical View) Foco em aspectos não funcionais e de comunicação entre os subsistemas da arquitetura Diagramas: Atividade; Sequencia (diagramas comportamentais da UML) Implementação (Deployment View) Foco nas funcionalidades, normalmente dividida em subsistemas apresentando a estrutura (classes) envolvidas Diagramas: Classe, Pacotes Processos (Process View) Apresenta uma visão próxima do usuário, descrevendo cenários de uso da aplicação Normalmente é a primeira visão construída Diagramas: Casos de Uso Útil para gestão de configuração Apresenta pacotes e componentes que serão implantados Diagramas: Componente; Pacotes Física (Physical View) Consiste do mapeamento do software no hardware onde será implantado Diagramas: Implantação Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 544 91 2/2/2015 Visões da Arquitetura Diagramas UML http://www.sparxsystems.com/downloads/whitepapers/FCGSS_US_WP_Applying_4+1_w_UML2.pdf Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 545 Disciplinas x Artefatos Modelagem de Negócios Requisitos Visões do Projeto utilizando linguagem UML Protótipos de Tela; Esquema de Banco de Dados; Integrações Documento de Arquitetura de Software Implementação Testes Especificação de Casos de Uso Modelo de Domínio (Diagrama de Classes) Análise e Projeto Documento de Visão Caso de Uso (Contexto do Sistema) Planos de Testes Casos de Testes Implantação Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 546 92 2/2/2015 Visão de Cenários (Scenarios view) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 547 Visão Lógica (Logical View) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 548 93 2/2/2015 Visão de Processos (Process View) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 549 Visão Implementação (Implementation View) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 550 94 2/2/2015 Visão de Implantação (Deployment View) Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D. 551 95