You are on page 1of 5

S O F T WA R E /A R T I G O S

QUAL A PRTICA
DO DESENVOLVIMENTO
DE SOFTWARE?

Jorge Henrique Cabral Fernandes

software um produto do trabalho humano cada vez mais presente

O na sociedade. Qualquer discusso sobre a prtica de software deve


se fundamentar na compreenso da real natureza do que software
e no relacionamento que ele provoca entre pessoas. Este artigo des-
creve como o software um artefato humano que no se enquadra
em definies convencionais encontradas no dicionrio, pois, alm de ser
uma entidade de natureza mecnica, uma entidade descritiva, complexa-
mente hieraquizada, cognitivo-lingustica e histrica, concebida atravs de
esforos coletivos durante um considervel perodo de tempo. Partindo da
descrio deste contexto do software, este artigo apresenta uma anlise das
principais atividades e problemas contemporneos com os quais se deparam
os que desenvolvem, adquirem e usam software e sistemas de computador. Figura 1 - Categorias de usurios e mquinas
Tal anlise permite a compreenso do papel central desse artefato humano
em nossa sociedade ps-moderna, cujas diversas demandas, expectativas e
premissas reforam cada vez mais o futuro da produo e consumo de bens, partes: usurio e mquina. Adicionalmente, MCSW facultada a capa-
produtos e servios. cidade de interagir diretamente com parte ou todo da MPU, o que permite
que tarefas da MPU sejam realizadas sob interferncia da MCSW. Relacio-
O CONTEXTO DA PRTICA DO SOFTWARE A prtica do desenvolvi- namentos lingsticos entre usurios e mquinas podem ser estabelecidos
mento de software est no cerne de uma relao humana de troca de pla- de forma arbitrria e/ou hierarquizada, seja entre o usurio final e a
nos, posses, desejos e necessidades entre trs categorias de agentes coleti- mquina mediadora, entre mquinas independentes, entre a mquina de
vos: os que usam, os que adquirem e os que produzem software. ordem n+1 e a mquina de ordem n, entre a mquina de ordem 1 e a
mquina de ordem 0, etc.
HIERARQUIAS DE MQUINAS E USURIOS Quem usa um software em Pode-se perceber portanto, que a construo de mquinas computveis
geral chamado de usurio. O software no , de fato, uma mquina, mas capaz de ser organizada sob diversas formas, principalmente atravs de uma
sim uma descrio de mquina. Ou seja, software um artefato virtual, inca- relao hierarquizada, bastando que, para tal, cada mquina oferea para a
paz de realizar trabalho a menos que exista uma mquina que carregue e mquina de nvel imediatamente superior, um modo de comunicao
interprete as instrues e informaes contidas no mesmo, o que resulta na baseado numa linguagem bem definida, na qual est presente a capacidade
construo de outra mquina, de ordem superior, com a qual interage o de carga e interpretao de planos de construo de mquinas (o software).
usurio. Em outras palavras, na anlise de qualquer sistema de computao Eventualmente, na relao hierrquica de mais baixo nvel atinge-se a
estaremos sempre falando de duas mquinas. Uma mquina, de ordem n, mquina de ordem 0, construda no mais atravs de carga e interpretao
a mquina possuda pelo usurio (MPU) antes da carga e interpretao das dinmica de um software, mas sim atravs de dispositivos fisicamente imu-
instrues e informaes contidas no software. A outra mquina, de ordem tveis. Esta mquina 0 chamada de hardware. A figura 2 apresenta essa
n+1, a mquina com a qual o usurio interage, e que surge quando a relao em maiores detalhes. (Veja figura 2)
mquina de ordem n faz a interpretao do software. Da combinao din- O consumidor do software, usualmente chamado de cliente, uma entidade
mica entre a MPU e o software surge a mquina de ordem n+1, qual dar- que adquire uma cpia de um software, fornecida por um agente que ser cha-
se- o nome de mquina construda por meio de software (MCSW). O mado de desenvolvedor, atravs de algum processo de troca, que pode envolver
usurio de uma mquina pode ser humano ou mquina, esta ltima even- entre outras coisas, dinheiro, bens, ou redes de conhecimento. Do ponto de
tualmente atuando como intermediria na relao entre a MCSW e outro vista do cliente, o software visto como um conjunto ordenado de descries
humano (usurio final). A figura 1 descreve essas relaes. (Veja figura 1) ou instrues, capazes de direcionar a mquina possuda pelo usurio (MPU)
para a realizao de tarefas que satisfazem s necessidades do ltimo. Como o
LINGUAGENS E HIERARQUIAS Qualquer que seja a natureza do usurio, usurio nem sempre conhecedor da organizao da MPU, o cliente faz a
para que a relao usurio-mquina se estabelea de forma efetiva preciso mediao entre o desenvolvedor e o usurio. Sendo assim, o cliente atua antes
que exista uma linguagem de conversao com a mquina, exercitada entre do uso do software, e ele que seleciona e decide colocar o software ao alcance
o usurio e a MCSW, na qual est definida uma estrutura sinttica e semn- da MPU, sobre a qual eventualmente ocorrer a carga e interpretao do soft-
tica para construo de sentenas que permitam a comunicao entre as ware, criando a MCSW que, espera-se, satisfaa as necessidades do usurio. No

