Baixe o app para aproveitar ainda mais
Prévia do material em texto
Análise de Sistemas Prezados (as) acadêmicos (as)! É com grande satisfação que iniciamos a nossa terceira unidade da disciplina de Requisitos, Análise e Projeto de Sistemas do curso de Licenciatura em Computação, que trata das características e conceitos que envolvem esta disciplina tão atual no cotidiano dos profissionais da computação. Nesta unidade, iremos nos concentrar em tópicos que objetivam fazer com que o aluno construa uma base de conhecimento que o permita realizar atividades voltadas à disciplina de Análise. Os objetivos específicos são: ● conceituar o que é Análise de sistemas e qual sua funcionalidade; ● identificar como utilizar modelagem UML para a análise de sistema; ● compreender a importância da análise orientada a objetos. Como leitura obrigatória desta unidade, selecionamos o texto: Análise de Sistemas disponível na Aba “Biblioteca” e na ferramenta “Conteúdo Interativo”. Após a leitura atenta aos textos, vocês deverão realizar a atividade avaliativa: questionário com valor máximo: 100 pontos. A Leitura obrigatória é essencial para que vocês possam, de forma produtiva, construir o conhecimento nesta unidade, bem como participar das atividades avaliativas. Fiquem atentos ao prazo de encerramento da unidade e da atividade avaliativa. Se vocês tiverem alguma dúvida, não hesitem em entrar em contato com o seu tutor para saná-la. Além disso, procure discutir as temáticas apresentadas neste material com os seus colegas de curso, seja no ambiente de aprendizagem ou no polo de sua cidade. Bom trabalho! ANÁLISE DE SISTEMAS 1. Introdução No nível técnico, a Engenharia de Software começa com uma séria de tarefas de modelagem que levam à especificação completa de requisitos e à representação abrangente do projeto para o software a ser construído. O modelo de análise, que consiste em um conjunto de modelos, pode ser considerada a primeira representação técnica do sistema. Apesar da palavra escrita ser um excelente veículo de comunicação, ela não é o melhor modo de representar os requisitos de software para computador. A análise usa uma combinação de formas textuais e diagramáticas para mostrar os requisitos de dados, função e comportamento, de modo que seja relativamente fácil de entender e, mais importante, mais direto de revisar quanto à correção, completeza e consistência. Mas quem realiza a análise? Um engenheiro de software (algumas vezes chamado de analista) constrói um modelo usando requisitos extraídos do cliente. E por que a análise é importante? Para validar os requisitos de software, é preciso examiná-los de diferentes pontos de vista. A modelagem da análise representa os requisitos em várias “dimensões”, aumentando consequentemente a probabilidade de que sejam encontrados erros, apareçam inconsistências e que omissões sejam descobertas. E quais são os passos para a análise? Os requisitos são modelados em vários formatos diagramáticos diferentes. A modelagem baseada em cenário representa o sistema sob o ponto de vista do usuário. A modelagem orientada a fluxo fornece indicação de como os objetos de dados são transformados pelas funções de processamento. A modelagem baseada em classes define objetos, atributos e relacionamentos. A modelagem comportamental mostra os estados do sistema e de suas classes, 89 e o impacto que os eventos tem nesses estados. Uma vez criados os modelos preliminares, eles são refinados e analisados para avaliar sua clareza, completeza e consistência. O modelo final de análise é então validado por todos os interessados. 2. Análise de Requisitos A análise de requisitos resulta da especificação das características operacionais do software; indica interface do software com outros elementos do sistema e estabelece restrições a que o software deve satisfazer. A análise de requisitos permite ao analista elaborar requisitos básicos do software estabelecidos durante tarefas anteriores de engenharia de requisitos e construir modelos que descrevam cenários de usuário, atividades funcionais, classes de problemas e seus relacionamentos, comportamento do sistema e das classes, e fluxo dos dados à medida que são transformados. A análise de requisitos fornece ao projetista de software uma representação da informação, função e comportamento, que podem ser traduzidos para os projetos arquitetural, de interfaces e em nível de componentes. Por fim, o modelo de análise e a especificação de requisitos propiciam ao desenvolvedor e ao cliente os meios de avaliar a qualidade quando o software é construído. Ao longo da modelagem de análise, o principal foco do engenheiro de software é em o que, e não em como. Que objetos o sistema manipula, que funções ele deve executar, que comportamentos exibe, que interfaces são definidas e que restrições se aplicam. O modelo de análise deve atingir três objetivos principais: 1) descrever o que o cliente exige; 2) estabelecer a base para a criação de um projeto de software; e 3) definir um conjunto de requisitos que possam ser validados quando o software for construído. 90 O modelo de análise deve existir após a descrição em nível de sistema (requisitos), que descreve a funcionalidade global do sistema como ela é conseguida pela aplicação de software, hardware, dados, pessoas e outros elementos do sistema; e anteceder o projeto de software, que descreve a arquitetura, interface do usuário e estrutura em nível de componente da aplicação de software. Esse relacionamento é apresentado na Figura 3.1. Figura 3.1 – Relacionamento entre os modelos de Requisitos, Análise e Projeto de Sistemas (Fonte: PRESSMAN, 2006). É importante notar que alguns elementos do modelo de análise estão presentes (em um nível mais alto de abstração) na descrição do sistema e que todos os elementos do modelo são diretamente rastreáveis para partes do modelo de projeto. Nem sempre é possível uma clara divisão das tarefas de análise e projeto entre essas duas importantes atividades de modelagem. Algum projeto invariavelmente ocorre como parte da análise e alguma análise será conduzida durante o projeto. Há algumas regras práticas que devem ser seguidas na criação de um modelo de análise: ● O modelo deve focalizar os requisitos que são visíveis no problema ou domínio do negócio. O nível de abstração deve ser relativamente alto. “Não se atole em detalhes” que tentam explicar como o sistema funcionará. 91 ● Cada elemento do modelo de análise deve contribuir para um entendimento global dos requisitos de software e fornecer uma visão aprofundada do domínio da informação, função e comportamento do sistema. ● Adie a consideração de modelos de infraestrutura e outros não funcionais até o projeto. Por exemplo, um banco de dados pode ser necessário, mas as classes necessárias para implementá-lo, as funções exigidas para dar acesso a ele e o comportamento que será exibido à medida que é usado devem ser considerados somente depois de a análise do domínio do problema ter sido completada. ● Minimize o acoplamento ao longo de todo o sistema. É importante representar os relacionamentos entre classes efunções. No entanto, se o nível de “interconexão” é extremamente alto, esforços devem ser feitos para reduzí-lo. ● Certifique-se de que o modelo de análise tem valor para todos os interessados. Cada clientela tem o seu próprio uso para o modelo. Por exemplo, interessados no negócio devem usar o modelo para validar os requisitos; projetistas devem usar o modelo como base para o projeto. O pessoal de Garantia de Qualidade (QA) deve usar o modelo para ajudar a planejar os testes de aceitação. ● Mantenha o modelo tão simples quanto puder. Não acrescente diagramas quando eles não fornecerem informação nova. Não use formulários notacionais completos, quando uma lista simples servir. 3. Conceitos de modelagem de dados A modelagem de análise geralmente é iniciada com a modelagem de dados. O engenheiro de software ou analista de sistemas define todos os objetos de dados processados no sistema, os relacionamentos entre os objetos de dados e outra informação pertinente aos relacionamentos. O objeto de dados é uma representação de quase toda informação composta que deve ser compreendida pelo software. Por informação composta queremos nos referir a algo que tem várias propriedades ou atributos diferentes. Assim, “largura” (um simples 92 valor) não seria um objeto de dados válido, mas dimensões (incorporando altura, largura e profundidade) poderia ser definido como objeto. Um objeto de dados encapsula apenas dados – não há referência dentro de um objeto de dados a operações que agem sobre os dados. Ele pode ser representado por uma tabela, como mostra a Figura 3.2. Os títulos das colunas da tabela refletem os atributos do objeto. Neste caso, um automóvel é definido em termos de marca, modelo, número de placa, tipo de carroceria, cor e proprietário. Por exemplo, Chevy Corvette é um exemplo do objeto de dados automóvel. Figura 3.2 – Representação de objeto de dados (Fonte: PRESSMAN, 2006). Os atributos de dados definem as propriedades de um objeto de dados e podem ser usados para: a) nomear um exemplo do objeto de dados; b) descrever o exemplo ou; c) fazer referência a outro exemplo em outra tabela. Além disso, um ou mais dos atributos podem ser definidos como identificador, tornando-se uma “chave” quando desejarmos encontrar um exemplo do objeto de dados. Em alguns casos, valores identificadores são únicos, apesar disso não ser exigido. Com referência ao objeto de dados automóvel, um identificador razoável poderia ser o número de identificação. Objetos de dados são conectados uns aos outro de diferentes modos. Considere dois objetos de dados, pessoa e carro, que podem ser representados por meio da notação simples ilustrada na Figura 3.3a. Uma conexão é estabelecida entre os objetos pessoa e carro porque os dois são relacionados. Para estabelecermos o 93 relacionamento, precisamos entender o papel das pessoas (proprietárias, neste caso) e carros, no contexto do software a ser construído. Podemos definir um conjunto de pares objeto/ relacionamento que definem os relacionamentos relevantes. Por exemplo: ● Uma pessoa possui carro ● Uma pessoa tem seguro para dirigir um carro Os relacionamentos possui e tem seguro para dirigir definem as conexões relevantes entre pessoa e carro. A figura 3.3b ilustra graficamente esses pares objeto/relacionamento. As setas da Figura 3.3b fornecem informação importante sobre a direcionalidade do relacionamento e frequentemente reduzem ambigüidade ou má interpretação. (a) (b) Figura 3.3 – Relacionamentos entre objetos de dados (Fonte: PRESSMAN, 2006). Os elementos da modelagem de dados – objetos, atributos e relacionamentos – fornecem a base para a compreensão do domínio de informação de um problema. No entanto, também deve ser entendida a informação adicional relacionada a esses elementos básicos. O modelo de dados deve ser capaz de representar o número de ocorrências dos objetos em um dado relacionamento. Outro tópico importante é a cardinalidade. A cardinalidade é a 94 especificação do número de ocorrências de um objeto que pode ser relacionado ao número de ocorrências de outro objeto. Por exemplo, um objeto pode se relacionar somente com um outro objeto (relacionamento 1: 1), um objeto pode se relacionar com muitos objetos (um relacionamento 1: N); um certo número de ocorrências de um objeto pode se relacionar com um outro número de ocorrências de um outro objeto (relacionamento m: n). A modalidade de uma relação é 0 se não houver necessidade explícita de o relacionamento ocorrer ou se o relacionamento for opcional. A modalidade é 1 se a ocorrência do relacionamento for obrigatória. 4. Abordagens de modelagem de análise Uma visão de modelagem de análise, chamada de análise estruturada, considera os dados e os processos que transformam os dados em entidades separadas. Objetos de dados são modelados para que definam seus atributos e relacionamentos. Processos que manipulam objetos de dados são modelados para que mostrem como eles transformam os dados à medida que os objetos de dados fluem pelo sistema. A modelagem orientada a fluxo de dados é uma das notações de análise estruturada mais conhecidas e será abordada na próxima seção. Uma segunda abordagem para modelagem de análise, chamada de análise orientada a objetos, focaliza a definição de classes e o modo pelo qual elas colaboram umas com as outras para atender aos requisitos do cliente. A UML e o Processo Unificado são predominantemente orientados a objetos. A análise orientada a objetos é composta por várias notações de modelagem e será abordada de forma mais enfática neste curso. 95 Equipes de desenvolvimento de software frequentemente escolhem uma abordagem e excluem todas as representações da outra. A questão não é definir qual é a melhor, mas que combinação de representações fornecerá aos interessados o melhor modelo de requisitos de software e a conexão mais efetiva para o projeto de software. 3.1 Análise Estruturada com modelagem orientada a fluxo A modelagem orientada a fluxo de dados continua a ser uma das notações de Análise Estruturada mais amplamente utilizadas atualmente. Embora o Diagrama de Fluxo de Dados (DFD) e demais diagramas e informações relacionadas não sejam parte formal da UML, eles podem ser utilizados para complementar os diagramas UML e fornecer visão adicional dos requisitos e fluxo do sistema. O DFD tem uma visão entrada-processo-saída de um sistema. Ou seja, objetos de dados entram no software, são transformados por elementos de processamento e os objetos de dados resultantes saem do software. Objetos de dados são representados por setas rotuladas e transformações são representadas por círculos (também chamados de bolhas). O DFD é apresentado de modo hierárquico, isto é, o primeiro modelo de fluxo de dados (algumas vezes chamado de DFD nível 0 ou diagrama de contexto) representa o sistema como um todo. Diagramas de Fluxo de Dados subsequentes refinam o diagrama de contexto, fornecendo detalhamentoprogressivo em cada nível subsequente. Algumas diretrizes simples podem ajudar durante a derivação do diagrama de fluxo de dados: ● O diagrama de fluxo de dados nível 0 deve mostrar o software/sistema como uma única bolha; 96 ● A entrada e a saída principal devem ser cuidadosamente registradas; ● O refinamento deve começar pelo isolamento dos processos, objetos de dados e depósitos de dados candidatos a ser representados no nível seguinte; ● Todas as setas e bolhas devem ser rotuladas com bolhas significativas; ● A continuidade do fluxo de informação deve ser mantida de nível para nível; e ● Uma bolha de cada vez deve ser refinada. Há uma tendência natural do analista de tornar complexo o diagrama de fluxo de dados. Isso ocorre quando ele tenta detalhar em excesso ou representar aspectos procedurais do software ao invés do fluxo da informação. As figuras 3.4a, 3.4b e 3.4c ilustram DFDs em diferentes níveis de refinamento. (a) 97 (b) (c) Figura 3.4 – Diagrama de Fluxo de Dados em diferentes níveis de refinamento (Fonte: PRESSMAN, 2006). 3.2 Análise orientada a objetos Qualquer discussão sobre análise orientada a objetos deve 98 começar focalizando o termo orientado a objetos. O que é um ponto de vista orientado a objetos? Por que um método é considerado orientado a objetos? O que é um objeto? À medida que a orientação a objetos ganhou inúmeros adeptos durante as décadas de 1980 e 1990, têm havido muitas opiniões diferentes sobre as respostas corretas a essas questões. Hoje, uma visão coerente de orientação a objeto emergiu. O objetivo da orientação a objetos é definir todas as classes relevantes ao problema a ser resolvido – as operações e os atributos associados a elas, as relações entre elas e o comportamento que elas exibem. Para tanto, algumas tarefas devem ser realizadas: 1) Os requisitos básicos do usuário precisam ser discutidos entre o cliente e o engenheiro de software; 2) As classes precisam ser identificadas (ou seja, atributos e métodos são definidos); 3) Uma hierarquia de classes precisa ser especificada; 4) As relações de objetos para objeto (conexões entre objetos) devem ser representadas; 5) O comportamento do objeto precisa ser modelado; 6) As tarefas de 1 a 5 são replicadas iterativamente até que o modelo seja completado. Ao invés de examinar o problema usando um modelo mais convencional de entrada-processamento-saída (fluxo de informação) ou um modelo derivado exclusivamente de estruturas de informação hierárquicas, a Análise Orientada a Objetos (AOO) cria um modelo orientado a classes que se apoia no entendimento dos conceitos de orientação a objetos. 3.2.1 Conceitos orientados a objetos 99 Os conceitos relacionados a orientação a objetos tornaram-se bem estabelecidos no mundo da engenharia de software. A seguir são apresentadas descrições resumidas de conceitos importantes, frequentemente encontrados durante a modelagem de análise. ● Atributos: uma coleção de valores de dados que descrevem uma classe. ● Classe: encapsula dados e abstrações procedurais necessárias para descrever o conteúdo e o comportamento de alguma entidade do mundo real. Dito de outro modo, classe é uma descrição generalizada (por exemplo, um gabarito, padrão ou planta) que descreve uma coleção de objetos semelhantes. ● Objetos: instâncias de uma classe específica. Objetos herdam os atributos e operações da classe. ● Operações: também chamadas de métodos e serviços, fornecem uma representação de um dos comportamentos da classe. ● Subclasse: especialização da superclasse. Uma subclasse pode herdar tanto atributos quanto operações de uma superclasse. ● Superclasse: também chamada de classe-base, é uma generalização de um conjunto de classes relacionadas a ela. Para onde vamos quando o assunto é desenvolvimento de elementos baseados em classe de um modelo de análise – classes, objetos, atributos, operações, pacotes, modelos CRC e diagramas de colaboração? Serão apresentados à seguir uma série de diretrizes informais que vão ajudar na identificação e representação. 100 3.2.2 Identificação de classes de análise Podemos começar a identificar classes examinando o enunciado do problema ou executando uma “análise gramatical” das narrativas de casos de uso ou de processamento do sistema desenvolvidas para o sistema a ser construído. As classes são determinadas sublinhando-se cada substantivo ou cláusula substantiva e colocando-as em uma tabela simples. Sinônimos devem ser anotados. Se a classe é necessária para implementar uma solução, então ela é parte do espaço de solução, caso contrário, se uma classe é necessária apenas para descrever uma solução, ela é parte do espaço do problema. 3.2.3 Especificação de atributos Os atributos descrevem uma classe que foi selecionada para inclusão no modelo de análise. Em essência, são os atributos que definem a classe – que esclarecem o que a classe representa no contexto do espaço do problema. Para desenvolver um conjunto de atributos significativos para uma classe de análise, um engenheiro de software pode novamente estudar o caso de uso e selecionar as “coisas” que razoavelmente “pertencem” à classe. Além disso, a seguinte questão deve ser respondida para cada classe: “Que itens de dados (compostos e/ou elementares) descrevem plenamente essa classe no contexto do problema em mãos?”. 3.2.4 Definição das operações As operações definem o comportamento de um objeto. Apesar 101 de existirem muitos tipos diferentes de operação, elas podem ser divididas em geral em quatro amplas categorias: 1) operações que de algum modo manipulam dados (somar, excluir, reformatar, selecionar); 2) operações que realizam um cálculo; 3) operações que pesquisam o estado de um objeto; e 4) operações que monitoram um objeto quanto à ocorrência de um evento de controle. Essas funções são realizadas pela operação sobre os atributos e/ou associações. Assim sendo, uma operação deve ter “conhecimento” da natureza dos atributos e associações da classe. Como primeira iteração para derivar um conjunto de operações para uma classe de análise, o analista pode novamente estudar a narrativa de processamento (ou caso de uso) e selecionar aquelas operações que razoavelmente pertencem à classe. Para conseguir isso, a análise gramatical é novamente estudada e os verbos são isolados. Alguns desses verbos serão operações legítimas e podem ser facilmente conectados a uma classe específica. A Figura 3.5 ilustra um diagrama da classe “PlantaBaixa” que exemplifica o uso de operações. 102 Figura 3.5 – Diagrama de Classes com as respectivas operações (Fonte: PRESSMAN, 2006). 3.2.5 Modelagem Classe-Responsabilidade-Colaboração (CRC) A modelagem classe-responsabilidade-colaboração fornece um meio simples para identificar e organizar as classes relevantes aos requisitos do sistema ou produto. Um modelo CRC é na realidade uma coleção de cartões-padrão de indexação que representam as classes. Os cartões são divididos em três seções: no alto do cartãoo nome da classe é descrito, no corpo são listadas as responsabilidades da classe à esquerda e os colaboradores à direita. O modelo CRC pode fazer uso de cartões de indexação reais ou virtuais. O objetivo é desenvolver uma representação organizada de 103 classes. Responsabilidades são os atributos e operações relevantes à classe. Dito simplesmente, uma responsabilidade é “qualquer coisa que a classe sabe ou faz”. Colaboradores são as classes necessárias para dar à classe a informação necessária para completar uma responsabilidade. Em geral, uma colaboração implica tanto solicitação de informação como solicitação de alguma ação. A Figura 3.6 ilustra um cartão CRC simples para a classe “PlantaBaixa”. Figura 3.6 – Modelo de Cartão CRC (Fonte: PRESSMAN, 2006). 3.2.6 Associações e dependências Em muitas instâncias, duas classes de análise estão relacionadas entre si de algum modo, como dois objetos de dados podem estar relacionados entre si. Em UML esses relacionamentos são chamados de associações. Em alguns casos, uma associação pode ser melhor definida pela indicação da multiplicidade. Nas restrições de multiplicidade, ilustradas na Figura 3.7, “um ou mais” é representado usando 1...0 e “0 ou mais” por 0..*. Em UML, o asterisco indica um extremo superior não limitado para o intervalo. 104 Figura 3.7 – Restrições de multiplicidade (Fonte: PRESSMAN, 2006). Em muitas instâncias, existe um relacionamento cliente-servidor entre duas classes de análise. Em tais casos, uma classe-cliente depende da classe-servidor de algum modo, e um relacionamento de dependência é estabelecido. Dependências são definidas por um estereótipo. Como já vimos na Unidade 2, o estereótipo é um mecanismo de “extensabilidade” na UML que permite a um engenheiro de software definir um elemento especial de modelagem cujas semânticas são definidas pelo cliente. Em UML, estereótipos são representados por sinais duplos de maior e menor (<<estereótipo>>) 3.2.7 Criação de um modelo comportamental Diagramas de classe, cartões indexados CRC e outros modelos orientados à classe representam elementos estáticos do modelo de análise. Chegou a hora de fazer uma transição para o comportamento dinâmico do sistema ou produto. Para tanto, precisamos representar o comportamento do sistema como uma função de eventos e tempos específicos. 105 O modelo comportamental indica como o software responderá a eventos ou estímulos externos. Para criar um modelo, o analista precisa executar os seguintes passos: 1) Avaliar todos os casos de uso para entender plenamente a sequência de interação dentro do sistema. 2) Identificar os eventos que dirigem a sequência de interação e entender como esses eventos se relacionam a classes específicas. 3) Criar uma sequência para cada caso de uso. 4) Construir um diagrama de estados para o sistema. 5) Revisar o modelo comportamental para verificar a precisão e a consistência. Como já vimos na Unidade 2, o caso de uso representa uma sequência de atividades que envolve atores e o sistema. Em geral, um evento ocorre sempre que um sistema e um ator trocam informação, lembrando que um evento não é a informação que foi trocada, mas o fato de que a informação foi trocada. Um caso de uso é examinado para encontrar pontos de troca de informação. As partes sublinhadas do cenário de caso de uso indicam eventos. Um ator deve ser identificado para cada evento; a informação que é trocada deve ser registrada e quaisquer condições ou restrições devem ser listadas. Uma vez identificados todos os eventos, eles são associados aos objetos envolvidos. Objetos podem ser responsáveis pela geração de eventos ou pelo reconhecimento de eventos que ocorreram em outro lugar. O sistema tem estados que representam comportamentos específicos externamente observáveis. Uma classe tem estados que representam seu comportamento à medida que o sistema realiza suas funções. No contexto de modelagem comportamental, devem ser consideradas duas caracterizações de estados diferentes: 106 1) o estado de cada classe, à medida que o sistema realiza sua função; e 2) o estado do sistema, observando de fora, à medida que o sistema realiza sua função. O estado de um objeto pode apresentar características passivas e ativas. Um estado passivo é simplesmente o estado atual de todos os atributos de um objeto. O estado ativo de um objeto indica o estado atual do objeto à medida que ele passa por uma transformação ou processamento contínuo. Um evento precisa ocorrer para forçar o objeto a realizar a transição de um estado para outro. Algumas representações estáticas e comportamentais referentes à atividade/ modelagem de análise serão discutidas na seção 6. 5. Modelagem de análise utilizando o RUP O propósito da análise orientada ao RUP é transformar os requisitos do sistema numa forma que mapeie a área do projetista do software de interesse – quer dizer, para um conjunto de classes e subsistemas. Esta transformação é dirigida pelos casos de uso e amoldada mais adiante pelos requisitos não funcionais do sistema. A análise focaliza-se em assegurar que os requisitos funcionais do sistema sejam controlados. Por causa da simplicidade, ignora muitos dos requisitos não funcionais do sistema e também as restrições do ambiente de implementação. Como resultado, a análise expressa uma imagem do sistema “quase ideal”. 5.1 Atividades 107 As atividades relacionadas à análise e projeto são consideradas pelo RUP como uma disciplina única, conforme vimos na Unidade 1. No entanto, neste curso, apesar das atividades de Requisitos, Análise e Projeto de Sistemas estarem inter-relacionadas, elas são tratadas separadamente para fins didáticos. A Figura 3.8 ilustra o fluxo de atividades relacionadas à Análise e Projeto, cuja abordagem será feita separadamente nesta Unidade 3 e na Unidade 4. Figura 3.8 – Fluxo de Atividades de Análise,em destaque (Fonte: adaptado de www.funpar.ufpr.br). ● Definir uma sugestão de arquitetura: Este detalhe de fluxo é composto das atividades de análise arquitetônica e de análise de caso de uso. Seu propósito é: ➢ Criar um esboço inicial da arquitetura do sistema, definindo: a) um conjunto inicial de elementos arquiteturais significantes para ser usado como base 108 para a análise; b) Um conjunto inicial de mecanismos de análise; c) a formação de camadas e organização inicial do sistema; e d) as realizações de caso de uso para ser endereçado na iteração atual. ➢ Identificar as classes de análise dos casos de uso arquiteturalmente significantes. ➢ Atualizar as realizações de caso de uso com as interações de classe de análise. ● Analisar comportamento: este detalhe do fluxo é composto das atividades análise de caso de uso, identificar elementos do projeto e revisão do projeto. O propósito deste detalhe do fluxo é transformar as descrições de comportamento fornecidas pelos casos de uso num conjunto de elementos nos quais o projeto possa ser baseado. Observe que, em analisaro comportamento, estamos nos tornando menos interessados nos requisitos não funcionais impostos no sistema e muito mais na forma como entregar as capacidades necessárias da aplicação. 5.2 Papéis No contexto que abrange as atividades de Análise, entendemos que somente o Arquiteto de Software possui funções a desempenhar. O Arquiteto de Software conduz e coordena as atividades técnicas e artefatos ao longo do projeto, como ilustrado na Figura 3.9. Ele estabelece a estrutura global para cada visão arquitetônica: a decomposição da visão, o agrupamento de elementos e as interfaces entre os agrupamentos principais. Em contraste com as visões dos outros papéis, a visão do arquiteto é 109 de amplitude e não de profundidade. Figura 3.9 – Papel e artefatos da Análise (Fonte: www.funpar.ufpr.br). 5.3 Artefatos ● Prova de Conceito Arquitetural: é uma solução, que pode simplesmente ser conceitual, para os requisitos significativos arquiteturalmente que são identificados primeiro na Iniciação. ● Modelo de Implantação: mostra a configuração dos nós de processamento em tempo de execução e os vínculos de comunicação entre eles, assim como os objetos e as instâncias de componentes que neles residem. ● Documento de Arquitetura de Software: fornece uma visão geral de arquitetura abrangente do sistema, usando diversas visões de arquitetura para descrever diferentes aspectos do sistema. ● Modelo de Análise: Geralmente há um modelo de projeto do sistema; a análise produz um esboço grosseiro do sistema que mais adiante será refinado no projeto. As camadas superiores deste modelo descrevem os aspectos da própria aplicação, ou mais orientados à análise do sistema. Usar um único modelo reduz o número de artefatos que devem ser 110 mantidos em estado consistente. O modelo de análise é uma abstração ou generalização do projeto e em algumas organizações o modelo de análise separado do projeto tem provado ser útil. Ele omite a maioria dos detalhes de como o sistema funciona e fornece uma avaliação da funcionalidade do sistema. O trabalho extra requerido para assegurar que os modelos de análise e projeto permaneçam consistentes deve ser equilibrado em relação ao benefício de ter uma visão do sistema que represente apenas seus detalhes de funcionamento mais importantes. ● Modelo de Projeto: o artefato primário da análise e do fluxo de projeto é o modelo de projeto. Consiste em um conjunto de colaborações de elementos do modelo que fornecem o comportamento do sistema. Em troca, este comportamento é derivado principalmente do modelo de caso de uso e requisitos não funcionais. O modelo de projeto consiste em colaborações de classes que podem ser agregadas em pacotes e subsistemas para ajudar a organizar o modelo e fornecer blocos compostos da construção dentro do modelo. ● Arquitetura de Referência: é, basicamente, um padrão ou conjunto de padrões de arquitetura predefinido, possivelmente parcial ou totalmente instanciado, projetado e testado em determinados contextos de negócios e técnicos com artefatos de suporte que permitam seu uso. Geralmente, esses artefatos são resultantes de projetos anteriores. ● Interface: as interfaces são utilizadas para especificar o comportamento oferecido por classes, subsistemas e componentes de um modo independente da implementação do comportamento. Eles especificam um conjunto de operações executado pelos elementos do modelo, inclusive o tipo e 111 número retornado e os tipos de parâmetros. Qualquer dos dois elementos do modelo que oferece a mesma interface é substituível. As interfaces melhoram a flexibilidade dos projetos, reduzindo dependências entre as partes do sistema e os tornando mais fáceis de mudar. Artefatos para sistemas em tempo real Os sistemas em tempo real são aqueles com requisitos particulares para pontualidade ou responsabilidade, geralmente com a restrição de prazos finais. Tais sistemas não frequentemente encontrados em aplicações de segurança crítica. O RUP descreve os seguintes artefatos adicionais, de análise especificamente, planejados para satisfazer as demandas do desenvolvimento de tais sistemas: ● Sinal: um sinal é um evento assíncrono que pode causar uma transição de estado na máquina de estado de um objeto. ● Evento: um evento é a especificação de uma ocorrência em espaço e tempo ou, menos formalmente, uma ocorrência de alguma coisa à qual o sistema tem que responder. ● Protocolo: um protocolo especifica o modo com um conjunto de portas se comunica, as mensagens trocadas e como são ordenadas. 6. Modelagem de análise utilizando diagramas UML Quando identificamos quem realizará um Caso de Uso ou um de seus cenários principais em termos de classes na forma 112 conceitual, começamos a direcionar nossa atenção ao workflow de análise de sistemas. Por vezes os dois workflows (análise e projeto) são abordados como um único (RUP, por exemplo). No entanto, para fins didáticos, abordamos essas duas etapas separadamente. Nesta Seção, que trata a etapa de análise por meio da UML, nosso foco está nos diagramas de classes, objetos, gráfico de estados e seqüência. 6.1 Diagrama de classes Os diagramas de classes são os diagramas encontrados com maior freqüência na modelagem de sistemas orientados a objetos e são compostos de um conjunto de classes, interfaces, colaborações e seus relacionamentos. Os diagramas de classes são a base para um par de diagramas relacionados: os diagramas de componentes e diagramas de implantação, abordados na Unidade 4. Na UML o diagrama de classes pode ser utilizado para a visualização de aspectos estáticos da construção de software e especificação dos detalhes da construção, conforme ilustrado na Figura 3.10. 113 Figura 3.10 – Diagrama de Classes (Fonte: BOOCH et. al.,2000). Os diagramas de classes costuma conter os seguintes itens: ● Classes ● Interfaces ● Colaborações ● Relacionamentos de dependência, generalização e associação. Na modelagem da visão estática de um sistema podemos utilizar três formas diferentes de diagramas de classes: modelagem do vocabulário do sistema, modelagem de colaboração simples e modelagem do esquema lógico de um banco de dados. 6.1.1 Modelagem do vocabulário do sistema 114 Geralmente utilizamos as classes para fazermos a modelagem de abstrações definidas a partir do problema que estamos tentando solucionar ou a partir da tecnologia empregada para implementar uma solução para esse problema. Cada uma dessas abstrações é uma parte do vocabulário do sistema, que, em conjunto, representa as coisas importantes para os usuários e implementadores. Técnicas como os cartões CRC e a análise baseada em casos de uso são formas excelentes para auxiliar os usuários a descobrir essas abstrações. Para os implementadores, as abstrações geralmente são os itens disponíveis na tecnologia que constituem partes da solução. A Figura 3.11 ilustra um conjunto de classes definidas a partir de um sistema de vendas de varejo.Figura 3.11 - Modelagem do vocabulário de um sistema (Fonte: BOOCH et. al.,2000). 6.1.2 Modelagem de colaboração simples 115 Uma colaboração é uma sociedade de classes, interfaces e outros elementos que funcionam em conjunto para proporcionar algum comportamento cooperativo, maior do que a soma de todos os elementos. Além de captar o vocabulário do sistema, é preciso prestar atenção para visualizar, especificar, construir e documentar as várias formas em que esses itens trabalham em conjunto em seu vocabulário. Use os diagramas de classes para visualizar e especificar o conjunto de classes e seus relacionamentos. A Figura 3.12 mostra um conjunto de classes estabelecido a partir da implementação de um robô autônomo. Figura 3.12 - Modelagem de colaboração simples (Fonte: BOOCH et. al.,2000). 6.1.3 Modelagem do esquema lógico de um banco de dados Em muitos domínios faz-se necessária a armazenagem de informações persistentes em um banco de dados relacional, em um 116 banco de dados orientado a objetos ou em um banco de dados híbrido. Neste caso os objetos persistentes poderão ser armazenados em um banco de dados para serem recuperados posteriormente. A UML é adequada para a modelagem de esquemas lógicos de bancos de dados, além dos próprios bancos de dados físicos. A Figura 3.13 mostra um conjunto de classes definido a partir de um sistema de informações para uma escola. Figura 3.13 - Modelagem de um esquema (Fonte: BOOCH et. al.,2000). 6.1.4 Recomendações para diagramação de Classes Um diagrama de classes bem estruturado: ● Tem como foco comunicar um único aspecto da visão estática do projeto do sistema. ● Contém somente elementos essenciais à compreensão desse aspecto. ● Fornece detalhes consistentes com o respectivo nível de abstração, exibindo somente os adornos essenciais à 117 compreensão. ● Não é tão minimalista que prejudique a informação do leitor sobre a semântica importante. Ao criar um diagrama de classes: ● Atribua-lhe um nome que comunique seu propósito. ● Distribua seus elementos de modo a minimizar o cruzamento de linhas. ● Organize especialmente seus elementos de modo que os itens semanticamente relacionados fiquem fisicamente próximos. ● Use notas e cores como indicações visuais com a finalidade de chamar a atenção para características importantes do diagrama. ● Procure não exibir uma quantidade excessiva de tipos de relacionamentos. Em geral, um único tipo de relacionamento tenderá a predominar em cada diagrama de classes. 6.2 Diagrama de objetos Os diagramas de objetos fazem a modelagem de instâncias de itens contidos em diagramas de classes e ilustram um conjunto de objetos e seus relacionamentos em determinado ponto no tempo. São utilizados para fazer a modelagem da visão estática do projeto ou do processo de um sistema, ou seja, resultam em um retrato do sistema em determinado momento contendo um conjunto de objetos, seus estados e relacionamentos. Graficamente, o diagrama de objetos é uma coleção de vértices e de arcos, conforme ilustrado na Figura 3.14. 118 Figura 3.14 – Diagrama de objetos (Fonte: BOOCH et. al.,2000). Os diagramas de objetos costumam conter objetos e vínculos. Assemelham-se ao diagrama de classes no que tange à modelagem da visão de projeto estático ou da visão do processo estático de um sistema. No entanto, no diagrama de objetos a modelagem é feita a partir da perspectiva de instâncias reais ou prototípicas. Essa visão atende principalmente aos requisitos funcionais do sistema – ou seja, os serviços que o sistema deverá proporcionar aos seus usuários finais. Geralmente o diagrama de objetos é utilizado de uma única maneira, por meio da modelagem de estrutura dos objetos. Ao construir um diagrama de classes, de componentes ou de implantação, é captado um conjunto de abstrações que expõe a semântica e os relacionamentos com outras abstrações, mostrando somente a potencialidade. Congelando o sistema em execução ou apenas imaginando um momento no tempo em um sistema modelado, um conjunto de objetos será encontrado, cada um em um estado específico e em um determinado relacionamento com os demais objetos. 119 Com os diagramas de objetos não é possível especificar completamente a estrutura de objetos de um sistema, pois para uma classe individual poderá haver várias instâncias e, para um conjunto de classes em relacionamentos um-para-um, muitas vezes poderá haver mais configurações possíveis desses objetos. Ao utilizar diagramas de objetos torna-se possível expor significativamente somente conjuntos interessantes de objetos concretos ou prototípicos. Isso é o que significa fazer a modelagem de uma estrutura de objetos – um diagrama de objetos exibe um único conjunto de objetos relacionados uns com os outros em um determinado momento. A Figura 3.15 ilustra um conjunto de objetos definidos a partir da implementação de um robô autônomo. Figura 3.15 – Modelagem de estruturas de objetos (Fonte: BOOCH et. al.,2000). 6.2.1 Recomendações para diagramação de Objetos Um diagrama de objetos bem estruturado: ● Tem seu foco voltado para comunicar um único aspecto da visão estática, de projeto ou de processo, do 120 sistema. ● Representa um único quadro no enredo dinâmico representado por um diagrama de interação. ● Contém somente aqueles elementos essenciais para a compreensão desse aspecto. ● Fornece detalhes consistentes com seu nível de abstração; você deverá expor apenas os valores de atributo e outros adornos que sejam essenciais para a compreensão. ● Não é tão minimalista, que acabe informando mal o leitor sobre a semântica que seja importante. Na definição de um diagrama de objetos, deve-se: ● Dar-lhe um nome capaz de comunicar seu propósito. ● Distribuir seus elementos para minimizar a ocorrência de linhas cruzadas. ● Organizar seus elementos espacialmente, para que os itens semanticamente afins apareçam fisicamente próximos. ● Utilizar notações e cores como indicações visuais para chamar a atenção em relação a características importantes de seu diagrama. ● Incluir os valores, o estado e o papel de cada objeto, conforme seja necessário para comunicar suas intenções. 6.3 Diagrama de gráficos de estados Um diagrama gráfico de estados mostra uma máquina de estados, dando ênfase ao fluxo de controle de um estado para 121 outro. Uma máquina de estados é um comportamento que especifica as sequências de estados pelos quais um objeto passa durante seu tempo de vida em resposta a eventos, juntamente com suas respostas a esses eventos. Um estado é uma condição ou situação na vida de um objeto durante a qual ele satisfaz alguma condição, realiza alguma atividade ou aguarda algum evento. Um evento é a especificação de uma ocorrência significativa que tem uma localização no tempo e no espaço. No contexto de uma máquina de estados, um evento é a ocorrência de um estímulo capaz de ativar uma transição de estado. Uma transição é um relacionamento entre dois estados, indicando que um objetono primeiro estado realizará certas ações e entrará no segundo estado quando um evento especificado ocorrer e condições especificadas estão satisfeitas. Uma atividade é uma execução não atômica em andamento em uma máquina de estados. Uma ação é uma computação atômica executável que resulta na alteração do estado do modelo ou no retorno de um valor. Graficamente, um diagrama de estados é uma coleção de vértices e arcos. As máquinas de estados são empregadas para a modelagem dos aspectos dinâmicos de um sistema. Uma máquina de estados pode ser visualizada de duas maneiras: dando-se ênfase ao fluxo de controle de uma atividade para outra (utilizando diagramas de atividades) ou dando-se ênfase aos estados potenciais dos objetos e às transições entre esses estados (utilizando diagramas de gráficos de estados). Máquinas de estados bem estruturadas são como algoritmos bem estruturados: são eficientes, simples, adaptáveis e compreensíveis. Na UML, a modelagem de comportamentos ordenados por eventos de um objeto é feita pela utilização de diagramas de 122 gráficos de estados. Conforme mostra a Figura 3.16, um diagrama de gráfico de estados é simplesmente a apresentação de uma máquina de estados, dando ênfase ao fluxo de controle de um estado para outro. Figura 3.16 – Diagrama de gráfico de estados (Fonte: BOOCH et. al., 2000). Os diagramas de gráficos de estados costumam conter: ● Estados simples e estados compostos ● Transições, incluindo eventos e ações 6.3.1 Recomendações para diagramação de Estados Um diagrama de gráficos de estados bem estruturado: ● Tem como foco a comunicação de um aspecto da dinâmica de um sistema. ● Contém somente os elementos essenciais à compreensão desse aspecto. ● Fornece detalhes consistentes com seu nível de abstração (expõe somente as características essenciais à compreensão) 123 Ao definir um diagrama de gráficos de estados: ● Dê-lhe um nome capaz de comunicar seu propósito ● Inicie com a modelagem dos estados estáveis do objeto e depois prossiga com a modelagem das transições legais de um estado para outro. Inclua ramificação, concorrência e fluxo de objetos como considerações secundárias, possivelmente em diagramas separados. ● Distribua seus elementos de forma a minimizar o cruzamento de linhas. 6.4 Diagrama de sequência Um diagrama de sequências é um diagrama de interação que dá ênfase à ordenação temporal de mensagens. Conforme ilustra a Figura 3.17, um diagrama de sequências é formado se colocando primeiro os objetos que participam da interação no nível superior do diagrama, ao longo do eixo X. Tipicamente, o objeto que inicia a interação é colocado à esquerda e objetos mais subordinados vão crescendo à direita. A seguir, as mensagens que esses objetos enviam e recebem são colocadas ao longo do eixo Y, em ordem crescente do tempo, de cima para baixo. Isso proporciona ao leitor uma clara indicação visual do fluxo de controle ao longo do tempo. 124 Figura 3.17 – Diagrama de sequências (Fonte: BOOCH et. al., 2000). Os diagramas de sequências têm duas características que os diferenciam dos diagramas de colaboração. Primeiro, existe linha de vida do objeto. A linha de vida do objeto é a linha tracejada vertical que representa a existência de um objeto em um período de tempo. Muitos objetos que aparecem em um diagrama de interação terão existência igual à duração da interação; assim, esses objetos são alinhados na parte superior do diagrama, com suas linhas de vida desenhadas de cima para baixo no diagrama. Objetos poderão ser criados durante a interação. Suas linhas de vida se iniciam com o destinatário de mensagem estereotipado como destroy (e são fornecidas as indicações visuais de um grande X, marcando o fim de suas vidas). Segundo, existe o foco de controle. O foco de controle é um retângulo alto e estreito, que mostra o período durante o qual um objeto está desempenhando uma ação, diretamente ou por meio de um procedimento subordinado. A parte superior do retângulo é alinhada com o início da ação; a parte inferior é alinhada com sua conclusão (e pode ser marcada por uma mensagem de retorno). 125 Você pode exibir o aninhamento de um foco de controle (causado por recursão, uma chamada a uma auto-operação ou pela chamada feita por outro objeto) mantendo um outro foco de controle ligeiramente à direita de seu foco pai (e pode fazer isso em uma profundidade arbitrária). Para ser especialmente preciso em relação ao local em que se encontra o foco de controle, você também pode sombrear a região do retângulo durante a qual o método do objeto está realmente sendo computado (sem que o controle tenha sido passado a outro objeto). Os diagramas de sequências costumam conter: ● Objetos ● Vínculos ● Mensagens 6.4.1 Recomendações para diagramação de Sequências. Um diagrama de sequências bem estruturado... ● Está voltado para comunicar um único aspecto da dinâmica do sistema. ● Contém somente os elementos essenciais à compreensão desses aspectos. ● Fornece detalhes consistentes com seu nível de abstração e expõe somente os adornos essenciais à compreensão. ● Não é tão minimalista, que informe mal ao leitor sobre a semântica que é importante. Ao definir um diagrama de sequências: ● Dê-lhe um nome capaz de comunicar seu propósito. ● Dê ênfase à ordenação temporal das mensagens. ● Distribua seus elementos para minimizar o cruzamento de linhas. 126 ● Use notas e cores como indicações visuais para chamar atenção para características importantes do diagrama. ● Use a ramificação com cautela; você pode representar bem melhor as ramificações complexas utilizando os diagramas de atividades. 7. Ferramentas para modelagem de análise 7.1 Modelagem de dados As ferramentas de modelagem de dados fornecem ao engenheiro de software habilidade para representar objetos de dados, suas características e seus relacionamentos. Usadas principalmente para aplicações de grandes nacos de dados e outros projetos de sistemas de informação, as ferramentas de modelagem de dados fornecem um meio automatizado para criação de diagramas entidade/ relacionamento abrangentes, dicionários de objetos de dados e modelos relacionados. As ferramentas dessa categoria possibilitam ao usuário descrever objetos de dados e seus relacionamentos. Em alguns casos, as ferramentas usam a notação Diagrama Entidade/ Relacionamento (DER). Em outros, as ferramentas modelam relacionamentos por meio de alguns outros mecanismos. Ferramentas dessa categoria possibilitam a criação de um modelo de banco de dados pela geração do esquema de banco de dados comum para Sistemas Gerenciadores de Banco de Dados (SGBD). As ferramentas listadas abaixo não representam uma recomendação e sim uma exemplificação de ferramentas dessa categoria de modelagem: ● Allfusion ERWin: auxilia no projeto de objetos de dados, estrutura adequada e elementos-chave para bancos de dados. 127 ● ER/Studio: suporta a modelagem entidade/ relacionamento. ● Oracle Designer: modela processos de negócio, entidades erelacionamentos de dados que são transformados em projetos dos quais aplicações completas e bancos de dados são gerados. ● MetaScope: é uma ferramenta de modelagem de dados de baixo custo que suporta a representação gráfica dos dados. ● ModelSphere: suporta uma variedade de ferramentas de modelagem relacional. ● Visible Analyst: suporta uma variedade de funções de modelagem de análise incluindo modelagem de dados. 7.2 Análise estruturada As ferramentas de análise estruturada permitem ao engenheiro de software criar modelos de dados, modelos de fluxo e modelos comportamentais, de modo que favoreça a consistência e a verificação de continuidade e facilite a edição e a extensão. Os modelos criados com essas ferramentas fornecem ao engenheiro de software discernimento da representação de análise e ajuda a eliminar erros antes que eles se propaguem no projeto, ou pior, na implementação em si. As ferramentas dessa categoria usam um “dicionário de dados” como banco de dados central para a descrição de todos os objetos de dados. Uma vez definidas as entradas no dicionário, diagramas entidade/ relacionamento podem ser criados e hierarquias de objetos podem ser desenvolvidas. Características de diagramação de fluxo de dados permitem a fácil criação desse modelo gráfico e habilitam o engenheiro de software a criar modelos comportamentais usando diagramas de estado como a notação operativa. 128 As ferramentas listadas abaixo não representam uma recomendação e sim uma exemplificação de ferramentas dessa categoria de modelagem: ● AxiomSys: fornece um conjunto completo de ferramentas para análise estruturada incluindo extensões para modelagem de sistemas de tempo real. ● MacA&D, WinA&D: fornece um conjunto de ferramentas simples e baratas para análise e projeto para máquinas Mac e Windows ● MetaCASE: é uma metaferramenta usada para definir métodos de análise e projeto (incluindo análise estruturada): seus conceitos, regras, notações e geradores. ● System Architect: fornece ferramentas na ampla faixa de análise e projeto, incluindo ferramentas para modelagem de dados e análise estruturada. 7.3 Modelagem de análise em UML As ferramentas de modelagem de análise fornecem a capacidade de desenvolver modelos baseados em cenário, classe e comportamento usando a notação UML. As ferramentas dessa categoria suportam todo o conjunto de diagramas UML necessário para construir um modelo de análise (essas ferramentas também suportam a modelagem de projeto). Além disso, para diagramação, ferramentas dessa categoria: a) executam verificação de consistência e de correção para todos os diagramas UML; b) fornecem ligações para projeto e geração de código; c) constroem um banco de dados que permite o gerenciamento e a avaliação de grandes modelos UML, necessários para sistemas complexos. As seguintes ferramentas suportam todo o conjunto de 129 diagramas UML necessário para modelagem de análise: ● ArgoUML: é uma ferramenta de código aberto ● Control Center ● Enterprise Architect ● Object Technology Workbench (OTW) ● Power Designer ● Rational rose ● System Architecht ● UML Studio ● Visio ● Visual UML 130 Referências SOMMERVILLE, I. Engenharia de software. 8.ed. São Paulo: Pearson Addison-Wesley, 2007. 552 p. PRESSMAN, R. S. Engenharia de Software. São Paulo: McGraw-Hill, 2006, 720 p. BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML – Guia do usuário. Rio de Janeiro: Editora Campus, 2000. 472 p. KRUCHTEN, P. Introdução ao RUP – Rational Unified Process. Rio de Janeiro : Editora Ciência Moderna, 2003. 255p. MEDEIROS, E. Desenvolvendo software com UML 2.0. São Paulo: Pearson Makron Books, 2004. 264p. Rational Unified Process: Disciplinas. Fundação da Universidade Federal do Paraná (FUNPAR). Setembro, 2013. Disponível em: http://www.funpar.ufpr.br:8080/rup/process/workflow/ovu_core.htm 131 http://www.google.com/url?q=http%3A%2F%2Fwww.funpar.ufpr.br%3A8080%2Frup%2Fprocess%2Fworkflow%2Fovu_core.htm&sa=D&sntz=1&usg=AFQjCNGuRVp3UUOJXLAQz82q1cHh-UVsKQ
Compartilhar