Escolar Documentos
Profissional Documentos
Cultura Documentos
Metodologias de programao
Sistemas de Operao
Antnio Rui Borges
Sumrio
Tcnicas
DETI
programao sequencial
DETI
comple idade
Metodologias de programao - 1
Programao procedimental ou imperativa
o
*nfase & colocado numa implementa o mais ou menos fidedigna da decom/ posi o !ierr#uica da solu o% a comple0idade & controlada pelo uso intensi$o
de fun!es e procedimentos, como meio de descre$er as operaes a diferentes n'$eis de a(strac o% de construtores de tipos de dados, para organi+ar a informa o associada do modo mais ade#uado "s caracter'sticas do pro(lema%
o
DETI
toda a informa o rele$ante " solu o do pro(lema & definida tipicamente ao n'$el do programa principal, ou & glo(al% as $ari$eis locais "s restantes funes e procedi/ mentos representam arma+enamento meramente temporrio 1s e0istem durante a sua in$oca o2% o acesso das diferentes operaes aos dados & conce(ido numa o(edi*ncia estrita ao princ'pio 3daquilo que elas precisam de saber4, usando um modelo de comunica o (aseado na passagem de par)metros%
. Departamento de Electrnica, Telecomunicaes e Informtica
Metodologias de programao - 2
Programao procedimental ou imperativa
programa principal
definio de variveis procedimento procedimento funo procedimento parte de e ecuo !pp"
DETI
funo main !pp" procedimento funo
organi#ao $ori#ontal do fic$eiro fonte t&pica da linguagem ' (estrutura em mar de fun(es)
Metodologias de programao - )
#uest o #ue rapidamente se coloca & o da reutili"ao de cdigo% diferentes operaes, implementadas por funes e procedimentos no )m(ito de uma aplica o espec'fica, s o muitas $e+es 7teis para outras aplicaes% a sua inclus o automtica no cdigo destas no$as aplicaes fa+/se di$idindo o fic!eiro fonte em m7ltiplos fic!eiros, cada um deles o(8ecto de compila o separada e reunidos num fic!eiro e0ecut$el 7nico na fase de lin9agem% assim, o cdigo de uma aplica o particular passa a estar disperso por
DETI
um fic!eiro fonte #ue cont&m o programa principal% m7ltiplos fic!eiros fonte #ue cont*m diferentes funcionalidades, e0pressas por grupos de funes e procedimentos #ue foram pre$iamente desen$ol$idos e #ue $ o ser usados no conte0to da aplica o presente, as c!amadas bibliotecas de apoio%
Metodologias de programao - *
Programao procedimental ou imperativa
DETI
programa principal
bibliotecas de apoio
neste
tipo de organi+a o, torna/se necessrio inserir nos fic!eiros fonte parce/ lares, sempre #ue o cdigo a' e0istente referenciar operaes e0ternas, o nome do fic!eiro onde elas est o descritas 1 ficheiro de interface2 para garantir consist*ncia nas compilaes parcelares #ue ter o #ue ter lugar,
Departamento de Electrnica, Telecomunicaes e Informtica
Metodologias de programao - +
Programao modular
"
medida #ue a comple0idade da descri o da solu o aumenta, a gest o centrali/ +ada do espao de $ari$eis torna/se progressi$amente mais dif'cil e o *nfase desloca/se da concep o das operaes para uma organi+a o mais fina da informa o% o espao de $ari$eis torna/se distribudo e surge o conceito de mdulo para efectuar a sua gest o
um mdulo &, por defini o, uma estrutura autnoma, implementada num fic!eiro fonte separado, #ue encapsula uma funcionalidade (em definida, incluindo generica/ mente um espao de $ari$eis prprio e um con8unto de operaes #ue as manipulam% o espao de $ari$eis & em princ'pio interno, o #ue significa #ue o acesso a ele & reali+ado apenas pelas operaes especificadas, as c!amadas primitivas de acesso% note/se #ue, #uando o espao prprio de $ari$eis n o tem significado e0terno, um mdulo constitui a#uilo #ue se designou por biblioteca no conte0to do modelo anterior%
Departamento de Electrnica, Telecomunicaes e Informtica
DETI
Metodologias de programao - ,
Programao modular
a
aplica o de uma a(ordagem de carcter funcional " decomposi o da solu o origina a especifica o de um con8unto de estruturas autnomas #ue interactuam e permite lidar com pro(lemas mais comple0os, criando uma di$is o clara de tarefas e promo$endo o tra(al!o cooperati$o
a descri o passa a ser feita pela especifica o precisa do con8unto de estruturas #ue interactuam, sendo esta(elecido para cada uma delas o seu papel na interac o e o modo de acesso " operacionalidade disponi(ili+ada% a separa o clara entre a especifica o de acesso, o interface, e a implementa o respecti$a possi(ilita o seu uso na constru o de outros mdulos, mesmo antes do mdulo original estar conclu'do e $alidado%
DETI
<
3
variveis internas
programa principal
DETI
m.dulo / 2
. m.dulo 0
variveis internas
m.dulo '
=>
Metodologias de programao - 1
Programao modular
a
aplica o consistente de uma estrat&gia de tipo dividir para reinar, su(8acente a #ual#uer metodologia de descri o e, particularmente, #uando se fa+ uma decom/ posi o funcional da solu o, potencia ainda o recurso a prticas de desen$ol$i/ mento de soft?are robusto, corpori+adas por
desenho para o teste@ sendo o mdulo uma estrutura autnoma, a sua funcionalidade pode e de$e ser $alidada de acordo com as especificaes pre$iamente esta(elecidas antes da sua incorpora o na aplica o de #ue & parte% programao por contrato@ o programador respons$el pela implementa o do mdulo pode esta(elecer mecanismos de garantia em runtime #ue s & disponi(ili+ada a opera/ cionalidade descrita
todas as primiti$as de acesso de$ol$em uma informa o de status de opera o@ operao e ecutada com sucesso ou ocorr#ncia de erro, neste caso com indica o do erro ocorrido% a consist*ncia da estrutura de dados interna de$e ser garantida antes da reali+a o da primeira opera o 1pr$invariante2% a#uando da reali+a o de uma opera o, a gama de $alores de cada $ari$el da lista de par)metros de entrada de$e ser $alidada antes da sua e0ecu o% a consist*ncia da estrutura de dados interna de$e ser garantida aps a reali+a o da opera o actual 1ps$invariante2,
DETI
==
Metodologias de programao - 2
implementa o modular de uma decomposi o funcional pode tornar/se (astante infle0'$el em termos de reutili"ao de cdigo #uando se $erifica #ue uma no$a aplica o e0ige relati$amente a um mdulo pre$iamente constru'do
a sua instancia o m7ltipla% a introdu o de pe#uenas alteraes%
atitude tomada pelo programador neste conte0to & ine$ita$elmente a ade#ua o dos mdulos pr&/e0istentes " situa o presente, condu+indo a uma pul$eri+a o progressi$a do seu reportrio de funcionalidades, com o conse#uente aumento de comple0idade e perda de efici*ncia na gest o do soft?are de apoio ao desen$ol/ $imento de aplicaes futuras% uma solu o poss'$el para este pro(lema consiste no recurso a uma metodologia de aumento da a(strac o%
DETI
=2
Metodologias de programao - 14
primeira situa o apontada pode ser resol$ida por uma e tenso ao conceito de tipo de dados% com efeito, se for poss'$el associar a cada instancia o do mdulo uma $ari$el diferente, a am(iguidade desaparece e a instancia o m7ltipla torna/se tri$ial% neste sentido, a no o de tipo de dados como um con8unto de regras #ue permi/ tem arma+enar em memria $alores com determinadas caracter'sticas, & agora estendida de modo a contemplar n o s o arma+enamento de grupos de $alores, mas tam(&m a incluir as operaes #ue podem ser reali+adas so(re eles% em(ora impropriamente, estes tipos de dados s o con!ecidos pelo nome de tipos de dados abstractos% tipos de refer#ncia, ou tipos de dados definidos pelo utili$ "ador s o designaes mais correctas #ue l!es s o por $e+es tam(&m atri(u'das%
DETI
=3
Metodologias de programao - 11
Programao orientada por ob3ectos
as
linguagens de programa o #ue os suportam, incluem um construtor, cu8o nome tradicional & class, #ue permite no fundo associar a defini o de uma estrutura de tipo mdulo a um identificador% a partir da', torna/se poss'$el declarar $ari$eis desse tipo% um pormenor importante & #ue a declara o simples de $ari$eis deste tipo n o reser$a espao em memria para o seu arma+enamento, reser$a apenas espao para arma"enamento de um ponteiro% a reser$a de espao propriamente dita & ditada pela sua instanciao em runtime% esta opera o consiste na reser$a de espao na +ona de defini o din)mica e conse/ #uente iniciali+a o da estrutura de dados interna% de igual modo, #uando a $ari$el 8 n o & necessria o espao de arma+enamento em memria din)mica de$e ser li(ertado% os $alores instanciados s o designados de objectos, donde ad$&m o nome do para/ digma%
DETI
=.
Metodologias de programao - 12
Programao orientada por ob3ectos
na
terminologia orientada por objectos, designa/se de campos as $ari$eis da estrutura de dados interna de um tipo de refer*ncia, e de mtodos as primiti$as de acesso% di+/se ent o #ue um objecto & determinado pelo seu estado 1con8unto dos $alores actuais dos diferentes campos2 e pelo seu comportamento 1le#ue de m&todos de acesso pro$idenciados2% as linguagens de programa o #ue suportam este paradigma, permitem normalmente a abstraco de dados na especifica o da estrutura de dados interna, originando tipos de dados gen&ricos com uma gama de aplica o mais alargada
em $e+ de se criar um tipo de dados #ue represente uma memria de tipo stac9 para arma+enamento de caracteres, por e0emplo, pode criar/se um tipo de dados #ue represente uma memria de tipo stac9 #ue arma+ene #ual#uer tipo de $alores%
al&m
DETI
disso, pode ainda garantir/se, atra$&s da sua parametri"ao, #ue s um tipo particular de $alores & arma+enado em runtime
usando o mesmo e0emplo, cria/se um tipo de dados #ue represente uma memria de tipo stac9 para arma+enamento de $alores de um tipo gen&rico T, n o especificado, e adia/se para a declara o e instancia o de $ari$eis desse tipo a indica o do #ue o tipo T realmente significa%
=5
Metodologias de programao - 1)
Programao orientada por ob3ectos
tipo de refer7ncia
ponteiro
c.digo
objecto
DETI
declarao@ reser$a de espao na "ona de definio esttica ou no stac% para defini o da $ari$el% iniciali"ao@ atri(ui o " $ari$el do literal nulo% instanciao@ reser$a de espao na "ona de definio din&mica para cria o de um objecto 1feita em runtime2%
=6
stac6
Metodologias de programao - 1*
Programao orientada por ob3ectos
um
programa organi+ado segundo esta metodologia & formado por m7ltiplos fic!eiros fonte, cada um descre$endo um tipo de dados particular% tal como para a programa o modular, a descri o da interac o & feita por um diagrama #ue inclui agora os tipos de dados n o instanciados e os tipos de dados instanciados, os primeiros nomeados pelos identificadores de tipo e os segundos pelos identificadores das respecti$as $ari$eis% o modo como eles interagem & especificado atra$&s de grafos orientados #ue e0primem o tipo de acesso materi/ ali+ado em cada caso% o diagrama de$e ser complementado com uma descri o da funcionalidade disponi(ili+ada por cada tipo e pela listagem das operaes en$ol$idas% genericamente, os tipos de dados no instanciados correspondem ao programa principal e a grupos de operaes gen&ricas en#uadradas em bibliotecas% todos os tipos restantes s o em princ'pio instanciados%
DETI
=:
Metodologias de programao - 1+
Programao orientada por ob3ectos
(=
c=
DETI
c2 c3
A A b1 A c1 c2 c3 D e1
e=
tipo #ue cont&m o programa principal instancia o do tipo B instanciao do tipo C instanciao do tipo C instanciao do tipo C tipo que contm mtodos gerais instanciao do tipo E instanciao, acesso a campo ou invocao de mtodo
Metodologias de programao - 1,
Programao orientada por ob3ectos
a
segunda situa o apontada pode ser resol$ida pela aplica o do conceito de reutili"ao " constru o de tipos dados% com efeito, se for poss'$el definir no$os tipos de dados a partir de tipos de dados pr&/e0istentes, pode conseguir/se a sua diferencia o para os ade#uar a no$as situaes com um m'nimo de esforo e de dispers o% este mecanismo designa/se de herana e possi(ilita estender numa perspecti$a !ierr#uica ao no$o tipo de dados, tipo$filho ou subtipo, as propriedades do tipo em #ue a defini o se (aseia, tipo$pai ou supertipo% concretamente, isto significa #ue
DETI
do tipo (ase 1tipo/pai2 s o directamente acess'$eis e, no 7ltimo caso, modifi/ c$eis no tipo/fil!o%
=<
DETI
tipo-fil$o
2>
Metodologias de programao - 11
Programao orientada por ob3ectos
DETI
supertipo subtipo em
termos de compati(ilidade, o su(tipo & compatvel com o supertipo de #ue deri$a, mas o in$erso 8 n o & sempre $erdadeiro%
Departamento de Electrnica, Telecomunicaes e Informtica
2=
Metodologias de programao - 12
Programao orientada por ob3ectos
a
rela o de compati(ilidade pode ser usada para se esta(elecer um princ'pio muito poderoso do paradigma orientado por o(8ectos, o polimorfismo, #ue con/ siste na possi(ilidade de uma mesma $ari$el referenciar o(8ectos de tipos diferentes, deri$ados do mesmo tipo (ase% se8am T um tipo de dados de refer*ncia, D= e D2 dois tipos de dados distintos deri$ados do tipo T e t, s= e s2 $ari$eis de cada um destes tipos em #ue as duas 7ltimas foram instanciadas% considere/se agora #ue se atri(ui #ual#uer uma destas $ari$eis " $ari$el t 1opera o sempre poss'$el por#ue s= e s2 s o com/ pat'$eis com t, em(ora n o se8am compat'$eis entre si2 e se in$oca so(re ela um m&todo definido em T% a implementa o do m&todo ade#uada ao o(8ecto #ue est a ser referenciado & automaticamente escol!ida e & reali+ada
DETI
na fase de compila o, associao esttica, #uando o m&todo em #uest o n o foi modificado na defini o de #ual#uer dos tipos deri$ados em 8ogo% em runtime, associao din&mica, se tal ti$er acontecido,
22 Departamento de Electrnica, Telecomunicaes e Informtica
Metodologias de programao - 24
Programao orientada por ob3ectos
T t; I i; S1 s1 = new S1 (...); S2 s2 = new S2 (...); if (condio) t = s1; else t = s2; ... invocao do mtodo t.m (...); m sobre a varivel t ... tipos de dados %ue implementam I Tipo de dados S2 if (condio) i = s1; else i = s2; ... invocao do mtodo i.m (...); m sobre a varivel i
DETI
Tipo de dados T
23
Metodologias de programao - 21
Programao concorrente
a
decomposi o funcional de solues de pro(lemas comple0os condu+ rapida/ mente " necessidade de se conce(er um le#ue de acti$idades #ue se $ o desenrolar de uma maneira mais ou menos autnoma% a manuten o de um fio de e0ecu o 7nico impe #ue se integre no cdigo um scheduler mais ou menos ela(orado #ue permita comutar entre a reali+a o das diferentes acti$idades% esta a(ordagem, al&m de ser comple0a e e0igente, & tam(&m completamente in7til, 8 #ue os am(ientes de e0ecu o actuais promo$em a multiprograma o e torna/se, portanto, natural conce(er a solu o como um con8unto de processos #ue cooperam entre si% adicionalmente, com a populari+a o dos processadores multicore, os sistemas de opera o t*m $indo a implementar a gest o de threads ao n'$el do %ernel, o #ue origina um acr&scimo de efici*ncia na e0ecu o de aplicaes concorrentes%
DETI
2.
Metodologias de programao - 22
Programao concorrente
s
DETI
#ual#uer
#ue se8a, por&m, a a(ordagem seguida, um elemento sempre presente & #ue, ao contrrio do #ue se passa na programa o se#uencial, n o ! garantia de reproduti(ilidade de operaes e, portanto, o debugging & muito mais sens'$el e muito menos efica+%
Departamento de Electrnica, Telecomunicaes e Informtica
25
Metodologias de programao - 2)
Programao concorrente
e0istem
modelo de variveis partilhadas@ constitui o modelo !a(itual em am(ientes multi$ threading onde os processos inter$enientes escre$em e l*em $alores arma+enados numa estrutura de dados definida centralmente% para se e$itar condies de corrida #ue condu+am " inconsist*ncia da informa o arma+enada, o cdigo de acesso " regi o partil!ada 1regio crtica2 tem #ue ser e0ecutado em regime de e0clus o m7tua% ! ainda a necessidade de se pre$er dispositi$os #ue possi(ilitem a sincroni+a o% modelo de passagem de mensagens@ constitui um modelo de aplica o uni$ersal 8 #ue n o e0ige a partil!a de espao de endereamento% a comunica o & efectuada por troca de mensagens entre pares de processos 1 unicast2, entre um processo e todos os outros 1broadcast2, ou entre um processo e todos os outros #ue pertencem ao mesmo grupo 1multicast2% assume/se a e0ist*ncia de uma infra/estrutura de canais de comunica o #ue interliga todos os processos inter$enientes e #ue & gerida e0ternamente " aplica o, garantindo o acesso com e0clus o m7tua ao1s2 canal1is2 e disponi(ili+ando mecanismos de sincroni+a o%
DETI
26
Metodologias de programao - 2*
Programao concorrente
um
programa organi+ado segundo esta metodologia conforma/se aos princ'pios inerentes a uma decomposi o modular, ou orientada por o(8ectos, para descri o da interac o e &, por isso, tam(&m constitu'do por m7ltiplos fic!eiros fonte% o #ue ! de no$o a#ui & #ue, e0istindo mais do #ue um fio de e0ecu o, torna/se necessrio distinguir claramente na descri o da interac o entre estruturas activas e estruturas passivas% as estruturas 1ou entidades2 activas correspondem aos di$ersos processos inter$e/ nientes, en#uanto as entidades passi$as correspondem " e0plicita o de diferentes tipos de funcionalidade,
DETI
2:
Metodologias de programao - 2+
Programao concorrente
(=
c=
DETI
c2 c3 e=
A A tipo #ue cont&m o programa principal 1entidade acti$a2 b1 A instancia o do tipo B c1 instanciao do tipo C 1entidade acti$a2 c2 instanciao do tipo C 1entidade acti$a2 c3 instanciao do tipo C 1entidade acti$a2 D tipo que contm mtodos gerais e1 instanciao do tipo E instanciao, acesso a campo ou invocao de mtodo
Metodologias de programao - 2,
Programao distribu&da
!
duas ra+es principais #ue le$am " passagem da programao concorrente para a programao distribuda
paraleli"ao@ tirar partido dos m7ltiplos processadores e outros componentes hard(are e0istentes num sistema computacional paralelo para se o(ter uma e0ecu o mais rpida e eficiente da aplica o% disponibili"ao de um servio@ fornecer de forma consistente, autnoma e segura uma funcionalidade (em definida a um grupo alargado de aplicaes%
DETI
mudana de metodologia supe, portanto, #ue se efectue de algum modo um mapeamento so(re sistemas computacionais distintos dos diferentes processos e centros de funcionalidade em #ue uma dada solu o concorrente est di$idida%
2<
Metodologias de programao - 2-
Programao distribu&da
o
mapeamento, por&m, n o pode ser feito de um modo automtico, e0istem di$ersos aspectos en$ol$idos no conceito de plataforma de processamento paralelo e #ue t*m #ue ser a$aliados cuidadosamente para #ue a migra o se8a poss'$el% alguns deles s o@
poss'$eis !eterogeneidades entre os diferentes ns da plataforma de processamento% ocorr*ncia de fal!as em um ou mais ns da plataforma de processamento ou na infra/ estrutura de comunicaes% ine0ist*ncia de um relgio glo(al #ue permita efectuar a ordena o cronolgica dos acontecimentos,
DETI
3>