29
S O F T WA R E /A R T I G O S

UM EXEMPLO CONCRETO Para tornar mais clara a explanao apresenta-se


abaixo um exemplo concreto: o (software de) IRPF (Imposto de Renda Pes-
soa Fsica), desenvolvido pela Secretaria da Receita Federal. O IRPF uma
descrio de como construir uma mquina de calcular impostos, a qual con-
cretizada nas mquinas possudas pelos contribuintes, desempenha tarefas
peculiares ao sistema tributrio brasileiro, de um modo compreensvel por
pessoas fsicas que precisam realizar o ajuste anual de contribuies de impos-
tos frente Fazenda Nacional. Suponha que o usurio deseja usar tal
mquina, e possui um sistema de computador (MPU) constitudo por um
PC + sistema operacional + browser web. Pode-se proceder conforme as eta-
pas a seguir; 1 o usurio emprega MPU para carregar e interpretar o brow-
ser web, construindo MCSW1, que realiza a tarefa de copiar o (software) ins-
talador do (software) IRPF, da mquina servidora da SRF, para MPU. Isto
provoca uma alterao em MPU, que passa a ser MPU, agora constituda
por um PC + sistema operacional + browser + instalador do IRPF;
Figura 2 - A natureza hierrquica do software 2 o usurio emprega MPU para carregar e interpretar o instalador do
IRPF, construindo MCSW1, a verbalizao de MCSW1 instala o software
caso de sistemas de computao de pequena escala, e quando o cliente e usu- do IRPF sobre MPU, que passa a ser MPU, composta por um PC + sis-
rio so seres humanos, eles tendem a ser a mesma pessoa. Seus papis se tornam tema operacional + browser + instalador do IRPF + IRPF. Todos esses usos
distintos medida em que qualquer das mquinas, seja a MPU ou a MCSW, de mquinas ainda no provocaram o efeito final desejado, que o uso da
se torna complexa e hierarquizada. Em outra situao ocorre que o usurio mquina de calcular impostos.
uma mquina, sem capacidade de negociao ou deciso. 3 por fim, o usurio emprega MPU para carregar e interpretar o (soft-
Dado que o cliente participa de uma relao de troca com o desenvolvedor, ware) IRPF, o que constri MCSW1, para realizar a atividade original-
com o objetivo de satisfazer as necessidades do usurio, o cliente precisa mente necessria.
levar em considerao vrios fatores pertinentes, numa relao de produo Onde esto o software se as mquinas em cada um dos momentos descritos acima?
e consumo de bens. Quatro mquinas no momento 1: (1) MCSW1, que foi construda por
(2) MPU sob demanda do contribuinte. MCSW1 foi usuria de (3)
COMPREENDENDO OS PROBLEMAS, DESEJOS E NECESSIDADES DO mquina servidor da SRF, e construiu (4) MPU.
USURIO Para poder adquirir o software satisfatrio, o cliente precisa Trs mquinas no momento 2: (1) MCSW1, que foi construda por (2)
compreender: quais os problema e necessidades com as quais o usurio MPU sob demanda do contribuinte. O resultado da verbalizao de
convive e qual a MPU. Definido o contexto da soluo, usualmente cha- MCSW1 construiu MPU.
mado domnio da aplicao, o cliente planeja uma soluo para o mesmo Duas mquinas no momento 3: (1) MCSW, que foi construda por (2)
atravs da definio das propriedades de uma mquina necessria para MPU sob demanda do contribuinte, para ser utilizada no clculo de ajus-
satisfazer ao usurio. Como o cliente no constri diretamente o software, tes de contribuio de impostos.
o plano de soluo expresso atravs de uma definio de linguagem Onde esto o usurio, o cliente e o desenvolvedor no cenrio acima? O usu-
necessria ao usurio (LNU), com gramtica (sintaxe) e lgica (semn- rio atuou nos trs instantes, usando diretamente seis mquinas (MPU,
tica) bem definidas. A LNU, verbalizada pela MCSW, ser capaz de se MCSW1, MPU, MCSW1, MPU e MCSW), em momentos distintos,
comunicar com o usurio, permitindo-o expressar tarefas a executar, e e mais uma mquina (servidor SRF) atravs de intermediao. Embora a
obter resultados adequados. Outro aspecto que o cliente considera que inteno do contribuinte fosse usar a mquina IRPF, ele precisou empregar
o problema e as necessidades do usurio existem no mundo real, e por- seis outras mquinas distintas para usar a mquina desejada.
tanto apresentam-se em um contexto de tempo, espao e recursos limita-
dos. Sendo assim, tambm faz parte de uma soluo satisfatria de aquisi-
o de software: a seleo de um desenvolvedor de software capaz de criar
um plano de construo da MCSW, que seja carregvel e interpretvel por
MPU; e a adoo de um conjunto de condies que permitam que o soft-
ware esteja disponvel para o usurio no momento em que este necessitar,
e dentro de uma relao de custo-benefcio satisfatria para o cliente.

