Você está na página 1de 10

Fundao CECIERJ - Vice Presidncia de Educao Superior a Distncia

Curso de Tecnologia em Sistemas de Computao Disciplina de Arquitetura e Projeto de Sistemas II Gabarito AD1 2 semestre de 2007. Questo 1 [1 ponto] Conceitue Processo Unificado e explique seus trs aspectos constituintes. Faa a ligao de cada um deles com sua importncia prtica do ponto de vista do cliente. Resposta: Processo Unificado um processo de software que define um conjunto de atividades necessrias para identificar os requisitos do usurio e transform-los em um sistema de software, caracterizado por ser dirigido a casos de uso, centrado na arquitetura, iterativo e incremental. Os trs aspectos a serem considerados neste processo de software so o desenvolvimento iterativo, o desenvolvimento evolutivo e o desenvolvimento gil. O desenvolvimento iterativo consiste em organizar o desenvolvimento em miniprojetos um a cada iterao , de durao curta e fixa, com atividades de anlise, projeto, programao e testes e cujo produto de cada iterao um software parcial. Possibilita, dessa forma, a verificao constante pelo cliente dos requisitos implementados, com aumento de conhecimento sobre o software e reduo de incertezas perante mudanas. No desenvolvimento evolutivo, as especificaes evoluem a cada iterao, com a construo de uma parte de software, de forma que o conhecimento sobre o software aumente. Diante de um cenrio de mudanas (requisitos, ambiente e pessoas), a abordagem evolutiva tenta evitar correes, retrabalho e implementaes de especificaes desnecessrias do cliente (requisitos que no so realmente teis ao software). J o desenvolvimento gil fundamenta-se em respostas rpidas e flexveis a mudanas, com replanejamento contnuo do projeto e entregas incrementais e constantes do software (refletindo tais mudanas). Em relao ao cliente, basta verificar que um dos pontos do manifesto gil : colaborao do cliente vem antes de negociao de contrato. Questo 2 [0,5 ponto] Liste as principais caractersticas de cada uma das quatro fases do Processo Unificado. Resposta:

Fase de Concepo: (i) menor fase do projeto; (ii) escopo ainda vago; e (iii) estimativas ainda vagas. Fase de Elaborao: (i) grande parte das atividades de anlise e projeto concludas; (ii) diminuio significativa das incertezas; e (iii) baseline da arquitetura estabelecida. Fase de Construo: (i) maior fase do projeto; e (ii) baseline de testes do produto estabelecida. Fase de Transio: (i) baseline de liberao do produto estabelecida. Questo 3 [1 ponto] Sobre conceitos de Orientao a Objetos defina: (a) classe; (b) objeto; (c) herana; (d) polimorfismo. Resposta: (a) Classe: representao computacional de entidades ou processos do mundo real. So compostas de atributos (caractersticas informaes) e mtodos (comportamentos processos) e instanciam objetos. (b) Objeto: instanciao de uma classe. Possui um conjunto de servios (interface) e sua implementao (estruturas de dados atributos, e implementao de operaes mtodos). (c) Herana: mecanismo que promove a reutilizao de software por meio do reconhecimento da similaridade entre classes de objetos, formando uma hierarquia. Define uma relao do tipo um, onde uma classe compartilha a estrutura e o comportamento definidos em uma ou mais classes. (d) Polimorfismo: propriedade derivada do fato de que objetos de diferentes classes podem reagir a uma mesma mensagem de forma diferente. Dessa forma, cada classe implementa um mtodo especfico para uma operao, possibilitando a definio de protocolos comuns. Questo 4 [0,5 ponto] Qual a importncia da modelagem para o desenvolvimento de software? Relacione, em sua resposta, implicaes de modelagem na complexidade do software. Resposta:

Por meio de modelos, a modelagem aplicada ao desenvolvimento de software auxilia: (i) no entendimento de problemas e na compreenso dos requisitos; (ii) na difuso do conhecimento e na comunicao entre os membros da equipe de projeto (linguagem homognea entre diferentes especialistas); e (iii) no teste de hipteses antes de realiz-las. Alm disso, permite expressar diferentes vises do sistema. A modelagem contribui, dessa forma, para a reduo da complexidade do software ao atuar no mbito da limitao humana lidar com cenrios de grande escala , tanto em nvel de domnio de aplicao, quanto ao longo do processo de desenvolvimento. Questo 5 [0,5 ponto] Em relao Engenharia de Requisitos: (a) explique trs de suas dificuldades, enfatizando possveis impactos sobre o cliente (quando da utilizao do software); (b) pesquise e discorra acerca de trs tcnicas de elicitao de requisitos. Resposta: (a) Dificuldades: (i) Comunicao com usurio: problemas de comunicao, ocasionados por rudos no canal (meio) ou mesmo pela falta de compreenso do cdigo utilizado (linguagem), so significativos para o entendimento dos requisitos a serem contemplados pelo projeto do sistema, o que pode resultar na agregao de funcionalidades erradas ou mesmo desnecessrias ao produto final; (ii) Mudanas constantes: solicitaes realizadas pelos clientes so passveis de alteraes freqentes, devido a mudanas gerenciais, de lgica de negcio, do arcabouo tecnolgico, dentre outras, e isso requer uma postura flexvel e dinmica dos engenheiros de software; e (iii) Diferentes formas de representao: a falta de padronizao de uso de uma forma para se representar o problema a ser resolvido e os requisitos a serem contemplados pelo sistema podem gerar distores entre desenvolvedores e gerentes e entre gerentes e clientes, ocasionando tenses desnecessrias, por falta de planejamento. (b) Tcnicas: (i) Entrevista: uma tcnica simples, muito conhecida e usada, mas que deve ser conduzida de forma estruturada a fim de evitar se tornar muito informal menos produtiva e consistir apenas em uma conversa. Engenheiros de requisitos devem elaborar formulrios com questes direcionadas para organizar as informaes que o cliente fornecer, sem perder detalhes importantes, alm de buscar evitar retrabalho ou esforos futuros desnecessrio; (ii) Reunies de Brainstorming: consistem em reunies de trocas de idias onde vrias questes so levantadas e colocadas em pauta, comeando do nvel mais geral e prosseguindo-se para um detalhamento mais especfico de idias sobre a construo do sistema; e (iii) Prototipao: uma tcnica prtica e bastante utilizada, na qual um entendimento inicial do sistema pode permitir a construo de um pequeno prottipo do sistema, a fim de exibir ao cliente o que foi assimilado a priori pelo engenheiro de requisitos acerca do que vai ser o sistema. Questo 6 [0,5 ponto]

Quais so os diagramas da UML que compem a anlise orientada a objetos? Escolha um deles e descreva seus principais elementos constituintes. Resposta: Os diagramas da UML que compem a anlise orientada a objetos so: Diagrama de Casos de Uso, Diagrama de Classes e Diagrama de Seqncia. Considerando o Diagrama de Casos de Uso, seus principais elementos componentes so: (i) caso de uso (use case): apresenta uma funcionalidade do sistema que prov ao usurio (ator) um resultado observvel. Representa um conjunto de aes que o sistema deve realizar para atender a uma funcionalidade. Serve de base para comunicao entre clientes e desenvolvedores e para guiar o processo de desenvolvimento; (ii) cenrio: consiste de uma seqncia especfica de aes e interaes entre atores e o sistema. uma instncia de caso de uso e representa uma histria particular de uso do sistema; (iii) atores: representam qualquer elemento externo que possa interagir direta ou indiretamente com o sistema. Podem ser outros sistemas, seres humanos ou dispositivos de hardware; e (iv) relaes entre casos de uso: so os relacionamentos entre funes do sistema, unidirecionais e representadas por uma seta. Podem ser de incluso (quando diversos casos de uso podem compartilhar o mesmo comportamento e este , ento, separado em um caso de uso especfico, estabelecendo-se uma relao) ou de generalizao e extenso (indica comportamento opcional/alternativo dependente de condio ponto de variao). Questo 7 [1 ponto] Quais as diferenas entre anlise e projeto de software? Resposta: A anlise se concentra na descrio do problema, e seu objetivo deve ser fazer o sistema certo, ao passo que o projeto consiste na descrio da soluo, visando fazer certo o sistema. Em suma, o projeto representa a atribuio de responsabilidades para solucionar o problema descrito na anlise, respeitando os requisitos funcionais e nofuncionais do produto. Questo 8 [0,5 ponto] Explique o que Projeto Arquitetural. Cite um exemplo diferente daquele apresentado na disciplina. Resposta: Projeto Arquitetural consiste no primeiro passo da fase de projeto, em busca da definio da arquitetura a ser utilizada no sistema a ser desenvolvido. Define a arquitetura global do sistema em termos de subsistemas, interconectados atravs de dados e fluxos de controle. A arquitetura de um sistema constitui um modelo da estrutura relativamente

