Você está na página 1de 38

Bruno Vilhena Adorno

adorno@ufmg.br
DEE UFMG

Unidade I Gerenciando a Complexidade


I.1. A complexidade inerente dos sistemas de software
I.2. A estrutura de sistemas complexos
I.3. Trazendo ordem ao caos
I.3.1. Decomposio
I.3.2. Hierarquia
I.3.3. Abstrao

I.4. Sobre o projeto de sistemas complexos

2
Renato Mesquita e
Ana Liddy Magalhes - 2011

A complexidade de sistemas de software


Alguns sistemas de software no so complexos ...
Exemplos
Aplicativos que so especificados, construdos, criados,
mantidos e utilizados por uma mesma pessoa
Sistemas que tm um propsito limitado e um ciclo de vida curto
Neste caso, podemos simplesmente refaz-lo, se necessrio ...
Jogar o sistema fora e construir outro
ao invs de tentar reutiliz-lo,
consert-lo ou estender
sua funcionalidade

3
Renato Mesquita e
Ana Liddy Magalhes - 2011

A complexidade de sistemas de software (cont.)


Os sistemas de software que nos interessam so os
complexos ...
Software industrial
Possui um ciclo de vida longo para o produto
extremamente difcil para um nico indivduo entender todos os
detalhes de seu projeto
A complexidade do sistema ultrapassa
a capacidade intelectual humana!
Podemos gerenciar sua complexidade,
mas no fazer com que ela desaparea!!
O gerenciamento deve ser feito por
mortais e no gnios ...
4
Renato Mesquita e
Ana Liddy Magalhes - 2011

Por que os sistemas de software so complexos?


O domnio do problema complexo
Quem desenvolve no quem conhece o domnio de aplicao
Dificuldade de capturar os requisitos do sistema
Os requisitos podem no ser estveis
necessrio pensar na evoluo do sistema
programar para o futuro!

5
Renato Mesquita e
Ana Liddy Magalhes - 2011

6
Renato Mesquita e
Ana Liddy Magalhes - 2011

difcil gerenciar o processo de desenvolvimento


Tamanho no virtude em software
Hoje comum encontrar sistemas com milhes de linhas de

cdigo, decompostas em centenas ou milhares de mdulos


separados ...

necessrio gerenciar uma equipe de desenvolvimento,

composta por um nmero razovel de pessoas para


criar o sistema!
Muitas vezes, dispersa geograficamente
Problemas de comunicao em uma equipe
Mais comuns do que se imagina!
O desafio principal manter a coeso

e a integridade do sistema ...


7
Renato Mesquita e
Ana Liddy Magalhes - 2011

Tem-se uma flexibilidade muito grande quando se

desenvolve software
Isto pode ser uma grande desvantagem, pois h a tendncia de se

reinventar a roda
Um empreiteiro da construo civil no planta rvores para obter a

madeira que vai usar na construo


Mas o desenvolvedor de software muitas vezes faz isto !!!

Nas diversas engenharias temos componentes padronizados que so

os nossos blocos primitivos


Mas falta padronizao na indstria de software !!!

Um construtor de edifcios pensaria em adicionar um novo subsolo a

um edifcio de 100 andares?


Usurios de software geralmente pedem que este tipo de modificao seja

efetuada em um sistema existente ...


Isto s uma questo de programao !!!

Renato Mesquita e
Ana Liddy Magalhes - 2011

Quanto mais complexo um sistema, mais

provvel que ele entre em colapso


Sem gerenciar a complexidade, sistemas de software
So entregues com atraso
Estouram o oramento
No atendem os requisitos especificados
Podem apresentar desempenho insatisfatrio
Podem ter vida til curta

9
Renato Mesquita e
Ana Liddy Magalhes - 2011

A soluo comea com ...


Entender como os sistemas complexos so
organizados
Trazer esta organizao para
os sistemas de software

10
Renato Mesquita e
Ana Liddy Magalhes - 2011

Exemplos de sistemas complexos


Um computador pessoal ...

placa me, monitor, teclado, HD, etc ...


placa me: microprocessador, memria, barramento, etc.
microprocessador: unidade aritmtica, unidade de controle,

registradores ...
registradores: portas lgicas (ANDs, ORs, etc)
portas lgicas: transistores, resistores, etc ...
....

Estrutura hierrquica, com diferentes nveis de abstrao,


cada um deles construdo sobre o outro!
O computador pessoal somente funciona corretamente devido

colaborao existente entre as suas diversas partes


