Você está na página 1de 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
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 descreve 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, complexamente 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.
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,
produtos e servios.

O CONTEXTO DA PRTICA DO SOFTWARE A prtica do desenvolvimento de software est no cerne de uma relao humana de troca de planos, posses, desejos e necessidades entre trs categorias de agentes coletivos: os que usam, os que adquirem e os que produzem software.
HIERARQUIAS DE MQUINAS E USURIOS Quem usa um software em
geral chamado de usurio. O software no , de fato, uma mquina, mas
sim uma descrio de mquina. Ou seja, software um artefato virtual, incapaz de realizar trabalho a menos que exista uma mquina que carregue e
interprete as instrues e informaes contidas no mesmo, o que resulta na
construo de outra mquina, de ordem superior, com a qual interage o
usurio. Em outras palavras, na anlise de qualquer sistema de computao
estaremos sempre falando de duas mquinas. Uma mquina, de ordem n,
a mquina possuda pelo usurio (MPU) antes da carga e interpretao das
instrues e informaes contidas no software. A outra mquina, de ordem
n+1, a mquina com a qual o usurio interage, e que surge quando a
mquina de ordem n faz a interpretao do software. Da combinao dinmica entre a MPU e o software surge a mquina de ordem n+1, qual darse- o nome de mquina construda por meio de software (MCSW). O
usurio de uma mquina pode ser humano ou mquina, esta ltima eventualmente atuando como intermediria na relao entre a MCSW e outro
humano (usurio final). A figura 1 descreve essas relaes. (Veja figura 1)
LINGUAGENS E HIERARQUIAS Qualquer que seja a natureza do usurio,
para que a relao usurio-mquina se estabelea de forma efetiva preciso
que exista uma linguagem de conversao com a mquina, exercitada entre
o usurio e a MCSW, na qual est definida uma estrutura sinttica e semntica para construo de sentenas que permitam a comunicao entre as

Figura 1 - Categorias de usurios e mquinas

partes: usurio e mquina. Adicionalmente, MCSW facultada a capacidade de interagir diretamente com parte ou todo da MPU, o que permite
que tarefas da MPU sejam realizadas sob interferncia da MCSW. Relacionamentos lingsticos entre usurios e mquinas podem ser estabelecidos
de forma arbitrria e/ou hierarquizada, seja entre o usurio final e a
mquina mediadora, entre mquinas independentes, entre a mquina de
ordem n+1 e a mquina de ordem n, entre a mquina de ordem 1 e a
mquina de ordem 0, etc.
Pode-se perceber portanto, que a construo de mquinas computveis
capaz de ser organizada sob diversas formas, principalmente atravs de uma
relao hierarquizada, bastando que, para tal, cada mquina oferea para a
mquina de nvel imediatamente superior, um modo de comunicao
baseado numa linguagem bem definida, na qual est presente a capacidade
de carga e interpretao de planos de construo de mquinas (o software).
Eventualmente, na relao hierrquica de mais baixo nvel atinge-se a
mquina de ordem 0, construda no mais atravs de carga e interpretao
dinmica de um software, mas sim atravs de dispositivos fisicamente imutveis. Esta mquina 0 chamada de hardware. A figura 2 apresenta essa
relao em maiores detalhes. (Veja figura 2)
O consumidor do software, usualmente chamado de cliente, uma entidade
que adquire uma cpia de um software, fornecida por um agente que ser chamado de desenvolvedor, atravs de algum processo de troca, que pode envolver
entre outras coisas, dinheiro, bens, ou redes de conhecimento. Do ponto de
vista do cliente, o software visto como um conjunto ordenado de descries
ou instrues, capazes de direcionar a mquina possuda pelo usurio (MPU)
para a realizao de tarefas que satisfazem s necessidades do ltimo. Como o
usurio nem sempre conhecedor da organizao da MPU, o cliente faz a
mediao entre o desenvolvedor e o usurio. Sendo assim, o cliente atua antes
do uso do software, e ele que seleciona e decide colocar o software ao alcance
da MPU, sobre a qual eventualmente ocorrer a carga e interpretao do software, criando a MCSW que, espera-se, satisfaa as necessidades do usurio. No
29

S O F T WA R E

Figura 2 - A natureza hierrquica do software

