Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Orientada a Objetos
Autor: Prof. Fbio Rossi Versolatto
Colaboradores: Prof. Luciano Soares de Souza
Profa. Ana Carolina Bueno Borges
Professor conteudista: Fbio Rossi Versolatto
Mestre em Engenharia de Software pelo Instituto de Pesquisas Tecnolgicas (IPT) da USP, especializado em
Arquitetura, Componentizao e SOA pela Universidade Estadual de Campinas (Unicamp), ps-graduado em Tecnologia
de Construo de Software Orientado a Objetos pelo Centro Universitrio Senac e bacharel em Cincias da Computao
pelo Centro Universitrio da FEI.
Professor do curso de Anlise e Desenvolvimento de Sistemas da Universidade Paulista (UNIP), no qual leciona e
orienta os alunos no programa Projeto Integrado Multidisciplinar.
Atuando na rea de pesquisa, possui publicaes e participaes em eventos na rea de Engenharia de Software
no Brasil e no exterior, alm de projetos de pesquisa aplicados na rea social.
Atua na rea de desenvolvimento de sistemas de software com larga experincia em sistemas estratgicos em
empresas de grande porte, com nfase em anlise de requisitos, projeto, arquitetura e desenvolvimento de solues
de software.
CDU 681.3.07
Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida por qualquer forma e/ou
quaisquer meios (eletrnico, incluindo fotocpia e gravao) ou arquivada em qualquer sistema ou banco de dados sem
permisso escrita da Universidade Paulista.
Prof. Dr. Joo Carlos Di Genio
Reitor
Comisso editorial:
Dra. Anglica L. Carlini (UNIP)
Dra. Divane Alves da Silva (UNIP)
Dr. Ivan Dias da Motta (CESUMAR)
Dra. Ktia Mosorov Alonso (UFMT)
Dra. Valria de Carvalho (UNIP)
Apoio:
Profa. Cludia Regina Baptista EaD
Profa. Betisa Malaman Comisso de Qualicao e Avaliao de Cursos
Projeto grco:
Prof. Alexandre Ponzetto
Reviso:
Rose Castilho
Marina Bueno de Carvalho
Sumrio
Anlise de Sistemas Orientada a Objetos
APRESENTAO ......................................................................................................................................................7
INTRODUO ...........................................................................................................................................................7
Unidade I
1 INTRODUO ANLISE DE SISTEMAS....................................................................................................9
1.1 Introduo ..................................................................................................................................................9
1.2 Sistemas de informao x software ............................................................................................. 11
2 PROJETO DE DESENVOLVIMENTO ............................................................................................................. 15
2.1 Processo de desenvolvimento de software................................................................................ 15
2.2 Modelos de processo de software ................................................................................................. 16
2.2.1 Modelo cascata........................................................................................................................................ 17
2.2.2 Modelo incremental............................................................................................................................... 19
2.2.3 Prototipagem............................................................................................................................................ 21
2.2.4 Modelo espiral .......................................................................................................................................... 23
2.2.5 Processo unicado ................................................................................................................................. 25
2.3 Processo X pessoas............................................................................................................................... 27
2.4 O paradigma da orientao a objetos.......................................................................................... 29
2.4.1 Classe ........................................................................................................................................................... 31
2.4.2 Objeto .......................................................................................................................................................... 32
2.4.3 Abstrao ................................................................................................................................................... 32
2.4.4 Encapsulamento ...................................................................................................................................... 33
2.4.5 Herana ....................................................................................................................................................... 33
2.4.6 Polimorsmo............................................................................................................................................. 34
2.4.7 Ligao e mensagem ............................................................................................................................. 35
2.5 A linguagem de modelagem unicada ....................................................................................... 35
Unidade II
3 ENGENHARIA DE REQUISITOS.................................................................................................................... 40
3.1 Introduo Engenharia de Requisitos ...................................................................................... 40
3.2 Classicao de requisitos ................................................................................................................ 43
3.2.1 Requisitos funcionais ............................................................................................................................ 44
3.2.2 Requisitos no funcionais ................................................................................................................... 45
3.3 Processo de Engenharias de Requisitos ...................................................................................... 50
3.3.1 Elicitao de requisitos ......................................................................................................................... 51
3.3.2 Anlise de requisitos .............................................................................................................................. 54
3.3.3 Documentao de requisitos ............................................................................................................. 55
3.3.4 Validao de requisitos ......................................................................................................................... 56
3.3.5 Gerenciamento de requisitos ............................................................................................................. 57
4 MODELAGEM DE CASOS DE USO.............................................................................................................. 59
4.1 Casos de uso e atores ......................................................................................................................... 61
4.2 Descrio de casos de uso ................................................................................................................ 61
4.3 Diagrama de caso de uso .................................................................................................................. 65
4.4 Estrutura do diagrama de caso de uso ........................................................................................ 66
4.4.1 Relacionamento entre casos de uso ............................................................................................... 66
4.4.2 Relacionamento entre atores ............................................................................................................ 69
Unidade III
5 MODELAGEM DE PROCESSOS DE NEGCIO......................................................................................... 75
5.1 Introduo modelagem de processos de negcio............................................................... 75
5.2 O papel do analista de negcio ...................................................................................................... 78
5.3 Regras de negcio................................................................................................................................ 79
5.4 Mtodos de modelagem de processos de negcio................................................................. 82
5.4.1 UML .............................................................................................................................................................. 83
6 AS VISES DA UML......................................................................................................................................... 95
Unidade IV
7 VISO ESTRUTURAL ESTTICA .................................................................................................................100
7.1 Conceitos fundamentais da orientao a objetos ................................................................102
7.2 Modelo de classes de domnio ......................................................................................................104
7.2.1 Conceitos fundamentais do modelo de domnio ....................................................................104
7.2.2 Relacionamento entre classes .........................................................................................................107
7.2.3 Herana ..................................................................................................................................................... 115
7.2.4 Diagrama de classes............................................................................................................................. 118
7.2.5 Diagrama de objetos........................................................................................................................... 122
8 VISO ESTRUTURAL DINMICA...............................................................................................................124
8.1 Realizao de casos de uso ............................................................................................................125
8.2 Classes de anlise ...............................................................................................................................126
8.2.1 Entidade ................................................................................................................................................... 127
8.2.2 Fronteira .................................................................................................................................................. 127
8.2.3 Controle ................................................................................................................................................... 127
8.3 Comportamento de objetos ...........................................................................................................129
8.3.1 Representando mtodos ................................................................................................................... 129
8.3.2 Polimorsmo...........................................................................................................................................131
8.3.3 Visibilidade de atributos e mtodos ............................................................................................. 132
8.3.4 IInterfaces ............................................................................................................................................... 134
8.3.5 Ciclo de vida de objetos .................................................................................................................... 135
8.4 Comunicao entre objetos ...........................................................................................................137
8.4.1 Mensagem .............................................................................................................................................. 137
8.4.2 Diagrama de sequncia ..................................................................................................................... 138
APRESENTAO
A disciplina Anlise de Sistemas Orientada a Objetos tem como objetivo apresentar ao aluno as boas
prticas para captar e mapear as necessidades das organizaes, inseridas em um mercado cada vez
mais competitivo, de tal forma que essas necessidades captadas de forma eciente se tornem subsdios
para o futuro projeto de software, utilizando para isso o paradigma da orientao a objetos.
Para atingir este objetivo, a disciplina comea contextualizando o aluno com os problemas
que a Engenharia de Software se prope a resolver, traando um paralelo com a linha de tempo
de sua evoluo.
Conceitos bsicos e motivaes postos, debate-se a engenharia de requisitos como fase fundamental
dentro de um projeto de desenvolvimento, mostrando as principais tcnicas para elicitao, mapeamento,
modelagem, documentao e gesto de todos os tipos de requisitos de um processo de negcio.
Por m, a disciplina apresenta a UML (Unied Modeling Language) como uma ferramenta para a
representao e a modelagem de um sistema de software, partindo da modelagem dos requisitos e
chegando ao projeto dos componentes do software, utilizando os diagramas da UML como ferramenta
de apoio em todo o processo.
INTRODUO
Desde que o software se estabeleceu como uma ferramenta importante na estratgia competitiva
das grandes empresas, a indstria de desenvolvimento vem passando por transformaes para atender
s necessidades cada vez maiores deste mercado.
O desao lanado no est mais no simples fato de se desenvolver uma srie de linhas de cdigo
que, agrupadas, compem um sistema de software, mas sim em desenvolver este software como um
produto, como uma ferramenta de estratgia competitiva que atenda a uma srie de exigncias e a
determinados padres de qualidade.
O que se espera de um projeto de software que ele seja iniciado e terminado no menor intervalo
de tempo possvel e que seja desenvolvido com um custo competitivo e, principalmente, com alta
qualidade. Balancear essas trs variveis em uma equao chamada projeto de software um dos
grandes desaos da Engenharia de Software.
Se o software deve ser enxergado como uma ferramenta de estratgia competitiva em uma grande
corporao, parece razovel que um projeto no deva tomar um tempo excessivo, anal de contas, em
um mercado cada vez mais competitivo, tem a vantagem aquele que larga na frente.
7
Seguindo a mesma linha de raciocnio, espera-se que um projeto no tenha custos exorbitantes,
o que pode, inclusive, torn-lo invivel. Em casos de projetos malsucedidos, o custo de um processo
de negcio realizado de forma no automatizada pode ser mais vantajoso que automatiz-lo. Logo,
podemos notar que o software deve estar atento relao custo-benefcio.
Sob uma viso ideal, um projeto deve ser executado em um tempo razovel e com um custo vivel.
Como se isso no bastasse, um sistema de software competitivo deve atingir certo nvel de qualidade.
possvel tambm, em um primeiro momento, que nos deparemos com a necessidade de atendermos
a requisitos no to claros, mas que em hiptese alguma so menos importantes.
Voltando linha de raciocnio anterior, se o software deve ser identicado como uma ferramenta
de estratgia competitiva em uma grande corporao, e que deve ser desenvolvido em tempo e custo
de tal forma a torn-lo efetivamente competitivo, no difcil observar a necessidade de pensarmos
em um projeto que nos possibilite manuteno rpida e eciente. Anal, se o mercado competitivo
muda com muita rapidez, possvel imaginar que um sistema de software tambm deva se adaptar
e essa realidade.
A partir dessa reexo inicial, podemos nos questionar: ser que realmente estamos dando a
devida ateno a todos esses pontos na hora de iniciar um projeto? Por que caractersticas de outras
engenharias, como padronizao e estabelecimento de um processo produtivo, nos parecem to
distantes da Engenharia de Software?
O paradigma da orientao a objetos, iniciada nesta disciplina, tem como objetivo levantar e
responder a essas e outras questes.
Este livro-texto busca oferecer um norte para as melhores prticas de desenvolvimento, de tal forma
que possamos atingir, como produto nal, o software como uma ferramenta de estratgia competitiva
de qualidade.
8
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Unidade I
1 INTRODUO ANLISE DE SISTEMAS
1.1 Introduo
A evoluo constante das plataformas de hardware, acompanhada do aumento escalar no uso dos
computadores pessoais, mudou a forma como se pensava o desenvolvimento de um sistema de software.
Com essa evoluo, os sistemas de software caram necessariamente mais completos e complexos.
Muito disso se deve necessidade de se utilizar todos os recursos disponveis, recursos estes que faltavam
em outros momentos.
Segundo Stallings (2003), a evoluo dos computadores evidenciada, ao longo dos anos, pelo
aumento da capacidade dos processadores, da memria e da velocidade do mecanismo entrada/sada.
Ainda segundo Stallings (2003), essa evoluo deve-se ao fato de que os componentes, tambm
chamados de transistores, que compem um processador foram diminuindo em tamanho com o passar
do tempo.
Com essa diminuio, foi possvel reduzir o espao entre esses componentes. Diminuindo tambm a
distncia que uma corrente eltrica percorre entre dois ou mais transistores, obtendo um consequente
ganho na velocidade de processamento.
Podemos notar esse ciclo analisando a Lei de Moore (Moore, 1965), proposta por um dos fundadores
da Intel, Gordon Moore, que observou que a quantidade de transistores em um processador duplicava
a cada 12 meses.
Observao
9
Unidade I
108
107
Pentium Pro Pentium II
Pentium PPC G3
486 PPC 601
106
386
80286
105
8086
104
4004
103
1970 1975 1980 1985 1990 1995 2000 2005
A evoluo do nmero de transistores segue o que foi previsto por Moore, com a nica ressalva que,
nos anos 1970, a duplicao se deu a cada 18 meses, em contrapartida aos 12 meses observados na
teoria de 1965.
Alm do bvio aumento na capacidade de processamento, alguns dos reexos da Lei de Moore:
Diminuio do custo de produo: com o baixo custo de produo dos computadores, foi possvel
reduzir o preo nal e, consequentemente, houve um aumento nas vendas e na produo em
escala dos equipamentos.
Computadores mais conveis: com um maior nmero de transistores em uma pastilha, diminuiu
a necessidade de conexes entre pastilhas. Essas conexes so feitas utilizando solda, que menos
convel se comparadas s conexes feitas entre transistores.
10
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Esses fatores geraram uma atmosfera positiva que culminaria, na dcada de 1980, com a massicao
do uso de computadores por usurios comuns, o uso dos computadores pessoais.
Com o problema hardware resolvido, o primeiro desao posto estava em como desenvolver sistemas
que maximizassem o uso do processador. Como utilizar toda a capacidade de processamento paralelo?
Como diminuir a ociosidade de um processador?
Aps a massicao do uso de computadores, surgiram novos desaos. As mquinas passaram a ser
operadas por usurios comuns. No era mais necessrio ser um especialista, os computadores passaram
a ser mais fceis de serem usados. Desao posto: como desenvolver sistemas que acompanhassem a
tendncia da massicao do uso?
Com esses e muitos outros desaos, passamos a ter uma maior preocupao com a informao. A
forma como a informao era trabalhada, trafegada, levada ao usurio e gerenciada passou a ter papel
de fundamental importncia.
Saiba mais
O que o sistema imunolgico de uma pessoa? De forma resumida e popular, o sistema imunolgico
biolgico a composio de diferentes tipos de clulas, cada qual com sua funo, que atuam
conjuntamente com o objetivo de manter a integridade do organismo que est sendo protegido.
11
Unidade I
Observao
Imagine um sistema de informao que tem como objetivo controlar o processo de um call center.
Qual valor estratgico e competitivo esse sistema de informao est produzindo empresa?
Poderamos trabalhar com a ideia de que esse sistema proporcionaria atendimento mais ecaz e
eciente ao cliente, e geraria informaes importantes que serviriam de apoio gerencial, como a denio
do perl do cliente. Ainda poderamos pensar como um valor importante estar apto legislao de
apoio e atendimento ao consumidor, que est em constante aperfeioamento.
importante ter em mente quais so os objetivos que o sistema deve atingir, pois eles servem de
norte para todo o restante.
Atendente
recebe ligao
do cliente
Reclamao Sugesto
Protocolo de Protocolo de
reclamao sugesto
Gerente l
protocolos
12
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Na plataforma tecnolgica, deveramos nos atentar a detalhes como como e onde essa informao
seria armazenada e qual o melhor projeto de rede para suportar o trfego dessa informao.
Modelar um sistema de informao no tarefa das mais simples e, dentro disso tudo, importante
pensarmos qual parte do processo seria automatizada por um sistema de software.
Diversas foram as abordagens e tcnicas criadas para modelar sistemas de software at chegarmos
abordagem foco deste livro: orientao a objetos. Por ora, entenda que a orientao a objetos uma
forma de se projetar um sistema de software. Adiante, detalharemos melhor o assunto.
O quadro a seguir mostra a evoluo das formas de se desenvolver sistemas, que anda em paralelo
com a evoluo dos computadores j debatida anteriormente.
Um sistema de software tambm pode ser identicado como o conjunto de vrios componentes
que, quando executados, produzem um resultado previamente desejado.
13
Unidade I
Desenvolver um sistema de software vai alm da simples digitao de linhas de cdigo, mas est
ligado ao entendimento das necessidades do cliente, as fronteiras dele dentro de um sistema de
informao, de tal forma que software possa atender a certos parmetros de qualidade, sendo, assim,
ecaz e eciente dentro do processo organizacional.
Mtodos: provm um conjunto de atividades com nfase no como fazer para desenvolver um
sistema de software.
Saiba mais
Processos: proveem o elo entre mtodos e ferramentas. Denem o quando e onde fazer, indicando
a sequncia de execuo das atividades, quais ferramentas utilizar e quem deve ser o responsvel
pela atividade.
Observao
14
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
2 PROJETO DE DESENVOLVIMENTO
Atividade Descrio
Fase na qual so denidas e especicadas as funcionalidades do
Especicao de software software, seus requisitos e suas regras de execuo.
Fase na qual os requisitos so transformados em sistema de software.
Projeto e implementao de software Quando so projetados e construdos os componentes de software e
suas integraes.
Validao de software Fase na qual o software validado frente aos requisitos especicados.
Evoluo de software Fase na qual so traadas estratgias para que o sistema de software
possa ser mantido e evoludo na medida.
Dizemos que essas atividades so macroatividades pelo fato de que elas podem, e devem, possuir
subatividades e/ou atividades que as suportem, por isso dizemos que so macro ou complexas.
Se zermos uma analogia com a Engenharia Civil, podemos imaginar que a atividade de especicao
produz os requisitos de uma casa, como a metragem, a quantidade de quartos, tipo de cozinha,
quantidade de banheiros etc. Enquanto a fase de projeto ir produzir a planta da casa, transformar os
desejos do proprietrio em projeto. Se utilizar boas ferramentas, o projetista da casa poder exibir um
modelo quase que nal da casa para o seu cliente, com detalhes que inicialmente poderiam at passar
despercebidos, como a cor das paredes.
Quem j passou por uma situao parecida saber muito bem do que estamos falando. Com o
andamento das obras, difcil segurar a ansiedade de dar uma olhada.
15
Unidade I
comum que, com a obra tomando forma, mudemos nossa forma de ver. O que antes era uma
planta, um projeto, passa a se tornar algo concreto, palpvel. Nessa hora, solicitamos pequenos ajustes
no projeto, o que acaba invariavelmente reetindo na prpria obra.
Chamamos de validao o ato de analisarmos se o que est sendo construdo est em conformidade
com o que foi desejado e/ou se est em conformidade com o que foi projetado. A possibilidade de
correes e ajustes grande nessa fase.
Se o projeto e a construo da casa foram feitos utilizando bons padres e boas ferramentas, temos
a garantia, ou uma boa probabilidade, de que no tenhamos grandes problemas.
No entanto, mesmo que acontea algum tipo de problema ou que desejssemos algum tipo de
mudana, temos a garantia de que a manuteno ter o menor custo possvel.
Feito esse paralelo, voltemos para o processo de desenvolvimento de software. Cada atividade possui:
Papis: quem o responsvel pela execuo da tarefa. Por exemplo: o analista de testes
responsvel pela validao.
Produtos: tambm chamados de artefatos, o que produzido como sada de uma determinada
atividade. Por exemplo: espera-se como artefato de sada da atividade de especicao de software
um documento contendo a descrio detalhada de todas as necessidades do negcio.
Saiba mais
Muitos so os modelos de processos aplicados e debatidos atualmente. Nesta seo, abordaremos alguns
dos diversos modelos de processos de software utilizados atualmente na indstria de desenvolvimento.
16
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Tambm chamado de waterfall ou tambm citado na literatura como ciclo de vida clssico, o modelo
cascata composto de cinco atividades.
Anlise de requisitos
Projeto
Nesta fase so denidos os componentes do software e como eles iro interagir para atingir os
requisitos elicitados na fase de anlise dos requisitos.
Codicao
comum que nesta fase sejam feitos testes unitrios, ou tambm chamados de testes de
desenvolvimento, que tm como intuito a deteco, se houver, e correo de pequenas falhas
unitariamente em cada componente de software.
Testes
Nesta fase o software construdo submetido validao com o objetivo de encontrar e corrigir
possveis no conformidades com os requisitos avaliados, com a arquitetura denida ou at mesmo
erros de construo.
Saiba mais
17
Unidade I
Implantao e manuteno
A fase de implantao e manuteno a fase mais longa do ciclo de vida de um software e tem
incio quando o sistema colocado para uso por parte do usurio nal.
Na prtica, dizemos que o sistema est em ambiente produtivo, ou seja, o resultado de suas operaes
ou falhas afetaro diretamente o processo da organizao.
Nesta fase, possvel que o sistema passe por alteraes, seja para correo de algum erro no
encontrado na fase de testes ou mudanas nos requisitos provocadas pelas mais diversas razes.
Lembrete
Anlise de
requisitos
Projeto
Codicao
Testes
Implantao e
manuteno
No modelo cascata, as atividades so executadas de forma sequencial. Assim, uma atividade no iniciada
at que sua predecessora seja completamente nalizada. Isso nos permite armar, por exemplo, que a construo
no iniciada at que seja nalizada a arquitetura do sistema de software na fase de projeto, que, por sua vez,
no iniciada at que todos os requisitos sejam levantados, documentados e aprovados pelo usurio.
justamente nesse ponto que est uma das maiores fragilidades deste modelo.
A fase de projeto no se inicia at que todos os requisitos sejam elicitados, documentados e aprovados
pelo usurio. comum que requisitos novos surjam e sejam alterados no curso do projeto, pelas mais diversas
18
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
razes, entre elas a falta de habilidade do analista em extrair e captar as necessidades do processo de negcio.
A mudana nos requisitos pode ocorrer durante a fase de projeto, codicao ou at mesmo na fase de testes,
assim como problemas na arquitetura podem ser identicados na construo ou na implantao.
Alto custo em cada atividade: cada atividade acaba por levar mais tempo para ser nalizada,
justamente para minimizar os impactos de possveis falhas.
Alto custo de retrabalho: no caso de encontrarmos alguma falha em algum produto produzido em
alguma atividade, o custo de correo alto.
Em contrapartida, o modelo espiral muito ecaz em projetos nos quais temos o escopo e as
necessidades bem denidas e com poucas chances de mudana, como em sistemas de misso crtica,
cujos modelos matemticos so feitos e validados exausto antes que seja desenvolvido qualquer tipo
de modelo ou linha de cdigo.
Observao
O modelo incremental, tambm chamado de iterativo, , em sua essncia, bem parecido com o
modelo cascata.
Observao
A diferena que no modelo incremental no necessrio que todos os requisitos estejam mapeados
para se iniciar o ciclo de desenvolvimento.
19
Unidade I
Cada bloco de requisitos, quando implantado, corresponde a uma parte do sistema de software,
tambm chamado de incremento. O ciclo repetido tantas vezes quanto necessrio, at que todos os
incrementos do software sejam implantados, da o termo modelo iterativo, ou seja, modelo que se
repete inmeras vezes.
O modelo iterativo no diminui o custo total do projeto, mas reduz o custo de cada atividade. Com
escopo reduzido, o tempo gasto para executar cada tarefa tende a ser menor tambm. Um exemplo disso
pode ser notado na fase de testes. O tempo gasto para validar um nmero menor de funcionalidades
inversamente proporcional ao tempo gasto na validao de um escopo mais amplo.
Interao
N
Total de funcionalidades
Segunda
interao
Primeira
interao
Tempo de projeto
Anlise de
requisitos
Projeto
Codicao
Testes
Implantao e
manuteno
20
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Ademais, com um bom planejamento de execuo, possvel priorizar partes de requisitos crticos
para o negcio, requisitos que gerem valor ao processo, abrindo a possibilidade da vantagem competitiva
para a organizao no mercado.
Nada impede que um ciclo de desenvolvimento seja iniciado antes da implantao de um que j
esteja em andamento. Desde que no haja nenhuma dependncia entre os requisitos ou componentes
de software, essa uma alternativa vivel e atrativa do ponto de vista da produtividade.
O modelo incremental serviu de base para muitos outros processos largamente utilizados e debatidos
na literatura, como: prototipagem, modelo espiral e processo unicado, que iremos detalhar na sequncia.
Saiba mais
<http://agilemanifesto.org/iso/ptbr/>.
2.2.3 Prototipagem
Esse prottipo de software tem como objetivo a prova de conceitos. Vericar e demonstrar se
os requisitos mapeados esto de acordo com a necessidade do usurio ou validar uma soluo de
projeto. fato que a prototipagem utilizada com o objetivo de antecipar mudanas que possam
vir a ser mais custosas no desenvolvimento de um sistema de software. O modelo de prototipagem
possui quatro atividades:
planejamento;
construo;
validao.
21
Unidade I
Planejamento
Denio das
Validao funcionalidades
Construo
Como sabemos quando usar a prototipao? Pressman (2006) faz algumas observaes bem
interessantes:
Se nosso usurio tem uma boa noo, mas no tem, no momento, uma viso detalhada do que
precisa ser feito, positivo que usamos a prototipao como um primeiro passo.
O cliente precisa ter a total noo de que o prottipo no o sistema de software. A comunicao
fundamental.
Toda a equipe de desenvolvimento tambm precisa ter a total noo que o prottipo no o
sistema de software. Ele foi desenvolvido descartando muitas das boas prticas de projeto, como
a manutenibilidade.
Rosemberg et al. (2008) utilizaram uma abordagem voltada prototipao e obtiveram bons
resultados em seu projeto. Os autores trabalharam com o que chamamos de prottipo de baixa
delizao, que d nfase na interao com o usurio e na estrutura geral do sistema de software, no
se preocupando em fazer prottipos que produzissem uma imagem real do sistema.
Prottipos de baixa delizao foram ecientes e viveis para demonstrar para os usurios as
funcionalidades a serem implementadas pelo sistema.
Outro fato interessante observado foi a viabilidade econmica do prottipo: barato na construo
e na alterao.
Alguns dos bons resultados obtidos nesse projeto: rapidez no processo de captao dos requisitos e
antecipao dos problemas.
22
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Saiba mais
O modelo espiral, ou tambm citado na literatura como modelo de Boehm (1988), tem como raiz o
modelo iterativo incremental e como preocupao central a mitigao de riscos.
A diferena fundamental do modelo espiral para os outros modelos que discutimos at agora
que cada ciclo completo, ou cada iterao, no modelo proposto por Boehm em 1988, no produz ou
implementa um sistema ou uma parte do sistema de software.
Desenvolvimento do produto.
23
Unidade I
Planejamento da Desenvolvimento
prxima fase do produto
A gura anterior representa o modelo espiral proposto por Boehm (1988). Cada linha da espiral, em
cada fase, corresponde a uma sequncia de atividades. Por exemplo: na fase de Desenvolvimento do
Produto podemos ter Elicitao de Requisitos, Documentao e Validao dos Requisitos.
A nfase na diminuio do risco se d pelo fato de que entre a definio do que precisa
ser feito e o efetivo desenvolvimento, existe a fase de mitigao dos riscos. Nela, os riscos so
identificados, mitigados e, a partir disso, so traadas estratgias para minimizar os impactos
para as fases seguintes.
Saiba mais
Observao
24
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Idealizado por Jacobson, Rumbaugh e Booch (1999), o Processo Unicado, tambm conhecido como
UP (Unied Process), tem em seu fundamento a estrutura do modelo iterativo incremental.
Observao
Iniciao: nesta fase denido algo muito importante para qualquer projeto de software, o
escopo do projeto, que a relao das necessidades que sero atendidas no projeto de software
e aquelas que no sero.
Construo: esta fase est associada ao desenvolvimento do projeto, que consiste em projetar,
codicar e testar o sistema de software.
Transio: nesta fase, o sistema de software entregue para o usurio nal, sendo comum que
existam correes e adaptaes a serem feitas, decorrentes das mais diversas naturezas, como
adaptao ao ambiente nal do usurio ou novas demandas.
Centrado na arquitetura.
Iterativo e Incremental.
25
Unidade I
Observao
Uma variao importante do modelo de processo unicado, que utilizada largamente pelas grandes
organizaes atualmente, o RUP (Rational Unied Process) (KRUCHTEN, 2003).
O RUP um modelo de processos, desenvolvido pela Rational, que associou o Modelo de Processo
Unicado s melhores prticas da Engenharia de Software, que so:
Desenvolva iterativamente.
Gerencie requisitos.
Modele visualmente.
Gerencie mudanas.
O modelo proposto pela Rational especica, de forma sistemtica, a sequncia que as atividades, ou
tambm chamadas de disciplinas, devem ser realizadas dentro de cada fase, quem so os responsveis e
quais produtos so resultantes de cada atividade.
Observao
A relevncia do RUP, no contexto desse trabalho, d-se pelo fato de que o modelo incorpora como
ferramenta de apoio, a modelagem visual, particularmente utilizando a Linguagem de Modelagem
Unicada UML (Unied Modeling Language).
Alm do mais, o modelo d nfase utilizao da orientao a objetos como boa prtica de
Engenharia de Software quando incorpora a utilizao da arquitetura de componentes.
26
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Saiba mais
<http://epf.eclipse.org/wikis/openup/>.
Quando: denio de qual momento o artefato ser produzido, denio das pr-condies e
ps-condies.
Quais as responsabilidades de uma equipe dentro de um projeto? Qual o papel da pessoa dentro
do processo de desenvolvimento?
O RUP, por exemplo, no tem nfase no indivduo, mas sim no papel. O papel o responsvel pela
execuo de uma determinada tarefa, que responsvel por um determinado artefato (KRUCHTEN,
2003). Segundo a empresa Wthreex (s.d.), o papel dene o comportamento e as responsabilidades de
um indivduo ou de um conjunto de indivduos que trabalham juntos como uma equipe, no contexto de
uma organizao de engenharia de software.
27
Unidade I
Bezerra (2006) tem ideia semelhante e destaca que o componente humano fator importante
no desenvolvimento de um sistema de software, uma vez que ele composto de tarefas altamente
cooperativas. Ele ainda destaca, de forma semelhante ao RUP, que uma pessoa pode desempenhar
diversas funes que tipicamente um projeto de desenvolvimento de software possui, na grande maioria
dos casos, independentemente do modelo de processo adotado, que so os seguintes papis:
Gerente de projetos
Prossional responsvel por gerir o projeto, que compreende, entre muitas coisas, coordenar e
acompanhar as atividades do projeto e alocar as pessoas para as funes determinadas.
Saiba mais
Analista
Analista de sistemas, muitas vezes chamado de analista de negcios, responsvel por captar as
necessidades do negcio e transform-las em requisitos do sistema de software.
Bezerra (2006) cita algo de importante destaque: o analista de sistemas deve ser tico, uma vez que,
em muitas situaes, se depara com informaes e contratos que envolvem condencialidade.
Projetista
Responsvel por produzir uma soluo computacional para os problemas identicados. Por exemplo:
um projetista de interface grca do usurio, que especialista em fornecer solues para interfaces
padro para sistemas operacionais da Apple ou da Microsoft.
Arquiteto de software
Responsvel pela elaborao da arquitetura do sistema. Como e quais sero os componentes internos
do sistema de software e como esses componentes iro se comunicar para atender a uma determinada
necessidade.
28
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
Desenvolvedores
Clientes
O usurio parte fundamental do processo de desenvolvimento, ele precisa estar envolvido e com
foco desde o momento do levantamento de requisitos at a validao.
Avaliadores de qualidade
So responsveis por garantir que o sistema de software atenda a todas as necessidades do negcio.
Saiba mais
Entre os vrios processos aqui discutidos, e entre os outros tantos que existem, cabe ao prossional
levar em considerao as caractersticas do projeto e as caractersticas do modelo de processo para
saber qual a melhor deciso.
29
Unidade I
Imagine a seguinte situao do nosso cotidiano: um cliente de uma agncia bancria vai at um
terminal de autoatendimento para sacar uma determinada quantia em dinheiro. O cliente possui algumas
caractersticas importantes nesse processo, como nmero de agncia, nmero de conta e senha. Alm disso,
ele executa algumas aes para efetuar o saque, como inserir carto, informar senha e retirar dinheiro.
Outro componente importante dessa cena o prprio terminal de autoatendimento, que, por sua
vez, tambm possui caractersticas e comportamentos importantes, como dispensar dinheiro.
Se pensarmos no paradigma da orientao a objetos, podemos interpretar que temos dois objetos
no processo: cliente e terminal. Tanto um quanto o outro possuem caractersticas, comportamentos, e
executam determinadas aes.
Dentro desse cenrio, os dois, cliente e terminal, devem interagir para que o processo seja efetuado
com sucesso. De maneira anloga, na orientao a objetos, dois objetos interagem entre si para executar
uma determinada tarefa computacional por meio da troca de mensagens.
Uma mensagem pode ser interpretada como a requisio que um objeto faz a outro objeto para que
ele execute um determinado servio.
Bezerra (2006) interpreta a orientao a objetos como uma tcnica para modelar sistemas que
diminui a diferena semntica entre a realidade sendo modelada e os modelos construdos.
Antes do paradigma da orientao a objetos atingir sua plenitude, no incio da dcada de 1990, o
paradigma estruturado era amplamente utilizado para modelagem de sistemas.
Observao
O grande problema enfrentado pelo paradigma estruturado foi a atomicidade dos processos. As
unidades de processamento eram organizadas em poucos e grandes blocos ou muitas vezes em um
nico bloco responsveis pela realizao de toda a tarefa.
Essa organizao levou a sistemas muito complexos e de difcil manuteno, o que no combinou
com a crescente necessidade do mercado, que j debatemos anteriormente.
A modelagem prxima ao mundo real gera modelos mais fceis de entender e manter.
classes;
objeto;
abstrao;
encapsulamento;
herana;
polimorsmo;
ligao, mensagem.
2.4.1 Classe
Classe de objetos pode ser denida como um grupo de objetos com as mesmas propriedades
(atributos), comportamentos (operaes), relacionamentos e semntica. A classe dos prossionais de
engenharia qumica, por exemplo. Todos devem possuir curso superior em engenharia qumica, registro
no CREA e podem executar apenas determinadas tarefas, como desenvolver laudos.
31
Unidade I
As classes representam o bloco de construo mais importante de qualquer sistema orientado a objetos,
pois so utilizadas para capturar o domnio do problema no qual o sistema est sendo desenvolvido.
2.4.2 Objeto
J vimos que um objeto um elemento do mundo real, que possui relevncia para soluo de um
determinado problema e que esse objeto possui caractersticas e executa determinadas aes (mtodos).
Voltando novamente ao nosso exemplo do terminal de autoatendimento, os clientes que fazem parte
da classe Cliente do banco possuem agncia, nmero de conta, senha. Podemos entender, portanto,
que um objeto do tipo Cliente identicado pelo conjunto dessas informaes.
Por exemplo: Joo um cliente do banco XYZ, nmero de agncia 1234 e nmero de conta corrente
12345-0. No existe, no banco XYZ, nenhum outro cliente com essas informaes. Sendo assim, podemos
armar que todo objeto possui uma identidade, representada por um conjunto de informaes atribudas
s suas caractersticas. Podemos armar tambm que todo objeto possui um estado, denido tambm
pelo conjunto dessas informaes.
Suponhamos que o cliente possua tambm o atributo Saldo de conta-corrente. A informao desse
atributo dene seu estado em funo do tempo de vida desse objeto. Por exemplo: Joo tem um saldo
de R$ 900,00 na conta-corrente em um determinado dia. No dia seguinte, Joo efetua um saque de R$
100,00, passando a ter um saldo de R$ 800,00.
Diante dessa situao, podemos armar tambm que o estado de um objeto pode ser alterado pelos
seus mtodos.
2.4.3 Abstrao
O conceito de abstrao est ligado nossa capacidade, enquanto analistas, de resolver problemas,
de selecionar determinados aspectos do problema e isolar o que importante do que no para um
determinado propsito. Abstrao dar nfase quilo que essencial.
Se zermos uma analogia com as fases de um projeto de construo de uma casa, seria algo como
pensarmos na planta em vez dos tijolos. Pensar em como organizar o sistema eltrico e hidrulico em
vez de pensar em luminrias, lmpadas e torneiras.
Alm disso, abstrao est ligada nossa capacidade de estabelecer um modelo de objetos bem
decomposto, de tal forma que cada objeto seja uma unidade autnoma, estabelecer a dependncia
apenas entre objetos que tenham alguma colaborao em um determinado momento do processo.
2.4.4 Encapsulamento
Encapsulamento signica deixar visvel apenas o que necessrio para a comunicao entre dois
objetos, como detalhes da implementao ou a lgica algortmica de um mtodo.
Voltando ao nosso exemplo do terminal de autoatendimento, o objeto do tipo Cliente precisa saber
o que o terminal faz para dispensar o dinheiro? Se ele efetua contagem das notas, se existem outros
objetos que fazem parte do processo? A resposta no. Contanto que a comunicao entre eles, cliente
e terminal, esteja funcionando corretamente, no existem problemas pelo fato do cliente no conhecer
detalhes da implementao do mtodo de dispensar dinheiro.
2.4.5 Herana
No mundo real existem objetos que possuem caractersticas semelhantes, mas que esto em classes
diferentes? Clientes Pessoa Fsica (PF) e Clientes Pessoa Jurdica (PJ) de um banco, por exemplo, possuem
caractersticas e operaes semelhantes?
Sim, no mundo real existem objetos que possuem caractersticas semelhantes, mas que esto em
classes diferentes. Temos, nesses casos, o conceito de superclasse e subclasse.
Se pensarmos em uma estrutura hierrquica, podemos dizer que ces, gatos e roedores so
especializaes de mamferos, ou seja, possuem tudo o que os mamferos possuem e algo a mais que
os diferenciam, enquanto isso, mamfero uma generalizao de ces, gatos e roedores, seguindo
exatamente a mesma lgica.
A gura a seguir mostra um exemplo de herana de objetos. A classe Cliente possui os seguintes
atributos: ContaCorrente, NumeroAgencia e NumeroBanco alm de possuir o mtodo EfetuarSaque.
Cliente
ContaCorrente
NumeroAgencia
NumeroBanco
efetuarSaque()
ClienteCPF ClientePJ
Nome CNPF
CPF RazaoSocial
efetuarEmprestimoPF() efetuarEmprestimoPJ()
Alm de possuir os atributos da classe me, ClientePF e ClientePJ possuem suas prprias caractersticas:
CPF e Nome; CNPJ e RazaoSocial, respectivamente. E seus prprios mtodos: efetuarEmprestimoPF e
efetuarEmprestimoPJ, respectivamente.
Simples: quando uma classe lha herda caractersticas de apenas uma classe me.
Composta: quando uma classe lha herda caractersticas de mais de uma classe me.
2.4.6 Polimorsmo
Fazendo novamente uma analogia aos animais, podemos ter a classe caranguejo e a classe co.
Ambas so subclasses de animais, que realizam a ao andar. Se zermos com que um caranguejo ande
cinco metros, certamente o comportamento ser diferente se enviarmos a mesma mensagem para o
co, muito embora eles respondam mesma mensagem e o resultado seja exatamente o mesmo: ambos
andaro cinco metros.
Observao
Se um objeto envia uma mensagem para outro, eles possuem uma ligao, chamada de associao
simples, ou seja, uma ligao que acontece apenas em um determinado momento.
Pode acontecer que um objeto tenha em sua composio outro objeto. Neste caso existe uma relao
todo-parte. Por exemplo: o objeto terminal de autoatendimento composto dos objetos monitor, leitora
de carto e dispensador de dinheiro. Assim, seguindo na mesma nomenclatura, a leitora de carto
parte do objeto terminal de autoatendimento.
A composio todo-parte entre dois objetos determina o ciclo de vida de um objeto. Quando o
objeto que compe outro no existe fora desse contexto, dizemos que existe uma associao do tipo
composio. Por exemplo: o objeto item de nota scal faz parte do objeto nota scal, todavia, ele, por
si s, no existe sem a existncia de uma nota scal.
Quando o objeto que compe o outro existe fora do contexto, dizemos que h uma associao do tipo
agregao. Podemos citar o objeto livro, que faz parte do objeto biblioteca, todavia, ele existe mesmo se no
existir o objeto biblioteca para um determinado contexto, por exemplo, a automao de uma universidade,
onde o livro existe mesmo que no esteja na biblioteca, mas ela composta por uma coleo de livros.
O que uma linguagem? O dicionrio Michaelis (1998) dene linguagem como um conjunto de sinais falados
(gltica), escritos (grca) ou gesticulados (mmica), de que se serve o homem para exprimir suas ideias e sentimentos.
Vamos nos atentar linguagem escrita. Eu, por exemplo, escolhi um conjunto de caracteres para
escrever este material. Em uma sequncia lgica, esses caracteres expressam uma linguagem escrita.
Voc, que est lendo este material, olha esses caracteres e entende a linguagem utilizada, ou seja, o que
eu estou querendo dizer, porque sabe interpretar a sequncia deles.
O compilador interpreta essa linguagem, esse conjunto de caracteres, inclusive as palavras reservadas,
e produz o resultado que voc, desenvolvedor, esperava.
Caso voc no tenha escrito algo que faa coerncia, seu cdigo no compilado. Isso acontece
porque o modelo de cdigo produzido no interpretado pelo compilador.
Por se tratar de uma linguagem, ainda que visual, tambm composta por elementos (grcos) que
tambm seguem algumas regras.
Regra de sintaxe: cada elemento deve ser desenhado, representado, seguindo um padro.
Por exemplo: se combinarmos que a gura a seguir representa uma impressora, todas as vezes que
voc, leitor, ver o smbolo, vai entender que estou querendo representar uma impressora e que qualquer
smbolo diferente dele no a representao de uma impressora.
Concorda que esse um modelo que vale apenas para mim e para voc, leitor, nos comunicarmos?
Isso porque ns combinamos o jogo. Em contrapartida, qualquer outro que olhar esse modelo vai
enxergar apenas um tipo de mquina ligada a um retngulo por uma linha tracejada. Portanto, a
minha linguagem de representao no eciente para que eu me comunique em larga escala.
36
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
A UML surgiu da necessidade de se desenvolver uma linguagem que fosse padro para modelagem
de sistemas orientada a objetos e que fosse interpretvel por qualquer um: usurios, desenvolvedores,
arquitetos e gerentes.
Os elementos grcos so utilizados para representar uma determinada viso do sistema, que vai
desde a representao dos requisitos at a viso de implementao. O que nos permite armar que, se
pensarmos no modelo de processo da Engenharia de Software, enquanto o paradigma da orientao a
objetos tem sua rea de contribuio restrita fase de projeto, a UML uma ferramenta que d suporte
a todo o processo, desde a anlise de requisitos, passando pelo projeto, construo e at a validao.
Caso de Uso: representa o sistema de um ponto de vista externo, como ele interage com agentes
externos, como usurios ou outros sistemas.
Implantao: representa a distribuio fsica do sistema e seus componentes e como estes iro se
comunicar.
Cada viso composta por um ou mais diagramas UML. Um diagrama UML uma composio de
elementos grcos com o objetivo de representar alguma perspectiva do sistema.
Nas pginas seguintes, detalharemos cada uma das vises e diagramas, sempre traando um paralelo
com as atividades do processo de desenvolvimento da Engenharia de Software.
Lembrete
Saiba mais
Resumo
38
ANLISE DE SISTEMAS ORIENTADA A OBJETOS
39