Podemos descrever seu funcionamento porque conseguimos decomp-lo
em partes que podem ser estudadas separadamente
Em cada nvel de abstrao, os elementos cooperam entre si para
desempenhar sua funcionalidade, atravs de uma interface conhecida,
e oferecem servios para os nveis mais altos
11
Renato Mesquita e
Ana Liddy Magalhes - 2011

Exemplos de sistemas complexos


Estrutura das plantas
Na botnica, os cientistas tentam entender as semelhanas e

diferenas entre plantas estudando sua morfologia (forma e


estrutura)

as plantas so organismos complexos e seu comportamento pode ser

entendido a partir da ao cooperativa de seus vrios rgos

razes, caules e folhas


folha: epiderme, tecido vascular, etc ...
epiderme: clulas ...
clula: ncleo, cloroplastos, etc ...

como no computador,

temos uma hierarquia


com diversos nveis
de abstrao

existem fronteiras claras entre as partes internas

e externas de um determinado nvel

as partes da folha colaboram entre si para que ela

12

desempenhe seu papel de realizar a fotossntese


ao mesmo tempo, tm pouca ou nenhuma cooperao
direta com as partes elementares que compem a raiz

Renato Mesquita e
Ana Liddy Magalhes - 2011

Exemplos de sistemas complexos


Estrutura dos animais
Uma anlise semelhante das plantas

pode ser feita para os animais ...


... e com distintas classificaes ...

Estrutura da matria
tomos so constitudos de eltrons,

prtons e neutrons
Neutrons so constitudos de quarks
etc ...

Etc ...
13
Renato Mesquita e
Ana Liddy Magalhes - 2011

A complexidade

organizada na forma
de uma hierarquia
Um sistema complexo

composto por subsistemas


interrelacionados
Por sua vez, estes possuem

seus prprios subsistemas,


e assim por diante, at
chegarmos aos componentes
elementares
14
Renato Mesquita e
Ana Liddy Magalhes - 2011

Os atributos de sistemas complexos


A escolha de quais componentes de um sistema so
elementares (primitivos) relativamente arbitrria
Depende basicamente daquilo que o observador do sistema

pretende enxergar

A fora dos relacionamentos tambm muda


Relacionamentos internos entre os subcomponentes de um

determinado nvel da hierarquia so fortes


Relacionamentos entre componentes da hierarquia
em nveis distintos so fracos

15
Renato Mesquita e
Ana Liddy Magalhes - 2011

Entendendo melhor a fora entre os mdulos


Modularidade
a qualidade de um mdulo que garante a sua capacidade de

extenso e reuso
Boa modularidade baixo acoplamento e alta coeso
Acoplamento
Medida da fora de associao (dependncia) entre os mdulos
Coeso
Medida da fora de associao dentro de um mdulo

O nvel da abstrao utilizado

a chave para entender


o acoplamento e a coeso
existente entre as partes
16
Renato Mesquita e
Ana Liddy Magalhes - 2011

Os atributos de sistemas complexos (cont.)


Ao decompor sistemas complexos em hierarquias,

em geral obtemos:
Um pequeno nmero de diferentes tipos de subsistemas
Diversas combinaes e arranjos destes subsistemas

Ou seja, sistemas complexos contm padres comuns


Tais padres podem reutilizar pequenos componentes
Ex: clulas encontradas em animais e plantas

estruturas mais complexas, como o sistema circulatrio

Um sistema complexo que funciona, invariavelmente, um

aperfeioamento de outro mais simples que funcionava


Sistema complexo projetado a partir do nada quase nunca funciona!

17

medida que um sistema complexo aperfeioado ...


.. objetos que antes eram considerados complexos passam a ser primitivos,
baseados nos quais sistemas mais complexos so construdos

Renato Mesquita e
Ana Liddy Magalhes - 2011

A forma cannica de sistemas complexos


A descoberta de abstraes e mecanismos comuns facilita o

entendimento de sistemas complexos

Ex: um motorista consegue pilotar um novo modelo de automvel,

simplesmente identificando seus componentes

Volante, freio, acelerador, embreagem, marchas, ignio, ...


Estes so mecanismos comuns presentes em todos os carros

Um sistema complexo geralmente contm vrias hierarquias


Hierarquia estrutural: todo-parte
Ex: um carro tem sistemas de propulso, controle de direo, frenagem, ...

18

Hierarquia de generalizao/ especializao: um tipo de


Um animal vertebrado um tipo de animal
Um mamfero um tipo de animal vertebrado
Um primata um tipo de mamfero
Um macaco um tipo de primata
...