caso de sistemas de computao de pequena escala, e quando o cliente e usurio so seres humanos, eles tendem a ser a mesma pessoa. Seus papis se tornam
distintos medida em que qualquer das mquinas, seja a MPU ou a MCSW,
se torna complexa e hierarquizada. Em outra situao ocorre que o usurio
uma mquina, sem capacidade de negociao ou deciso.
Dado que o cliente participa de uma relao de troca com o desenvolvedor,
com o objetivo de satisfazer as necessidades do usurio, o cliente precisa
levar em considerao vrios fatores pertinentes, numa relao de produo
e consumo de bens.
COMPREENDENDO OS PROBLEMAS, DESEJOS E NECESSIDADES DO
Para poder adquirir o software satisfatrio, o cliente precisa
compreender: quais os problema e necessidades com as quais o usurio
convive e qual a MPU. Definido o contexto da soluo, usualmente chamado domnio da aplicao, o cliente planeja uma soluo para o mesmo
atravs da definio das propriedades de uma mquina necessria para
satisfazer ao usurio. Como o cliente no constri diretamente o software,
o plano de soluo expresso atravs de uma definio de linguagem
necessria ao usurio (LNU), com gramtica (sintaxe) e lgica (semntica) bem definidas. A LNU, verbalizada pela MCSW, ser capaz de se
comunicar com o usurio, permitindo-o expressar tarefas a executar, e
obter resultados adequados. Outro aspecto que o cliente considera que
o problema e as necessidades do usurio existem no mundo real, e portanto apresentam-se em um contexto de tempo, espao e recursos limitados. Sendo assim, tambm faz parte de uma soluo satisfatria de aquisio 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 software esteja disponvel para o usurio no momento em que este necessitar,
e dentro de uma relao de custo-benefcio satisfatria para o cliente.
USURIO

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)
30

/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 Pessoa Fsica), desenvolvido pela Secretaria da Receita Federal. O IRPF uma
descrio de como construir uma mquina de calcular impostos, a qual concretizada 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 impostos 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 etapas a seguir; 1 o usurio emprega MPU para carregar e interpretar o browser web, construindo MCSW1, que realiza a tarefa de copiar o (software) instalador 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;
2 o usurio emprega MPU para carregar e interpretar o instalador do
IRPF, construindo MCSW1, a verbalizao de MCSW1 instala o software
do IRPF sobre MPU, que passa a ser MPU, composta por um PC + sistema operacional + browser + instalador do IRPF + IRPF. Todos esses usos
de mquinas ainda no provocaram o efeito final desejado, que o uso da
mquina de calcular impostos.
3 por fim, o usurio emprega MPU para carregar e interpretar o (software) IRPF, o que constri MCSW1, para realizar a atividade originalmente necessria.
Onde esto o software se as mquinas em cada um dos momentos descritos acima?
Quatro mquinas no momento 1: (1) MCSW1, que foi construda por
(2) MPU sob demanda do contribuinte. MCSW1 foi usuria de (3)
mquina servidor da SRF, e construiu (4) MPU.
Trs mquinas no momento 2: (1) MCSW1, que foi construda por (2)
MPU sob demanda do contribuinte. O resultado da verbalizao de
MCSW1 construiu MPU.
Duas mquinas no momento 3: (1) MCSW, que foi construda por (2)
MPU sob demanda do contribuinte, para ser utilizada no clculo de ajustes de contribuio de impostos.
Onde esto o usurio, o cliente e o desenvolvedor no cenrio acima? O usurio atuou nos trs instantes, usando diretamente seis mquinas (MPU,
MCSW1, MPU, MCSW1, MPU e MCSW), em momentos distintos,
e mais uma mquina (servidor SRF) atravs de intermediao. Embora a
inteno do contribuinte fosse usar a mquina IRPF, ele precisou empregar
seis outras mquinas distintas para usar a mquina desejada.

Figura 3 - Relao entre praticantes do software

