Baixe o app para aproveitar ainda mais
Prévia do material em texto
26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 1/13 Introdução à Análise e Projeto Orientados a Objetos É importante, principalmente para grandes projetos, diferenciar entre as atividades de Análise e Projeto. A literatura disponível não é unânime nesse sentido e algumas empresas adotam variações nestes temas na prática. Por exemplo, a distinção entre Modelo Conceitual de Análise e Modelo de Projeto não é consensuado na literatura corrente. Portanto vamos fazer algumas distinções de modo a termos uma definição clara do que é cada um dos modelos. Será o conceito que utilizaremos neste curso embora algumas literaturas ou empresas possam usar de maneira um pouco diferente. Tanto a Análise quanto o Projeto são esforços que antecedem o desenvolvimento de código. O ciclo de vida de um software contém muitas etapas, duas delas sendo tanto a Análise quanto o Projeto. Outras etapas são: Levantamento de Requisitos, Codificação, Teste, etc. Não estamos nos concentrando aqui na questão da iteração, isto é, não estamos defendendo um modelo iterativo ou cascata, simplesmente constatando a existência das diversas etapas. Algumas metodologias utilizam as etapas: Levantamento de Requisitos, Análise, Projeto, Codificação, Teste, Implantação, Manutenção. O desenvolvimento em cascata as faz sequencialmente e o desenvolvimento iterativo trabalha de maneira cíclica. A atribuição de responsabilidades de quais tarefas serão feitas pela Análise e quais serão feitas pelo Projeto é função da metodologia adotada pela empresa. Neste curso a Análise trata da modelagem do domínio do problema. O projeto trata da modelagem da solução computacional. A modelagem do problema trata de regras de negócio, estratégias, diagrama de classes de análise, casos de uso, ignorando, neste momento, a existência do mundo computacional. O projeto complementa a análise para que seja conseguida uma solução computacional para o problema. Isto inclui, por exemplo, a interface com o usuário, o banco de dados, a segurança dos dados, etc. Tecnologias de Apoio ao Projeto Orientado a Objetos Para auxiliar a desenvolver um bom projeto utilizamos a UML e uma metodologia, que podem ser, dentre outras: Ferramentas UML: • Enterprise architect • Rational Rose • Visual Paradigm • StarUML (usado neste curso) • Astah 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 2/13 Metodologia: • RUP (Rational Unified Process) dentre outras A UML é uma linguagem de modelagem. UML significa Unified Modeling Language, isto é, Linguagem de Modelagem Unificada. É utilizada para modelar softwares orientados a objetos. Atualmente é a linguagem padrão utilizada na indústria de software, com dezenas de ferramentas disponíveis no mercado para sua utilização. A UML não é uma linguagem de programação como Java e C#. É uma linguagem de notação, para modelagem. Existem vários produtos de mercado para sua utilização, dentre eles Enterprise Architect, Rational Rose, Visual Paradigm, StarUML. Neste curso utilizaremos o StarUML por ser gratuito e pode ser baixado por qualquer um. O link para baixá- lo é http://staruml.io/. A UML não é uma metodologia ou processo de desenvolvimento de software. Pode ser usada por vários processos (RUP, Scrum, XP, etc.) ou mesmo sem utilizar nenhum processo. Por que modelar software? Não é um esforço redundante e desnecessário? Por que não simplesmente sair "já programando?" Para projetos muito pequenos é possível fazer um bom sistema simplesmente "saindo programando". Para projetos minimamente significativos e importantes não é possível, dada a limitação humana em guardar um certo número de informações. E como os sistemas estão constantemente sofrendo mudanças (legislação, alterações de mercado, solicitações do cliente, etc.) é fundamental não confiarmos apenas na memória dos analistas para guardar estas informações. E quando o seu analista receber uma ótima proposta de um concorrente, quem conseguirá extrair dele as informações daquele sistema que só ele domina? Passando da Análise ao Projeto O processo de passar da análise para o projeto utilizado neste curso será: 1. Identificação dos requisitos dos usuários em forma de diagramas de Caso de Uso, Especificações de Caso de Uso e Especificações Suplementares; 2. Desenvolvimento do Modelo Conceitual (Análise) através do Diagrama de Classes contendo as Classes, seus atributos e relacionamentos (sem incluir, neste momento, os métodos das classes); 3. Desenvolvimento dos Diagramas de Seqüência para identificação da primeira solução e localização dos possíveis métodos das classes; 4. Desenvolvimento do Modelo de Domínio (Projeto) através do Diagrama de Classes, desta vez contendo as demais classes identificadas e seus métodos. Desenvolvimento dos demais diagramas UML. Exemplificaremos posteriormente estes passos. Entendendo o Projeto Orientado a Objetos Enquanto que, durante a Análise, há uma ênfase em descobrir objetos e conceitos do domínio do problema, no Projeto há a ênfase em definir objetos de software e 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 3/13 como eles colaboram para atender requisitos. Isto inclui, portanto, classes com seus atributos e métodos. Por exemplo, uma classe Veículo seria implementada em Java como abaixo: public class Veiculo { private String tipo; public list relacaoVeiculos () { ... } } O projeto orientado a objeto tem as seguintes características: • Pensamos em coisas (objetos) em vez de funções; • As funcionalidades são fornecidas em termos de serviços (métodos ou operações) oferecidos pelos objetos; • Objetos são abstrações do mundo real; • Objetos são independentes e encapsulam representações de informação e estado; • Objetos se comunicam através de mensagens. Os objetos em um projeto OO estão relacionados à solução do problema que está sendo resolvido. A programação OO realiza um projeto de software em uma linguagem de programação OO (Java ou C#). Para passar de um modelo de análise para um modelo de projeto: • Adicionamos detalhes às classes existentes (geralmente os métodos ou operações identificados nos diagramas de seqüência e comunicação (antigo diagrama de colaboração)); • Criamos novas classes para fornecer funcionalidade adicional. Abaixo um exemplo de uma classe (Funcionário) contendo atributos e métodos: 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 4/13 Os objetos se comunicam através da passagem de mensagens. As mensagens são implementadas na prática como chamadas de métodos ou operações. Por exemplo: Funcionario f1 = new Funcionario(); f1.Contratar(); Durante o projeto fazemos as seguintes ações: • Projetamos a arquitetura do sistema; • Desenvolvemos os diagramas de comunicação; • Refinamos os diagramas de seqüência produzidos na análise; • Especificamos as interfaces dos objetos. Uma vez definidas as interações entre o sistema projetado e o ambiente, utilizamos estas informações para estabelecer a arquietura do sistema. É recomendável utilizarmos a arquitetura em camadas (n-tier). • A camada de visão (interface gráfica) faz as interações com os atores; • A camada de integração de dados gerencia os dados que serão persistidos; • A camada de regras de negócio. Uma arquitetura de software muito utilizada é a MVC. Embora MVC não signifique exatamente desenvolvimento em camadas, os dois são muito utilizados. MVC será discutido posteriormente.Introdução à Arquitetura de Software A adoção de uma arquitetura correta para o software ajuda a gerenciar a complexidade do mesmo. 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 5/13 A arquitetura do software define sua estrutura e inclui seus componentes e relacionamento entre eles. Arquitetura enfatiza a separação de interesses em funcionalidade e interação. Vantagens da Arquitetura de Software: • Facilita o reuso (por exemplo, estilos (CSS) e padrões de projeto (MVC, Factory, etc.)); • Facilita a evolução do software; • Facilita a manutenção do mesmo; • Facilita a comunicação entre as partes envolvidas; Estilos Arquiteturais definem famílias arquiteturais e não apenas um sistema. Exemplos: • Cliente-Servidor • Camadas (layered) A arquitetura serve como base para as atividades de análise, projeto e implementação de software. A definição de arquitetura pela ISO/IEEE 1471-2000 é a seguinte: "Arquitetura é a organização fundamental de um sistema incorporada em seus componentes, seus relacionamentos com o ambiente, e os princípios que conduzem seu design e evolução." A arquitetura, portanto, compreende estrutura (elementos ou componentes) , relações e decisões, adicionada a uma importante preocupação: a evolução do software. Evolução do software é o fenômeno de mudança que ocorre no software ao longo dos anos e versões, desde seu início até o final de sua vida útil. A arquitetura de um sistema deve definir os elementos que formarão o software. Tais elementos definem como o software é particionado em pedaços menores e, assim, definem como o software é entendido. Elementos arquiteturais são divididos em dois tipos: elementos estáticos e elementos dinâmicos. Os elementos estáticos de um sistema de software definem as partes do sistema e qual sua organização. Esse tipo de elemento reflete o sistema durante o design e é constituído de elementos de software (e.g., módulos, classes, pacotes, procedimentos, ou ainda serviços autocontidos), elementos de dados (e.g., entidades e tabelas de bancos de dados, arquivos de dados, ou classes de dados), e elementos de hardware (e.g., computadores em que o sistema vai executar, ou outros tipos de hardware que o sistema usará: roteadores, cabos, ou impressoras). Elementos estáticos não consistem apenas das partes estáticas do sistema, mas também como eles se relacionam entre si. Associações, composições, e outros tipos de relações entre elementos de software, de dados, e de hardware formam o aspecto estático que compõe a arquitetura do sistema. Por outro lado, elementos dinâmicos definem o comportamento do sistema. Esse tipo de elemento reflete o sistema durante a execução e nele estão incluídos 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 6/13 processos, módulos, protocolos, ou classes que realizam comportamento. Elementos dinâmicos também descrevem como o sistema reage a estímulos internos e externos. Uma arquitetura não deve ter suas estruturas definidas aleatoriamente, uma vez que são elas que permitem o sucesso relativo aos objetivos do sistema. Dessa maneira, é trabalho do arquiteto definir essas estruturas em meio às alternativas de design arquitetural existentes. O arquiteto deve decidir entre as alternativas, particionando o sistema em elementos e relações que possibilitarão o atendimento aos atributos de qualidade. Essas decisões são chamadas decisões arquiteturais. A possibilidade de se rastrear requisitos na arquitetura é uma característica importante porque facilita o entendimento e a manutenção do sistema representado pela arquitetura. O entendimento do sistema é facilitado porque uma arquitetura permite que um interessado qualquer navegue pelos elementos que compõem o sistema em dois sentidos: tanto do nível mais abstrato do sistema para seus níveis mais concretos, ou seja, dos requisitos para os elementos arquiteturais, como módulos, bibliotecas, serviços, ou classes; quanto dos níveis concretos da arquitetura para os níveis mais abstratos, ou seja, dos elementos arquiteturais para os requisitos do sistema. Um documento de arquitetura não é nada mais que um documento que descreve a arquitetura do sistema e, portanto, descreve elementos, relações, e decisões arquiteturais do sistema em questão. Assim, os benefícios de se documentar a arquitetura se tornam análogos aos benefícios proporcionados pela própria arquitetura. No entanto, pelo documento de arquitetura ser um artefato concreto, ele poderá ser reproduzido, reusado, comunicado e analisado contra o código gerado a partir da arquitetura em questão. No entanto, documentar a arquitetura é tão ou mais difícil que criá-la. Os principais motivos são três: o documento reflete a complexidade da arquitetura, que geralmente é alta; o documento reflete o tamanho da arquitetura, que o torna custoso para construir e ser lido; e o documento, por seu tamanho e complexidade, é difícil de manter consistente com o sistema que ele descreve. Diferença entre Arquitetura e Projeto Projeto · Objetiva a realização do sistema como uma entidade funcional · Faz parte do software life-cycle (ciclo de vida do software) · Resulta dos requisitos técnicos que o sistema deve satisfazer. Arquitetura · Considera um maior escopo de requisitos : confiabilidade, baixo custo, modificabilidade, segurança, turnover de pessoal, time-to-market · horizonte de tempo que extrapola a vida de um sistema em particular · Representa a organização que a co-produz Exercício 1: 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 7/13 Passar da análise para o projeto é um processo que deve ser feito tecnicamente. Para isto existem ferramentas e metodologias que permitem acompanhar cada passo do processo. A respeito da passagem da análise para o projeto escolha a opção correta. A) Uma metodologia deve obrigatoriamente fazer uma passagem sequencial da fase de análise para a fase de projeto, jamais paralelamente. B) É possível que as atividades de projeto sejam paralelas às atividades de análise em um determinado momento do desenvolvimento. C) A análise e o projeto envolvem basicamente as mesmas atividades, não havendo diferença significativa entre os dois processos. D) Trabalhar com análise envolve o mesmo grupo de diagramas da UML utilizados no projeto. E) Não podemos voltar ao processo de análise após iniciarmos o processo de projeto. Comentários: Essa disciplina não é ED ou você não o fez comentários Exercício 2: UML significa Unified Modelling Language, que podemos traduzir como Linguagem de Modelagem Unificada. A UML é uma linguagem porque tem sintaxe e semântica. A sintaxe significa a maneira correta de escrever e a semântica identifica os significados dos símbolos usados pela UML. A respeito da UML escolha a opção incorreta. A) 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 8/13 A UML é uma linguagem de modelagem porque permite apresentar um sistema complexo em forma de modelos, mais simples e gerenciáveis. B) Os diagramas da UML contém regras de como desenhá-los e como utilizar seus símbolos. C) Os diagramas da UML mostram representações diferentes para o mesmo sistema, sendo que uma representação pode ser em termos de funcionalidades, outra em termos de classes e objetos e ainda uma outra em termo de atividades. D) A UML mostra diagramas que podem e devem serdesenvolvidos independentemente dos outros, de modo a manter as equipes trabalhando sem precisar interagir com as outras. E) A UML permite uma documentação mais ampla e completa do sistema, através de seus diversos diagramas. Comentários: Essa disciplina não é ED ou você não o fez comentários Exercício 3: Para desenvolvermos um sistema podemos utilizar muitos ferramentas e metodologias. Uma ferramenta seria, por exemplo, uma IDE - Ambiente Integrado de Desenvolvimento como Eclipse e Visual Studio, ou uma linguagem de programação como Java e C#. Uma metodologia poderia ser, por exemplo, o RUP - Rational Unified Process ou Scrum. A respeito de tecnologia, considere as afirmações abaixo: I. Uma tecnologia usada implica a exclusão de outra tecnologia, isto é, se usarmos Java não poderemos usar .net em uma empresa. II. O uso de uma metodologia de desenvolvimento deve tornar o desenvolvimento de sistemas mais seguro e confiável. III. Uma adequada combinação de metodologia e ferramentas contribui para um robusto processo de desenvolvimento na empresa. As afirmativas corretas são: 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 9/13 A) Apenas a I. B) As afirmativas II e III. C) As afirmativas I e II D) Apenas a afirmativa II. E) Apenas a afirmativa III. Comentários: Essa disciplina não é ED ou você não o fez comentários Exercício 4: No processo de passar da Análise (modelo conceitual) para o projeto (modelo da solução), passamos do domínio do problema para o domínio da solução. Neste processo fazemos o detalhamento e refinamento dos diagramas UML. Escolha qual das 5 opções é a mais correta sobre a alteração dos diagramas. A) O diagrama de caso de uso não será alterado porque na passagem da análise para o projeto não podem aparecer novas funcionalidades. B) Qualquer diagrama poderá ser alterado desde que haja uma justificativa plausível. C) O diagrama de classes será alterado para incluir as novas funcionalidades que aparecerem ao levantarmos os requisitos não funcionais do sistema. 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 10/13 D) Somente o diagrama de classes poderá ser alterado, para incluir os métodos (ou operações) identificados no diagrama de seqüência. E) Nenhum diagrama deverá ser alterado porque o projeto é um passo diferente da análise. Comentários: Essa disciplina não é ED ou você não o fez comentários Exercício 5: Quantas afirmações abaixo estão incorretas? 1. A UML é uma linguagem que pode ser usada tanto para análise quanto para projeto de software; 2. A UML é uma linguagem adequada para a análise mas não permite o correto projeto de um software; 3. A UML contém um conjunto de diagramas que permite um adequado processo de análise e projeto de software, embora não permita a identificação dos requisitos do sistema; 4. A UML depende de uma determinada metodologia ou processo (por exemplo, o RUP) para que possa ser usada corretamente; 5. A UML é uma linguagem de notação visual que permite o desenvolvimento de vários modelos, inclusive de análise e projeto. A) 1 (uma) afirmação incorreta. B) 2 (duas) afirmações incorretas. C) 3 (três) afirmações incorretas. D) 4 (quatro) afirmações incorretas. E) 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 11/13 5 (cinco) afirmações incorretas. Comentários: Essa disciplina não é ED ou você não o fez comentários Exercício 6: Conforme o RUP a Arquitetura de Software é: um conceito de fácil compreensão e que a maioria dos engenheiros entende de modo intuitivo, especialmente quando se tem um pouco de experiência. No entanto, é difícil defini-lo com precisão. Em particular, é difícil desenhar uma linha bem definida entre o design e a arquitetura — a arquitetura é um aspecto do design que se concentra em alguns recursos específicos. Em An Introduction to Software Architecture, David Garlan e Mary Shaw sugerem que a arquitetura de software é um nível de design voltado para questões que vão: "além dos algoritmos e das estruturas de dados da computação. A projeção e a especificação da estrutura geral do sistema emergem como um novo tipo de problema. As questões estruturais incluem organização total e estrutura de controle global; protocolos de comunicação, sincronização e acesso a dados; atribuição de funcionalidade a elementos de design; distribuição física; composição de elementos de design; escalonamento e desempenho; e seleção entre as alternativas de design." Escolha a alternativa incorreta sobre arquitetura. A) O modelo de caso de uso faz parte da arquitetura do sistema. B) A divisão em camadas, que é um padrão organizacional, não faz parte da arquitetura do sistema. C) A arquitetura se preocupa com elementos essenciais do software, como os casos de uso críticos, as classes principais e não com todos os detalhes presentes nos modelos. D) As visões da arquitetura são simplificações ou abstrações do projeto inteiro, reforçando determinadas características e não entrando em todos os detalhes E) 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 12/13 A arquitetura se preocupa com a evolução do sistema e sua facilidade de manutenção. Comentários: Essa disciplina não é ED ou você não o fez comentários Exercício 7: Quantas afirmações abaixo estão corretas a respeito da Arquitetura de Sistema? 1. O MVC é um padrão muito utilizado em sistemas interativos; 2. O padrão em camadas é muito utilizado em sistemas grandes que requerem decomposição; 3. A arquitetura do sistema é resultante dos trabalhos de análise e projeto de um sistema. Nestas atividades a arquitetura é desenvolvida, refinada e aprimorada; 4. É importante que a arquitetura seja documentada; 5. A arquitetura deve contemplar tanto os requisitos funcionais quanto os não funcionais. A) 1 (uma) afirmação correta. B) 2 (duas) afirmações corretas. C) 3 (três) afirmações corretas. D) 4 (quatro) afirmações corretas. E) 5 (cinco) afirmações corretas. Comentários: Essa disciplina não é ED ou você não o fez comentários Exercício 8: 26/09/2018 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos. https://online.unip.br/imprimir/imprimirconteudo 13/13 Quantas afirmações abaixo estão incorretas a respeito da Arquitetura de Sistema? 1. Uma arquitetura tem somente uma visão arquitetural, que é a visão dos processos; 2. Além das visões arquiteturais mais comuns (caso de uso, classes de projeto, implementação, etc.) é possível adicionar outras visões se forem importantes para a definição completa da arquitetura; 3. Um framework de arquitetura é um exemplo de um conjunto de componentes nos quais se pode criar uma determinada arquitetura; 4. A mesma arquitetura usada em Sistemas Distribuídos pode ser usada em um sistema Desktop sem modificações; 5. A arquitetura é um aspecto do projeto que se concentra em alguns recursos específicos. A) 1 (uma) resposta incorreta. B) 2 (duas) respostas incorretas. C) 3 (três) respostas incorretas. D) 4 (quatro) respostas incorretas. E) 5 (cinco) respostas incorretas. Comentários: Essa disciplina não é ED ou você não o fez comentários
Compartilhar