Renato Mesquita e
Ana Liddy Magalhes - 2011

A forma cannica de sistemas complexos


Adiantando alguns conceitos do curso ...
A hierarquia um tipo de ser modelada, na anlise

orientada a objetos, por meio do mecanismo de herana


A hierarquia todo parte, por meio do mecanismo de
composio

19
Renato Mesquita e
Ana Liddy Magalhes - 2011

Se sabemos o raciocnio a seguir no projeto de um sistema

complexo (ex: decomposio em hierarquias) ...


... porque o desenvolvimento de software problemtico???
O modelo de desenvolvimento OO relativamente novo
Descobrir o que h em comum em um sistema, abstrair seus

mecanismos, etc ... no uma tarefa simples


menos simples ainda para sistemas inexistentes:
nestes estaremos projetando a hierarquia
Inventando os mecanismos, agrupando as partes
Podemos lidar com um nmero bastante grande de possveis escolhas
Experincia + aprender com as boas solues obter padres
Padres de arquitetura
Padres de projeto
20
Renato Mesquita e
Ana Liddy Magalhes - 2011

21
Renato Mesquita e
Ana Liddy Magalhes - 2011

I.3.1. Decomposio
uma tcnica bsica de tratamento da complexidade
Essncia: decompor algo em partes menores
Dividir para conquistar"

Em sistemas de software podemos ter:


Decomposio funcional
Anlise, projeto e programao estruturados
Enfoca o que precisa ser feito funes e fluxo de execuo
Um problema maior decomposto sucessivamente em problemas menores,

at que sejam simples o suficiente para serem resolvidos

Decomposio orientada a objetos


Anlise, projeto e programao orientados a objetos
Enfoca a construo de mdulos que colaboram entre si para
22

solucionar um problema

Renato Mesquita e
Ana Liddy Magalhes - 2011

Decomposio Funcional

Decomposio
Orientada a Objetos

23
Renato Mesquita e
Ana Liddy Magalhes - 2011

I.3.1. Decomposio (cont.)


Anlise e projeto estruturados
Realizam a decomposio modular
Um mdulo dividido em mdulos menores at atingir um nvel de
abstrao no qual o problema facilmente resolvido
Segue a abordagem Top Down
Princpio: a diviso do sistema em subsistemas permitir distribuir o

trabalho entre diferentes pessoas ou grupos


Meta difcil, pois os subsistemas podem apresentar
uma srie de dependncias

Top Down
24
Renato Mesquita e
Ana Liddy Magalhes - 2011

I.3.1. Decomposio (cont.)


Programao estruturada
Decomposio funcional (algortmica)
Utiliza um nvel de abstrao alto, baseado em funes
Mdulo = agrupamento de funes correlatas
Possui funes que atuam sobre conjuntos relacionados de dados

Ex: read(), write(), open(), close(), ...


Existe uma separao clara entre os dados e as operaes sobre eles
Dados organizados em estruturas de dados globais, disponveis a
qualquer parte do programa
Funes especficas de manipulao so
empregadas para evitar o uso direto dos
dados, reduzindo o acoplamento
Dados so passados entre mdulos por meio
de parmetros de funes e sub-rotinas
25
Renato Mesquita e
Ana Liddy Magalhes - 2011

Exemplo: anlise, projeto e programao estruturados

26
Renato Mesquita e
Ana Liddy Magalhes - 2011

Fonte: Gane e Sarson, Anlise Estruturada de Sistemas, 1983

Exemplo: anlise, projeto e programao estruturados

27
Renato Mesquita e
Ana Liddy Magalhes - 2011

Fonte: Gane e Sarson, Anlise Estruturada de Sistemas, 1983

I.3.1. Decomposio (cont.)


Programao estruturada (cont.)
Dificuldades com a programao estruturada
A evoluo do sistema mais difcil
Interdependncia entre as funcionalidades e na forma

como elas so implementadas


Efeitos colaterais ocorrem entre as estruturas de dados,
podendo comprometer todo o software

Modificaes sucessivas geram uma maior degradao do sistema


Pode significar menos tempo do sistema em produo

Necessrio buscar mecanismos que permitam construir e

manter software de forma mais simples e robusta

29
Renato Mesquita e
Ana Liddy Magalhes - 2011

A soluo tem sido empregar o


paradigma de orientao a objetos !!!

I.3.1. Decomposio (cont.)


Anlise e projeto orientados a objetos

Bottom Up

O sistema visto como composto por uma

srie de subsistemas que interagem entre si


Deve ser hierarquizado, decomposto em camadas

