Escolar Documentos
Profissional Documentos
Cultura Documentos
/A
R T I G O S
QUAL
A PRTICA
DO DESENVOLVIMENTO
DE SOFTWARE?
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
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
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
/A
R T I G O S
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.
/A
R T I G O S
S O F T WA R E
/A
R T I G O S
...
...
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
/A
R T I G O S
REFINAMENTO:
A ESSNCIA DA
ENGENHARIA DE SOFTWARE
Ana Cavalcanti
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