S O F T WA R E
O cliente do IRPF agiu antes dos momentos 1, 2 e 3, quando identificou uma
srie de problemas relativos aos custos e prazos de processamento de ajustes
anuais de impostos de pessoa fsica. O cliente, nesse caso, um agente (coletivo) do governo federal que descreveu um conjunto de formulrios, tabelas
de contribuio, mecanismos de clculo, etc., que constituem o que se pode
chamar de linguagem de ajuste anual de constribuies da fazenda nacional
baseada na plataforma de sistemas de computador PC, ou simplesmente a
linguagem do IRPF. Alm da linguagem, o cliente definiu condies adicionais de prazo e custos para a construo do plano de mquina IRPF, que
delimita a ao dos desenvolvedores. A definio da linguagem do IRPF no
foi realizada em um momento nico e isolado, dentre outras coisas porque a
concepo de como sero solicitadas e realizadas as tarefas de uma mquina
de calcular impostos (de qualquer tipo de mquina em geral) no possui uma
soluo nica. Ela precisa ser projetada. No caso especfico da linguagem do
IRPF, a mesma tende a sofrer presses para evoluir rapidamente devido
natureza coletiva de seu uso, por milhes de usurios. Percebe-se portanto
que, antes de ser imutvel, a linguagem do IRPF, como a linguagem da maioria das mquinas desenvolvidas, o resultado de um processo criativo que se
desenvolve ao longo de vrios anos, e que tende a evoluir da mesma forma
que evoluem as linguagens de manipulao de mquinas fsicas como controles remotos, liquidificadores, relgios e painis de automveis. Finalmente, por estar sujeita a um intenso processo de reproduo, adaptao,
mutao e seleo, causada por um conjunto de tentativas e erros para criar a
linguagem mais compreensvel e verbalizvel por um conjunto aberto de
seres cognitivamente ativos, as linguagens das mquinas computveis evoluem de forma darwiniana, sendo artefatos designoids (2), tais como o so as
enzimas, glndulas, sistemas neuro-musculares, organismos e ecossistemas.
O desenvolvedor do IRPF atuou baseado nas seguintes restries determinadas inicialmente pelo cliente: conceber um plano de construo de uma
mquina capaz de verbalizar a linguagem do IRPF; conceber um plano de
construo de mquina que seja carregvel e interpretvel em cada uma das
mquinas possudas por cada um dos usurios do software; conceber um
plano de construo de mquina que seja concludo dentro das restries de
prazo e custos determinados.
Estabelecida essa trade dos envolvidos na prtica do software, possvel realizar uma srie de anlises de cenrios e variaes da qual emerge a riqueza e
possibilidades do software em nossa sociedade.

O CENRIO PERCEBIDO PELO USURIO


A COMPLEXIDADE DAS MQUINAS POSSUDAS - MPUS Um dos problemas que mais complicam a relao entre o usurio e a mquina construda
pelo software, a grande complexidade das MPUs sobre as quais o software
interpretado. Atravs do exemplo do IRPF, percebe-se que a MPU constantemente compelida e sujeita a modificaes, em especial pela prpria ao
do usurio. Eventualmente, cada uma das aes realizadas sobre as MPUs
diretamente manipuladas pelo usurio implica em alteraes em dezenas ou
mesmo centenas de outras mquinas hierarquicamente equivalentes ou inferiores, que so postas em atividade e inatividade no momento em que se est
usando um sistema de computador. Essa complexidade e constante mutao
provocam o surgimento constante de diferenas entre a MPU que havia no
momento em que o cliente identificou uma soluo, e a MPU do usurio no
momento em que o software carregado e interpretado. A soluo prtica

/A

R T I G O S

para esse problema surge atravs da necessria padronizao de configuraes