Ocorre a composio modular, favorecendo a construo de

mdulos que colaboram entre si para solucionar o problema


A composio modular extrai os mdulos e suas interaes do

contexto do problema, seguindo uma abordagem Bottom up

Abstraes chave devem ser identificadas: classes e objetos


Sistema = srie de objetos autnomos que colaboram entre
si para desempenhar um comportamento de nvel mais alto
Objeto = entidade tangvel que exibe um comportamento
bem definido
Classe = molde para a criao de objetos

30
Renato Mesquita e
Ana Liddy Magalhes - 2011

I.3.1. Decomposio (cont.)


Programao orientada a objetos
Procura representar os conceitos do mundo real de uma

maneira mais intuitiva e realista


OO: aplicao composta por objetos que se relacionam e interagem
Um conjunto de entidades (objetos) esto presentes no domnio da
aplicao, possuem algum tipo de ligao entre si e so descritos por
dados e operaes (funes) que atuam sobre estes dados
Estruturada: aplicao possui um conjunto de atividades e afazeres

Teoricamente, as alteraes de requisitos so mais facilmente

implementadas
Possvel perceber o que mudou nos objetos

e suas relaes
31
Renato Mesquita e
Ana Liddy Magalhes - 2011

Exemplo: anlise, projeto e programao OO

32
Renato Mesquita e
Ana Liddy Magalhes - 2011

Grau de abstrao + prximo de

como o ser humano pensa

Ajuda a organizar a complexidade

inerente dos sistemas de software


Melhora a interao entre o analista

e o especialista do domnio
Explicita pontos comuns (herana)

Maior qualidade, favorecendo:


Reuso de mecanismos comuns
Classes, abstraes, ...

Desenvolvimento incremental
Capacidade de extenso
Robustez e correo
Reduo dos dados globais
Manuteno e extenso
Mais fcil identificar a origem de
problemas

Principais Benefcios

A falta de domnio pode inverter

todos os benefcios

Ineficincia e problema de

desempenho
Softwares mal elaborados

No traduz conceitos em algo real

OO requer treinamento e

experincia

Envolve custos de aprendizado


Cuidado com o uso incorreto da

tecnologia e seus preceitos

Programar OO com mentalidade

estruturada
A definio incorreta de padres
pode levar a falhas estruturais e
dificultar a programao

Principais Dificuldades

I.3.2. Hierarquia
Como vimos, a hierarquia tem um papel essencial na
organizao de sistemas complexos
Na anlise orientada a objetos a criao de
hierarquias vai ser efetuada por meio dos mecanismos
de herana e de composio

34
Renato Mesquita e
Ana Liddy Magalhes - 2011

I.3.3. Abstrao
Os engenheiros tm uma tcnica fabulosa para
gerenciar a complexidade
Se no conseguem tratar todos os detalhes de um sistema,

escolhem ignorar alguns detalhes no essenciais, utilizando


um modelo idealizado

35
Renato Mesquita e
Ana Liddy Magalhes - 2011

A criao de um produto em engenharia envolve tanto

elementos de cincia quanto de arte


Queremos construir um sistema que:
Satisfaa uma especificao funcional
Se ajuste a limitaes fsicas (de hardware / de software)
Satisfaa requisitos explcitos ou implcitos de desempenho e de
utilizao de recursos
Satisfaa restries econmicas
Satisfaa restries associadas ao processo de desenvolvimento,
como a equipe e as ferramentas disponveis para o projeto

Para isto temos que criar um projeto, que nos leve

soluo do problema
Cuidado: no seja um discpulo de ivonsaf
36
Renato Mesquita e
Ana Liddy Magalhes - 2011

Um projeto envolve levar em conta um conjunto de

requisitos conflitantes, da melhor maneira possvel


Criamos uma srie de modelos, cada um descrevendo
um aspecto especfico do sistema

37
Renato Mesquita e
Ana Liddy Magalhes - 2011

O projeto de software tambm deve ser feito assim


Para isto, so escolhidos:
Uma notao
A linguagem por meio da qual so representados os nossos modelos
Neste curso, utilizaremos a UML - Unified Modeling Language

Um processo
Atividades que, quando executadas de forma ordenada, nos levam
construo do sistema. o que se estuda em Engenharia de Software
Ferramentas
Nos auxiliam na execuo
das tarefas, eliminando a
parte mais chata da
construo dos
modelos

38
Renato Mesquita e
Ana Liddy Magalhes - 2011

40
Renato Mesquita e
Ana Liddy Magalhes - 2011

Você também pode gostar