O DESENVOLVEDOR O desenvolvedor de software um agente coletivo,


responsvel por criar um plano de construo de mquina (software) que
esteja dentro das condies estabelecidas pelo cliente. Software , portanto,
uma meta-mquina. A figura 3 expressa a relao entre os trs elementos
humanos que participam do cenrio de prtica do software. (Veja figura 3) Figura 3 - Relao entre praticantes do software

30
S O F T WA R E /A R T I G O S

O cliente do IRPF agiu antes dos momentos 1, 2 e 3, quando identificou uma para esse problema surge atravs da necessria padronizao de configuraes
srie de problemas relativos aos custos e prazos de processamento de ajustes ou plataformas de sistemas de computador, que consiste em estabelecer uma
anuais de impostos de pessoa fsica. O cliente, nesse caso, um agente (cole- mquina padronizada, capaz de executar tarefas teis a uma grande quanti-
tivo) do governo federal que descreveu um conjunto de formulrios, tabelas dade de planos de construo de mquinas. Ao se criar um mnimo denomi-
de contribuio, mecanismos de clculo, etc., que constituem o que se pode nador comum de mquina possuda pelo usurio, possvel criar planos de
chamar de linguagem de ajuste anual de constribuies da fazenda nacional construo capazes de serem interpretados em uma grande quantidade de sis-
baseada na plataforma de sistemas de computador PC, ou simplesmente a temas de computador. Termos e conceitos como Pentium, IBM PC, Macin-
linguagem do IRPF. Alm da linguagem, o cliente definiu condies adi- tosh, Linux, Unix, MS Windows, Mquina Virtual Java, MS Office e .NET
cionais de prazo e custos para a construo do plano de mquina IRPF, que denotam plataformas de sistemas de computador de diversos nveis hierr-
delimita a ao dos desenvolvedores. A definio da linguagem do IRPF no quicos, sobre as quais possvel executar categorias especficas de software.
foi realizada em um momento nico e isolado, dentre outras coisas porque a Uma das mais importantes prticas do software identificar qual a plata-
concepo de como sero solicitadas e realizadas as tarefas de uma mquina forma de mquina que apresenta as melhores vantagens no contexto espec-
de calcular impostos (de qualquer tipo de mquina em geral) no possui uma fico de uma relao entre usurios, clientes e desenvolvedores.
soluo nica. Ela precisa ser projetada. No caso especfico da linguagem do
IRPF, a mesma tende a sofrer presses para evoluir rapidamente devido A EVOLUO DAS LINGUAGENS NECESSRIAS - LNUS Mquinas so exten-
natureza coletiva de seu uso, por milhes de usurios. Percebe-se portanto ses do ser humano. So mdias atravs das quais se estabelecem comunicaes
que, antes de ser imutvel, a linguagem do IRPF, como a linguagem da maio- com resultados teis e previsveis. A natureza das linguagens de comunicao
ria das mquinas desenvolvidas, o resultado de um processo criativo que se usurio-mquina permeia profundamente toda a relao e histria do homem
desenvolve ao longo de vrios anos, e que tende a evoluir da mesma forma e dos artefatos que constri, possuindo um impacto profundo sobre as ativida-
que evoluem as linguagens de manipulao de mquinas fsicas como con- des produtivas da sociedade. Criar linguagens est, portanto, no cerne da ao
troles remotos, liquidificadores, relgios e painis de automveis. Final- humana, e a prtica do software permite o exerccio desse processo criativo de
mente, por estar sujeita a um intenso processo de reproduo, adaptao, forma eficiente e reproduzvel (nos milhes de sistemas de computador que exis-
mutao e seleo, causada por um conjunto de tentativas e erros para criar a tem) como jamais se viu na histria da humanidade. A definio da linguagem
linguagem mais compreensvel e verbalizvel por um conjunto aberto de verbalizada por uma mquina computvel um processo criativo e evolutivo,
seres cognitivamente ativos, as linguagens das mquinas computveis evo- baseado em experincias cognitivo-coletivas. Espera-se portanto que, da relao
luem de forma darwiniana, sendo artefatos designoids (2), tais como o so as usurio-cliente-fornecedor, seja possvel a definio de uma linguagem necess-
enzimas, glndulas, sistemas neuro-musculares, organismos e ecossistemas. ria (LNU) para soluo do problema que o usurio tem em mos. Tal soluo
O desenvolvedor do IRPF atuou baseado nas seguintes restries determi- dificilmente obtida de forma plenamente satisfatria, a menos que o usurio seja
nadas inicialmente pelo cliente: conceber um plano de construo de uma outra mquina, devido aos seguintes fatores:
mquina capaz de verbalizar a linguagem do IRPF; conceber um plano de 1- do mesmo modo que a interao (conversao) essencial ao aprendizado
construo de mquina que seja carregvel e interpretvel em cada uma das de um novo idioma ou manipulao de uma mquina como um automvel,
mquinas possudas por cada um dos usurios do software; conceber um a compreenso de uma LNU (e das capacidades e limitaes da mquina que
plano de construo de mquina que seja concludo dentro das restries de a verbaliza) s atinge a plenitude no limite da interao entre o usurio e uma
prazo e custos determinados. mquina que se aproxime da mquina necessria (MNU). Desse modo, a con-
Estabelecida essa trade dos envolvidos na prtica do software, possvel rea- cepo de LNUs satisfatrias um processo interativo, que envolve a defini-
lizar uma srie de anlises de cenrios e variaes da qual emerge a riqueza e o de vrias linguagens necessrias intermedirias (LNI, LNI, etc), que so
possibilidades do software em nossa sociedade. verbalizadas por MCS, que so construdas por planos de mquinas interme-
dirias (SWIs). A nica forma de conferir satisfao plena e duradoura ao
O CENRIO PERCEBIDO PELO USURIO usurio quando o mesmo tambm uma mquina que no evolui sua capa-
cidade de verbalizao, como ocorre com muitas mquinas mecnicas. Neste
A COMPLEXIDADE DAS MQUINAS POSSUDAS - MPUS Um dos pro- caso, a LNU pode ser plenamente definida atravs de uma gramtica e lgica
blemas que mais complicam a relao entre o usurio e a mquina construda matematicamente formais. Esta ltima situao caracteriza o desenvolvi-
pelo software, a grande complexidade das MPUs sobre as quais o software mento do que Lehman (2) chama de S-Type Program, que um software cuja
interpretado. Atravs do exemplo do IRPF, percebe-se que a MPU cons- corretude (satisfatibilidade) plenamente definida a partir de sua (especifica-
tantemente compelida e sujeita a modificaes, em especial pela prpria ao o de) linguagem.
do usurio. Eventualmente, cada uma das aes realizadas sobre as MPUs 2- o segundo fator que dificulta a satisfao plena do usurio que o processo
diretamente manipuladas pelo usurio implica em alteraes em dezenas ou interativo est baseado em relaes humanas. Ao interagir com quaisquer das
mesmo centenas de outras mquinas hierarquicamente equivalentes ou infe- mquinas intermedirias o usurio adquire compreenso prtica de como a
riores, que so postas em atividade e inatividade no momento em que se est mquina verbalizou a sua comunicao, fornecendo solues (de algum
usando um sistema de computador. Essa complexidade e constante mutao modo satisfatrias) para os problemas e necessidades com as quais o usurio
provocam o surgimento constante de diferenas entre a MPU que havia no se depara. Dado que as diversas solues intermedirias so produzidas ao
momento em que o cliente identificou uma soluo, e a MPU do usurio no longo do tempo, alguns problemas originalmente percebidos pelo usurio se
momento em que o software carregado e interpretado. A soluo prtica mostram solucionados, novos problemas surgem medida em que o