pequeno e intelectualmente gerencivel, que descreve como os componentes do sistema trabalham juntos. Um exemplo de arquitetura a arquitetura cliente-servidor, que permite a distribuio do acesso ao sistema por meio da existncia de vrios clientes acessando a um servidor central. Um projeto arquitetural segundo essa arquitetura poderia definir o banco de dados como residente no componente servidor da arquitetura e as regras de negcio como residentes no componente cliente da arquitetura. Questo 9 [0,5 ponto] Em projeto de software, quais os elementos que podem compor a descrio de casos de uso concretos? Explique cada um deles. Resposta: A descrio de casos de uso concretos um dos artefatos do projeto refina a descrio de casos de uso essenciais, incluindo: (i) maquete de interface com o usurio com a identificao das widgets; (ii) utilizao das widgets identificadas durante a descrio da seqncia tpica de eventos; e (iii) atualizao da referncia cruzada, descrevendo o caso de uso essencial que serviu como base. A tcnica de maquetes til no refinamento de casos de uso. Uma maquete pode ser vista como um desenho inicial das telas do sistema e podem ser desenhadas utilizando tecnologia diferente da que ser utilizada pelo sistema. O objetivo validar as funcionalidades, e no o design propriamente dito. Alm disso, todas as widgets identificadas na descrio dos casos de uso essenciais (anlise) so utilizadas para verificar sua aplicao e necessidade e os relacionamentos entre casos de uso so explicitados pelas referncias cruzadas atualizadas. Questo 10 [0,5 ponto] A partir do diagrama de seqncia abaixo, construa um diagrama de transio de estados para a classe Jogo.

Resposta:

Questo 11 [0,5 ponto] Defina encapsulamento e apresente seus nveis, exemplificando cada um deles. Resposta: Encapsulamento um mecanismo utilizado para lidar com o aumento de complexidade, buscando exibir o que pode ser feito sem informar como feito e permitindo que a granularidade de abstrao do sistema seja alterada, criando estruturas mais abstratas. Foi concebido para proteger o acesso direto (referncia) aos atributos de uma instncia fora da classe onde estes foram declarados. Esta proteo consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe; depois, deve-se criar mtodos com acessibilidade mxima para manipular os atributos da classe. Os nveis de encapsulamento so: (i) nvel 0: completa inexistncia de encapsulamento (e.g., linhas de cdigo efetuando todas as aes); (ii) nvel 1: mdulo procedimentais (e.g., procedimentos permitindo a criao de aes complexas); (iii) nvel 2: classes de objetos (e.g., mtodos isolando o acesso s caractersticas da classe); (iv) nvel 3: pacotes de classes (e.g., conjunto de classes agrupadas, permitindo acesso diferenciado entre elas); e (v) nvel 4: componentes (e.g., interfaces providas e requeridas para fornecer funcionalidades complexas). Questo 12 [0,5 ponto] A coeso pode ser classificada em algumas categorias. Cite tais categorias e ilustre duas delas. Resposta: As categorias da coeso so: (i) coeso de instncia mista; (ii) coeso de domnio misto; (iii) coeso de papel misto; (iv) coeso alternada; (v) coeso mltipla; e (vi) coeso funcional. Um exemplo clssico de coeso de domnio misto a insero de mtodos de manipulao numrica em uma classe que representa nmeros reais (Float). A soluo para esse problema a separao das responsabilidades em classes de diferentes domnios, tirando a sobrecarga da classe Float.

Na coeso mltipla, um exemplo consiste em um mtodo ampliaEGira(int int angulo) em Figura, onde esse mtodo faz mais de uma funcionalidade ao mesmo tempo. A soluo para esse problema dividir o mtodo em dois mtodos separados.
escala,

Questo 13 [0,5 ponto] De acordo com os princpios de Projeto OO, voc considera aceitvel a criao de pr e ps condies em mtodos abstratos de uma classe? E quanto aos mtodos de uma interface? Resposta: QUESTO ANULADA Questo 14 [1 ponto] Cenrio do problema: O sistema de controle de treinamentos de uma empresa precisa identificar, para cada funcionrio da empresa, toda a sua formao at aquele momento, para poder lhe oferecer cursos do seu interesse e condizentes com o seu nvel de instruo. Para isso, existe um mtodo chamado calculaNivelInstrucao() que fornece o

nvel de instruo de um objeto da classe Funcionario (que utilizada em outros sistemas da empresa) em funo de objetos da classe Diploma, que representa os diplomas ou certificados obtidos pelo funcionrio durante a sua carreira profissional. Analise os 4 modelos abaixo, citando para cada modelo as suas vantagens e desvantagens. (a)

(b)

(c)

(d)

Resposta: QUESTO ANULADA Questo 15 [0,5 ponto] Explique o que so heursticas de projeto e para que servem.

Resposta: QUESTO ANULADA Questo 16 [0,5 ponto] Selecione uma heurstica de cada tipo (classes e objetos, topologias, relacionamentos, herana e projeto OO fsico) e explique com suas palavras a contribuio provida por cada heurstica selecionada. Resposta: QUESTO ANULADA