Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
83
Pedro Guerreiro
Departamentode Informatica
Faculdadede Cienci~ e Tecnologia
UniversidadeNovade Lisboa
Maria Manuel Freitas
Centro de Informatica
LaboratOrioNacional de Engenhariae TecnologiaIndustrial (I~
Resumo
Introduzir a linguagem Ada no desenvolvimento de urn projecto de soft-
ware representa mais do que uma simples mudan~a na linguagem de progra-
ma~ao adoptada. Constitui uma completa reviravolta na tecnologia da producao
de software, com reflexos dramaticos em todo 0 processo de desenvolviment~,
criando grandes expectativas e receios, tanto nos gestores do projecto como nos
tecnicos envolvidos. E preciso, par conseguinte, analisar as diversas implicacoes
da transicao para 0 Ada, e investir decididamente na forma~ao e informacao a
todos os niveis, para que os receios Beesbatam e as expectativas se concretizem.
1. Introdu~Ao
A cria~ao da linguagem Ada resultou da decisao do Departamento da De-
fesa dos Estados Unidos da America em acabar com a babil6nia de linguagens
usadas nos projectos de que tinha a responsabilidade, e isBa pels adop~aode uma
linguagem Unica, comummente utilizavel. Significativamente, 0 numero de lin-
guagens e dialectos em utiliza~ao no ana de 1975 variava, consoante as fontes,
entre 1500e 4O00!
Para par em pratica essa decisao, 0 Departamento de Defesa lan~ou em
1977 urn concurso international, que veio a ser ganho par uma equipa da compa-
nhia CII-Honeywell Bull, chefiada par Jean Ichbiah. A linguagem vencedora
recebeu 0 nome Ada, em honra de uma matematica colaboradora de Charles
194
B abbage, da qual se tornou costume dizer ter sido a primeira programadora (de
qualquer sexo, esclare~a.se...)
A forma definitiva da linguagem Ada data de 1983, altura em que se con.
cluiu 0 processo de revisao da versao inicial. Actualmente, a lingua gem e uma
norma militar norte-americana, uma norma NATO, uma norma ANSI, e uma
nonna ISO. Entretanto, vArios outros paises ja adoptaram tambem polfticas ofi-
ciais relativamente ao Ada.
Ao propor a cria~ao de uma nova linguagem, 0 Departamento da Defesa
estava sobretudo interessado em diminuir os astron6micos custos de produ~ao e
manuten~ao de software de defesa. Para ajudar a isBa, a linguagem deveria seT
apropriada para a programa~ao de aplica~oesembutidas (embedded), suportan-
do 0 tempo real e 0 paralelismo. POToutro lado, deveria permitir a concep~ao,de-
senvolvimento e manuten~ao de sistemas grandes, de vida longa e constantc-
mente sujeitos a modifica~oeB.Tudo isto seria conseguidoatraves da aplica~ao da
modema engenharia de software, que a linguagem teria obrigac;aode promover.
Finalmente, 0 esfor~o s6 Carla sentido se fosse possivel construir compiladores
eficientes, isto e, compiladores rapidos, com bons diagn6sticos, e gerando c6digo
comparavel aDsbons compiladores daBlinguagens estabelecidas.
Note-se que, apesar da sua origem militar, 0 Ada e uma linguagem de uti-
liza~ao geral, podendo substituir 0 FORTRAN, 0 COBOL, 0 Pascal, e outras, nos
domfnios tradicionais destas linguagens. No entanto, e mais complicada, mais
extensa e mais exigente, e requer um grau de profissionalismo mais elevado da
parte dos seus praticantes. Alias, talvez seja par isBa que ela gera a1gum cepti-
cismo em muitos programadores. E, com efeito, casas passados de linguagens
muito ambiciosas, 0 PL/I e 0 Algo168 par exemplo, pareceriam desaconselhar 0
repetir da experiencia.
Quem conhece0 Ada ja ,Babeque nao e uma linguagem perfeita, nem se-
quer e a linguagem definitiva. E, no entanto, um bclo exeraplo de engenharia das
linguagens de programa~ao, reflectindo as preocupa~oes dog produtores de
software e 0 estado dos conhecimentosem materia de compila~ao na altura em
que foi desenvolvida. Tambem e verdade que a perfei~ao da linguagem nao e 0
principal cuidado de quem se lan~a num projecto de responsabilidade. Numa si-
tua~ao destas, interessa e que a linguagem esteja em sintonia com os ob~iectivos
da engenharia de software - modificabilidade, eficiencia, fiabilidade e com-
preensibilidade - e que permits pOTem pratica os princfpios que vao servir para
atingir essesobjectivos: abstrac~ao,oculta~ao (information hiding), modulariza-
~ao, localiza~ao, uniformiza~ao, "complcta~ao" (completeness), e confirma~ao
(confirmability)l. 0 Ada, desenvolvido com este tipo de preocupac;oesem mente,
promete, logo a partida, seTurn born instrumento de trabalho.
Ao escolher uma linguagem, nova ou velha, tambem interessa que ela te-
nha uma ampla divulga~ao, que apareca em muitas maquinas, grandes e pe-
quenas, que os compiladores sejam bans, que se sinta urn apoio empenhado dog
fomecedores, que se estabele~auma comunidade de utilizadores dinamica, que a
inforrna~ao circulet que a bibliografia seja vasta e acessivel. E, nos casas de siste-
mas embutidos, convem que haja uma boa variedade de compiladores cruzados,
com boas ferramentas de debug. Ora tudo isto ja e verdade em rela~ao ao Ada.
.- ,. 0' -~ "."' .zes
,
-- - --
-~-
lBG
3. A teoria
A problematica da transi~ao para Ada esta hem caracterizada. Segundo
Donald Firesmith, e preciso escolher hem 0 primeiro projecto a ser desenvolvido
em Ada; e preciso tambem procurar 0 apoio dos gestores da empresa; alem disso,
e preciso preparar a forma~ao em Ada dos programadores (programadores em
sentido lata), estudar as implicacoes da mudanca de metodologia sabre 0
hardware de desenvolvimento,e montar uma estrutura central de apoio aos di-
versos projectos que iraQ utilizar 0 Ada2.
Em principia, sendo0 Ada uma linguagem de ambito geral, qualquer tipo
de aplica~ao parle servir: uma apljcacao comercial de processamento de dados,
par exemplo. Aqui, no cntanto, e preciso ter cuidado, pois faltam ao Ada os fi-
cheiros sequenciaisindexados tao queridos em COBOL. Mais grave que isso. ain-
da nao ha noticia da ligacao com os sistemas de gestao de base de dados.
Tambem se poderia escolher uma aplicacao cientifica, daquelas que se faz
sempre em FORTRAN. 0 Ada seria uma 6ptima escolha, nao fora os trinta anos
de experiencia acumulada com 0 FORTRAN, e redo 0 acervo de bibliotecas nume-
ricas preparadas para esta linguagem. No entanto, esta situacao apresenta si-
nais de mudanca, como 0 demonstra 0 facto de varias bibliotecas estarem a ser
rescritas em Ada, comoe 0 caBOda NAG, par exemplo.
De qualquer forma, uma aplica\~aocomercial ou ulna aplicacao cierltifica
provavelmente nao permitiriam experimentar todos os conceitos interessantes do
Ada, pois talvez naG exigissem muito do sistema de tipos, nem precisassem de
recorrer ao paralelismo. Par isBa, sera mais interessante escolher uma aplicacao
com caracteristicas de tempo real, que exiba varias tarefas executando concor-
rentemente, e controle em simultaneo varias unidades de entrada e de saida.
Ao tratar com 08 gestfJres e precjso veneer a natural relutancia em rela~ao
Ii introducao de novas ferramentas e novos metodos de trabalho, para mais ainda
.281
4. A pratica
Teorizar uma nova tecnologia e um exercfcio mais ou menos futil, se nao
for complementado com uma experimentacao real daB ferramentas e dos meto-
dog de trabalho preconizados. Na realidade, os autores estao envolvidos actual-
mente em dais projectos de indole e dimensao hem diferentes, ambos usando a
linguagem Ada, e foi isso que os levou a elaborar a presente reflexao.
0 primeiro dessesprojectos e urn sistema de vencimentos para a Faculda-
de de Ciencias e Tecnologia da Universidade Nova de Lisboa. Trata-se de uma
aplica~ao de gestao,hem traditional. N ormalmente, talvez ela fosse desenvolvida
em COBOL e SQL, tal como 0 sistema de gestao de alunos da Faculdade, pOT
exemplo.
A escolha desta aplicacao deveu-se a duas ordens de razoes. POTum lado,
passada uma certa rase de aprendizagem com a linguagem Ada, durante a qual
se programam sobretudo problemas academicos, seleccionadospara permitirem
percorrer toda a linguagem, era preciso arranjar um problema real, que pusesse
a prova 08 ensinamentos recolhidos. Par outro lado, 0 antiquado sistema semi-
-automatico de processamento de vencimentos em usa na Faculdade entrou fl-
nalmente em colapso, par causa da apari~ao do IRS, e era urgente encontrar
uma alternativa. Como os utilizadores eram neutros em rela~ao a formula~ao
informatica do problema, a adop~aodo Ada nao levantou quaisquer objec~oes.
. Neste projecto seguiu-se uma abordagem traditional: analise, concepcao
(deszgn), implementa~ao, teste, manuten~a03. Neste momenta (inicio de Marco
de 1989), ap6s quatro meses de desenvolvimento, os programas encontram-se
prestes a ser entregues. Foram produzias cerca de 6000 linhas de c6digo Ada, par
lee
tres programadores, urn dos quais foi tambem 0 snalista. Esta produtividade
exagerada revela que algumas importantes pecas de documenta~aoforam adia-
das, face A urgencia da solucao,e terao que seTfornecidss a partir de agora.
Globalmente, a conviccao daB pessoas intervenjentes no processo e que 0
Ada "se portou bem", e que 0 COBOL nao fez falta nenhuma. A ausencia de urn
sistema integrado para a gestao de bases de dados torneou-sc:facilmente com a
utilizacao dos ficheiros de acessodirecto. Tambem nao foi diffcil produzir os va-
riados mapas, mesmo gem os PICTURES de edii):ao.E a modularizacao que 0
Ada permite tomou mais facil repartir 0 esfor~o de implementacao, e menos di-
ficil gerir 0 desenvolvimento.Everdadeque a programacaofoi urn bocadoapres-
sada, nao deixando tempo para conceber as diversas componentes de maneira
mais abstracta, conduzindo porventura nalguns casos a unidades genericas,
reutilizaveis noutros projectos.
0 segundo projecto consiste na construcao de urn prot6tipo para urn Siste-
ma de Retransmissao Automatica de ME:nsagensTelegraficas. Este nasceu de
uma convergencia de interesses entre a Forca Aerea Portuguesa e a Em, Em-
presa de Investigacao e Desenvolvimento de Electr6njca S.A. Os responsaveis de
ambas as entidades tomaram consciencia da neeessidadede ganhar cornpeten-
cia em _.I\da,face it evolu~aoque se detectava no panorama international. A For-
ca Aerea comeconpor realizar algumas ac~oesde formacao logo em 1986, com a
colabora~aoda Universidade. A EID, pOTsua vez, encetou em 1987 urn Program a
de Desenvolvimento da Produtividade de Software, tinanciado em parte pela
Fundacao Luso-Americana para 0 Desenvolvimento, tendo como parceiro ncsta
accao 0 UNINOV A, uma associacao universidade-empresa ligada a Faculdade
de Ciencias e Tecnologia da Universidade Nova de Lisboa. 0 objectivo deste pro-
grama era precisamente preparar a transicao para 0 Ada na empresa, atraves
da realizacao de diversas accoesde formacao tar.to na linguagem como naB no-
vas metodologia de produ~ao de software. 0 processodeveria culminar com a es-
colha de uma aplica~ao realista a seT desenvolvida em Ada, segundo as no\'as
metodologias. Ora essa aplica~ao foi encontrada na Forca Acrea, precjsamente
com 0 sistema de retransmissao de mensagens.
Tanto a Em como a Forca Aerea estavam conscientes da delicadeza do
empreendimento, e atribuiram-lhe pOTisso um caracter experimental e explora-
t6rio, dando-lhe tambem como objectivo fundamental contribuir para 0 introdu-
cao daB novas metodologias de produ~ao de software em Portugal, assegurando
que 0 Pais nao ficaria para tras neste sector tecnol6gico. Esta nova faceta do pro-
jecto justificou a adesaoa ele do UNINOVA e do LNETI - Laborat6rio Nacional
de Engenhariae TecnologiaIndustrial -, assim como 0 apoio da JNICT - .Jun-
ta N acional de Investigacao Cientifica e Tecnol6gica.
Recordandoas recomenda~oesenumeradas no initio da Seccao3, verifica.
mos que houve bastante cuidado na escolha do projecto: trata-se de uma area de
aplica~ao conhecida para a Ern, que conta com lima grande experiencia r.o de-
senvolvimento de sistemas de comunica~oes.Note-se que segundo Boehm4 0 fac-
tor de produtividade "experiencia no dominio da aplicacao" tern uma amplitude
de 1.57, isto e, se 0 custo do desenvolvimento com lima equipa muito experiente
for 100, 0 custo com uma equipa 8em experiencia sera 157.
I ~89
J
i
J
0 apoio dos responsaveisdaB entidades envolvidas foi desde logo urn dado
adquirido. ate porque a iniciativa de mudar para 0 Ada e de natureza estrategica.
tanto para a For~a Aerea como para a Em. Neste capitulo, portanto, nao houve
problemas. Adicionalmente. os gestores tccnicos estao tambem int.eressadosna
mudan~a. pois j.4 haviam sentido em projectos anteriores a necessidade de mo-
dernizar a produ~ao de software.
A forma~ao do pessoal envolvido no projecto foi considerada uma priorida-
de, logo desde 0 initio. Na pratica ela foi conduzida em tres frentes: formaCaono
interior, forma9ao no exterior e auto-forma~ao. A forma~ao no interior foi orga-
nizada pelo U'NINOVA, ainda no ambito do Program a de Desenvolvimento cia
Produtividade do Software. Contemplou essencialmente a linguagem Ada, mas
colocando sempre a enfase na boa aplica~ao dos principios da Engenharia de
Software. A titulo meramente exemplificativo. indicamos as principais materias
referentes a linguagem. pela ordem por que Coramapresentadas:
. Objectivos da linguagem
. Especifica~aode pacotes;clausula with
. Programa principal
. Instru~oes: sintaxe. semantica
. Corpo de pacote
. Tipos pre-definidos; quadros, registos
. Tipos privados
. Subprogramas: fun~oes. procedimentos
. Excep~oes
. Subtipos. tipos derivados
. Atributos
. Agregados
. Quadros nao-constrangidos
. Registos com discriminante
. Unidades genericas; instancia~ao
. Classes de parametros formais genericos
. Processamentode texto
. Gestao de ficheiros
. Tipos acesso;estruturas de dados recursivas
. Listas genericas
. Reutiliza~ao de software
. Programa~ao object.oriented
. Componentes de software ; classifica~ao
. Exemplos de unidades genericas
. Concorrencia
. Declara~ao de tarefas
. Tipos de rendezvous
. Tennina~ao de tarefas
. Gestao de interrup~oes
5. Conclusao
Passada lima Piimeira epoca em que os compiladores eram relativamente
instaveist e em que faltavam metodologias de desenvolvimento que tirassem real
partido das caracteri~ticas do Ada. hoje a situa~ao e hem mais favoravelt c a
transir;ao para 0 Ada parece finalmente ser urn in\'estimento segura. Isto signi-
fica que as empresas produtoras de softuJare serao levadast por factores inten-los
ou externost a g-an,haremcompet.en(.'iatambem em Ada, sob pena de se deixarem
ficar para tras.
1.91
Referencias
1. Grady Booch, Software Engineering with Ada, 2~ edi~ao, Benjamin/
Cummings, Menlo Park, 1986.
2. Donald G. Firesmith, Ada Project Management, seminario organizado pOT
State of the Art Limited, Londres, 1988.
3. Richard Fairley, Software Engineering Concepts, McGraw-Hill, Nova Iorque,
1985.
4. Barry W. Boehm, Software Engineering Economics, Prentice-Hall, Englewood
Cliffs, 1981.
5. Barry W. Boehm, Software Cost Estimation Using COCOMO and Ada
COCOMO, serninario organizadopar State of the Art Limited, Londres, 1988.