31
S O F T WA R E /A R T I G O S

ambiente do usurio se transforma pela ao da mquina, e problemas que a variao da linguagem de interao entre a mquina desejada e o usurio.
no eram percebidos se tornam aparentes ou desaparecem. Essas transforma- 2. Design de software atividades para particionar e organizar interna-
es emergem dentro de um contexto de negociao de prazos e custos entre mente o plano de construo global do software, subdividindo-o recursiva-
o cliente e o desenvolvedor, onde cada um dos agentes procura otimizar a mente em diversos planos de mquinas (e suas linguagens) internas, at que
relao custo-benefcio do seu ponto de vista. Os cenrios acima contribuem cada plano de mquina seja realizvel custo-efetivamente com o auxlio da
para que a LNUs sejam sujeitas a um forte processo de seleo, adaptao e MPU ou com outras internamente planejadas.
mutao (devido a inevitveis erros no processo de comunicao entre as par- 3.Construo de software atividades para definir instrues e descries
tes), caracterizando o que Lehman(2) chama de E-Type Software, ou real-life para cada um dos planos de mquina, de modo que cada plano de mquina
software, cujo desenvolvimento se processa atravs de mltiplos nveis, ml- seja carregvel e interpretvel pela MPU ou por uma das mquinas interna-
tiplos agentes e mltiplos ciclos de feedback positivo e negativo. mente construdas.
4.Testes e qualidade de software atividades para atestar que: o software ser
A ORGANIZAO DAS MQUINAS NECESSRIAS O maior diferencial adequadamente interpretado nas mquinas dos desenvolvedores e dos usu-
qualitativo do computador, relativo a todas as outras mquinas criadas pelo rios; a construo de software foi feita conforme os planos do design; que o
homem, a capacidade de manipulao de representaes simblicas e dis- design verbaliza a linguagem definida pelo cliente; e o usurio ter suas
cretas, estruturadas na forma de linguagens computveis. Uma linguagem necessidades satisfeitas atravs do software.
computvel, verbalizada por uma mquina de ordem 0, capaz de, ao inter- 5.Manuteno de software atividades tipicamente aplicadas ao desenvol-
pretar um software nessa linguagem computvel, criar uma mquina de vimento de E-Type Software, para permitir que, ao longo dos vrios ciclos
ordem 1, cuja linguagem verbalizada apresenta o mesma expressividade da de interao de re-definies de linguagens da mquina necessria (mudan-
linguagem da mquina de ordem 0. Em outras palavras, embora cada lin- as de requisitos) sejam tomadas aes para tratar o efeito das leis de evolu-
guagem computvel apresente caractersticas peculiares de sintaxe e semn- o do software estabelecidas por Lehman. Essas leis so principalmente: (I)
tica, possvel ao desenvolvedor do software que intera- a Lei da Mudana Contnua deve-se permitir que sejam
gir com uma mquina computvel, conceber uma feitas alteraes no plano de software para verbalizar a lin-
mquina de maior ordem, que ter o mesmo poder com- guagem modificada; (II) Lei da Complexidade Crescente
putacional da mquina original. A esse conceito funda- ...O devem ser empreendidos esforos para tornar sob con-
mental de computabilidade soma-se a capacidade que os DESIGN trole a complexidade que cresce medida que alteraes
sistemas de computador tem de: verbalizar a linguagem VERBALIZA so conduzidas no software; (III) Lei da Auto-Regulao
em alta velocidade, em conformidade com planos de A LINGUAGEM e (IV) Lei da Conservao da Estabilidade Organizacio-
mquinas; e produzir resultados coerentes com intera- DEFINIDA nal que sejam mantidas a estabilidade dos atributos dos
es imprevisveis efetuadas pelos usurios, sobre os quais processos e do produto (software) frente estrutura da
os sistemas no exercem controle.
PELO organizao produtora de software, de modo que organi-
A computabilidade confere elevada capacidade e flexibi- CLIENTE ... zao mantenha uma taxa lquida de produtividade,
lidade de ao do desenvolvedor na organizao do soft- invarivel ao longo do ciclo de vida do software; (V) Lei
ware em vrios nveis de hierarquia e interdependncia, da Conservao da Familiaridade que a taxa de mudan-
enquanto a interatividade e imprevisibilidade do usurio produzem o inde- as nos sucessivos releases do software se mantenha constante ao longo do
terminismo nos resultados das mquinas sobre os sistemas com os quais tempo; (VI) do Lei Crescimento Contnuo que a quantidade de intera-
interagem. Esta combinao entre poder terico e imponderabilidade pr- es ou tarefas verbalizadas pelo software cresa para que se mantenha o
tica cria uma condio para o surgimento de problemas de complexidade, nvel satisfao do usurio; e (VII) Lei da Qualidade em Declnio que
falhas de planejamento e baixo grau de satisfao, que se espera possam ser constantes mudanas na mquina possuda pelo usurio devem ser feitas
controlados atravs de prticas da engenharia de software. sob controle rigoroso da manuteno e adaptaes constantes ao software,
caso contrrio a qualidade do mesmo declinar perante o usurio.
A ENGENHARIA DE SOFTWARE a disciplina do conhecimento humano 6.Gerncia de configurao atividades para garantir que seja adequada-
que tem por objetivo definir e exercitar processos (humanos atuando como mente disponveis para uso pelos desenvolvedores de software a estrutura
mquinas), mtodos (planos de processos), ferramentas e ambientes (mqui- interdependente-hierrquica de mquinas: 1- possudas pelo usurio; 2-
nas apoiando processos e mtodos) para construo de software que satisfaa internamente construdas atravs do software; e 3- que apiam os processos
necessidades de cliente e usurio dentro de prazos e custos previsveis. Em de engenharia de software.
outras palavras, engenharia de software uma atividade industrial de produo 7. Gerncia de engenharia atividades para garantir que o cliente receber
de software, atravs da qual so produzidos vrios artefatos no necessaria- o software em conformidade com a LCU e outras restries combinadas
mente compreensveis por mquinas, mas que contribuem decisivamente para entre as partes.
que um plano de construo de mquina seja satisfatoriamente criado. O corpo 8. Processos de engenharia atividades para planejar, suportar, monitorar,
de conhecimentos da engenharia de software estruturado em reas (3). Uma controlar e ajustar todas as outras reas e atividades de desenvolvimento, de
interpretao de cada rea fornecida abaixo, relacionando-as com os concei- modo a estrutur-las adequadamente na forma de processos produtivos
tos previamente estabelecidos na relao cliente-usurio-desenvolvedor. reproduzveis e previsveis.
1. Requisitos de software atividades para aumentar a preciso e controlar 9. Ferramentas e mtodos atividades de seleo e adoo de mquinas e

