Informtica Anlise e Projeto de Sistemas Nilton Alves Maia Snia Beatriz de Oliveira e Silva Maia
Ministrio da Educao e-Tec Brasil/CEMF/Unimontes Escola Tcnica Aberta do Brasil Informtica Anlise e Projeto de Sistemas Nilton Alves Maia Snia Beatriz de Oliveira e Silva Maia Montes Claros - MG 2011 Ministro da Educao Fernando Haddad Secretrio de Educao a Distncia Carlos Eduardo Bielschowsky Coordenadora Geral do e-Tec Brasil Iracy de Almeida Gallo Ritzmann Governador do Estado de Minas Gerais Antnio Augusto Junho Anastasia Secretrio de Estado de Cincia, Tecnologia e Ensino Superior Alberto Duque Portugal Reitor Joo dos Reis Canela Vice-Reitora Maria Ivete Soares de Almeida Pr-Reitora de Ensino Anette Marlia Pereira Diretor de Documentao e Informaes Huagner Cardoso da Silva Coordenador do Ensino Profssionalizante Edson Crisstomo dos Santos Diretor do Centro de Educao Profssonal e Tecnlogica - CEPT Masa Tavares de Souza Leite Diretor do Centro de Educao Distncia - CEAD Jnio Marques Dias Coordenadora do e-Tec Brasil/Unimontes Rita Tavares de Mello Coordenadora Adjunta do e-Tec Brasil/ CEMF/Unimontes Eliana Soares Barbosa Santos Coordenadores de Cursos: Coordenador do Curso Tcnico em Agronegcio Augusto Guilherme Dias
Coordenador do Curso Tcnico em Comrcio Carlos Alberto Meira
Coordenador do Curso Tcnico em Meio Ambiente Edna Helenice Almeida Coordenador do Curso Tcnico em Informtica Frederico Bida de Oliveira Coordenadora do Curso Tcnico em Vigilncia em Sade Simria de Jesus Soares Coordenadora do Curso Tcnico em Gesto em Sade Zaida ngela Marinho de Paiva Crispim ANLISE E PROJETO DE SISTEMAS e-Tec Brasil/CEMF/Unimontes Elaborao Nilton Alves Maia Snia Beatriz de Oliveira e Silva Maia Projeto Grfco e-Tec/MEC Superviso Wendell Brito Mineiro Diagramao Hugo Daniel Duarte Silva Marcos Aurlio de Almeida e Maia Impresso e Acabamento Grfca RB Digital Designer Instrucional Anglica de Souza Coimbra Franco Ktia Vanelli Leonardo Guedes Oliveira Reviso Maria Ieda Almeida Muniz Patrcia Goulart Tondineli Rita de Cssia Silva Dionsio Presidncia da Repblica Federativa do Brasil Ministrio da Educao Secretaria de Educao a Distncia e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 3 Prezado estudante, Bem-vindo ao e-Tec Brasil/Unimontes! Voc faz parte de uma rede nacional pblica de ensino, a Escola Tcnica Aberta do Brasil, instituda pelo Decreto n 6.301, de 12 de dezem- bro 2007, com o objetivo de democratizar o acesso ao ensino tcnico pblico, na modalidade a distncia. O programa resultado de uma parceria entre o Ministrio da Educao, por meio das Secretarias de Educao a Distancia (SEED) e de Educao Profssional e Tecnolgica (SETEC), as universidades e escola tcnicas estaduais e federais. A educao a distncia no nosso pas, de dimenses continentais e grande diversidade regional e cultural, longe de distanciar, aproxima as pes- soas ao garantir acesso educao de qualidade, e promover o fortalecimen- to da formao de jovens moradores de regies distantes, geografcamente ou economicamente, dos grandes centros. O e-Tec Brasil/Unimontes leva os cursos tcnicos a locais distantes das instituies de ensino e para a periferia das grandes cidades, incenti- vando os jovens a concluir o ensino mdio. Os cursos so ofertados pelas instituies pblicas de ensino e o atendimento ao estudante realizado em escolas-polo integrantes das redes pblicas municipais e estaduais. O Ministrio da Educao, as instituies pblicas de ensino tc- nico, seus servidores tcnicos e professores acreditam que uma educao profssional qualifcada integradora do ensino mdio e educao tcnica, no s capaz de promover o cidado com capacidades para produzir, mas tambm com autonomia diante das diferentes dimenses da realidade: cul- tural, social, familiar, esportiva, poltica e tica. Ns acreditamos em voc! Desejamos sucesso na sua formao profssional! Ministrio da Educao Janeiro de 2010 Apresentao e-Tec Brasil/CEMF/ Unimontes e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 5 Indicao de cones Os cones so elementos grfcos utilizados para ampliar as formas de linguagem e facilitar a organizao e a leitura hipertextual. Ateno: indica pontos de maior relevncia no texto. Saiba mais: oferece novas informaes que enriquecem o assunto ou curiosidades e notcias recentes relacionadas ao tema estudado. Glossrio: indica a defnio de um termo, palavra ou expresso utilizada no texto. Mdias integradas: possibilita que os estudantes desenvolvam atividades empregando diferentes mdias: vdeos, flmes, jornais, ambiente AVEA e outras. Atividades de aprendizagem: apresenta atividades em diferentes nveis de aprendizagem para que o estudante possa realiz-las e conferir o seu domnio do tema estudado. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital Sumrio 7 Palavra do professor conteudista .............................................9 Projeto instrucional ........................................................... 11 Aula 1 Sistema de informaes ............................................ 13 1.1 Introduo ............................................................ 13 1.2 Conceito de sistema de informaes ............................. 13 Resumo ................................................................... 14 Atividades de aprendizagem ........................................... 14 Aula 2 Modelagem de sistemas de software ............................. 15 2.1 Introduo ........................................................... 15 2.2 Construo de sistemas de software ............................. 15 Resumo ................................................................... 17 Atividades de aprendizagem ........................................... 17 Aula 3 O paradigma da orientao a objetos ............................ 19 3.1 Introduo ........................................................... 19 3.2 Classes e objetos .................................................... 21 3.3 Mensagens ........................................................... 21 3.4 Viso geral dos princpios da orientao a objetos ............ 22 Resumo ................................................................... 25 Atividades de aprendizagem ........................................... 25 Aula 4 Evoluo histrica da modelagem de sistemas .................. 27 4.1 Introduo ........................................................... 27 4.2 Resumo histrico .................................................... 27 Resumo ................................................................... 28 Atividades de aprendizagem ........................................... 28 Aula 5 A linguagem de modelagem unifcada (UML) .................... 29 5.1 Introduo ........................................................... 29 5.2 Em que a UML pode me ajudar? .................................. 30 5.3 Por que a UML uma linguagem?................................. 30 5.4 Que caminho deve ser seguido para aprend-la? ............... 31 5.5 UML e o desenvolvimento de software .......................... 31 Resumo ................................................................... 31 Atividades de aprendizagem ........................................... 31 Aula 6 O processo de desenvolvimento de software ................... 33 6.1 Introduo ........................................................... 33 6.2 Atividades tpicas de um processo de desenvolvimento ....... 34 Resumo ................................................................... 39 Atividades de aprendizagem ........................................... 40 Aula 7 Modelagem Baseada em UML ...................................... 41 7.1 Introduo ............................................................ 41 7.2 Um breve histrico .................................................. 42 e-Tec Brasil/CEMF/Unimontes Informtica 8 7.3 Diagramas da UML .................................................. 43 7.4 Processo adotado neste caderno .................................. 45 7.5 Casos de uso ......................................................... 46 7.6 Classes ................................................................ 53 7.7 Interaes ............................................................ 65 7.8 Componentes de software ........................................ 77 Resumo ................................................................... 84 Atividades de aprendizagem ........................................... 84 Aula 8 Estudo de caso ...................................................... 85 8.1 Introduo ........................................................... 85 Referncias ..................................................................... 86 Currculos dos professores conteudistas ................................... 87 e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 9 Bem-vindos caros alunos! A partir do contedo trabalhado neste caderno, que trata-se da disciplina Anlise e Projeto de Sistemas, voc aprender a utilizar diversos recursos para modelagem de sistemas. Voc aprender sobre a anlise e projeto de sistemas, entender sobre a caracterizao e aplicao de metodologias e ferramentas de mo- delagem de sistemas orientados a objetos, aprender sobre aplicaes de metodologias de desenvolvimento de sistemas de software, ter uma reviso dos mtodos de desenvolvimento de software, aprender sobre aplicao de metodologia atravs de experincia prtica de desenvolvimento de softwa- re, tambm aprender a empregar aspectos fundamentais no processo de desenvolvimento visando maior qualidade do produto de software. Ao longo deste material, voc encontrar diversas atividades a se- rem desenvolvidas durante o decorrer da disciplina. Assim, ao resolv-las, possvel realizar uma reviso do que foi apresentado e refetir sobre a impor- tncia do contedo trabalhado e como ele poder ajud-lo em seu cotidiano, principalmente como aluno de um curso tcnico e futuro profssional. Este caderno est dividido em oito aulas e seu contedo ser apre- sentado no encontro presencial deste curso. Como complementao de estu- do, algumas atividades sero propostas, alm de apresentao de curiosida- des, destaques para conceitos importantes. Vamos nos empenhar para aproveitar ao mximo o contedo dessa disciplina? Bom trabalho! Palavra do professor conteudista e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 11 Disciplina: Anlise e Projeto de Sistemas (carga horria: 60h). Ementa: Introduo anlise e projeto de sistemas. Caracterizao e aplicao de metodologias e ferramentas de modelagem de sistemas orien- tados a objetos. Apresentao e aplicao de uma metodologia de desenvol- vimento de sistemas de software. Reviso dos mtodos de desenvolvimento de software. Aplicao de metodologia atravs de experincia prtica de desenvolvimento de software. Empregar aspectos fundamentais no processo de desenvolvimento visando maior qualidade do produto de software. AULA OBJETIVOS DE APRENDIZAGEM MATERIAIS CARGA HORRIA Aula 1. Sistemas de informaes - Conhecer conceitos sobre infor- mao, sistemas de informao e sistemas de software. 4h Aula 2. Modelagem de sistemas de software - Conhecer as caractersticas de sistemas de software; - Entender o conceito de modelo no desenvolvimento de sistemas; - Compreender o conceito do prin- cpio da abstrao; - Entender a importncia da comu- nicao entre as pessoas envolvidas no processo de desenvolvimento de sistemas. 4h Aula 3. O paradigma da orientao a objetos - Conhecer o conceito de paradig- ma; - Compreender o conceito de para- digma da orientao a objetos; - Conhecer os princpios da orienta- o a objetos; - Conhecer o conceito de classes, objetos, mensagens; - Conhecer os princpios do paradig- ma da orientao a objetos. 8h Aula 4. Evoluo hist- rica da modela- gem de sistemas - Conhecer o histrico da evoluo das tcnicas de desenvolvimento de sistemas. 2h Projeto instrucional e-Tec Brasil/CEMF/Unimontes Informtica 12 Aula 5. A linguagem de modelagem uni- fcada UML - Saber em que a UML pode nos ajudar; - Saber por que a UML uma lin- guagem; - Conhecer os caminhos que deve- mos seguir para aprender a UML; e - Conhecer a UML e o processo de desenvolvimento de software. 6h Aula 6. O processo de desenvolvimen- to de software - Conhecer as atividades tpicas de um processo de desenvolvimento de software; - Compreender a importncia de cada atividade no decorrer de um processo de desenvolvimento de software. 4h Aula 7. Modelagem Ba- seada em UML - Conhecer um breve histrico da UML; - Conhecer os principais diagramas da UML; - Saber a identifcar um caso de uso; - Aprender a identifcar atores; - Aprender a desenhar um diagrama de caso de uso; - Conhecer os cuidados necessrios ao se criar diagramas de caso de uso; - Aprender a identifcar classes; - Aprender a identifcar relaciona- mentos; - Conhecer extenses e mecanis- mos; - Aprender a desenhar diagramas de classes; - Conhecer os tipos de diagramas de interao; - Conhecer o diagrama de colabo- rao; - Conhecer diagramas de sequncia; - Aprender a desenhar diagramas de sequncia; - Aprender sobre os diagramas de estados e sua funo; - Aprender a desenhar diagramas de estados; - Aprender sobre diagramas de atividades; - Aprender a desenhar diagramas de atividades; - Conhecer componentes de software; - Aprender a desenhar diagramas de componentes; - Aprender a desenhar diagramas de implantao. 24h Aula 8. Estudo de caso - Criar um projeto de software utilizando conhecimentos de orien- tao a objetos e da linguagem de modelagem unifcada. 8h e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 13 Aula 1 Sistema de informaes Objetivos - Conhecer conceitos sobre informao, sistemas de informao e sistemas de software. 1.1 Introduo No decorrer da histria, diversos tipos de bens serviram de base para o desenvolvimento da economia. Propriedade, mo de obra, mquinas e capital so exemplos desses bens. Atualmente, est surgindo um novo tipo de bem econmico: a informao. Dessa forma, a empresa que dispe de mais informaes sobre seus processos de negcio est em vantagem em relao a suas competidoras (BEZERRA, 2002). Em consequuncia do crescimento da importncia da informao, surgiu a necessidade de gerenciar informaes de uma forma adequada e efciente e, dessa necessidade, surgiram os denominados sistemas de infor- maes (BEZERRA, 2002). 1.2 Conceito de sistema de informaes Um sistema de informaes uma combinao de pessoas, dados, processos, interfaces, redes de comunicao e tecnologia que interagem com o objetivo de dar suporte e melhorar o processo de negcio de uma organizao empresarial com relao s informaes que nela fuem. Consi- derando o carter estratgico da informao nos dias de hoje, pode-se dizer tambm que os sistemas de informaes tm o objetivo de prover vantagens para uma organizao do ponto de vista competitivo (BEZERRA, 2002). O objetivo principal e fnal da construo de um sistema de infor- maes a adio de valor empresa ou organizao na qual esse sistema ser utilizado. O termo adio de valor implica que a produtividade nos processos da empresa na qual o sistema de informaes ser utilizado deve aumentar de uma forma signifcativa, de tal forma a compensar os recursos utilizados na construo do sistema. Para que um sistema de informaes adicione valor a uma organizao, tal sistema deve ser economicamente jus- tifcvel (BEZERRA, 2002). O desenvolvimento de um sistema de informaes uma tarefa das mais complexas. Um dos seus componentes denominado sistema de e-Tec Brasil/CEMF/Unimontes Informtica 14 software. Esse componente compreende os mdulos funcionais computado- rizados que interagem entre si para proporcionar ao(s) usurio(s) do sistema a automatizao de diversas tarefas (BEZERRA, 2002). Resumo Nesta aula, voc aprendeu: conceitos sobre informao, sistemas de informao e sistemas de software. Atividades de aprendizagem 1) Conceitue informao? 2) Qual o conceito de sistemas de informao? 3) Qual o objetivo dos sistemas de informao? 4) Conceitue sistemas de software? e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 15 Aula 2 Modelagem de sistemas de software Objetivos - Conhecer as caractersticas de sistemas de software; - Entender o conceito de modelo no desenvolvimento de sistemas; - Compreender o conceito do princpio da abstrao; - Entender a importncia da comunicao entre as pessoas envolvi- das no processo de desenvolvimento de sistemas. 2.1 Introduo Uma caracterstica importante dos sistemas de software a com- plexidade de seu desenvolvimento. Esta complexidade cresce medida que cresce o tamanho do sistema. Para se ter uma ideia da complexidade en- volvida na construo de alguns sistemas, considere o tempo e os recur- sos materiais necessrios para se construir uma casa de um cachorro. Para construir essa casa, provavelmente tudo de que se precisa de algumas ripas de madeira, alguns pregos, uma caixa de ferramentas e certa dose de amor por seu cachorro. Depois de alguns dias, a casa estaria pronta. O que dizer da construo de uma casa para sua famlia? Certamente tal emprei- tada no seria realizada to facilmente. O tempo e os recursos necessrios seriam uma ou duas ordens de grandeza maiores do que o necessrio para a construo da casa de cachorro. O que dizer, ento, da construo de um edifcio? Certamente, para se construir habitaes mais complexas (casas e edifcios), algum planejamento adicional necessrio. Engenheiros e arqui- tetos constroem plantas dos diversos elementos da habitao antes do incio da construo propriamente dita. Na terminologia da construo civil, plan- tas hidrulicas, eltricas, de fundao, entre outras so projetadas e devem manter consistncia entre si. Provavelmente, uma equipe de profssionais es- taria envolvida na construo e aos membros dessa equipe seriam delegadas diversas tarefas, no tempo adequado para cada uma delas (BEZERRA, 2002). 2.2 Construo de sistemas de software Na construo de sistemas de software, assim como na construo de sistemas habitacionais, tambm h um aumento de complexidade. Para a construo de sistemas de software mais complexos, tambm necessrio um planejamento inicial anterior. O equivalente ao projeto das plantas da engenharia civil tambm deve ser realizado. Essa necessidade leva ao con- ceito de modelo, to importante no desenvolvimento de sistemas. De uma e-Tec Brasil/CEMF/Unimontes Informtica 16 perspectiva mais ampla, um modelo pode ser visto como uma representao idealizada de um sistema a ser construdo. Maquetes de edifcios, de avies e plantas de circuitos eletrnicos so apenas alguns exemplos de modelos. So vrias as razes para a utilizao de modelos durante a construo de sistemas (BEZERRA, 2002). Portanto, a utilizao de modelos durante o processo de construo de sistemas ocorre em funo dos seguintes motivos: Gerenciamento da complexidade: uma das principais razes pelas quais modelos so utilizados que h limitaes no ser humano em lidar com a complexidade. Pode haver diversos modelos de um mesmo sistema, cada modelo descrevendo uma perspectiva do sistema a ser construdo. Por exemplo, um avio pode ter um modelo para representar sua parte eltri- ca, outro modelo para representar sua parte aerodinmica, etc. Atravs de modelos de um sistema, os indivduos envolvidos no seu desenvolvimento podem fazer estudos e predizer comportamentos do sistema em desenvolvi- mento. Como cada modelo representa uma perspectiva do sistema, detalhes irrelevantes que podem difcultar o entendimento do sistema podem ser ig- norados por um momento estudando-se separadamente cada um dos mode- los. Alm disso, modelos se baseiam no denominado Princpio da Abstrao, o qual advoga que s as caractersticas relevantes resoluo de um problema devem ser consideradas. Modelos revelam as caractersticas essenciais de um sistema; detalhes no-relevantes e que s aumentariam a complexidade do problema podem ser ignorados (BEZERRA, 2002). Comunicao entre as pessoas envolvidas: certamente, o desenvolvi- mento de um sistema envolve a execuo de uma quantidade signifcativa de atividades. Essas atividades se traduzem em informaes sobre o sistema em desenvolvimento. Grande parte dessas informaes corresponde aos mo- delos criados para representar o sistema. Nesse sentido, os modelos de um sistema servem tambm para promover a difuso de informaes relativas ao sistema entre os indivduos envolvidos em sua construo. Alm disso, diferentes expectativas em relao ao sistema geralmente aparecem quando da construo dos seus modelos, j que estes servem como um ponto de referncia comum (BEZERRA, 2002). Reduo dos custos no desenvolvimento: no desenvolvimento de sis- temas, seres humanos esto invariavelmente sujeitos a cometerem erros, que podem ser tanto erros individuais,quanto erros de comunicao entre os membros da equipe. Certamente, a correo desses erros menos custosa quando detectada e realizada ainda no(s) modelo(s) do sistema (por exem- plo, muito mais fcil corrigir uma maquete do que pr abaixo uma parte de um edifcio). Lembre-se: modelos de sistemas so mais baratos de construir do que sistemas. Consequuentemente, erros identifcados sobre modelos tm um impacto menos desastroso (BEZERRA, 2002). Predio do comportamento futuro do sistema: o comportamento do sis- tema pode ser discutido atravs da anlise dos seus modelos. Os modelos ser- vem como um laboratrio, onde diferentes solues para um problema rela- cionado construo do sistema podem ser experimentadas (BEZERRA, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 17 Uma outra questo importante sobre como so construdos os modelos de sistemas de software. Em construes civis, frequuentemente h profssionais analisando as plantas da construo sendo realizadas. A partir dessas, que podem ser vistas como modelos, os homens tomam decises sobre o andamento da obra. Modelos de sistemas de software no so muito diferentes dos modelos de sistemas da construo civil. Nas prximas aulas, apresentaremos diversos modelos cujos componentes so desenhos grfcos que seguem algum padro lgico. Esses desenhos so normalmente deno- minados diagramas. Um diagrama uma apresentao de uma coleo de elementos grfcos que possuem um signifcado predefnido (BEZERRA, 2002). Atravs de desenhos grfcos que modelam o sistema os desenvol- vedores tm uma representao concisa do sistema. No entanto, modelos de sistemas de software tambm so compostos de informaes textuais. Em- bora um diagrama consiga expressar diversas informaes de forma grfca, em diversos momentos h a necessidade de adicionar informaes na forma de texto, com o objetivo de explicar ou defnir certas partes desse diagrama. Dado um modelo de uma das perspectivas de um sistema, diz-se que os seus diagramas, juntamente com a informao textual associada, formam a docu- mentao desse modelo (BEZERRA, 2002). Resumo Nesta aula, voc aprendeu: sobre as caractersticas de sistemas de software; sobre o conceito de modelo no processo de desenvolvimento de sistemas; sobre o conceito do princpio da abstrao; e sobre a importncia da comunicao entre as pessoas envolvidas no processo de desenvolvimento de sistemas. Atividades de aprendizagem 1) Cite uma caracterstica de sistemas de software? 2) D o conceito de modelo no processo de desenvolvimento de sistemas de informao? 3) D o conceito do princpio da abstrao? 4) Quais so as razes da utilizao de modelos para a construo de siste- mas de informaes? A modelagem de sistemas de software consiste na utilizao de notaes grfcas e textuais com o objetivo de construir modelos que representam as partes essenciais de um sistema, considerando- se diversas perspectivas diferentes e complementares. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 19 Aula 3 O paradigma da orientao a objetos Objetivos - Conhecer o conceito de paradigma; - Compreender o conceito de paradigma da orientao a objetos; - Conhecer os princpios da orientao a objetos; - Conhecer o conceito de classes, objetos, mensagens; - Conhecer os princpios do paradigma da orientao a objetos. 3.1 Introduo Um conceito essencial para o desenvolvimento atual de sistemas de software o paradigma da orientao a objetos. Esta aula descreve o signifca- do desse termo e justifca por que a orientao a objetos importante para a modelagem de sistemas. Pode-se comear pela defnio da palavra paradigma. Essa palavra possui diversos signifcados distintos, mas o que mais se aproxima do signi- fcado aqui utilizado pode ser encontrado no dicionrio Aurlio Sculo XXI (BEZERRA, 2002): Paradigma. [ Do gr. pardeigma, pelo lat. tard. paradigma.] S.m. Termo com o qual Thomas Kuhn designou as realiza- es cientfcas (p. ex., a dinmica de Newton ou a qumica de Lavoisier) que geram modelos que, por perodo mais ou menos longo e de modo mais ou menos explcito, orientam o desenvolvimento posterior das pesquisas exclusivamente na busca da soluo para os problemas por elas suscitados. Outra defnio, mais restrita e mais apropriada ao contexto desta aula: um paradigma uma forma de abordar um problema. Como exemplo, considere a famosa histria da ma caindo sobre a cabea de Isaac Newton, citado na defnio anterior. Em vez de pensar que somente a ma estava caindo sobre a Terra, Newton tambm considerou a hiptese de o prprio planeta tambm estar caindo sobre a ma! Essa outra maneira de abordar o problema pode ser vista como um paradigma (BEZERRA, 2002). Pode-se dizer, ento, que o termo paradigma da orientao a ob- jetos uma forma de abordar um problema. H alguns anos, Alan Kay, um dos pais do paradigma da orientao a objetos, formulou a chamada analogia biolgica. Nessa analogia, ele imaginou como seria um sistema de software que funcionasse como um ser vivo. Nesse sistema, cada clula e-Tec Brasil/CEMF/Unimontes Informtica 20 interagiria com outras clulas atravs do envio de mensagens para realizar um objetivo comum. Adicionalmente, cada clula se comportaria como uma unidade autnoma (BEZERRA, 2002). De uma forma mais geral, Kay pensou em como construir um siste- ma de software a partir de agentes autnomos que interagem entre si. Ele, ento, estabeleceu os seguintes princpios da orientao a objetos (BEZER- RA, 2002): Qualquer coisa um objeto. Objetos realizam tarefas atravs da requisio de servios a ou- tros objetos. Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares. A classe um repositrio para comportamento associado ao ob- jeto. Classes so organizadas em hierarquias. Vamos ilustrar esses princpios com a seguinte histria proposta por BEZERRA (2002): suponha que algum queira comprar uma pizza. Chame este algum de Joo. Joo est muito ocupado em casa e resolve pedir a sua pizza por telefone. Joo liga para a pizzaria e realiza o seu pedido. Joo informa ao atendente (digamos, o Jos) seu nome, as caractersticas da pizza desejada e o seu endereo. Jos, que s realiza a funo de atendente, ento comunica Maria, funcionria da pizzaria responsvel por fazer as pizzas, qual pizza deve ser feita. Quando Maria termina de fazer a pizza, Jos cha- ma Antnio, o entregador. Finalmente, Joo recebe a pizza desejada das mos de Antnio meia hora depois de t-la pedido. Pode-se observar, que o objetivo de Joo foi atingido atravs da colaborao de diversos agentes, que so denominados objetos. H diversos objetos na histria (1 princpio): Joo, Maria, Jos, Antnio. Todos cola- boram com uma parte, e o objetivo alcanado quando todos trabalham juntos (2
princpio). Alm disso, o comportamento esperado de Antnio
o mesmo esperado de qualquer entregador. Diz-se que Antnio um objeto da classe Entregador (3 princpio). Um comportamento comum a todo entregador, no somente ao Antnio, o de entregar a mercadoria no endereo especifcado (4 princpio). Finalmente Jos, o atendente, tambm um ser humano, tambm mamfero, tambm um animal etc (5 princpio) (BEZERRA, 2002). Mas o que o paradigma da orientao a objetos tem a ver com a modelagem de sistemas? Antes da orientao a objetos, um outro para- digma era utilizado na modelagem de sistemas: o paradigma estrutura- do. Nesse paradigma, os elementos so dados, e processos. Processos agem sobre dados para que um objetivo seja alcanado (BEZERRA, 2002). Por outro lado, no paradigma da orientao a objetos, h um elemento, o objeto, uma unidade autnoma que contm seus prprios dados que so manipulados pelos processos defnidos para o objeto e que interage com outros objetos para alcanar um objetivo. o paradigma da orientao a e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 21 objetos que os seres humanos utilizam no cotidiano para a resoluo de problemas. Uma pessoa atende a mensagens (requisies) para realizar um servio; essa mesma pessoa envia mensagens a outras para que estas realizem servios (BEZERRA, 2002). 3.2 Classes e objetos O mundo real formado de coisas. Como exemplos de coisas po- dem-se citar um cliente, uma loja, uma venda, um pedido de compra, um fornecedor, etc. No paradigma de orientao a objetos, essas coisas do mun- do real so denominadas objetos (BEZERRA, 2002). Por outro lado, seres humanos costumam agrupar os objetos. Prova- velmente, os seres humanos realizam esse processo mental de agrupamento para tentar gerenciar a complexidade de entender as coisas do mundo real. Realmente, bem mais fcil entender a ideia cavalo do que entender todos os cavalos que existem. Na terminologia da orientao a objetos, cada ideia denominada classe de objetos, ou simplesmente classe. Uma classe uma descrio dos atributos e servios comuns a um grupo de objetos. Sendo assim, pode-se entender uma classe como sendo um molde a partir do qual objetos so construdos. Ainda sobre terminologia, diz-se que um objeto uma instncia de uma classe (BEZERRA, 2002). Por exemplo, quando se pensa em um cavalo, logo vem mente um animal de quatro patas, cauda, crina etc. Pode ser que algum dia voc veja dois cavalos, um mais baixo que o outro, um com cauda maior que o outro, ou mesmo, por um infeliz acaso, um cavalo com menos patas que o outro. No entanto, voc ainda ter certeza de estar diante de dois cavalos. Isso porque a ideia (classe) cavalo est formada na mente dos seres humanos, indepen- dentemente das pequenas diferenas que possa haver entre os exemplares (objetos) da ideia cavalo (BEZERRA, 2002). importante notar que uma classe uma abstrao das caracters- ticas de um grupo de coisas do mundo real. Na maioria das vezes, as coisas do mundo real so muito complexas para que todas as suas caractersticas sejam representadas em uma classe. Alm disso, para fns de modelagem de um sistema, somente um subconjunto de caractersticas pode ser relevante. Portanto, uma classe representa uma abstrao das caractersticas relevantes do mundo real (BEZERRA, 2002). Finalmente, preciso atentar para o fato de que alguns textos sobre orientao a objetos utilizam os termos classe e ob- jeto equivalentemente para denotar uma classe de objetos (BEZERRA, 2002). 3.3 Mensagens Os objetos no executam suas operaes aleatoriamente. Para que uma operao em um objeto seja executada, deve haver um estmulo envia- do a esse objeto. Se um objeto for visto como uma entidade ativa que repre- senta uma abstrao de algo do mundo real, ento faz sentido dizer que tal O paradigma da orientao a objetos visualiza um sistema de software como uma coleo de agentes interconectados chamados objetos. Cada objeto responsvel por realizar tarefas especfcas. atravs da interao entre objetos que uma tarefa computacional realizada. Tanto o paradigma estruturado quanto o paradigma orientado a objetos surgiram nas linguagens de programao, para depois serem aplicados modelagem de sistemas. De fato, as ideias de Alan Kay foram aplicadas na construo de uma das primeiras linguagens de programao orientadas a objetos: o Small Talk. Um sistema de software orientado a objetos consiste de objetos em colaborao com o objetivo de realizar as funcionalidades desse sistema. Cada objeto responsvel por tarefas especfcas. atravs da cooperao entre objetos que a computao do sistema se desenvolve. e-Tec Brasil/CEMF/Unimontes Informtica 22 objeto pode responder a estmulos a ele enviados (assim como faz sentido dizer que seres vivos reagem a estmulos que eles recebem). Independen- temente da origem do estmulo, quando ele ocorre, diz-se que o objeto em questo est recebendo uma mensagem requisitando que ele realize alguma operao (BEZERRA, 2002). Quando se diz que objetos de um sistema esto trocando mensa- gens signifca que esses objetos esto enviando mensagens uns aos outros com o objetivo de realizar alguma tarefa dentro do sistema no qual eles esto inseridos (BEZERRA, 2002). Figura 1: Objetos interagem atravs do envio de mensagens. Fonte: Bezerra (2002). 3.4 Viso geral dos princpios da orientao a objetos Nesta aula, vamos apresentar os princpios do paradigma da orien- tao a objetos. A Figura XX mostra uma viso geral dos princpios utilizados em Orientao a Objetos. Figura 2: Viso geral dos princpios da orientao a objetos. Fonte: Bezerra (2002). A descrio dos princpios de Encapsulamento, de Abstrao, de Polimorfsmo e de Herana realizada nos itens seguintes. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 23 3.4.1 Abstrao Uma abstrao qualquer modelo que inclui os aspectos mais im- portantes, essenciais de alguma coisa, ao mesmo tempo em que ignora os detalhes menos importantes. Abstraes permitem gerenciar a complexida- de e concentrar a ateno nas caractersticas essenciais de um objeto. Note que uma abstrao dependente da perspectiva: o que importante em um contexto pode no ser importante em outro (BEZERRA, 2002). 3.4.2 Encapsulamento Os Objetos possuem comportamento. O termo comportamento diz respeito a operaes realizadas por um objeto e tambm ao modo pelo qual essas operaes so executadas. O mecanismo de encapsulamento uma forma de restringir o acesso ao comportamento interno de um objeto. Um objeto que precise da colaborao de outro objeto para realizar alguma ta- refa simplesmente envia uma mensagem a este ltimo. O mtodo que o objeto requisitado usa para realizar a tarefa no conhecido dos objetos requisitantes (BEZERRA, 2002). Certamente, o objeto requisitante precisa conhecer quais as tarefas que um outro objeto sabe fazer ou que informao ele conhece. Para tanto, a classe de um objeto descreve o seu comportamento. Na terminologia da orientao a objetos, diz-se que um objeto possui uma interface. Em termos bastante simples, a interface de um objeto o que ele conhece e o que ele sabe fazer, sem descrever como o objeto conhece o faz. A interface de um objeto defne os servios que ele pode realizar e consequuentemente as mensagens que ele recebe. Uma interface pode ter vrias formas de im- plementao. Mas, pelo Princpio do Encapsulamento, a implementao de um objeto requisitado no importa para um objeto requisitante (BEZERRA, 2002). Atravs do encapsulamento, a nica coisa que um objeto precisa saber para pedir a colaborao de outro objeto conhecer a sua interface. Isso contribui para a autonomia dos objetos. Cada objeto envia mensagens a outros objetos para realizar certas tarefas, sem se preocupar em como as tarefas so realizadas. A aplicao da abstrao, neste caso, est em escon- der os detalhes de funcionamento interno de um objeto (BEZERRA, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 24 Figura 3: Princpio do encapsulamento: visto externamente, o objeto a sua interface. Fonte: Bezerra (2002). 3.4.3 Polimorfsmo O polimorfsmo indica a capacidade de abstrair vrias implementa- es diferentes em uma nica interface. H algum tempo atrs, o controle remoto de meu televisor quebrou. (Era realmente cansativo ter de levantar para desligar o aparelho ou para trocar de canal). Um tempo depois, comprei um videocassete do mesmo fabricante de meu televisor. Para minha surpre- sa, o controle remoto do videocassete tambm funcionava para o televisor! Esse um exemplo de aplicao do Princpio do Polimorfsmo. Note mais uma vez que a abstrao tambm aplicada aqui: um objeto pode en- viar a mesma mensagem para objetos semelhantes, mas que implementam a sua interface de formas diferentes (BEZERRA, 2002). 3.4.4 Herana A herana outra forma de abstrao utilizada na orientao a objetos. As caractersticas e o comportamento comuns a um conjunto de objetos podem ser abstrados em uma classe. A herana pode ser vista como um nvel de abstrao acima da encontrada entre classes e objetos (BEZER- RA, 2002). Na herana, classes semelhantes so agrupadas em hierarquias (ver Figura 1-4). Cada nvel de uma hierarquia pode ser visto como um nvel de abstrao. Cada classe em um nvel da hierarquia herda as caractersticas e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 25 das classes nos nveis acima. Esse mecanismo facilita o compartilhamento de comportamento comum entre um conjunto de classes semelhantes. Alm disso, as diferenas ou variaes de uma classe em particular podem ser organizadas de forma mais clara (BEZERRA, 2002). Figura 4: Princpio da herana: classes podem ser organizadas em hierarquias. Fonte: Bezerra (2002). Resumo Nesta aula, voc aprendeu: sobre o conceito de paradigma; sobre o conceito de paradigma da orientao a objetos; sobre o conceito dos princpios da orientao a objetos; sobre o conceito de classes, objetos, mensagens; e sobre os princpios do paradigma da orientao a objetos. Atividades de aprendizagem 1) D o conceito de paradigma? 2) Qual o conceito de paradigma da orientao a objetos? 3) D o conceito dos princpios da orientao a objetos? 4) D o conceito de classes, objetos e mensagens? 5) Explique os princpios do paradigma da orientao a objetos. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 27 Aula 4 Evoluo histrica da modela- gem de sistemas Objetivos - Conhecer o histrico da evoluo das tcnicas de desenvolvi- mento de sistemas. 4.1 Introduo O rpido crescimento da capacidade computacional das mquinas resultou na demanda por sistemas de software cada vez mais complexos, que tirassem proveito de tal capacidade. O surgimento desses sistemas com- plexos resultou na necessidade de reavaliao da forma de se desenvolver sistemas. Em funo disso, desde o aparecimento do primeiro computador at os dias de hoje, as tcnicas utilizadas para a construo de sistemas computacionais tm evoludo de forma impressionante, principalmente no que tange modelagem de sistemas (BEZERRA, 2002). 4.2 Resumo histrico A seguir, apresentado um breve resumo histrico da evoluo das tcnicas de desenvolvimento de acordo com BEZERRA (2002). O objetivo da apresentao do resumo histrico esclarecer como se chegou s tcnicas atualmente utilizadas. Dcadas de 1950/60: os sistemas de software eram bastante sim- ples. O desenvolvimento desses sistemas era feito de forma ad-hoc. Os sistemas eram signifcativamente mais simples e, consequentemente, as tcnicas de modelagem tambm eram mais simples: era a poca dos fuxogramas e dos diagramas de mdulos. Dcada de 1970: nesta poca, computadores mais avanados e acessveis comearam a surgir. Houve uma grande expanso do mercado computacional. Sistemas mais complexos comeavam a surgir. Por conseguinte, modelos mais robustos foram propostos. Neste perodo, surgem programao estruturada e o projeto estruturado. Os autores Larry Constantine e Edward Yourdon so grandes colaboradores nessas tcnicas. Dcada de 1980: nesta fase, os computadores se tornaram ainda mais avanados e baratos. Surge necessidade por interfaces mais sofsticadas, o que originou a produo de sistemas de sof- twares mais complexos. A Anlise Estruturada surgiu no incio deste perodo com os trabalhos de Edward Yourdon, Peter Coad, Tom DeMarco, James Martin e Chris Gane. O termo ad-hoc signifca direto ao assunto ou direto ao que interessa. Talvez o uso deste termo denote a abordagem desta primeira fase do desenvolvimento de sistemas, na qual no havia um planejamento inicial. O cdigo-fonte do programa a ser construdo era ele prprio, o modelo. e-Tec Brasil/CEMF/Unimontes Informtica 28 Incio da Dcada de 1990: este o perodo em que surge um novo paradigma de modelagem, a Anlise Orientada a Objetos. Gran- des colaboradores deste paradigma so Sally Shlaer, Stephen Mellor, Rebecca Wirfs-Brock, James Rumbaugh, Grady Booch e Ivar jacobson. Fim da Dcada de 1990: o paradigma da orientao a objetos atin- ge sua maturidade. Os conceitos de padres de projeto, fra- meworks, componentes e qualidade comeam a ganhar espao. Surge a Linguagem de Modelagem Unifcada (UML). Resumo Nesta aula, voc aprendeu: sobre o histrico da evoluo das tcnicas de desenvolvimento de sistemas. Atividades de aprendizagem 1) Explique com suas palavras o histrico da evoluo das tcnicas de desen- volvimento de sistemas. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 29 Aula 5 A linguagem de modelagem uni- fcada (UML) Objetivos - Saber em que a UML pode nos ajudar; - Saber por que a UML uma linguagem; - Conhecer os caminhos que devemos seguir para aprender a UML; - Conhecer a UML e o processo de desenvolvimento de software. 5.1 Introduo Todo profssional ligado informtica reconhece a importncia da criao de modelos para que sistemas de qualidade sejam obtidos. H uma srie de justifcativas que envolvem a criao de modelos, no entanto a mais forte recai sobre o teste. Analogamente ao trabalho do engenheiro, bvio que prefervel verifcar os erros de construo de uma casa baseando-se em um modelo, que constru-Ia e colocar pessoas morando para depois espe- rar que apaream os erros (MATOS, 2002). Na verdade, os modelos so uma importante ferramenta que en- volve muitos outros aspectos teis na conduo do desenvolvimento de um sistema computacional, tais como: diminuio da complexidade do sistema, j que difcil enten- der a complexidade do todo; simplifcao da realidade por meio de uma abstrao que pode ser facilmente entendida; possibilidade de enxergar os problemas do sistema antes mesmo que aconteam; possibilidade de simular situaes que seriam perigosas ou at danosas caso fossem executadas no sistema em ao. Embora a concepo da UML tenha sido infuenciada por vrios m- todos de anlise e projeto orientados a objeto, h particularmente trs no- taes das quais a UML derivada: 000 (Projeto Orientado a Objetos) - Grady Booch; OMT (Tcnica de Modelagem de Objetos) - James Rumbaugh. OOSE (Engenharia de Software Orientada por Objetos) - Ivar Ja- cobson. Em 1997, a OMG (Object Management Group) tornou a UML uma linguagem de modelagem padro para aplicaes orientadas a objeto. A im- portncia dessa padronizao est no fato de que a OMG possui mais de 800 fliados, incluindo empresas como IBM, HP, Borland, etc. Ou seja, os princi- pais softwares que utilizamos so modelados e idealizados por meio da UML (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 30 5.2 Em que a UML pode me ajudar? Esta uma inquietao bvia de qualquer pessoa que nunca ouviu falar em UML. Particularmente, a inquietao da maioria dos estudantes de Engenharia de Software que questiona (pblica ou individualmente): ... para que estou aprendendo isso?. A Orientao a Objetos era, at ento, um termo obscuro e at certo ponto mstico. A Programao Estruturada e, consequentemente, todos os conceitos relacionados Anlise Estruturada j haviam tomado conta do modus operandi de qualquer analista ou projetista. Ento surge a questo: esta a nica forma de criar sistemas? A UML uma composio das boas caractersticas de outras nota- es de ferramentas direcionadas orientao a objetos. Ou seja, a UML a ferramenta ideal para criar, compreender, testar, validar, arquitetar (lgica e fsicamente) e ainda identifcar todos os possveis comportamentos do sis- tema, especialmente os sistemas orientados e objeto (MATOS, 2002). Convm salientar que a orientao a objetos o cerne da maioria dos sistemas construdos atualmente: desde os sistemas comerciais (basea- dos em componentes, eventos e hierarquias de formulrios) at os comple- xos sistemas para Web. Em suma, o porqu de conhecer a UML est simples- mente relacionado realidade do processo de desenvolvimento de software (MATOS, 2002). 5.3 Por que a UML uma linguagem? Realmente soa estranho dizer que a UML uma linguagem, sabendo que sua funo bem parecida com a de outras ferramentas de modelagem, tais como o Diagrama de Fluxo de Dados (DFD), o Diagrama de Entidades e Relacionamentos (DER), o Diagrama de Transio de Estados (DTE), etc. Obviamente que se questiona: ... quer dizer que esses outros diagramas tambm so uma linguagem? Uma linguagem (mesmo as do mundo da informtica) deve se- guir uma gramtica (em que todos os elementos bsicos de representa- o sejam indicados) e tambm a um conjunto de regras sintticas, tal qual o nosso portugus. Talvez faltasse aos outros diagramas essa rigidez sinttica em que um outro diagrama (mesmo que no seu nvel de abstra- o), devesse obedecer sua sinttica mantendo a semntica trazida de outro diagrama, ou seja, um diagrama, efetivamente, no se encaixava no outro, a no ser que se fzesse um grande esforo para enxergar, por exemplo, o que um DFD tem a ver com o seu respectivo DER (MATOS, 2002). O esforo da UML permitir que desde a representao das funes bsicas do sistema (e seus respectivos responsveis) at o pla- nejamento da arquitetura de implementao, todo o processo acontea de maneira coerente e com uma estreita ligao com o plano anterior (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 31 5.4 Que caminho deve ser seguido para apren- d-la? O ponto de partida conhecer o Paradigma de Orientao a Objetos. Mesmo aqueles que j programam usando a orientao a ob- jetos precisam conhecer detalhes que, s vezes, passam despercebidos aos programadores. E aqueles que no conhecem a orientao a objetos faro um grande exerccio de abstrao; no entanto, no se pode con- siderar que o no-conhecimento prvio da Programao Orientao a Objetos seja um empecilho para utilizar a UML (MATOS, 2002). O uso de um software de apoio modelagem muito importan- te por dois motivos: primeiro porque os modelos comearo a fcar to longos que o papel fcar pequeno, segundo porque uma tima maneira de checar se as associaes entre os modelos esto corretas (MATOS, 2002). 5.5 UML e o desenvolvimento de software Outra questo muito importante como o software, enfm, vai ser produzido. Que caminho aconselhvel para chegar a esse ponto? Quais so os requisitos mnimos para que o software produzido tenha qualidade? H cinco etapas bem distintas em qualquer processo de desen- volvimento de software: levantamento de requisitos, anlise de requi- sitos, projeto, implementao, testes e implantao. Independente de qual forma foi escolhida, de qual ttica ser adotada, imprescindvel que essas seis fases surjam de alguma forma (MATOS, 2002). Na verdade, a UML no prescreve nenhum roteiro, apenas per- mite que a criatividade e o bom senso permeiem um desenvolvimento com qualidade. A qualidade surge obviamente de qualquer processo em que o produto fnal foi testado e verifcado se foi desenvolvido conforme as necessidades do cliente (MATOS, 2002). Resumo Nesta aula, voc aprendeu: sobre a UML e em que ela pode nos ajudar, e tambm porque ela considerada uma linguagem; sobre os caminhos que devemos seguir para aprender a UML; e sobre a UML e os processos de desenvolvimento de software. Atividades de aprendizagem 1) Leia com ateno todos os itens relacionados aula 5, para gravar seus conceitos. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 33 Aula 6 O processo de desenvolvimento de software Objetivos - Conhecer as atividades tpicas de um processo de desenvolvi- -mento de software; - Compreender a importncia de cada atividade no decorrer de um processo de desenvolvimento de software. 6.1 Introduo O desenvolvimento de software uma atividade complexa. Essa complexidade corresponde sobreposio das complexidades relativas ao desenvolvimento dos seus diversos componentes: software, hardware, pro- cedimentos etc. Isso se refete no alto nmero de projetos de software que no chegam ao fm, ou que extrapolam recursos de tempo e de dinheiro alocados (BEZERRA, 2002). Para dar uma idia da complexidade no desenvolvimento de sis- temas de software, so listados a seguir alguns dados levantados no Chaos Report, um estudo feito pelo Standish Group sobre projetos de desenvolvi- mento. Porcentagem de projetos que terminam dentro do prazo estima- do: 10%; Porcentagem de projetos que so descontinuados antes de che- garem ao fm: 25%; Porcentagem de projetos acima do custo esperado: 60%; Atraso mdio nos projetos: um ano. Tentativas de lidar com essa complexidade e de minimizar os pro- blemas envolvidos no desenvolvimento de software envolvem a defnio de processos de desenvolvimento de software. Um processo de desenvolvimento de software (ou simplesmente processo de desenvolvimento) compreende todas as atividades necessrias para defnir, desenvolver, testar e manter um produto de software (BEZERRA, 2002). Alguns objetivos de um processo de desenvolvimento so: defnir quais as atividades a serem executadas ao longo do projeto; quando, como e por quem tais atividades sero executadas; prover pontos de controle para verifcar o andamento do desenvolvimento; padronizar a forma de desenvol- ver software em uma organizao (BEZERRA, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 34 6.2 Atividades tpicas de um processo de de- senvolvimento Um processo de desenvolvimento classifca em atividades as tare- fas realizadas durante a construo de um sistema de software. H vrios processos de desenvolvimento propostos. Alm disso, no existe o melhor processo de desenvolvimento. Cada processo tem suas particularidades em relao ao modo de arranjar e encadear as atividades de desenvolvimento. Entretanto, podem-se distinguir atividades que, com uma ou outra modifca- o, so comuns maioria dos processos existentes. Abaixo, descreveremos essas atividades (BEZERRA, 2002). 6.2.1 Levantamento de requisitos A atividade de levantamento de requisitos corresponde etapa de com- preenso do problema aplicada ao desenvolvimento de software. O principal objetivo do levantamento de requisitos que usurios e desenvolvedores te- nham a mesma viso do problema a ser resolvido. Nessa etapa, os desenvol- vedores, juntamente com os clientes, tentam levantar e defnir as necessi- dades dos futuros usurios do sistema a ser desenvolvido. Essas necessidades so geralmente denominadas requisitos (BEZERRA, 2002). Formalmente, um requisito uma condio ou capacidade que deve ser alcanada ou possuda por um sistema ou componente deste para satisfazer um contrato, padro, especifcao ou outros documentos formal- mente impostos. Normalmente os requisitos de um sistema so identifcados a partir do domnio do negcio. Denomina-se domnio do negcio a rea de conhecimento especfca na qual um determinado sistema de software ser desenvolvido. Ou seja, o domnio do negcio corresponde parte do mundo real que relevante ao desenvolvimento de um sistema, no sentido de que algumas informaes e processos desse domnio precisam ser includos no sistema. O domnio do negcio tambm chamado de domnio do problema ou domnio da aplicao (BEZERRA, 2002). Durante o levantamento de requisitos, a equipe de desenvolvimen- to tenta entender o domnio do negcio que deve ser automatizado pelo sistema de software. O levantamento de requisitos compreende tambm um estudo exploratrio das necessidades dos usurios e da situao do siste- ma atual (se este existir). H vrias tcnicas utilizadas para isso, como por exemplo: leitura de obras de referncia e livros-texto, observao do am- biente do usurio, entrevistas com os usurios, entrevistas com especialistas do domnio, reutilizao de anlises anteriores, comparao com sistemas preexistentes do mesmo domnio do negcio (BEZERRA, 2002). O produto do levantamento de requisitos o documento de requi- sitos, que declara os diversos tipos de requisitos do sistema. Normalmente esse documento escrito em uma notao informal (em linguagem natural). As principais sees de um documento de requisitos so listadas a seguir (BEZERRA, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 35 Requisitos funcionais: defnem as funcionalidades do sistema. Al- guns exemplos de requisitos funcionais so listados a seguir. O sistema deve permitir que cada professor realize o lanamen- to de notas das turmas nas quais lecionou; O sistema deve permitir que um aluno realize a sua matrcula nas disciplinas oferecidas em um semestre; Os coordenadores de escola devem poder obter o nmero de aprovaes, reprovaes e trancamentos em todas as turmas em um determinado perodo. Requisitos no-funcionais: declaram as caractersticas de quali- dade que o sistema deve possuir e que esto relacionadas s suas funciona- lidades. Alguns tipos de requisitos no-funcionais so enumerados a seguir. Confabilidade: corresponde a medidas quantitativas da confa- bilidade do sistema, tais como tempo mdio entre falhas, recu- perao de falhas ou quantidade de erros por milhares de linhas de cdigo-fonte. Desempenho: requisitos que defnem tempos de resposta espe- rados para as funcionalidades do sistema. Portabilidade: restries sobre as plataformas de hardware e de software nas quais o sistema ser implantado e sobre o grau de facilidade para transportar o sistema para outras plataformas. Segurana: limitaes sobre a segurana do sistema em relao a acessos no-autorizados. Usabilidade: requisitos que se relacionam ou afetam a usabilida- de do sistema. Exemplos incluem requisitos sobre a facilidade de uso e a necessidade ou no de treinamento dos usurios. Restries: declarao de restries impostas sobre o desenvolvi- mento do sistema. Restries defnem, por exemplo, a adequao a custos e prazos, a plataforma tecnolgica, aspectos legais (licenciamento), limitaes sobre a interface com o usurio, componentes de hardware e software a serem adquiridos etc. Uma das formas de se medir a qualidade de um sistema de softwa- re atravs de sua utilidade. E um sistema ser til para seus usurios se atender aos requisitos defnidos. Portanto, os requisitos devem ser expressos de uma maneira tal que eles possam ser verifcados e comunicados a leitores tcnicos e no-tcnicos. A equipe tcnica (leitores tcnicos) deve entender o documento de requisitos de tal forma a poder obter solues tcnicas apropriadas. Clientes (leitores no-tcnicos) devem entender esse documen- to para que possam priorizar o desenvolvimento dos requisitos, conforme as necessidades da organizao (BEZERRA, 2002). Um ponto importante sobre o documento de requisitos que ele no deve conter informaes sobre as solues tcnicas que sero adotadas para desenvolver o sistema. O enfoque prioritrio do levantamento de re- quisitos responder claramente questo O que o usurio necessita do novo sistema?. Lembre-se sempre: novos sistemas sero avaliados pelo seu grau de conformidade aos requisitos, no importa quo complexa a soluo tecnolgica tenha sido. Requisitos defnem o problema a ser resolvido pelo sistema de software; eles no descrevem o software que resolve o problema (BEZERRA, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 36 O levantamento de requisitos a etapa mais importante em termos de retorno em investimentos feitos para O projeto de desenvolvimento. Mui- tos sistemas foram abandonados ou nem chegaram a uso porque os membros da equipe no dispensaram tempo sufciente para compreender as necessi- dades do cliente em relao ao novo sistema. Por outro lado, um sistema de informaes normalmente utilizado para automatizar processos de negcio de uma organizao: Portanto, esses processos devem ser compreendidos antes da construo do sistema de informaes (BEZERRA, 2002). O documento de requisitos serve como um termo de consenso entre a equipe tcnica (desenvolvedores) e o cliente. Esse documento constitui a base para as atividades subsequentes do desenvolvimento do sistema e fornece um ponto de referncia para qualquer validao futura do software construdo. O envolvimento do cliente desde o incio do processo de desen- volvimento ajuda a assegurar que o produto desenvolvido realmente atenda s necessidades identifcadas (BEZERRA, 2002). Alm disso, o documento de requisitos estabelece o escopo do sistema (isto , o que faz parte e o que no faz parte do sistema). O escopo de um sistema muitas vezes muda durante o seu desenvolvimento. Desta forma, se o escopo muda, tanto clientes quanto desenvolvedores tm um parmetro para decidirem o quanto dos recursos de tempo e fnanceiros devem mudar. Contudo, o planejamento inicial do projeto deve se basear no escopo inicial (BEZERRA, 2002). Um outro ponto importante sobre os requisitos a sua caractersti- ca de volatilidade. Um requisito voltil aquele que pode sofrer modifcaes durante o desenvolvimento do sistema. Nos primrdios da modelagem de sis- temas, era comum a prtica de congelar os requisitos levantados antes de se iniciar a construo do sistema. Isto , os requisitos considerados eram os mesmos do incio ao fm do projeto de desenvolvimento. Atualmente, a vola- tilidade dos requisitos um fato com o qual a equipe de desenvolvimento de sistemas tem de conviver e consequentemente o congelamento de requisitos impraticvel. Isso porque, nos dias atuais, as organizaes precisam se adaptar a mudanas cada vez mais rapidamente. Durante o perodo em que o sistema est em desenvolvimento, as tecnologias utilizadas, as expectativas dos usurios, e as regras do negcio mudam. E isso para mencionar apenas algumas possveis mudanas (BEZERRA, 2002). Isso parece se contrapor ao fato de que o documento de requisitos deve defnir de forma clara quais so os requisitos do sistema. Na realidade, o documento de requisitos serve como um consenso inicial. O ponto principal do levantamento de requisitos compreender o sistema o mximo possvel antes de comear a ser construdo. A regra defnir completamente qual- quer requisito j conhecido, mesmo os mais simples. medida que novos requisitos sejam detectados (ou que requisitos preexistentes mudem), os desenvolvedores devem verifcar cuidadosamente o impacto das mudanas resultantes no escopo do sistema. Dessa forma, os clientes podem decidir se tais mudanas devem ser consideradas no desenvolvimento, uma vez que infuenciam o cronograma de desenvolvimento e os recursos fnanceiros alo- cados (BEZERRA, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 37 A menos que o sistema a ser desenvolvido seja bastante simples e esttico (caractersticas raras nos sistemas atuais), praticamente imposs- vel pensar em todos os detalhes a princpio. Alm disso, quando o sistema entrar em produo e os usurios comearem a utiliz-lo, eles prprios des- cobriro requisitos nos quais no tinham pensado inicialmente. Em resumo, os requisitos de um sistema complexo inevitavelmente mudaro durante o seu desenvolvimento (BEZERRA, 2002). Uma caracterstica desejvel a um documento de requisitos ter os seus requisitos ordenados pelos usurios em funo do seu grau de prio- ridade. O grau de prioridade de um requisito para os usurios normalmente estabelecido em funo da adio de valor que o desenvolvimento desse requisito no sistema trouxer aos usurios. Saber o grau de prioridade de um requisito permite que a equipe de desenvolvimento (mais particularmente o gerente do projeto) decida em que momento cada requisito deve ser consi- derado durante o desenvolvimento. As prioridades atribudas aos requisitos permitiro ao gerente de projeto tomar decises acerca do momento no qual cada requisito deve ser considerado durante o desenvolvimento do sistema (BEZERRA, 2002). 6.2.2 Anlise de requisitos Formalmente, o termo anlise corresponde a quebrar um sistema em seus componentes e estudar como tais componentes interagem com o objetivo de entender como esse sistema funciona. No contexto dos sistemas de software, esta a etapa na qual os analistas realizam um estudo detalha- do dos requisitos levantados na atividade anterior. A partir desse estudo, so construdos modelos para representar o sistema a ser construdo. A anlise de requisitos tambm chamada de especifcao de requisitos. Assim como no levantamento de requisitos, a anlise de requisitos no leva em conta o ambiente tecnolgico a ser utilizado. Nesta atividade, o foco de interesse tentar construir uma estratgia de soluo sem se preocupar com a maneira como essa estratgia ser realizada. A razo desta prtica tentar obter a melhor soluo para o problema sem se preocupar com os detalhes da tecnologia a ser utilizada. necessrio saber o que o sis- tema proposto deve fazer para, ento, defnir como esse sistema ir faz-Io (BEZERRA, 2002). O termo paralisia da anlise conhecido no desenvolvimento de sistemas de software. Esse termo denota a situao em que h uma es- tagnao da fase de anlise: os analistas passam muito tempo construindo o modelo do sistema. Embora essa situao certamente exista, na prtica raramente poderamos encontr-Ia. O que ocorre frequentemente na prtica exatamente o contrrio: equipes de desenvolvimento que passam para a construo da soluo sem antes terem defnido completamente o problema. Portanto, os modelos construdos na fase de anlise devem ser cuidadosa- mente validados e verifcados, atravs da validao e verifcao dos modelos, respectivamente (BEZERRA, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 38 O objetivo da validao assegurar que as necessidades do cliente esto sendo atendidas pelo sistema: ser que o software correto est sendo construdo? J a verifcao tem o objetivo de verifcar se os modelos constru- dos esto em conformidade com os requisitos defnidos: ser que o software est sendo construdo corretamente? Na verifcao dos modelos da anlise, analisada a exatido de cada modelo em separado e a consistncia entre os modelos (BEZERRA, 2002). Em um processo de desenvolvimento orientado a objetos, o resul- tado da anlise so modelos que representam as estruturas das classes de objetos componentes do sistema. Alm disso, a anlise tambm resulta em modelos que especifcam as funcionalidades do sistema de software (BEZER- RA, 2002). 6.2.3 Projeto O foco principal da anlise so os aspectos lgicos e independen- tes de implementao de um sistema (os requisitos). Na fase de projeto, determina-se como o sistema funcionar para atender aos requisitos, de acordo com os recursos tecnolgicos existentes (a fase de projeto considera os aspectos fsicos e dependentes de implementao). Aos modelos constru- dos na fase de anlise so adicionadas as denominadas restries de tecno- logia (BEZERRA, 2002). Exemplos de aspectos a serem considerados na fase de projeto: arquitetura do sistema, padro de interface grfca, a linguagem de programao, o gerenciador de banco de dados etc. Esta fase produz uma descrio computacional do que o software deve fazer e deve ser coerente com a descrio feita na anlise. Em alguns casos, algumas restries da tecnologia a ser utilizada j foram amarradas no levantamento de requisitos. Em outros casos, essas restries devem ser especifcadas. Mas, em todos os casos, a fase de projeto do sistema dire- cionada pelos modelos construdos na fase de anlise e pelo planejamento do sistema (BEZERRA, 2002). O projeto consiste de duas atividades principais: projeto da arqui- tetura (tambm conhecido como projeto de alto nvel) e projeto detalhado (tambm conhecido como projeto de baixo nvel). . Em um processo de desenvolvimento orientado a objetos, o projeto da arquitetura consiste em distribuir as classes de objetos relacionadas do sistema e subsistemas e seus componentes. Consiste tambm em distribuir esses componentes fsicamente pelos recursos de hardware disponveis. Os diagramas da UML normalmente utilizados nesta fase do projeto so os dia- gramas de implementao. O projeto da arquitetura normalmente realiza- do por um arquiteto de software (BEZERRA, 2002). No projeto detalhado, so modeladas as colaboraes entre os ob- jetos de cada mdulo com o objetivo de realizar as funcionalidades do mdu- lo. Tambm so realizados o projeto da interface com o usurio e o projeto de dados. Os diagramas da UML utilizados nesta fase do projeto so: diagra- e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 39 ma de classes, diagrama de casos de uso, diagrama de interao, diagrama de estados e diagrama de atividades. Embora a anlise e o projeto sejam descritos em sees separadas neste caderno, importante notar que no h uma distino assim to cla- ra entre essas duas fases. Principalmente no desenvolvimento de sistemas orientados a objetos, as atividades dessas duas fases frequentemente se misturam (BEZERRA, 2002). 6.2.4 Implementao Na implementao, o sistema codifcado, ou seja, ocorre a tradu- o da descrio computacional da fase de projeto em cdigo executvel atravs do uso de uma ou mais linguagens de programao. Em um processo de desenvolvimento orientado a objetos, a imple- mentao envolve a defnio das classes de objetos do sistema utilizando linguagens de programao como C++,Java etc. Alm da codifcao desde o incio, a implementao pode tambm utilizar componentes de software e bibliotecas de classes preexistentes para agilizar a atividade (BEZERRA, 2002). 6.2.5 Testes Diversas atividades de teste so realizadas para verifcao do siste- ma construdo, levando-se em conta a especifcao feita na fase de projeto. O principal produto dessa fase o relatrio de testes, contendo informaes sobre erros detectados no software. Aps a atividade de testes, os diversos mdulos do sistema so integrados, resultando fnalmente no produto de software (BEZERRA, 2002). 6.2.6 Implantao O sistema empacotado, distribudo e instalado no ambiente do usurio. Os manuais do sistema so escritos, os arquivos so carregados, os dados so importados para o sistema e os usurios so treinados para utilizar o sistema corretamente. Em alguns casos, aqui tambm ocorre migrao de sistemas de software e de dados preexistentes (BEZERRA, 2002). Resumo Nesta aula, voc aprendeu: sobre as atividades tpicas de um processo de desenvolvimento de software; sobre a importncia de cada atividade no decorrer de um pro- cesso de desenvolvimento de software. e-Tec Brasil/CEMF/Unimontes Informtica 40 Atividades de aprendizagem 1) Qual o conceito do processo de desenvolvimento de software? 2) Quais so os objetivos de um processo de desenvolvimento de software? 3) Quais so as atividades tpicas de um processo de desenvolvimento de software? Descreva de forma sucinta cada atividade. 4) Qual o conceito de requisitos? 5) Como chamado o produto do levantamento de requisitos? 6) D o conceito de requisitos funcionais e requisitos no-funcionais? Cite exemplos dos dois tipos de requisitos. 7) Qual o objetivo da validao e da verifcao dos modelos construdos na fase de anlise? e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 41 Aula 7 Modelagem Baseada em UML Objetivos - Conhecer um breve histrico da UML; - Conhecer os principais diagramas da UML; - Saber a identifcar um caso de uso; - Aprender a identifcar atores; - Aprender a desenhar um diagrama de caso de uso; - Conhecer os cuidados necessrios ao se criar diagramas de caso de uso; - Aprender a identifcar classes; - Aprender a identifcar relacionamentos; - Conhecer extenses e mecanismos; - Aprender a desenhar um diagrama de classes; - Conhecer os tipos de diagramas de interao; - Conhecer diagramas de colaborao; - Conhecer diagramas de sequncia; - Aprender a desenhar diagramas de sequncia; - Aprender sobre diagramas de estados e sua funo; - Aprender a desenhar diagramas de estados; - Aprender sobre diagramas de atividades; - Aprender a desenhar diagramas de atividades; - Conhecer componentes de software; - Aprender a desenhar diagramas de componentes; - Aprender a desenhar diagramas de implantao. 7.1 Introduo Finalmente vamos conhecer a UML. O importante que alguns lem- bretes permaneam at a ltima aula: UML baseada em um conjunto de diagramas, portanto o mo- delo no termina no primeiro diagrama, a no ser que se deseje um aspecto bem reduzido do problema; Cada diagrama da UML enfoca um aspecto distinto do problema, ou seja, necessrio, a cada diagrama, um exerccio de abstra- o diferente; UML no uma linguagem de programao, mas de modelagem, ou seja, aqui os testes no so sob os erros de execuo, mas os de consistncia; Por ltimo, todos os diagramas esto de alguma forma ligados, portanto, o desenho de um diagrama tem que obrigatoriamente ser coerente com o que j foi proposto (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 42 7.2 Um breve histrico A UML uma linguagem criada com o propsito de permitir espe- cifcaes, visualizaes e documentao de artefatos de sistemas. Ou seja, permitido usar a UML para entender e manipular todos os elementos que direta ou indiretamente infuenciam na construo do software (artefatos). Dessa forma, possvel, tambm, a avaliao da modelagem do negcio ou de quaisquer outros aspectos no necessariamente computacionais (MATOS, 2002). No entanto, para chegar a essa especifcao, alguns detalhes his- tricos foram importantes. O primeiro foi a constatao de que o software possui valor estra- tgico nos negcios de uma empresa. Ou seja, so necessrias tcnicas que automatizem a produo do software, mas no perdendo de vista a arquite- tura do sistema e do negcio. Nesse contexto, o segundo detalhe histrico ocorria no fnal da dcada de 80. O panorama do desenvolvimento de software, nesta poca, vislumbrava a utilizao de vrias tcnicas e ferramentas baseadas na orien- tao a objetos. Por causa dessa confuso, em 1994, dois importantes au- tores imaginaram a fuso dos conceitos de seus mtodos com vistas criao de um mtodo unifcado (Grady Booch e James Rumbaugh). Com a fuso de seus mtodos (Booch e OMT - Object Modeling Technology de Booch e Rum- baugh respectivamente), uma semente para a criao de um padro havia, enfm, sido plantada (MATOS, 2002). Um questionamento perdurava: o que fazer, ento, com os mto- dos que ainda existiam?. Neste caso, o grande trunfo da idia de Booch e Rumbaugh era que, criando um padro, a indstria participaria, opinaria e iniciaria a construo de recomendaes. Este pensamento nos remete ao terceiro importante detalhe histrico - a verso draft 0.8 da UML, idealizada em outubro de 1995 (MATOS, 2002). Muitas empresas ligadas informtica perceberam nessa nova pro- posta uma importante alavanca para a melhoria da qualidade dos proces- sos de software orientado a objetos. Dessa forma, um grupo importante de empresas reunidas sob a OMG (Object Management Group) destacou pontos importantes para essa nova recomendao e idealizou a primeira proposta completa da linguagem a verso 0.9 da UML. Nesta verso, caractersticas de outro mtodo foram includas (OOSE - Object Oriented Software Enginee- ring de Ivar Jacobson) (MATOS, 2002). Sob a proteo da OMG (a UML marca registrada da OMG), fcou estabelecido (desde sua origem j estava defnido) que se trataria de uma proposta no proprietria e aberta, ou seja, as empresas membro da OMG teriam a liberdade de propor recomendaes e adendos especifcao ori- ginal, permitindo que novas funcionalidades fossem assumidas. Neste con- texto, a UML j est na sua verso 2.3 e suas modifcaes tm sido ampla- mente discutidas em eventos e listas de discusso (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 43 7.3 Diagramas da UML A proposta bsica (efetuada pela OMG) indica cinco nveis de abs- trao: Identifcar as funes do sistema e seus respectivos responsveis por meio de um Diagrama de Caso de Uso: Figura 5: Representao de um diagrama de caso de uso. Fonte: Matos (2002). Identifcar as estruturas mnimas de informao por meio de um Diagrama de Classes: Figura 6: Representao de um diagrama de classes. Fonte: Matos (2002). Modelar e compreender o comportamento e o dinamismo das classes por meio de Diagramas de Interao (Sequncia ou Co- laborao). e-Tec Brasil/CEMF/Unimontes Informtica 44 Figura 7: Representao de um diagrama de sequncia. Fonte: Matos (2002). Compreender os estados das execues, permitindo identif- car o comportamento das classes por meio de Diagramas de Estado e de Atividade. Figura 8: Representao de um diagrama de estado. Fonte: Matos (2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 45 Esquematizar o processo de implementao e o de implan- tao, por meio dos componentes (hardware ou software) previstos para o sistema, por intermdio de Diagramas de Componentes e de Implantao. Figura 9: Representao de um diagrama de componentes e de implantao. Fonte: Matos (2002). 7.4 Processo adotado neste caderno A abordagem que ser apresentada neste caderno no nenhum processo formal de software. Apenas por uma questo de melhor entendi- mento e de percepo da relao existente entre os diagramas foi organiza- da a distribuio (MATOS, 2002). Os Casos de Uso so o primeiro tpico, haja vista a sua importncia no princpio de qualquer processo de software - determinar o que o siste- ma? As classes atuam no apenas como complementaes aos casos de uso, mas tambm podem ser desenhadas para que os diagramas de interao possam validar suas estruturas (MATOS, 2002). As interaes, representadas pelas sequncias e colaboraes, so a melhor viso do funcionamento das operaes, ou os mtodos que sero parte das classes (MATOS, 2002). Estados e atividades permitem que eventos possam ser identifca- dos e estudados, ou seja, pode-se ter uma noo completa dos estados ines- perados ou at mesmo os esperados na execuo das operaes (MATOS, 2002). Por fm, estudaremos formas de estruturar os programas e tambm de arquitetar a organizao do hardware envolvido no sistema. e-Tec Brasil/CEMF/Unimontes Informtica 46 7.5 Casos de uso Geralmente quando nos deparamos com a necessidade de iniciar o modelo de um sistema, vem-nos mente o desejo de criar uma lista das fun- es que o sistema precisa implementar. Existem tcnicas e ferramentas que apiam essa iniciativa, no entanto do ponto de vista da orientao a objetos essa no uma boa idia (MATOS, 2002). As funes tm o seu local bem determinado - so parte de uma classe e so diretamente executadas pelos objetos dessas classes. Se este no o ponto de partida, ento qual seria? Na verdade, construmos sistemas computacionais para que usu- rios pessoas possam utiliz-los ou para que eles sejam entrada ou sada de outros sistemas. Portanto, o ponto de partida saber quem ou o que intera- ge com o sistema (MATOS, 2002). Os Casos de uso (do ingls Use Case) so utilizados para identifcar as regras do negcio e so uma excelente forma de entender o ponto de vista do usurio simplesmente pelo fato de que modela o que ele precisa executar (MATOS, 2002). Internamente, um caso de uso uma sequncia de aes que per- meiam a execuo completa de um comportamento esperado para o sistema. Este o ponto de partida de todo o processo, por isso necessrio ter muito cuidado e no incluir detalhes demais. Um Diagrama de Caso de Uso deve ser simples, porm no pode ser incompleto (MATOS, 2002). 7.5.1 Identifcando um caso de uso A primeira coisa que precisa fcar clara a distino que existe entre um processo de um Diagrama de Fluxo de Dados e um Caso de Uso. Enquanto processos representam fuxos de dados e precisam, portanto, de dados de entrada e geram dados de sada, um caso de uso apenas a representao de uma funo, manipulada por uma entidade do sistema, conhecida como Ator, ou seja, no nos interessa o fuxo dos dados, pois essa transformao cabe aos mtodos da classe (e sero tratados no Dia- grama de Interao). Nosso enfoque nesse momento no so as classes ou as interaes (MATOS, 2002). Figura 10: Representao de um diagrama de fuxo de dados e de um diagrama de caso de uso. Fonte: Matos (2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 47 Um caso de uso no deve se preocupar com o como das funes, mesmo que este como seja apenas conhecer o fuxo de entrada e sada de dados. importante encapsular aes que em conjunto sejam relevantes e que de alguma forma infuenciam algo ou algum no sistema (MATOS, 2002). Identifcar um caso de uso, portanto, um esforo que envolve: descobrir um ator (algum que infuencia ou infuenciado pelo sistema; verifcar para esse ator aes das quais ele participaria; agrupar tais aes de forma que possuam um nome em comum (geralmente um. verbo no infnitivo). 7.5.2 Identifcando atores O ator est relacionado a um papel. No contexto do sistema, papel diz respeito viso dada ao sistema. Por exemplo, em um hospi- tal teramos pelo menos quatro papis distintos: paciente, enfermeira, mdico e o setor administrativo, haja vista que o tipo de informao que um manipula jamais seria manipulado por outro (por exemplo, uma en- fermeira no pode receitar nada a um paciente) (MATOS, 2002). O que se pretende concluir com esta idia o seguinte: os dados que uma enfermeira veria em seu formulrio do sistema seriam diferen- tes dos dados que o mdico veria, ou seja, h o ator mdico e tambm h o ator enfermeira, cujos casos de uso seriam distintos (MATOS, 2002). 7.5.3 Desenho de um diagrama de caso de uso Um lembrete importante antes de iniciar qualquer modelo (diagra- ma) entender o PORQU de estar desenhando aquilo. Como j conhecemos o objetivo do Diagrama de Caso de Uso, imprescindvel que se tenha em mente, desde j, a necessidade de identifcao de atores e suas respectivas vises. No entanto, para que fque simples e tenhamos um roteiro que facili- te, abaixo seguem alguns passos que devem ser observados na criao de um Diagrama de Caso de Uso (MATOS, 2002). Figura 11: Passos para a criao de um diagrama de caso de uso. Fonte: Matos (2002). e-Tec Brasil/CEMF/Unimontes Informtica 48 Um exemplo clssico est ligado s tarefas cotidianas de uma clni- ca mdica. Seguindo os passos indicados anteriormente, teramos: Figura 12: Identifcao dos atores. Fonte: Matos (2002). Este um passo relativamente simples. s vezes, bom fazer a se- guinte comparao: enfm, quem vai fcar frente do computador operando o sistema?. Esta pergunta no resolve por completo a identifcao de todos os atores, no entanto permite que se deixe uma certa vazo para aquelas responsabilidades que no foram cobertas (MATOS, 2002). Figura 13: Identifcao dos atores e seus casos de uso. Fonte: Matos (2002). Ao identifcar um ator, obviamente, percebe-se no que especifca- mente ele atuar. Os passos 2 e 3 so teis para rotular o que cada ator far ou responsabilizar-se- no sistema (MATOS, 2002). Diagramas de Caso de Uso tambm so teis para a identifcao de duas situaes relacionadas a qualquer sistema computacional. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 49 SITUAO 1: muito comum que mais de uma funo do sistema execute tarefas parecidas. Na fgura apresentada em seguida, espera-se que em trs momentos distintos seja feita uma identifcao antecipada do pa- ciente. Essa identifcao importante em todas essas situaes, pois, caso contrrio, no se sabe quem est sendo atendido (MATOS, 2002). Os momen- tos citados so os seguintes: quando o paciente chega clnica e atendido pela enfermeira; quando o paciente decide, enfm, marcar uma consulta; quando o mdico avalia as condies do paciente mediante seus sintomas e decide aplicar um tratamento (diagnstico). Esta situao indica a existncia de uma tpica relao uses entre casos de uso. O termo uses bem elucidativo: o caso de uso em questo usa o caso de uso indicado (MATOS, 2002). necessrio ressaltar que o caso de uso usado somente rele- vante para ser representado se for compartilhado entre outros casos de uso. Caso contrrio, estaramos apenas detalhando o comportamento esperado de um nico caso de uso. Esse detalhamento, na verdade, vai ser analisado apenas nos diagramas de interao e de classe (MATOS, 2002). Figura 14: Identifcao de relaes entre casos de uso do tipo uses. Fonte: Matos (2002). SITUAO 2: quando alguma recorrncia surge. Por exemplo, no prximo diagrama percebe-se que pode existir a situao em que o paciente nunca foi atendido nessa clnica (MATOS, 2002). Situaes inesperadas como estas indicam a existncia de relaes do tipo extends. e-Tec Brasil/CEMF/Unimontes Informtica 50 Figura 15: Identifcao de relaes entre casos de uso do tipo extends. Fonte: Matos (2002). 7.5.4 Cuidados com os diagramas de caso de uso A primeira ao que NO deve ser representada a incluso de aspectos de implementao. Conforme j citado anteriormente, o como deve ser deixado para outros nveis de abstrao, ou seja, para os diagramas de classes e de interao (MATOS, 2002). No entanto, o aspecto mais perigoso nesse momento seria o abuso de uses e extends. A relao uses somente deve ser empregada quando houver realmente um compartilhamento da funo indicada; caso contrrio, estaremos abusando do detalhamento e produzindo um diagrama exagerada- mente pormenorizado (MATOS, 2002). Na Figura seguinte, a inteno do caso de uso Verifcar Histrico de Tratamento uma ao que pode at ser bvia em qualquer consultrio mdico, todavia, no se trata de algo que seria compartilhado por outros casos de uso, ou seja, na verdade, uma parte do caso de uso Diagnosticar Paciente (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 51 Figura 16: Cuidados na criao dos diagramas dos casos de uso. Fonte: Matos (2002). O que convm ser salientado, portanto, que um Diagrama de Caso de Uso deve ser o mais simples possvel. Detalhes devem ser deixa- dos para outros diagramas, pois eles foram idealizados justamente com este objetivo (MATOS, 2002). No entanto, problemas complexos necessitam obviamente ser sim- plifcados. Nesse caso, o importante permitir que a complexidade seja gerenciada desde o incio. No caso especfco de Diagramas de Caso de Uso, isso signifcaria produzir diagramas que ressaltem quais so as fronteiras do negcio, tal como o diagrama seguinte: Figura 17: Pacotes representando os subsistemas de um sistema para controle de clnicas. Fonte: Matos (2002). Nesse caso, cada subsistema poderia ser modelado por um dia- grama de caso de uso particular. Por exemplo, o setor relacionado enfermeira poderia ser visto como: e-Tec Brasil/CEMF/Unimontes Informtica 52 Figura 18: Diagrama de casos de uso do subsistema enfermeira. Fonte: Matos (2002). E o subsistema do mdico seria modelado como: Figura 19: Diagrama de casos de uso do subsistema mdico. Fonte: Matos (2002). Em suma, Diagramas de Caso de Uso so ferramentas que nos ajudam a enxergar o todo do sistema por intermdio da constatao das responsabilidades que os usurios diretos do sistema tm (MATOS, 2002). Outros aspectos, tais como: como cada caso de uso efetiva- mente utilizado ou onde fcaro armazenados os dados que so utilizados para fazer os casos de uso funcionarem. Esses so assuntos para discus- so em prximos diagramas (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 53 7.6 Classes A UML adequada para a modelagem de sistemas, cuja abrangn- cia pode incluir sistemas de informao corporativos a serem distribudos para aplicaes baseadas em Web e at sistemas complexos embutidos de tempo real (MATOS, 2002). Em qualquer aplicao orientada a objetos, classes so importantes por quatro motivos: Na verdade, so a real estrutura de dados, ou seja, so o objeti- vo fnal para o incio da etapa de programao; Dar ao programador a noo do domnio do problema; Projetar uma soluo de implementao ao problema; Traar perspectivas de escalabilidade ao sistema (onde e como o sistema pode crescer em termos funcionais). A princpio, para quem apenas possui experincia com a modela- gem de dados, o Diagrama de Classes pode parecer uma simples coleo de entidades mais complexas, no entanto esta uma idia errada, pois o mo- delo de classes especializa-se na representao do COMPORTAMENTO e no apenas dos dados (MATOS, 2002). A construo de um Diagrama de Classes est, obviamente, base- ada no conceito de Classe. Desse fato, pode-se concluir que Diagramas de Classes so estticos, ou seja, devem apenas esboar o que interage e no o que acontece quando as classes interagem. Portanto, para que se crie um Diagrama de Classes, imprescindvel conhecer todos os conceitos do Pa- radigma de Orientao a Objetos relacionados noo de classes (MATOS, 2002). 7.6.1 Identifcando classes Uma classe uma abstrao de um conjunto de coisas que possuem caractersticas e operaes em comum. Ou seja, uma classe um conjunto de objetos (MATOS, 2002). No Paradigma de Objetos, um objeto uma uni- dade fundamental. Somos forados a pensar nos nossos programas no como um conjunto de registradores da memria, mas como realmente o mundo real - um conjunto de coisas (que possuem atributos e operaes). Partindo desse fato, h alguns aspectos que facilitam a identifca- o de classes. O primeiro aspecto o fato de que uma classe surge da unio de vrios objetos que possuem coisas em comum. Por exemplo, se em um hospital percebe-se a importncia de que vrias pessoas pertenam a um mesmo convnio e essas pessoas comeam a se tornar comuns e em grande quantidade, alguma operao pode uni-Ias e mais, alguma funcionalidade do sistema poder ser importante para esse conjunto de pessoas. Talvez esse seja o caso de criar uma classe para pessoas conveniadas, em vez de apenas ter um atributo diferenciador (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 54 As Classes so uma sntese de um conjunto de coisas. Essas coisas podem ser facilmente identifcadas no contexto do problema, tais como: Eventos, Papis, Recursos, Equipamentos, Sociedades, Responsabilidades, etc. bom salientar que uma classe no , efetivamente, uma entidade (do modelo Entidade-Relacionamento). Uma entidade existe como um repo- sitrio de dados e uma classe como um ENCAPSULAMENTO de atributos e mtodos (MATOS, 2002). Em UML, uma classe esquematicamente representada por: Figura 20: Representao de uma classe. Fonte: Matos (2002). A UML apenas uma linguagem, ou seja, apesar de existir uma noo padronizada de que linguagens em informtica relacionam-se apenas a Linguagens de Programao, a UML uma espcie de linguagem cuja in- teno no passar por um processo de compilao e gerao de cdigo da maneira como se conhece, mas servir de padro para facilitar a conduo do processo de desenvolvimento do software (MATOS, 2002). Os componentes da linguagem de modelagem unifcada (UML) so importantes para a representao tanto conceitual quanto fsica do sistema. Nessa aula, sero discutidos todos os recursos relacionados com o Diagrama de Classes, porm muitos desses recursos tambm so aplicveis a outros diagramas da UML (MATOS, 2002). 7.6.2 Relacionamentos Uma classe no um ponto isolado e totalmente autnomo dentro de um sistema de software. Para que uma classe obtenha sucesso e real- mente execute suas tarefas, invariavelmente, aes vindas de outras classes sero necessrias (MATOS, 2002). Para os programadores de Java, C++, SmallTalk, Eifel e outras lin- guagens orientadas ou baseadas em objetos (at mesmo Delphi ou Object Pascal poderiam ser citados), a afrmao do pargrafo anterior no soaria estranho. Por exemplo: e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 55 H quatro tipos de relacionamento possveis em um modelo de UML: Dependncias Relacionamentos no qual a modifcao em um item superior (uma superclasse, por exemplo) ocasiona modifcaes em itens inferiores. Por exemplo, uma ao que passa a ser executada de uma forma diferenciada em um item superior seria tambm executada de maneira diferenciada em um item inferior (MATOS, 2002). A representao para esse relacionamento indicada em seguida: Figura 21: Representao de um relacionamento de dependncia. Fonte: Matos (2002). H duas observaes relacionadas representao em seguida: Todo mtodo, em qualquer classe, convencionalmente repre- sentado por dois parnteses para indicar a presena ou no de parmetros. Por exemplo, regular(); A adio de uma pessoa lista ou sua retirada indica a neces- sidade de um objeto da classe Pessoa, ou seja, esses mtodos dependem de como um objeto Pessoa est organizado. A princpio, representar uma dependncia pode parecer desneces- srio, mas extremamente importante conhecer o limite de classes uti- lizadas na implementao, alm de dar um limite ao escopo do problema (MATOS, 2002). Herana Uma forma de criar hierarquias entre classes e entender o esquema de herana inerente a qualquer aplicao orientada a objetos entender as ge- neralizaes. Uma generalizao um relacionamento do tipo um tipo de. Ou seja, a classe inferior uma classifcao da classe superior (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 56 Uma classe generalizada (especializada) herda operaes e atribu- tos da classe superior, ou seja, no necessrio refazer mtodos ou identi- fcar atributos de classes generalizadas, pois eles j foram defnidos em um nvel superior (MATOS, 2002). No entanto, h situaes em que mtodos ou atributos podem ser redefnidos. Esse caso, conhecido como polimorfsmo, permite que mtodos ou atributos com a mesma assinatura tenham corpo distinto. Em UML muitos aspectos do sistema podem ser representados: des- de o software do sistema em si at aspectos de implementao e implanta- o. Dessa forma, pode-se utilizar esse relacionamento para tambm repre- sentar a generalizao entre componentes fsicos, tais como: pontos de uma rede de computadores (MATOS, 2002). Esquematicamente a herana representada da seguinte forma: Figura 22: Representao de relacionamento de herana. Fonte: Matos (2002). Associao/Agregao A associao um relacionamento em que representada a cone- xo de um objeto a outro. No entanto, existem duas facetas para essa cone- xo. O primeiro aspecto diz respeito conexo entre um objeto e outro de onde possa surgir um vnculo com ela (MATOS, 2002). Essa associao representada por: O termo assinatura utilizado em UML (ou na orientao a objetos) para indicar como a declarao/defnio da interface de uma classe (seus mtodos e atributos). Por exemplo, adicionar (Pessoa p) a assinatura do mtodo adicionar que indica que sua execuo exige este formato. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 57 Figura 23: Representao de relacionamento de associao. Fonte: Matos (2002). O termo Trabalha para com a respectiva direo representa o vnculo criado entre os objetos das classes e permite imprimir um sentido de navegao na leitura do diagrama (MATOS, 2002). Este, no entanto, no o nico tipo de associao. O outro tipo, e talvez o mais comum, a agregao que representa uma relao do tipo todo/parte e tem propsitos diferenciados de uma associao como a representada anteriormente. Enquanto em uma associao pura podem ser identifcados os papis (que em determinados casos podem mudar), por exemplo, entre pessoa e empresa podem existir os papis (emprega- do e empregador). Em uma agregao, o que fca mais ntido o todo e a parte. Alm desse fato, em uma agregao, ambas as classes esto no mesmo nvel, no havendo distino entre o papel mais importante e o papel coadjuvante (MATOS, 2002). importante ressaltar que esse tipo de agregao conhecido como agregao fraca ou agregao simples, pelo fato de esse relaciona- mento no interferir no tempo de vida de suas partes, nem de haver um signifcado de navegao importante, como havia no exemplo ante- rior (MATOS, 2002). O exemplo seguinte pode soar estranho, mas o intuito identif- car a Escola como sendo um todo, formado no de tijolos, mas de partes quais sejam os alunos e os professores. Esta no uma viso potica do problema, mas possvel que a realidade do sistema modelado indique essa situao (MATOS, 2002). Figura 24: Representao de relacionamento de agregao. Fonte: Matos (2002). e-Tec Brasil/CEMF/Unimontes Informtica 58 Relacionamentos como as agregaes tornam-se complexos, caso informaes adicionais no sejam identifcadas, por exemplo, ser que existe alguma restrio quantitativa para o relacionamento? Este tipo de questionamento, na verdade, pode ser adequadamente comple- mentado pela multiplicidade (MATOS, 2002). Por exemplo: Figura 25: Representao de multiplicidade entre relacionamento. Fonte: Matos (2002). Onde se l: cada pessoa reside em um municpio e apenas nes- te, no entanto em cada municpio podem residir vrias pessoas. H uma variante mais forte da agregao, em que cada classe que uma parte do todo tambm se torna um componente fsico do todo. Esses tipos de agregao so representados por um losango cheio (MATOS, 2002). Por exemplo: Figura 26: Representao de relacionamento de agregao forte. Fonte: Matos (2002). Uma instncia da classe Endereo torna-se, na verdade, parte de alguma instncia da classe Pessoa, pois o endereo tambm uma caracte- rstica de qualquer pessoa (MATOS, 2002). 7.6.3 Extenses e mecanismos possvel representar, em diagramas da UML, informaes que auxiliam no processo de modelagem. Enquanto existem recursos que so apenas extenses aos recursos que j existem, outros so mecanismos cuja funo dar maior clareza ao modelo (MATOS, 2002). Nesta aula estudaremos os seguintes recursos: esteretipos, inter- faces, pacotes, restries e notas. Esteretipos Esteretipo o tpico recurso que se parece com a expresso carta embaixo da manga ou o famoso plano B. Ou seja, esteretipos podem ser utilizados para indicar um comportamento que se espera para determinado componente. Poderamos dizer que um esteretipo um metatipo, ou seja, aquele tipo que seria usado para ajudar na defnio de outro tipo (MATOS, 2002). Agregao forte uma prtica muito perigosa - se endereo um atributo de Pessoa, ento deveria ter sido modelado como atributo e no como outra classe, a no ser que o Endereo seja importante, no contexto, como uma classe parte. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 59 Existem alguns esteretipos predefnidos, tais como: use (em relacionamentos de casos de uso) e abstract (para indicar classes abstra- tas). E alm desses, esteretipos podem ser criados e incorporados ao modelo em desenvolvimento. Todas as ferramentas CASE de desenho de UML incorporam tanto os esteretipos prontos como permitem a defni- o de novos esteretipos (MATOS, 2002). Em suma, esteretipos so recursos que agilizam a defnio de algum componente, permitindo que comportamentos sejam incorpo- rados. Ou seja, se a palavra extends aparece, um conjunto de comporta- mentos j fca subentendido (MATOS, 2002). A presena de um esteretipo sempre acompanhada dos smbo- los << extends >>, como em << uses >>. Esteretipos so recursos utilizados em todos os diagramas da UML, no estando restritos apenas s defnies de classe (MATOS, 2002). Interfaces Existem classes cuja existncia puramente virtual, ou seja, exis- tem apenas para indicar que a interface de determinado objeto deve seguir. Em UML, a representao dessas interfaces feita pela indicao de um es- teretipo <<type>>. A insero do esteretipo importante, pois fca claro que a interface no possuir atributos e os mtodos defnidos so apenas as- sinaturas, cuja implementao dar-se- em outras instncias (MATOS, 2002). Figura 27: Representao de esteretipo <<type>>. Fonte: Matos (2002). Parece simplrio demais, mas uma interface exime o programador da chata tarefa de ter que pesquisar tudo o que um determinado objeto deveria fazer. Obviamente que nem todas as situaes podem ser aplicadas, por exemplo, no caso mostrado anteriormente, espera-se que toda mquina de lavar roupas faa as tarefas indicadas, com o perigo de haver mquinas muito distintas (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 60 Pacotes Uma analogia que soa estranho, mas que efcaz para compreen- der este conceito entender o que fazem os empacotadores em supermer- cados. Todos os produtos que so similares vo para os mesmos pacotes (ou sacolas). O objetivo simples: organizar, facilitar o transporte dos produtos (MATOS, 2002). Em um Diagrama de Classes, pacotes podem ser criados para dimi- nuir a complexidade do problema: classes que possuam caractersticas em comum podem ser includas em pacotes separados, tornando a manuteno e at mesmo as implementaes menos complexas (MATOS, 2002). Figura 28: Representao de pacotes. Fonte: Matos (2002). O que se prope neste exemplo a distribuio da complexidade do problema em dois pacotes. Cada pacote implementa uma viso diferen- ciada do problema (MATOS, 2002). Restries Dentro de um modelo, as restries so regras que permitem expli- citar o comportamento esperado de alguns relacionamentos. As restries podem ser descritas utilizando descries informais ou por meio de uma linguagem especfca para a descrio de restries - OCL (Object Constraint Language) (MATOS, 2002). Exemplo em que representao da restrio no utiliza formalismos. Figura 29: Representao de restries. Fonte: Matos (2002). O prximo exemplo mostra a utilizao de OCL que complemen- ta a indicao de que h funcionrios que so chefes e so objetos cujo atributo tipo possuir o valor chefe (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 61 Figura 30: Representao de restries com utilizao de OCL. Fonte: Matos (2002). Notas Assim como em qualquer linguagem de programao, possvel fazer comentrios que facilitem o entendimento do cdigo. Em UML, este recurso tambm existe em todos os diagramas (MATOS, 2002). Por exemplo: Figura 31: Representao de notas. Fonte: Matos (2002). Alm de ser um simples comentrio, notas podem conter estere- tipos que no caso do exemplo j determinam que tipo de comportamento a nota possuir. No exemplo, trata-se da identifcao dos requisitos que o atributo possui para que possa ser manipulado (MATOS, 2002). 7.6.4 Desenho de um diagrama de classes No basta sabermos identifcar o que uma classe ou como elas se relacionam. Atributos e mtodos so, na verdade, a parte mais importante na criao de uma classe (MATOS, 2002). Outros diagramas, tais como: o Diagrama de Interao e o de Esta- do, facilitam a identifcao dos atributos e dos mtodos; no entanto, nesta aula vamos iniciar o trabalho de fltrar essas caractersticas que devem exis- tir em uma classe. Para tanto, continuaremos nos reportando Clnica Mdi- ca que vem sendo discutida nos exemplos, agora por meio de uma descrio textual (MATOS, 2002). Suponha que os trabalhos da Clnica Mdica iniciem com a chegada de um Paciente. O provvel paciente dirige-se Enfermeira que est na por- taria e se identifca lhe dizendo seu Nome e o nmero de algum Documento. A Enfermeira verifca se o Paciente j foi atendido em alguma Data anterior. Caso seja constatado que o Paciente nunca foi atendido na Clnica, ele for- e-Tec Brasil/CEMF/Unimontes Informtica 62 nece Informaes Pessoais Enfermeira que efetua o seu cadastramento. Aps esse passo, o Paciente est apto a marcar uma Consulta, caso seja do seu interesse. A Enfermeira precisa se organizar e identifcar uma Data e um Horrio em que a Consulta possa ser marcada. O Paciente, ento, est apto a entrar na sala do Mdico, que previamente muniu-se de Informaes do Paciente. Neste momento, o Paciente precisa esboar ao Mdico todos os Sintomas, Problemas e Restries que o levaram Clnica. O Mdico, ento, avalia essas Informaes da Sade do Paciente e efetua um Diagnstico que pode ser seguido de um Pedido de Exames, alm de um Receiturio de Me- dicamentos, alm da indicao de um Retorno. Ao sair da sala do Mdico, o Paciente precisa informar Enfermeira os Dados do Pagamento que podem ser feitos em dinheiro ou por algum Convnio Mdico (MATOS, 2002). Analisando os nomes que aparecem em maisculo neste texto, po- demos identifcar classes e atributos peculiares de algumas classes. Dessa forma, um primeiro modelo de classes poderia ser feito da seguinte maneira: Figura 32: Representao das classes identifcadas. Fonte: Matos (2002). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 63 Este Modelo de Classes inicial proposto apresenta algumas falhas que, quase sempre, passam despercebidas. Esse trabalho inicial de avaliar as classes potenciais e seus atributos essencialmente semntico, ou seja, necessrio avaliar se cada item foi colocado no seu devido lugar. Aps chegar a uma concluso, passaremos a discutir os relacionamentos entre as classes (MATOS, 2002). Um problema que pode ser identifcado neste modelo trata dos atributos. Alguns atributos so imprescindveis, mas esto prejudicando a modelagem (MATOS, 2002). Por exemplo: Figura 33: Representao dos problemas e solues no contexto dos atributos. Fonte: Matos (2002). Para complementar o modelo proposto, os atributos em questo sero direcionados para os locais corretos e os relacionamentos sero criados da seguinte maneira (MATOS, 2002): e-Tec Brasil/CEMF/Unimontes Informtica 64 Figura 34: Representao do diagrama de classes proposto. Fonte: Matos (2002). Ainda no possumos o modelo defnitivo, mas podem ser discu- tidas duas dvidas (MATOS, 2002): 1) Como tratar a incluso de mtodos? 2) Exame e doena parecem ter uma existncia dependente da classe Diagnstico. No seriam os relacionamentos entre essas classes do tipo dependncia ou de agregao? As respostas a essas dvidas complementam o modelo que exi- bimos como exemplo (MATOS, 2002). As respostas so: 1) Mtodos podem at ser includos nesse momento, mas pre- cisam ser validados (confrmados). A validao ocorre nos Diagramas de Sequncia e de Estados que sero discutidos posteriormente; no entan- to, conveniente ressaltar que dois mtodos so comumente sugeridos. Mtodos get (obter) e set (confgurar) so sugeridos por se tratar de uma ao muito comum aos atributos. Obter o valor de um atributo (get) saber qual o seu valor atual, e confgurar o valor de um atributo (set) atribuir-lhe algo. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 65 2) No h necessidade de representar agregao ou dependncia. Basta confrontar com situaes que ocorrem em outros contextos, por exem- plo, um hospital ou at mesmo se tratar-se de um diagnstico em clnicas de vrias especialidades (psicologia, odontologia e at medicina alternativa). Diagnsticos no precisam ter, necessariamente, pedidos de exames ou o paciente pode no ter tido doenas no passado e alm desse fato, a maneira como o diagnstico tratado no infuencia nos exames (um exame de raio X continuar sendo o mesmo, apesar de um mdico mudar sua rotina de diag- nosticar um paciente). Associar um exame e um histrico de doenas a um diagnstico mdico no signifca construir um todo. 7.7 Interaes Objetos so entidades dinmicas, ou seja, no possvel ns ima- ginarmos os objetos como depsitos estticos de dados, mas sim como um ponto de referncia do processo de execuo das tarefas. Neste sentido, necessria uma forma de modelar como esse comportamento dinmico conduzido (MATOS, 2002). Programas orientados a objeto so, na verdade, constantes tro- cas de mensagens. Em conjunto, essas mensagens colaboram na obteno de um determinado propsito. Os diagramas de interaes so, portanto, a representao do comportamento dinmico que uma sociedade de objetos necessita ter para que a execuo de alguma tarefa possa ser acompanhada (MATOS, 2002). Estudaremos nesta aula duas formas de representar interaes, e como essas representaes podem ser teis no entendimento do processo de desenvolvimento de um software. 7.7.1 Por que devemos representar as interaes Representar interaes permitir que saibamos como um deter- minado conjunto de operaes permitir que o que se deseja do sistema seja realmente executado. muito improvvel que apenas a constatao emprica de que haja estruturas de dados sufcientes seja razovel para se confrmar exatido na execuo de tais operaes (MATOS, 2002). De certa forma, os diagramas de interao so, na verdade, ferra- mentas de constatao. possvel validar um Diagrama de Classes, ou at mesmo complement-Io pela anlise de um Diagrama de Interao. O resul- tado um processo de software menos sofrido e menos emprico (MATOS, 2002). Percebemos ento que representar interaes um misto de vali- dao e complementao. Validao, porque possvel constatar-se que a construo de outros diagramas est realmente de acordo com o modelo que vem sendo proposto, e complementao, pois cada possvel falha visualizada pode ser corrigida conforme sua validao (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 66 Interaes indicam que um conjunto de objetos esteja se comuni- cando. Essa comunicao ocorre por meio da troca de mensagens. Mensa- gens so, na verdade, uma invocao a alguma tarefa previamente defnida para ocorrer em algum objeto (MATOS, 2002). Esquematicamente, uma men- sagem pode ser identifcada como: Figura 35: Representao de interao atravs de mensagens. Fonte: Matos (2002). A fgura 35 representa a vontade que um objeto da classe Cliente chamado cl001 possui de se comunicar com um objeto da classe Conta, espe- cifcamente o ct001. Nesse momento, o objetivo de cl001 mudar o ESTADO de ct001, ou seja, da conta em questo retirado o valor de R$1.560,00. A mensagem surgiu porque o cliente, representado pelo objeto cl001, decidiu retirar essa quantia d conta em questo, ou seja, esse foi um momento de ocorrncia de uma interao entre dois objetos (MATOS, 2002). Podemos dizer ento, que sem a representao de interaes, a modelagem dos sistemas torna-se incompleta, haja vista que no se conhece como uma tarefa est sendo executada, e tambm no se conhece como um objeto dispara e fnaliza uma tarefa. Essa representao feita atravs dos Diagramas de Interao e conforme identifcaremos, atravs de dois tipos de diagramas: Diagramas de Colaborao e Diagramas de Sequncia (MATOS, 2002). 7.7.2 Tipos de diagramas de interaes Por meio de diagramas de interao podemos observar como os objetos esto relacionados. Questes como o entendimento das associaes entre as classes de um diagrama de classes fcam mais ntidas ao identifcar como um objeto realmente se comunica com outro (MATOS, 2002). Por exem- plo, analisemos a situao exposta no diagrama de classes da fgura 36. Figura 36: Representao de interao atravs da associao entre as classes. Fonte: Matos (2002). Mensagens so, na grande maioria das vezes, executadas entre objetos. No faz sentido, a priori, que classes troquem mensagens. Neste caso, h uma lembrana que deve ser feita: a sintaxe usada na representao para indicar que se trata de um objeto que est indicado pelo sublinhado e pelas inicias em minsculo, por exemplo: cliente:Cliente indica que cliente (com c minsculo) objeto da classe Cliente (com C maisculo). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 67 possvel que em algum instante da vida de um objeto da classe Paciente ocorra o seguinte: Figura 37: Representao de interao atravs de mensagens. Fonte: Matos (2002). O que ocorre nesta representao, que se trata de um trecho de um diagrama de sequncia, que um objeto da classe Paciente, denomina- do pac, teve a necessidade de marcar uma consulta. Essa ao foi traduzida em uma mensagem, ou seja, o pedido de execuo de um mtodo em outra classe, neste caso, no objeto cons, da classe Consulta. Isso constata a neces- sidade de uma associao entre as classes Paciente e Consulta no diagrama de classes (MATOS, 2002). Na verdade, este no o nico tipo de mensagem que objetos tro- cam. Quando se trata de uma interao, podemos ter as seguintes mensa- gens: Automensagens: quando as mensagens so enviadas para o pr- prio objeto que originou o pedido (MATOS, 2002). Como exemplo tem a fgura 38, que retrata uma mensagem que necessita ser executada no mesmo local de onde se originou a requisio. Figura 38: Representao de interao atravs de automensagens. Fonte: Matos (2002). e-Tec Brasil/CEMF/Unimontes Informtica 68 Mensagens de destruio (destroy): quando se trata de efeti- vamente desativar a sequncia de aes de um objeto. Essa destruio pode ser ativada por um objeto distinto ou pelo mesmo objeto. Esse tipo de mensagem pode ser acompanhado do esteretipo destroy (MATOS, 2002). Figura 39: Representao de interao atravs de mensagens <<destroy>>. Fonte: Matos, 2002. O uso do esteretipo <<destroy>> pode ser substitudo pela repre- sentao da fecha com o acompanhamento de um smbolo de x, conforme visualizado na fgura 40. Figura 40: Outra forma de representao de interao atravs de mensagens <<destroy>>. Fonte: Matos (2002, p.). Mensagens de criao (create): de outro lado, mensagens podem exigir a criao de um objeto. Por exemplo: Figura 41: Outra forma de representao de interao atravs de mensagens <<create>>. Fonte: Matos (2002, p.) Esta situao apresentada pode parecer estranha, mas muito simples de interpretar: um objeto, para dar continuao a alguma tarefa e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 69 iniciada, precisou criar um objeto. Esse objeto em questo, no instante, no possua identifcao, mas, bastava ser indicado que se tratava de uma instncia da classe Diagnstico. A leitura que pode ser feita da fgura , portanto, que o mdico (objeto med) precisou fazer um novo diagns- tico de paciente (MATOS, 2002). O conhecimento do comportamento das mensagens importan- te para o entendimento dos diagramas de interao (MATOS, 2002). Os diagramas discutidos nesta aula podem seguir dois enfoques distintos: baseando-se na ordem temporal das mensagens; baseando-se no contexto e na familiaridade de um conjunto de objetos. Em particular, a ordem temporal representada pelo Diagrama de Sequncia e o outro enfoque representado pelo Diagrama de Cola- borao (MATOS, 2002). 7.7.3 Diagrama de colaborao A primeira viso de interao que teremos a colaborao. O dia- grama de colaborao fxa a ateno em como os objetos esto se organizan- do para realizar uma tarefa (MATOS, 2002). como se uma cadeia de ajuda fosse realizada com a inteno de que um desejo fosse alcanado. Na troca de mensagens, em um diagrama de colaborao, cada ob- jeto possui uma identifcao esperada pelos outros objetos (MATOS, 2002). Na verdade, o que se usa o nome que os outros utilizam para identifc-Io. Visualizamos esta afrmao da seguinte maneira: Figura 42: Representao de diagrama de colaborao. Fonte: Matos, 2002. Estudaremos agora os tipos de mensagens em diagramas de interao: Mensagens sncronas: aquelas em que o objeto remetente espera o destino para fnalizar sua tarefa para continuar a execuo. Essa espera deve-se ao fato de que o destino possui uma resposta sem a qual o remeten- te no pode continuar. O desenho de uma seta, seja no diagrama de cola- borao, seja no diagrama de sequncia, indica que h sincronismo (MATOS, 2002). Mensagens assncronas: nesse tipo de mensagem, o objeto reme- tente no precisa esperar pelo destino. A linha de execuo pode continuar sem que haja uma resposta ao remetente. Mensagens assncronas esto, na grande maioria dos casos, relacionadas a problemas de tempo real, em que pode ocorrer paralelismo de execuo (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 70 As mensagens podem ser representadas da seguinte forma: Figura 43: Representao de mensagens. Fonte: prpria. 7.7.4 Diagrama de sequncia Os diagramas de sequncia descrevem o comportamento dos obje- tos do sistema, que se relacionam pela troca de mensagens em interaes sequenciais no tempo, enfatizando, portanto, o ordenamento temporal das aes. Cada diagrama mostra um cenrio, isto , um conjunto de mensagens, ordenadas no tempo, com um determinado objetivo. Assim, para a elabora- o de um diagrama de sequncia, importante que os objetivos do sistema j tenham sido descritos nos cenrios dos casos de uso (SBROCCO, 2011). Os diagramas de sequncia devem ser construdos conforme determinadas con- venes, descritas a seguir: Linhas verticais: utilizadas para representar e separar os obje- tos envolvidos. Elas devem apresentar uma informao comple- mentar representada por um retngulo, utilizada para indicar o tempo de vida dos objetos. Setas horizontais: para representar as mensagens passadas en- tre os objetos. As setas tambm podem receber rtulos, que correspondem aos nomes das operaes. Anotaes: as representaes dos elementos de um diagrama de sequncia pode ser complementadas e esclareci das por meio de anotaes. Os casos de uso so a base para o desenvolvimento dos diagramas de sequncia, pois pelo estudo da lgica dos casos de uso que podemos organizar roteiros que representam seu desdobramento. Quando observamos que existem diferentes caminhos lgicos que podem ser seguidos, convm criar diagramas de sequncia separados para cada um dos caminhos (SBROC- CO, 2011). 7.7.5 Desenho de um diagrama de sequncia O ponto de partida uma anlise dos casos de uso que foram cria- dos. Os diagramas de sequncia so facilmente criados a partir dessa anlise. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 71 Este seria o primeiro e mais importante passo. Para facilitar, um resumo de passos que podem ser seguidos apresentado (MATOS, 2002). Passo 1: transforme um caso de uso em uma descrio algortmica. O objetivo identifcar todos os passos envolvidos nesse caso de uso; Passo 2: avalie quais classes podem fazer parte desse caso de uso. Esta uma anlise que pode se basear tanto na observao dos nomes que apaream na descrio, como na observao dos atores; Passo 3: para cada passo que foi includo na descrio do passo 1, escolha uma classe que seja responsvel por fazer a tarefa indicada; Passo 4: se a tarefa for muito complexa para apenas um objeto da classe executar, divida-a. O objetivo tanto perceber se haver outras clas- ses no modelo, como se o caso de uso no est complexo demais. Para facilitar, continuaremos utilizando o exemplo da clnica mdi- ca. Em especial, o diagrama de casos de uso, apresentado na fgura 16. O caso de uso eleito para ser avaliado nos passos de 1 a 4 propostos anterior- mente foi Marcar Consulta. Esse caso de uso tem como ator responsvel a Enfermeira, mas, obviamente, o estmulo que permite o incio de tudo a chegada do paciente e seu respectivo interesse em ser atendido. Ento, vamos iniciar, descrevendo os passos desse caso de uso (MATOS, 2002). Passo 1: descrio do caso de uso em linguagem algortmica. 1. Paciente relata interesse em marcar uma consulta (este o estmulo en- dereado enfermeira). 2. A enfermeira precisa verifcar se o paciente j est cadastrado na clnica. Para isso, so pedidos os seus dados pessoais. Caso ainda no seja cadastra- do, seu cadastro requisitado. 3. Verifcadas as informaes do paciente, a enfermeira verifca se h vagas para a consulta. Essa verifcao consiste da constatao de data e horrio. 4. Caso haja vagas, a consulta enfm marcada. Caso contrrio, o paciente recebe uma negativa. Passo 2 e 3: avaliao das classes participantes. 1. A melhor estratgia tomar cada passo da descrio anterior e eleger classes (MATOS, 2002). 2. Enfermeira - neste ponto, apenas a Enfermeira estaria participando, pois a receptora do estmulo inicial. 3. Enfermeira e Paciente - a classe Enfermeira participa, pois a estimula- dora de uma verifcao na classe Paciente que, por sua vez, tambm deve participar, pois a classe que possui as informaes que esto sendo verif- cadas e/ou cadastradas. 4. Enfermeira e Consulta - a classe Enfermeira recebe, da classe Paciente, uma resposta que d incio s atividades de marcao da consulta, portanto a classe Consulta tambm participa dessa etapa. Paciente e Consulta - as informaes para a consulta so checadas. Caso haja espao na agenda da clnica, a classe Consulta recebe um estmu- lo para agendar a consulta; caso contrrio, a classe Paciente informada. e-Tec Brasil/CEMF/Unimontes Informtica 72 Nesse momento, o processo de marcao de consulta termina, com ou sem sucesso. Se no houve sucesso, todo o processo pode se repetir com um novo estmulo para a Enfermeira (MATOS, 2002). Passo 4: avaliao da complexidade. A complexidade no facilmente medida apenas com a consta- tao textual. Nesse instante, necessrio que se construa um primeiro modelo. Conforme o comportamento esperado nos passos 2 e 3, um modelo inicial seria o representado na fgura 44. Figura 44: Representao de diagrama de sequncia proposto. Fonte: Matos (2002). 7.7.6 Diagrama de estados Normalmente, um sistema aberto reage a estmulos provenientes de fora dele ou ainda estmulos temporais por ele mesmo desencadeado. Essa reao pode originar respostas externas ao sistema. Essa dinmica exis- tente nos sistemas fruto da colaborao entre objetos, os quais estaro em determinado estado em um certo momento no tempo (TONSIG. 2003). O Diagrama de Estados usado para mostrar os possveis estados dos objetos de uma classe. A mudana de um estado para outro chamada de transio de estados. Os eventos do diagramas de estados causam uma transio de um estado para outro e as aes resultam na mudana de esta- do. Cada diagrama de transio de estados est associado a uma classe ou a um diagrama de transio de estados de um nvel mais alto (TONSIG, 2003). O incio de um diagrama de estados indicado pelo chamado esta- do inicial, cuja representao grfca um crculo preenchido. Na verdade, ele no expressa um estado especfco do objeto da classe, indica apenas o incio do diagrama. Na sequncia, se conecta o primeiro estado real com uma transio, rotulado ou no. Em cada diagrama de estado h somente um estado inicial (TONSIG, 2003). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 73 A notao grfca de um estado inicial mostrada na fgura 45. Figura 45: Representao do estado inicial de um diagrama de estado. Fonte: Tonsig, 2003. Um estado demonstra uma situao no tempo de algum aspecto do sistema sobre o qual existe interesse de controle. Durante a vida de um objeto, pode vir a existir controle sobre vrias situaes, cada qual podendo assumir diversos estados possveis no tempo. Um objeto permanece em um estado por um tempo fnito (TONSIG, 2003). A notao grfca e um exemplo de estado so mostrados na Figura 46. Figura 46: Representao de um diagrama de estado. Fonte: Tonsig (2003). O estado fnal representa o trmino do ciclo previsto de controle para mudanas de um dos aspectos do sistema (TONSIG. 2003). Na Figura 47 verifca-se a representao grfca do estado fnal, mediante dois crculos, sendo o interno totalmente preenchido. A mudana de um estado para outro chamado de transio de estados. Trata-se de relacionamento entre dois estados (TONSIG. 2003). Para o objeto passar de um estado para outro, necessrio dois me- canismos: condio e ao. A condio, se existir, dever ser satisfeita para que a ao seja executada.. Essa ao a responsvel pela transi- o dos estados. e-Tec Brasil/CEMF/Unimontes Informtica 74 Figura 47: Representao de transio de estados. Fonte: Tonsig (2003). 7.7.7 Diagrama de atividades Do ponto de vista da representao de aspectos dinmicos do sis- tema, dois diagramas possuem caractersticas muito comuns: o diagrama de atividades e o diagrama de estados. Atravs deste diagrama vamos ter uma viso da representao do fuxo de operaes (MATOS, 2002). Antes de mais nada necessrio diferenciar atividade de estado. Atividade: trata-se de algo que est em execuo, portanto no fnalizado. Quando uma atividade termina, alguma ao ocorre (MATOS, 2002). Pelo conceito exposto, podemos traar algumas diferenas entre estado e atividade: em uma atividade a ao a fnalizao, ou seja, no h aes internas, assim como ocorre em um estado; quando se fala em um estado, representamos algo que j foi atingido e cujo interesse questionar o que ocorre quando ele alcanado; uma atividade , na verdade, uma operao obviamente relacio- nada a um objeto. Enquanto um diagrama de estados enfatiza os fuxos das operaes em uma classe, um diagrama de atividades relaciona as atividades entre classes. A ltima diferena a mais importante. Aqueles que vem o diagra- ma de atividades pela primeira vez, em no conhecendo essa diferena, vo imaginar que a mesma coisa que o diagrama de estados. Na verdade, pode- -se considerar que os recursos so semelhantes, mas no so efetivamente os mesmos (MATOS, 2002). Desenhamos um diagrama de atividades com a inteno de deixar claro o que acontece na cooperao entre os objetos de classes distintas, e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 75 mas no com o enfoque de um diagrama de sequncia, cujo foco so as men- sagens trocadas e as respostas a esse estmulo. Grady Booch e outros autores costumam salientar que o diagrama de estados ressalta o aspecto interno do que ocorre em um diagrama de interao (MATOS, 2002). Outra observao til aos modelistas o fato de que um diagrama de atividades pode ser visto como um verdadeiro fuxograma estendido - uma viso do fuxo das operaes, decises e fnalizaes (MATOS, 2002). Para estudarmos a criao de um diagrama de atividades e seus respectivos conceitos, apresentamos o seguinte problema: a marcao de uma consulta (MATOS, 2002). Figura 48: Representao de um diagrama de atividades. Fonte: Matos (2002). Apesar de este diagrama conter as mesmas operaes do diagrama de sequncias do captulo 7.7.4, sua semntica diferente. Sua representa- o indica como as atividades so conduzidas at que se chegue ao objetivo fnal - agendar uma consulta (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 76 Algumas representaes na fgura 48 podem ter causado estranhe- za, mas vamos explic-las: A presena de estados Os estados inicial e fnal ainda so importantes, pois um diagrama de atividades representa um fuxo de operaes, ou seja, necessrio indi- car o incio e o fm delas (MATOS, 2002). A presena de uma reta escura ( ___________ ) Trata-se de uma barra de sincronizao. A funo dessa barra representar momentos em que ocorre uma bifurcao ou unio do fuxo. Por exemplo, Cadastrar Paciente e Verifcar Paciente so atividades que levam mesma atividade - Checar Agenda. conveniente ressaltar que se trata de um fuxograma estendido, portanto h momentos em que o fuxo bifurcado e unido (MATOS, 2002). A presena de um smbolo de deciso Mais um motivo para considerar o diagrama de atividades distinto do diagrama de estados. Em um diagrama de estados o foco no est na identifcao de caminhos alternativos e nem na unio de caminhos. Devido a essa preocupao, diagramas de atividade so considerados extenses a fuxogramas, da a importncia de um smbolo como o de deciso (MATOS, 2002). Na verdade, essas no so as nicas representaes importantes em um diagrama de atividades. possvel indicar as classes envolvidas no fuxo. Essa representao d-se por meio de raias (ou swinlanes). e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 77 Figura 49: Representao de um diagrama de atividades e suas raias. Fonte: Matos, 2002. Conforme se observa, as raias so, na verdade, uma diviso de ta- refas, facilitando assim o entendimento de como as atividades esto distri- budas em um modelo de classes (MATOS, 2002). Enfm, o que se observa que a construo de um diagrama de atividades parte de duas fontes: ou da avaliao dos casos de uso e/ou da avaliao dos atores que participam do sistema (MATOS, 2002). 7.8 Componentes de software Muitos programadores j devem ter percebido a seguinte consta- tao: muitas tarefas pequenas constantemente reaparecem no desenvol- vimento de um novo software, mas geralmente em pontos e situaes di- ferentes. Um componente de software seria o elemento que surgiria com a implementao da interface esperada para esse objeto novo, diminuindo a sensao de que o mesmo trabalho seria feito novamente (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 78 Apesar de um componente assemelhar-se muito a um objeto de uma classe, pode-se diferenciar um componente de um objeto por suas ca- ractersticas adicionais quanto ao reuso de cdigo (e de projeto) (MATOS, 2002). Componentes so desenvolvidos baseando-se na juno de classes. Na verdade , so a soluo para um determinado problema, cujas interfaces so conhecidas, no entanto, ainda no haviam sido implementadas (MATOS, 2002). Componentes podem atuar em conjunto. Neste caso, precisam ser empacotados, pois a implementao de vrias interfaces individuais implica no esqueleto e um sistema completo (MATOS, 2002). Modelar um componente em UML prover recursos de gerencia- mento da confgurao e verso do software. Ou seja, como cada componen- te e software possuem uma relao intrnseca com outros, bem provvel que se criem dependncias entre componentes. Dessa forma, qualquer mo- difcao pode ser previamente avaliada. Obviamente que o impacto dessas modifcaes pode ser simulado e o resultado fnal validado (MATOS, 2002). Alm dessa viso de projeto, um componente, enfm, pode ser vis- to como um elemento cuja interface (a viso do seu conjunto de operaes e dados) mutvel. Essa mutabilidade gerenciada pelos elementos que compem o componente e permitem que ele seja reutilizado (MATOS, 2002). 7.8.1 Diagrama de componentes Escrever cdigo-fonte um trabalho artesanal. E no difcil cons- tatar-se esse fato. Um programador um indivduo criativo; suas idias fuem no escopo de um mundo - o mundo dos bits e bytes. A idealizao de uma soluo um caminho similar ao de um pintor, at que se chegue arte fnal, no se distanciando, obviamente, da realidade em que a soluo do proble- ma vai repousar (MATOS, 2002). Construir um diagrama de componentes criar um roteiro para essa tempestade de criatividade (MATOS, 2002). Obviamente que poderamos ser questionados pelo menos de trs formas: Como criar um roteiro de criatividade para algum sendo que este um trabalho individual? Como algum externo pode gerar um roteiro criativo para outra pessoa? Por que criar um roteiro criativo se isso pode limitar a inventivi- dade de uma pessoa? Diante dessas dvidas, vamos esclarecer no que realmente se tra- duz um diagrama de componentes. Um diagrama de componentes a relao de todos os itens de software que colaboram na confeco do produto fnal (MATOS, 2002). Nes- te diagrama, as maneiras como os elementos se relacionam e dependem permitem que o reuso de cdigo e empacotamento de componentes sejam avaliados. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 79 O exemplo representado atravs da fgura 50 pode ajudar a enten- der a funo de um diagrama de componentes. Figura 50: Representao de um diagrama de componentes. Fonte: Matos, 2002. Observando este exemplo, as funes de um diagrama de compo- nentes fcam mais claras: componentes so elementos de alto nvel. No se trata de um pacote, mas de um elemento que permite o agrupamento de vrias interfaces. Por exemplo, o Gerenciador de Senhas no necessariamente precisa implementar os mtodos indicados a partir de uma nica classe; conforme ser melhor discutido no diagrama de implantao, o sistema pode ser visto como uma diviso de ns, e cada n agrupa um conjunto de componentes similares. Na verdade, o desenho de um diagrama de componentes deve ser guiado pela conjuno da viso dos seguintes elementos de software: Cdigo-fonte Bibliotecas e interfaces Documentao e arquivos complementares Ou seja, um diagrama de componentes permite que se conhea a dependncia que existe entre os diferentes elementos de software (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 80 Na fgura 51, vamos esboar a organizao de um software verifca- dor de senhas e usurios para um terminal de um banco. Figura 51: Representao de um diagrama de componentes para um terminal de banco. Fonte: Matos, 2002. Obviamente que essa organizao dependente da soluo adota- da - esse conjunto de cdigo peculiar a um ambiente de programao em Java. Neste sentido, conveniente ressaltar que um diagrama de compo- nentes refete o que se espera da linguagem de programao usada (MATOS, 2002). Podemos incluir outros recursos de programao importantes em diagramas de componentes, tais como, tabelas de banco de dados e docu- mentaes. Estaremos visualizando estes recursos na fgura 52. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 81 Figura 52: Representao de um diagrama de componentes com tabelas de banco de dados. Fonte: Matos, 2002. 7.8.2 Diagrama de implantao Devemos visualizar que em qualquer processo ou ciclo de vida de software, um sistema computacional no apresenta apenas uma parte lgica. Analistas, projetistas e tomadores de deciso precisam preocu- par-se com o hardware - afnal de contas onde o software desenvolvido ser executado (MATOS, 2002). Os sistemas distribudos exigem muito mais dos projetistas de sistemas, pois um componente de software passa a ser muito mais do que um simples trecho de cdigo esttico, passando a ter uma responsabilida- de e mobilidade imprescindvel (MATOS, 2002). Se adaptar uma plataforma de hardware para um software dis- tribudo no uma tarefa simplria e de deciso meramente baseada em anlises de confguraes, devemos estudar um meio de modelar essa situao (MATOS, 2002). Em UML, diagramas de implantao so o recurso ideal para a discusso da adequao do hardware (MATOS, 2002). A partir do conceito de n podemos vislumbrar a distribuio do hardware e dos respectivos componentes de software necessrios. Devemos ento entender o conceito de n. N qualquer elemento de hardware em que um componente de sof- tware possa ser executado, ou seja, entende-se como n um elemento que possua capacidade de processamento (MATOS, 2002). e-Tec Brasil/CEMF/Unimontes Informtica 82 A modelagem de ns facilita a tomada de decises e diminui a distncia de vocabulrio e entendimento que geralmente existe entre pro- gramadores e analistas de sistemas (MATOS, 2002). Obviamente que no se espera que gestores e analistas tornem-se excelentes analistas de hardware, mas a discusso pela plataforma ideal torna-se mais simples (MATOS, 2002). Devemos salientar que a criao de diagramas de implantao um recurso da UML que melhor exemplifca a necessidade de extensabilidade (prevista pela linguagem). Nesse caso, o uso de esteretipos plenamente aconselhvel e podem indicar muito mais do uma simples relao de depen- dncia (MATOS, 2002). Componentes e ns possuem estreita relao e podem ser repre- sentados como na fgura 53. No entanto, diagramas de implantao no se restringem a apenas indicar essa relao existente entre componentes e seus respectivos ns de implementao (MATOS, 2002). importante ar- quitetar a organizao lgica do hardware participante de um ambiente. Figura 53: Representao de um diagrama de componentes com n. Fonte: Matos, 2002. comum o uso do diagrama de implantao para a confeco de uma viso simplifcada de uma organizao de hardware (MATOS, 2002). Na verdade, o que se v na fgura 54 uma relao de ligao que permite, inclusive, que se infra como esto distribudas as funes de um ambiente de gerenciamento de uma rede Internet, porm esse mesmo esquema pode ser estendido para uma situao mais real conforme podemos visualizar na fgura 55. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 83 Figura 54: Representao de um diagrama de componentes mostrando funes de ambiente de gerenciamento de uma rede internet. Fonte: Matos, 2002. Figura 55: Representao completa de um diagrama de componentes mostrando funes de ambiente de gerenciamento de uma rede internet. Fonte: Matos, 2002. e-Tec Brasil/CEMF/Unimontes Informtica 84 Resumo Nesta aula, voc aprendeu: sobre o histrico da UML; sobre os principais diagramas da UML; como identifcar um caso de uso; como desenhar um diagrama de caso de uso; como os principais diagramas da UML; sobre os cuidados necessrios ao se criar diagramas de caso de uso; como identifcar classes; como identifcar relacionamentos; sobre extenses e mecanismos; como desenhar um diagrama de classes; sobre os tipos de diagramas de interao; sobre diagramas de colaborao; sobre diagramas de sequncia; como desenhar diagramas de sequncia; sobre os diagramas de estados e sua funo; como desenhar diagramas de estados; sobre diagramas de atividades; como desenhar diagramas de atividades; sobre componentes de software; como desenhar diagramas de componentes; e como desenhar diagramas de implantao. Atividades de aprendizagem As atividades referentes aula 7 Modelagem Baseada em UML estaro disponveis na plataforma moodle. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas AULA 1 Alfabetizao Digital 85 Aula 8 Estudo de caso Objetivos - Criar um projeto de software utilizando conhecimentos de orien- tao a objetos e da linguagem de modelagem unifcada. 8.1 Introduo Atravs do estudo de caso, o aluno estar colocando em prtica os conhecimentos obtidos neste caderno. O estudo de caso ser disponibilizado na plataforma moodle. e-Tec Brasil/CEMF/Unimontes Informtica 86 Referncias BEZERRA, Eduardo. Princpios de anlise e projeto de sistemas com UML. 8 ed. Rio de Janeiro: Editora Elsevier, 2002. MATOS, Alexandre Veloso de. UML: Prtico e Descomplicado. 2 ed. So Paulo: Editora rica, 2002. SBROCCO, Jos Henrique Teixeira de Carvalho. UML 2.3: teoria e prtica. So Paulo: Editora rica, 2011. TONSIG, Srgio Luiz. Engenharia de software. So Paulo: Editora Futura, 2003. e-Tec Brasil/CEMF/Unimontes Anlise e Projetos de Sistemas 87 Currculos dos professores conteudistas Nilton Alves Maia Doutor em Engenharia Eltrica - rea de concentrao Engenharia de Com- putao e Telecomunicaes pela UFMG (2006), mestre em Administrao - rea de concentrao produo e sistemas pela UFRGS (1999), especialista em Anlise de Sistemas rea de Concentrao em Computao pela UFMS (1997), especialista em Tpicos Avanados em Telecomunicaes pela UFMS (1996), especialista em Administrao de Sistemas e de Informaes Geren- ciais pela UCDB (1994) e graduado em Engenharia Eltrica - Opo Eletrnica pelo INATEL (1979). Atualmente professor adjunto da Universidade Estadual de Montes Claros e das Faculdades Santo Agostinho. Possui experincia nas reas de Engenharia Eltrica e Sistemas de Informao, atuando principal- mente nos seguintes temas: sistemas de telecomunicaes, engenharia de trfego, computao autonmica, inteligncia computacional, anlise e pro- gramao de sistemas de informao orientados objetos. Snia Beatriz de Oliveira e Silva Maia Mestranda em Administrao com nfase em Gesto Pblica, especialista em Anlise de Sistemas rea de Concentrao em Computao pela UFMS (1997) formada em Tecnologia de Processamento de Dados pelo CESUP (1994). Atualmente professora da Universidade Estadual de Montes Claros. Possui experincia em Sistemas de Informao, atuando principalmente nos seguintes temas: Engenharia de Software, Anlise Estruturada e Gerncia de Projetos. e-Tec Brasil/CEMF/Unimontes Escola Tcnica Aberta do Brasil