ou plataformas de sistemas de computador, que consiste em estabelecer uma
mquina padronizada, capaz de executar tarefas teis a uma grande quantidade de planos de construo de mquinas. Ao se criar um mnimo denominador comum de mquina possuda pelo usurio, possvel criar planos de
construo capazes de serem interpretados em uma grande quantidade de sistemas de computador. Termos e conceitos como Pentium, IBM PC, Macintosh, Linux, Unix, MS Windows, Mquina Virtual Java, MS Office e .NET
denotam plataformas de sistemas de computador de diversos nveis hierrquicos, sobre as quais possvel executar categorias especficas de software.
Uma das mais importantes prticas do software identificar qual a plataforma de mquina que apresenta as melhores vantagens no contexto especfico de uma relao entre usurios, clientes e desenvolvedores.
A EVOLUO DAS LINGUAGENS NECESSRIAS - LNUS Mquinas so extenses do ser humano. So mdias atravs das quais se estabelecem comunicaes
com resultados teis e previsveis. A natureza das linguagens de comunicao
usurio-mquina permeia profundamente toda a relao e histria do homem
e dos artefatos que constri, possuindo um impacto profundo sobre as atividades produtivas da sociedade. Criar linguagens est, portanto, no cerne da ao
humana, e a prtica do software permite o exerccio desse processo criativo de
forma eficiente e reproduzvel (nos milhes de sistemas de computador que existem) como jamais se viu na histria da humanidade. A definio da linguagem
verbalizada por uma mquina computvel um processo criativo e evolutivo,
baseado em experincias cognitivo-coletivas. Espera-se portanto que, da relao
usurio-cliente-fornecedor, seja possvel a definio de uma linguagem necessria (LNU) para soluo do problema que o usurio tem em mos. Tal soluo
dificilmente obtida de forma plenamente satisfatria, a menos que o usurio seja
outra mquina, devido aos seguintes fatores:
1- do mesmo modo que a interao (conversao) essencial ao aprendizado
de um novo idioma ou manipulao de uma mquina como um automvel,
a compreenso de uma LNU (e das capacidades e limitaes da mquina que
a verbaliza) s atinge a plenitude no limite da interao entre o usurio e uma
mquina que se aproxime da mquina necessria (MNU). Desse modo, a concepo de LNUs satisfatrias um processo interativo, que envolve a definio de vrias linguagens necessrias intermedirias (LNI, LNI, etc), que so
verbalizadas por MCS, que so construdas por planos de mquinas intermedirias (SWIs). A nica forma de conferir satisfao plena e duradoura ao
usurio quando o mesmo tambm uma mquina que no evolui sua capacidade de verbalizao, como ocorre com muitas mquinas mecnicas. Neste
caso, a LNU pode ser plenamente definida atravs de uma gramtica e lgica
matematicamente formais. Esta ltima situao caracteriza o desenvolvimento do que Lehman (2) chama de S-Type Program, que um software cuja
corretude (satisfatibilidade) plenamente definida a partir de sua (especificao de) linguagem.
2- o segundo fator que dificulta a satisfao plena do usurio que o processo
interativo est baseado em relaes humanas. Ao interagir com quaisquer das
mquinas intermedirias o usurio adquire compreenso prtica de como a
mquina verbalizou a sua comunicao, fornecendo solues (de algum
modo satisfatrias) para os problemas e necessidades com as quais o usurio
se depara. Dado que as diversas solues intermedirias so produzidas ao
longo do tempo, alguns problemas originalmente percebidos pelo usurio se
mostram solucionados, novos problemas surgem medida em que o
31

S O F T WA R E

/A

R T I G O S

a variao da linguagem de interao entre a mquina desejada e o usurio.