32
S O F T WA R E /A R T I G O S

planos de processos que aumentem a produtividade dos desenvolvedores REFINAMENTO: A ESSNCIA DA


enquanto reduzem a ocorrncia de falhas no desenvolvimento. ENGENHARIA DE SOFTWARE
At este momento a definio de software usada se refere noo de plano
de construo de mquina. Ser esta a definio mais aceita para software
entre os praticantes? Vejamos abaixo outra definio de programa (soft-
Ana Cavalcanti
ware) presente em uma licena de software da IBM (4).
... O termo "programa" significa o programa original e todas as cpias com-
pletas ou parciais do mesmo. Um programa consiste em instrues legveis noo de refinamento captura a essncia das atividades dirias de
por mquina, seus componentes, dados, contedo audiovisual (tal como
imagens, texto, gravaes ou figuras) e materiais licenciados relacionados..
Conforme esta definio, em geral adotada pela indstria de software, um
software mais do que as instrues interpretveis por uma mquina. Digno
de nota a indicao de que contedo audiovisual (tal como imagens, texto,
gravaes ou figuras) tambem parte do software - este aspecto extrapola o
conceito de software inicialmente apresentado como meta-mquina,
A engenheiros de software, que projetam sistemas baseados em es-
pecificaes, e de programadores, que implementam estes proje-
tos. Em ambos os casos, o principal objetivo a construo de sis-
temas e programas de acordo com documentos que os definem.
O produto final, acima de tudo, deve ser, ou tem que ser, correto.
Refinamento a relao que existe entre uma especificao, seus projetos e
implementaes corretas, do ponto de vista funcional. Mtodos de desenvol-
medida que torna explcito o fato de que qualquer material escrito, impresso, vimento de programa so baseados nesta noo de uma forma ou de outra.
apresentvel em qualquer mdia de comunicao, de natureza textual, grfica, Uma tcnica formal vai alm, no sentido que ela prov uma base matemti-
audvel, etc, que tem por objetivo descrever algo para o usurio ou sua ca para garantia de correo. Neste caso, a meta primordial o refinamento
mquina, tambm parte do software. de uma especificao inicial para obteno de uma implementao aceit-
Outra definio de software comumente aceita entre quem desenvolve soft- vel. Critrios de aceitao podem incluir, por exemplo, eficincia, mas a ga-
ware a que prescreve que o resultado de quaisquer das atividades do processo rantia fornecida que a especificao e a implementao esto relacionadas
produtivo de software tambm software. Alm de todas as mdias digitais, por refinamento.
impressas, ou reproduzveis de alguma forma, que foram reproduzidas e entre-
gues ao cliente, so parte do software os subprodutos internos do processo CONCEITOS BSICOS Inicialmente, refinamento foi estudado para pro-
produtivo, como planos de decomposies de software, especificaes de lin- gramas seqenciais, aonde o foco a relao entre as entradas e sadas de um
guagens, definies de prazos e custos limites, planos de testes, documentos programa. Foi identificado que h basicamente duas formas de refinar uma
formais de aceitao, etc. Cada um dos artefatos parte de um plano de cons- especificao. A primeira a introduo e a transformao de estruturas de
truo, no necessariamente compreensvel por uma mquina computvel, programao e controle como atribuies, condies, e laos. Isto chama-
mas destinado a ser interpretado por um ser humano que participa da cons- do refinamento algortmico.
truo e evoluo do software. Sendo assim, uma possvel eliminao desses A segunda forma de refinamento relacionada com as estruturas de dados
artefatos (ou do conhecimento neles contidos) de dentro da composio do usadas no programa. Sistemas so especificados em termos de tipos de da-
software, sempre provoca prejuzos no processo de manuteno do mesmo. dos que so apropriados para descrever propriedades do domnio de aplica-
o; neste estgio do desenvolvimento, no se faz, por exemplo, considera-
CONCLUSES A prtica do software emerge da interao entre mltiplos es relacionadas eficincia.
agentes coletivos, com interesses e necessidades distintas, que contribuem Decises de projeto, no entanto, normalmente introduzem estruturas de da-
com pontos de vista complementares para usar e criar mquinas, linguagens dos mais elaboradas e apropriadas para implementao. A mudana de repre-
e planos de construo de mquinas. Embora a satisfao primria provocada sentao de dados envolvida nessa tarefa chamada refinamento de dados.
pelo uso do software seja resultante do efeito imediato de uma relao mec- O ponto de partida de qualquer mtodo formal uma especificao formal.
nica de interpretao efetuada por uma mquina computvel, o contexto his- Correo uma noo relativa: dizemos que um programa correto se ele
trico-social-lingstico de concepo do software o redefine como um arte- implementa a sua especificao. Para garantir correo, ns precisamos de
fato modularizado, interdependente e hierarquizado, constitudo por mdias uma especificao formal do programa.
de diversas naturezas, concebidas por uma ampla gama de seres humanos H muitas linguagens e formalismos em uso hoje. Ns usaremos uma lin-
com habilidades profissionais extremamente variadas, e destinadas no s guagem de especificao chamada Z para apresentar um exemplo. Uma es-
interpretao por mquinas computveis, mas tambm por seres humanos. pecificao de sistema em Z consiste basicamente de uma definio de um
estado e de uma coleo de operaes. O estado composto de variveis que
Jorge Henrique Cabral Fernandes professor do Departamento de Informtica e Matem- representam os dados usados e registrados no sistema. As operaes recebem
tica Aplicada da Universidade Federal do Rio Grande do Norte entradas e produzem sadas, possivelmente alterando o estado.
Tanto o estado quanto as operaes so definidas por esquemas: uma nota-
Referncias bibliogrficas o grfica para agrupar declaraes de variveis e suas propriedades.

1 Dawkins, R. Clibimg mount improbable. W. W Norton, 1996. EXEMPLO Ns apresentamos a especificao de um sistema que calcula a
2 Lehmam,M.M. Laws of software evolution revisited. LNCS 1149, Springer, 1997.
3 SWEBOK Project. Software engineering body of knowledge. Ed. 0.9. 2001. mdia de uma seqncia de nmeros recebidos como entrada. O estado des-
4 IBM software license te sistema s tem um componente: a seqncia de inteiros.

33

You might also like