Modelagem de Sistemas de Software Orientados a Objetos
Classificado em Computação
Escrito em em português com um tamanho de 25,1 KB.
Sistemas de Informações
- A necessidade é a mãe das invenções.
- Em consequência do crescimento da importância da informação, surgiu a necessidade de gerenciar informações de uma forma adequada e eficiente e, desta necessidade, surgiram os denominados sistemas de informações.
- Um SI é uma combinação de pessoas, dados, processos, interfaces, redes de comunicação e tecnologia que interagem com o objetivo de dar suporte e melhorar o processo de negócio de uma organização com relação às informações.
- Vantagens do ponto de vista competitivo.
- Objetivo principal e final da construção de um SI: adição de valor à organização.
Sistemas de Software
- Um dos componentes de um SI é denominado sistema de software.
- Compreende os módulos funcionais computadorizados que interagem entre si para proporcionar a automatização de diversas tarefas.
- Característica intrínseca do desenvolvimento de sistemas de software: complexidade.
Modelos de Software
- Na construção de sistemas de software, assim como na construção de sistemas habitacionais, também há uma gradação de complexidade.
- A construção desses sistemas necessita de um planejamento inicial.
- Um modelo pode ser visto como uma representação idealizada de um sistema que se planeja construir.
- Maquetes de edifícios e de aviões e plantas de circuitos eletrônicos são apenas alguns exemplos de modelos.
Razões para Construção de Modelos
A princípio, podemos ver a construção de modelos como uma atividade que atrasa o desenvolvimento do software propriamente dito.
- Mas essa atividade propicia...
- O gerenciamento da complexidade inerente ao desenvolvimento de software.
- A comunicação entre as pessoas envolvidas.
- A redução dos custos no desenvolvimento.
- A predição do comportamento futuro do sistema.
- Entretanto, note o fator complexidade como condicionante dessas vantagens.
Diagramas e Documentação
No contexto de desenvolvimento de software, correspondem a desenhos gráficos que seguem algum padrão lógico.
- Podemos também dizer que um diagrama é uma apresentação de uma coleção de elementos gráficos que possuem um significado predefinido.
- Diagramas normalmente são construídos de acordo com regras de notação bem definidas.
- Ou seja, cada forma gráfica utilizada em um diagrama de modelagem tem um significado específico.
Diagramas permitem a construção de uma representação concisa de um sistema a ser construído.
- “uma figura vale por mil palavras”
- No entanto, modelos também são compostos de informações textuais.
- Dado um modelo de uma das perspectivas de um sistema, diz-se que o seu diagrama, juntamente com a informação textual associada, formam a documentação deste modelo.
Modelagem de Software
A modelagem de sistemas de software consiste na utilização de notações gráficas e textuais com o objetivo de construir modelos que representam as partes essenciais de um sistema, considerando-se diversas perspectivas diferentes e complementares.
Modelagem Visual significa modelar com a utilização de notações padrões.
A Modelagem Visual promove a Reutilização.
Paradigma
- Um paradigma é uma forma de abordar um problema.
- No contexto da modelagem de um sistema de software, um paradigma tem a ver com a forma pela qual esse sistema é entendido e construído.
- A primeira abordagem usada para modelagem de sistemas de software foi o paradigma estruturado.
- Uso da técnica de decomposição funcional –“divida sucessivamente um problema complexo em subproblemas”
- Hoje em dia, praticamente suplantou o paradigma anterior, o paradigma da orientação a objetos...
Analogia Biológica
- Cada “célula” interagiria com outras células através do envio de mensagens para realizar um objetivo comum.
- Adicionalmente, cada célula se comportaria como uma unidade autônoma.
- De uma forma mais geral, Kay pensou em como construir um sistema de software a partir de agentes autônomos que interagem entre si.
Fundamentos da Orientação a Objetos
Através de sua analogia biológica, Alan Kay definiu os fundamentos da orientação a objetos.
- Qualquer coisa é um objeto.
- Objetos realizam tarefas através da requisição de serviços a outros objetos.
- Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares.
- A classe é um repositório para comportamento associado ao objeto.
- Classes são organizadas em hierarquias.
O paradigma da orientação a objetos visualiza um sistema de software como uma coleção de agentes interconectados chamados objetos. Cada objeto é responsável por realizar tarefas específicas. É através da interação entre objetos que uma tarefa computacional é realizada.
Um sistema de software orientado a objetos consiste de objetos em colaboração com o objetivo de realizar as funcionalidades deste sistema. Cada objeto é responsável por tarefas específicas. É através da cooperação entre objetos que a computação do sistema se desenvolve.
Conceitos e Princípios da OO
- Conceitos
- Classe
- Objeto
- Mensagem
- Princípios
- Encapsulamento
- Polimorfismo
- Generalização (Herança)
- Composição
Classes, Objetos e Mensagens
- O mundo real é formado de coisas.
- Na terminologia de orientação a objetos, estas coisas do mundo real são denominadas objetos.
- Seres humanos costumam agrupar os objetos para entendê-los.
- A descrição de um grupo de objetos é denominada classe de objetos, ou simplesmente de classe.
O que é uma Classe?
- Uma classe é um molde para objetos. Diz-se que um objeto é uma instância de uma classe.
- Uma classe é uma abstração das características relevantes de um grupo de coisas do mundo real.
- Na maioria das vezes, um grupo de objetos do mundo real é muito complexo para que todas as suas características e comportamento sejam representados em uma classe.
Abstração
- Uma abstração é qualquer modelo que inclui os aspectos relevantes de alguma coisa, ao mesmo tempo em que ignora os menos importantes. A abstração depende do observador.
Abstração na Orientação a Objetos
- A orientação a objetos faz uso intenso de abstrações.
- Os princípios da OO podem ser vistos como aplicações da abstração.
- Princípios da OO: encapsulamento, polimorfismo, herança e composição.
Objetos como Abstrações
- Uma abstração é uma representação das características e do comportamento relevantes de um conceito do mundo real para um determinado problema.
- Dependendo do contexto, um mesmo conceito do mundo real pode ser representado por diferentes abstrações.
- Carro (para uma transportadora de cargas)
- Carro (para uma fábrica de automóveis)
- Carro (para um colecionador)
- Carro (para uma empresa de kart)
- Carro (para um mecânico)
Classe X Objeto
- Objetos são abstrações de entidades que existem no mundo real.
- Classes são definições estáticas, que possibilitam o entendimento de um grupo de objetos.
- CUIDADO: estes dois termos muitas vezes são usados indistintamente em textos sobre orientação a objetos.
Mensagens
- Para que um objeto realize alguma tarefa, deve haver um estímulo enviado a este objeto.
- Pense em um objeto como uma entidade ativa que representa uma abstração de algo do mundo real
- Então faz sentido dizer que tal objeto pode responder a estímulos a ele enviados
- Assim como faz sentido dizer que seres vivos reagem a estímulos que eles recebem.
- Independentemente da origem do estímulo, quando ele ocorre, diz-se que o objeto em questão está recebendo uma mensagem.
- Uma mensagem é uma requisição enviada de um objeto a outro para que este último realize alguma operação. Objetos de um sistema trocam mensagens –isto significa que estes objetos estão enviando mensagens uns aos outros com o objetivo de realizar alguma tarefa dentro do sistema no qual eles estão inseridos.
Encapsulamento
- Objetos possuem comportamento.
- O termo comportamento diz respeito a que operações são realizadas por um objeto e também de que modo estas operações são executadas.
- De acordo com o encapsulamento, objetos devem “esconder” a sua complexidade...
- Esse princípio aumenta qualidade do SSOO, em termos de:
- Legibilidade
- Clareza
- Reuso
O encapsulamento é uma forma de restringir o acesso ao comportamento interno de um objeto.
- Um objeto que precise da colaboração de outro para realizar alguma tarefa simplesmente envia uma mensagem a este último.
- O método (maneira de fazer) que o objeto requisitado usa para realizar a tarefa não é conhecido dos objetos requisitantes.
- Na terminologia da orientação a objetos, diz-se que um objeto possui uma interface.
- A interface de um objeto é o que ele conhece e o que ele sabe fazer, sem descrever como o objeto conhece ou faz.
- A interface de um objeto define os serviços que ele pode realizar e consequentemente as mensagens que ele recebe.
Uma interface pode ter várias formas de implementação.
- Mas, pelo princípio do encapsulamento, a implementação utilizada por um objeto receptor de uma mensagem não importa para um objeto remetente da mesma.
Generalização (Herança)
- A herança pode ser vista como um nível de abstração acima da encontrada entre classes e objetos.
- Na herança, classes semelhantes são agrupadas em hierarquias.
- Cada nível de uma hierarquia pode ser visto como um nível de abstração.
- Cada classe em um nível da hierarquia herda as características das classes nos níveis acima.
A herança facilita o compartilhamento de comportamento entre classes semelhantes.
- As diferenças ou variações de uma classe em particular podem ser organizadas de forma mais clara.
Superclasses representam abstrações generalizadas e subclasses representam especializações, onde atributos e métodos específicos são adicionados, modificados ou removidos.
Herança Múltipla
Permite que uma classe tenha mais que uma superclasse associada e que herde características de todas elas.
Polimorfismo
É a habilidade de objetos de classes diferentes responderem a mesma mensagem de diferentes maneiras.
- Em uma linguagem orientada a objetos:
for(i = 0; i < poligonos.tamanho(); i++)
poligonos[i].desenhar();
Evolução Histórica da Modelagem de Sistemas
A Linguagem de Modelagem Unificada
Evolução do Software
- O rápido crescimento da capacidade computacional das máquinas resultou na demanda por sistemas de software cada vez mais complexos.
- O surgimento de sistemas de software mais complexos resultou na necessidade de reavaliação da forma de se desenvolver sistemas.
- Consequentemente as técnicas utilizadas para a construção de sistemas computacionais têm evoluído de forma impressionante, notavelmente no que tange à modelagem de sistemas.
- Na primeira metade da década de 90 surgiram várias propostas de técnicas para modelagem de sistemas segundo o paradigma orientado a objetos.
- Houve uma grande proliferação de propostas para modelagem orientada a objetos.
- diferentes notações gráficas para modelar uma mesma perspectiva de um sistema.
- cada técnica tinha seus pontos fortes e fracos.
Necessidade de um Padrão
- Percebeu-se a necessidade de um padrão para a modelagem de sistemas, que fosse aceito e utilizado amplamente.
- Alguns esforços nesse sentido de padronização, o principal liderado pelo “três amigos”.
- Surge a UML (Unified Modeling Language) em 1996 como a melhor candidata para ser linguagem “unificadora”.
- Em 1997, a UML é aprovada como padrão pelo OMG.
- Desde então, a UML tem tido grande aceitação pela comunidade de desenvolvedores de sistemas.
- É uma linguagem ainda em desenvolvimento.
- Atualmente na versão 2.0.
UML (Linguagem de Modelagem Unificada)
- “A UML é a linguagem padrão para visualizar, especificar, construir e documentar os artefatos de software de um sistema.”
- Unificação de diversas notações anteriores.
- Mentores: Booch, Rumbaugh e Jacobson –“Três Amigos” –IBM Rational (www.rational.com)
UML (Linguagem de Modelagem Unificada)
- UML é...
- uma linguagem visual.
- independente de linguagem de programação.
- independente de processo de desenvolvimento.
- UML não é...
- uma linguagem programação (mas possui versões!).
- uma técnica de modelagem.
- Um processo de desenvolvimento que utilize a UML como linguagem de modelagem envolve a criação de diversos documentos.
- Estes documentos, denominados artefatos de software, podem ser textuais ou gráficos.
- Os artefatos gráficos produzidos de um sistema OO são definidos através dos diagramas da UML.
Um diagrama na UML é uma apresentação de uma coleção de elementos gráficos que possuem um significado predefinido.
- No contexto de desenvolvimento de software, correspondem a desenhos gráficos que seguem algum padrão lógico.
- Um processo de desenvolvimento que utilize a UML como linguagem de modelagem envolve a criação de diversos documentos.
- Estes documentos, denominados artefatos de software, podem ser textuais ou gráficos.
- Os artefatos gráficos produzidos no desenvolvimento de um SSOO são definidos através dos diagramas da UML.
Requisitos Funcionais
- São as declarações de serviços que o sistema deve fornecer, como o sistema deve reagir a entradas específicas e como o sistema deve se comportar em determinadas situações. - Prof. Tavares
- Descrevem o que o sistema deve fazer.
- Inicialmente, a especificação de requisitos funcionais deve ser completa e consistente. Completeza significa que todas as funções requeridas pelo usuário devem estar definidas.
- Consistência significa que os requisitos não devem ter - Prof. Tavares definições contraditórias.
Requisitos Não Funcionais
São restrições sobre os serviços ou funções oferecidas pelo sistema.
- Incluem, e.g., restrições sobre o processo de desenvolvimento e - Prof. Tavares padrões.
- Aplicam-se, frequentemente, ao sistema como um todo.
- Uma não conformidade pode comprometer todo o sistema.
Requisitos de produtos: especificam o comportamento do produto.
- Requisitos organizacionais: procedentes de políticas e - Prof. Tavares procedimentos nas organizações do cliente e do desenvolvedor.
- Requisitos externos: abrange os requisitos procedentes de fatores externos ao sistema e a seu processo de desenvolvimento. Incluem as caracteríticas de qualidade que o sistema deve possuir, devendo estas serem expressas quantitativamente, por meio de métricas que possam ser testadas. - Prof. Tavares
- As medições deverão ser feitas durante o teste de sistema, com a finalidade de se determinar se o sistema cumpre ou não com os requisitos.
Requisitos de Domínio
Requisitos que se originam do domínio de aplicação do sistema e que refletem características desse domínio.
- Geralmente incluem uma terminologia específica de domínio ou - Prof. Tavares fazem referência a conceitos do domínio.
- Podem ser funcionais ou não-funcionais.
Aplicação: Regras de negócio - restrições ou políticas de funcionamento específicas do domínio do problema.
Muitos problemas de Engenharia de Software têm sua origem na imprecisão da especificação de requisitos.
Qualidade é conformidade aos requisitos
O modelo de casos de uso é uma representação das funcionalidades externamente observáveis do sistema e dos elementos externos ao sistema que interagem com o mesmo.
- Esse modelo representa os requisitos funcionais do - Prof. Tavares sistema.
- Também direciona diversas das atividades posteriores do ciclo de vida do sistema de software.
- Além disso, força os desenvolvedores a moldar o sistema de acordo com as necessidades do usuário.
Utilidade dos Casos de Uso
Equipe de clientes (validação) – aprovam o que o sistema deverá fazer – entendem o que o sistema deverá fazer
- Equipe de desenvolvedores - Prof. Tavares
- Ponto de partida para refinar requisitos de software.
- Podem seguir um desenvolvimento dirigido a casos de uso.
- Designer (projetista): encontrar classes
- Testadores: usam como base para casos de teste
Composição do MCU
O modelo de casos de uso de um sistema é composto de duas partes, uma textual, e outra gráfica.
- O diagrama da UML utilizado na modelagem de gráfica é o diagrama de casos de uso. - Prof. Tavares
- Este diagrama permite dar uma visão global e de alto nível do sistema.
- É também chamado de diagrama de contexto.
- Componentes: casos de uso, atores, relacionamentos entre os elementos anteriores.
Um caso de uso é a especificação de uma seqüência de interações entre um sistema e os agentes externos.
- Define parte da funcionalidade de um sistema, sem revelar a estrutura e o comportamento internos deste sistema.
- Um modelo de casos de uso típico é formado de vários casos - Prof. Tavares de uso.
- Cada caso de uso é definido através da descrição textual das interações que ocorrem entre o(s) elemento(s) externo(s) e o sistema.
- Há várias “dimensões de estilo” para descrição de casos de uso: Grau de abstração; Formato; Grau de detalhamento.
Dimensões para Descrições Textuais
Um caso de uso é definido através da descrição textual das interações entre o(s) elemento(s) externo(s) e o sistema.
- Entretanto, a UML não define nada acerca de como essa descrição textual deve ser construída.
- Por conta disso, há várias dimensões - Prof. Tavares independentes sobres as quais a descrição textual de um caso de uso pode variar:
- Grau de abstração (essencial ou real)
- Formato (contínua, tabular, numerado)
- Grau de detalhamento (sucinta ou expandida)
Formato
Exemplo de descrição contínua
Este caso de uso inicia quanto o Cliente chega ao caixa eletrônico e insere seu cartão. O Sistema requisita a senha do Cliente. Após o Cliente fornecer sua senha e
- Exemplo de descrição contínua - Prof. Tavares esta ser validada, o Sistema exibe as opções de operações possíveis. O Cliente opta por realizar um saque. Então o Sistema requisita o total a ser sacado. O Cliente fornece o valor da quantidade que deseja sacar. O Sistema fornece a quantia desejada e imprime o recibo para o Cliente. O Cliente retira a quantia e o recibo, e o caso de uso termina.
Cliente insere seu cartão no caixa eletrônico. 2) Sistema apresenta solicitação de senha. 3) Cliente digita senha. 4) Sistema valida a senha e exibe menu de operações
- Exemplo de descrição numerada - Prof. Tavares disponíveis. 5) Cliente indica que deseja realizar um saque. 6) Sistema requisita o valor da quantia a ser sacada. 7) Cliente fornece o valor da quantia que deseja sacar. 8) Sistema fornece a quantia desejada e imprime o recibo para o Cliente 9) Cliente retira a quantia e o recibo, e o caso de uso termina.
Cliente | Sistema |
---|---|
Insere seu cartão no caixa eletrônico. | |
Apresenta solicitação de senha. | |
Digita senha. | |
Valida senha e exibe menu de operações disponíveis. | |
Solicita realização de saque. | |
Requisita quantia a ser sacada. | |
Fornece o valor da quantia que deseja sacar. | |
Fornece a quantia desejada e imprime o recibo para o Cliente | |
Retira a quantia e o recibo. |
- Exemplo de descrição tabular - Prof. Tavares
Exemplo de descrição essencial (e numerada):
- Cliente fornece sua identificação.
- Sistema identifica o usuário.
- Sistema fornece opções disponíveis para movimentação da conta. - Prof. Tavares
- Cliente solicita o saque de uma determinada quantia.
- Sistema requisita o valor da quantia a ser sacada.
- Cliente fornece o valor da quantia que deseja sacar.
- Sistema fornece a quantia desejada.
- Cliente retira dinheiro e recibo e o caso de uso termina.
Atores
Elemento externo que interage com o sistema.
- “externo”: atores não fazem parte do sistema.
- “interage”: um ator troca informações com o sistema.
- Casos de uso representam uma seqüência de interações entre o sistema e o ator. - Prof. Tavares
- no sentido de troca de informações entre eles.
- Normalmente um agente externo inicia a seqüência de interações com o sistema.
Categorias de atores:
- cargos (Empregado, Cliente, Gerente, Almoxarife, Vendedor, etc);
- organizações (Empresa Fornecedora, Agência de Impostos, Administradora de Cartões, etc); - Prof. Tavares
- outros sistemas (Sistema de Cobrança, Sistema de Estoque de Produtos, etc).
- equipamentos (Leitora de Código de Barras, Sensor, etc.)
- Essa categorização indica para nós que o conceito de ator depende do escopo do sistema.
Um ator corresponde a um papel representado em relação ao sistema.
- O mesmo indivíduo pode ser o Cliente que compra mercadorias e o Vendedor que processa vendas.
- Uma pessoa pode representar o papel de Funcionário de - Prof. Tavares uma instituição bancária que realiza a manutenção de um caixa eletrônico, mas também pode ser o Cliente do banco que realiza o saque de uma quantia.
- O nome dado a um ator deve lembrar o seu papel, em vez de lembrar quem o representa.
- e.g.: João Fernandes versus Fornecedor
Um ator representa um conjunto coerente de papéis que os usuários de casos desempenham quando interagem com o sistema
- Um caso de uso representa o que um ator quer que o sistema faça.
- Atores servem para definir o ambiente do sistema - Prof. Tavares
- Atores representam um papel exercido por uma pessoa ou por um sistema externo que interage com o sistema.
- Se comunicam enviando mensagens e/ou recebendo mensagens do sistema, conforme o caso de uso é executado
- Quando definimos o que os atores fazem e o que os casos de uso fazem, delimitamos, de forma clara, o escopo do sistema.