2. Design de software atividades para particionar e organizar internamente o plano de construo global do software, subdividindo-o recursivamente em diversos planos de mquinas (e suas linguagens) internas, at que
cada plano de mquina seja realizvel custo-efetivamente com o auxlio da
MPU ou com outras internamente planejadas.
3.Construo de software atividades para definir instrues e descries
para cada um dos planos de mquina, de modo que cada plano de mquina
seja carregvel e interpretvel pela MPU ou por uma das mquinas internamente construdas.
4.Testes e qualidade de software atividades para atestar que: o software ser
adequadamente interpretado nas mquinas dos desenvolvedores e dos usuA ORGANIZAO DAS MQUINAS NECESSRIAS O maior diferencial
rios; a construo de software foi feita conforme os planos do design; que o
qualitativo do computador, relativo a todas as outras mquinas criadas pelo
design verbaliza a linguagem definida pelo cliente; e o usurio ter suas
homem, a capacidade de manipulao de representaes simblicas e disnecessidades satisfeitas atravs do software.
cretas, estruturadas na forma de linguagens computveis. Uma linguagem
5.Manuteno de software atividades tipicamente aplicadas ao desenvolcomputvel, verbalizada por uma mquina de ordem 0, capaz de, ao intervimento de E-Type Software, para permitir que, ao longo dos vrios ciclos
pretar um software nessa linguagem computvel, criar uma mquina de
de interao de re-definies de linguagens da mquina necessria (mudanordem 1, cuja linguagem verbalizada apresenta o mesma expressividade da
as de requisitos) sejam tomadas aes para tratar o efeito das leis de evolulinguagem da mquina de ordem 0. Em outras palavras, embora cada lino do software estabelecidas por Lehman. Essas leis so principalmente: (I)
guagem computvel apresente caractersticas peculiares de sintaxe e semna Lei da Mudana Contnua deve-se permitir que sejam
tica, possvel ao desenvolvedor do software que interafeitas alteraes no plano de software para verbalizar a lingir com uma mquina computvel, conceber uma
guagem modificada; (II) Lei da Complexidade Crescente
mquina de maior ordem, que ter o mesmo poder comO
devem ser empreendidos esforos para tornar sob conputacional da mquina original. A esse conceito fundaDESIGN
trole a complexidade que cresce medida que alteraes
mental de computabilidade soma-se a capacidade que os
VERBALIZA
so conduzidas no software; (III) Lei da Auto-Regulao
sistemas de computador tem de: verbalizar a linguagem
e (IV) Lei da Conservao da Estabilidade Organizacioem alta velocidade, em conformidade com planos de
A LINGUAGEM
nal que sejam mantidas a estabilidade dos atributos dos
mquinas; e produzir resultados coerentes com interaDEFINIDA
processos e do produto (software) frente estrutura da
es imprevisveis efetuadas pelos usurios, sobre os quais
PELO
organizao produtora de software, de modo que organios sistemas no exercem controle.
CLIENTE
zao mantenha uma taxa lquida de produtividade,
A computabilidade confere elevada capacidade e flexibiinvarivel ao longo do ciclo de vida do software; (V) Lei
lidade de ao do desenvolvedor na organizao do softda Conservao da Familiaridade que a taxa de mudanware em vrios nveis de hierarquia e interdependncia,
as nos sucessivos releases do software se mantenha constante ao longo do
enquanto a interatividade e imprevisibilidade do usurio produzem o indetempo; (VI) do Lei Crescimento Contnuo que a quantidade de interaterminismo nos resultados das mquinas sobre os sistemas com os quais
es ou tarefas verbalizadas pelo software cresa para que se mantenha o
interagem. Esta combinao entre poder terico e imponderabilidade prnvel satisfao do usurio; e (VII) Lei da Qualidade em Declnio que
tica cria uma condio para o surgimento de problemas de complexidade,
constantes mudanas na mquina possuda pelo usurio devem ser feitas
falhas de planejamento e baixo grau de satisfao, que se espera possam ser
sob controle rigoroso da manuteno e adaptaes constantes ao software,
controlados atravs de prticas da engenharia de software.
caso contrrio a qualidade do mesmo declinar perante o usurio.
6.Gerncia de configurao atividades para garantir que seja adequadaA ENGENHARIA DE SOFTWARE a disciplina do conhecimento humano
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 (mquiinterdependente-hierrquica de mquinas: 1- possudas pelo usurio; 2nas 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 necessariao 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 conceimodo 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
ambiente do usurio se transforma pela ao da mquina, e problemas que
no eram percebidos se tornam aparentes ou desaparecem. Essas transformaes emergem dentro de um contexto de negociao de prazos e custos entre
o cliente e o desenvolvedor, onde cada um dos agentes procura otimizar a
relao custo-benefcio do seu ponto de vista. Os cenrios acima contribuem
para que a LNUs sejam sujeitas a um forte processo de seleo, adaptao e
mutao (devido a inevitveis erros no processo de comunicao entre as partes), caracterizando o que Lehman(2) chama de E-Type Software, ou real-life
software, cujo desenvolvimento se processa atravs de mltiplos nveis, mltiplos agentes e mltiplos ciclos de feedback positivo e negativo.

...

...

32

S O F T WA R E
planos de processos que aumentem a produtividade dos desenvolvedores
enquanto reduzem a ocorrncia de falhas no desenvolvimento.
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 (software) presente em uma licena de software da IBM (4).
... O termo "programa" significa o programa original e todas as cpias completas ou parciais do mesmo. Um programa consiste em instrues legveis
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,
medida que torna explcito o fato de que qualquer material escrito, impresso,
apresentvel em qualquer mdia de comunicao, de natureza textual, grfica,
audvel, etc, que tem por objetivo descrever algo para o usurio ou sua
mquina, tambm parte do software.
Outra definio de software comumente aceita entre quem desenvolve software a que prescreve que o resultado de quaisquer das atividades do processo
produtivo de software tambm software. Alm de todas as mdias digitais,
impressas, ou reproduzveis de alguma forma, que foram reproduzidas e entregues ao cliente, so parte do software os subprodutos internos do processo
produtivo, como planos de decomposies de software, especificaes de linguagens, definies de prazos e custos limites, planos de testes, documentos
formais de aceitao, etc. Cada um dos artefatos parte de um plano de construo, no necessariamente compreensvel por uma mquina computvel,
mas destinado a ser interpretado por um ser humano que participa da construo e evoluo do software. Sendo assim, uma possvel eliminao desses
artefatos (ou do conhecimento neles contidos) de dentro da composio do
software, sempre provoca prejuzos no processo de manuteno do mesmo.
CONCLUSES A prtica do software emerge da interao entre mltiplos
agentes coletivos, com interesses e necessidades distintas, que contribuem
com pontos de vista complementares para usar e criar mquinas, linguagens
e planos de construo de mquinas. Embora a satisfao primria provocada
pelo uso do software seja resultante do efeito imediato de uma relao mecnica de interpretao efetuada por uma mquina computvel, o contexto histrico-social-lingstico de concepo do software o redefine como um artefato modularizado, interdependente e hierarquizado, constitudo por mdias
de diversas naturezas, concebidas por uma ampla gama de seres humanos
com habilidades profissionais extremamente variadas, e destinadas no s
interpretao por mquinas computveis, mas tambm por seres humanos.
Jorge Henrique Cabral Fernandes professor do Departamento de Informtica e Matemtica Aplicada da Universidade Federal do Rio Grande do Norte

Referncias bibliogrficas
1
2
3
4

Dawkins, R. Clibimg mount improbable. W. W Norton, 1996.


Lehmam,M.M. Laws of software evolution revisited. LNCS 1149, Springer, 1997.
SWEBOK Project. Software engineering body of knowledge. Ed. 0.9. 2001.
IBM software license

/A

R T I G O S

REFINAMENTO:

A ESSNCIA DA
ENGENHARIA DE SOFTWARE
Ana Cavalcanti

noo de refinamento captura a essncia das atividades dirias de


engenheiros de software, que projetam sistemas baseados em especificaes, e de programadores, que implementam estes projetos. Em ambos os casos, o principal objetivo a construo de sistemas 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 desenvolvimento de programa so baseados nesta noo de uma forma ou de outra.
Uma tcnica formal vai alm, no sentido que ela prov uma base matemtica para garantia de correo. Neste caso, a meta primordial o refinamento
de uma especificao inicial para obteno de uma implementao aceitvel. Critrios de aceitao podem incluir, por exemplo, eficincia, mas a garantia fornecida que a especificao e a implementao esto relacionadas
por refinamento.

CONCEITOS BSICOS Inicialmente, refinamento foi estudado para programas seqenciais, aonde o foco a relao entre as entradas e sadas de um
programa. Foi identificado que h basicamente duas formas de refinar uma
especificao. A primeira a introduo e a transformao de estruturas de
programao e controle como atribuies, condies, e laos. Isto chamado refinamento algortmico.
A segunda forma de refinamento relacionada com as estruturas de dados
usadas no programa. Sistemas so especificados em termos de tipos de dados que so apropriados para descrever propriedades do domnio de aplicao; neste estgio do desenvolvimento, no se faz, por exemplo, consideraes relacionadas eficincia.
Decises de projeto, no entanto, normalmente introduzem estruturas de dados mais elaboradas e apropriadas para implementao. A mudana de representao de dados envolvida nessa tarefa chamada refinamento de dados.
O ponto de partida de qualquer mtodo formal uma especificao formal.
Correo uma noo relativa: dizemos que um programa correto se ele
implementa a sua especificao. Para garantir correo, ns precisamos de
uma especificao formal do programa.
H muitas linguagens e formalismos em uso hoje. Ns usaremos uma linguagem de especificao chamada Z para apresentar um exemplo. Uma especificao de sistema em Z consiste basicamente de uma definio de um
estado e de uma coleo de operaes. O estado composto de variveis que
representam os dados usados e registrados no sistema. As operaes recebem
entradas e produzem sadas, possivelmente alterando o estado.
Tanto o estado quanto as operaes so definidas por esquemas: uma notao grfica para agrupar declaraes de variveis e suas propriedades.
EXEMPLO Ns apresentamos a especificao de um sistema que calcula a
mdia de uma seqncia de nmeros recebidos como entrada. O estado deste sistema s tem um componente: a seqncia de inteiros.
33

Você também pode gostar