Professional Documents
Culture Documents
QUAL A PRTICA
DO DESENVOLVIMENTO
DE SOFTWARE?
29
S O F T WA R E /A R T I G O S
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
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