Você está na página 1de 5

Alguns Fundamentos da Engenharia de Software

O que Engenharia de Software?


a mesma coisa que Cincia da Computao? Ou uma entre muitas especialidades da Cincia da Computao? Ou dos Sistemas de Informao, ou do Processamento de Dados, ou da Informtica, ou da Tecnologia da Informao? Ou uma especialidade diferente de todas as anteriores? Na maioria das instituies brasileiras de ensino superior, o conjunto de conhecimentos e tcnicas conhecido como Engenharia de Software ensinado em uma ou duas disciplinas dos cursos que tm os nomes de Cincia da Computao, Informtica ou Sistemas de Informao. Raramente, em mais disciplinas, muitas vezes opcionais, e muitas vezes oferecidas apenas em nvel de ps-graduao. Algumas instituies oferecem cursos de psgraduao em Engenharia de Software, geralmente no nvel de especializao. O uso do termo para designar uma carreira profissional tambm no muito comum, mesmo em organizaes que pro-

Wilson de Pdua Paula Filho


(wppf@ieee.org)

Engenheiro Mecnico pelo ITA, Doutor em Engenharia Eltrica pela Escola Politcnica da USP, Professor Titular aposentado do Departamento de Cincia da Computao da UFMG. Autor dos Livros Engenharia de Software: Fundamentos, Mtodos e Padres e Multimdia: Conceitos e Aplicaes . Atualmente consultor em Engenharia de Software e trabalha no Synergia Laboratrio de Engenharia de Software e Sistemas da UFMG.

duzem grande quantidade de software, ou at naquelas em que o desenvolvimento de software atividade fim. Programas e exames de certificao em Engenharia de Software so pouco conhecidos, ao contrrio do que acontece com algumas linguagens e tecnologias usados por esses profissionais. Em outros pases, a situao um pouco diferente. Algumas universidades americanas oferecem programas de graduao, mestrado e doutorado na rea. O IEEE (Institute of Electrical and Electronics Engineers), principal organizao internacional de profissionais de Engenharia Eltrica, atravs da Computer Society, que forma o seu ramo em Computao, oferece a qualificao de Profissional Certificado para o Desenvolvimento de Software.

Cincia, Engenharia e Valor


Sem pretender fazer distines definitivas, vamos explorar o que dizem os dicionrios. O Dicionrio Aurlio Eletrnico V.2.0 assim define Cincia e Engenharia:

Engenharia de Software Magazine Alguns Fundamentos da Engenharia de Software

E N GENHA R I A

Cincia - Conjunto organizado de conhecimentos relativos a um determinado objeto, especialmente os obtidos mediante a observao, a experincia dos fatos e um mtodo prprio. Engenharia - Arte de aplicar conhecimentos cientficos e empricos e certas habilitaes especficas criao de estruturas, dispositivos e processos que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas. V-se que, pelas definies acima, a Cincia focaliza acumulao do conhecimento atravs do mtodo cientfico, com base em experimentos e observaes. J a Engenharia aplica esses conhecimentos ao atendimento das necessidades humanas. Embora o conhecimento seja certamente uma necessidade humana, trata-se de uma entre vrias outras, sejam necessidades materiais, como alimentao, moradia, segurana, ou imateriais, como afeio ou auto-estima. A tudo aquilo que satisfaz a necessidades, atribui-se um valor. A Engenharia est, portanto, ligada noo de valor, e a Engenharia de Software busca gerar valor com o processamento de informao. A noo de valor tem muitas conseqncias prticas importantes, e, de fato, a teoria conhecida como Engenharia de Software Baseada em Valor representa uma importante escola de pensamento dentro da rea.

tes das Belas Artes, e valorizam critrios estticos na criao de seus programas. Isso pode ter conseqncias boas e ruins, do ponto de vista de gerar valor. Por um lado, a busca da elegncia pode levar economia e simplicidade de formas, fazendo com que resultados de melhor qualidade sejam obtidos de maneira mais produtiva. E, principalmente, levando a escrever programas que possam ser mais facilmente reutilizados, mantidos e expandidos. Por outro lado, a auto-satisfao do programador pode ter como preo

tosos, e, em certos casos, at riscos vida humana; muitas vezes empreendimentos de software so afetados por um contexto econmico, poltico ou social.

Produtos e Ciclos de Vida


A ntima relao entre a Engenharia de Software e a noo de valor significa que essa profisso trata o software como produto. Esto fora do escopo da Engenharia de Software programas que so feitos com objetivo exclusivamente ldico: a diverso do programador. Esto fora de

A ntima relao entre a Engenharia de Software e a noo de valor signica que essa prosso trata o software como produto.

Arte, Tcnica, Artesanato, Indstria?


Outros termos constantes da definio de Engenharia podem ser explorados de vrias formas, com conseqncias interessantes. Por exemplo, usada a palavra Arte, que o mesmo dicionrio define como a capacidade que tem o homem de pr em prtica uma idia, valendo-se da faculdade de dominar a matria, ou a utilizao de tal capacidade, com vistas a um resultado que pode ser obtido por meios diferentes. Na Engenharia de Software, a matria dominada pelas faculdades humanas consiste em mquinas de processamento da informao, devidamente configuradas e programadas. Nesse sentido, os conceitos de Arte e Tcnica so bem prximos; alis, a palavra grega techn significa, exatamente, Arte. O termo Arte abre outras discusses. No poucos programadores se consideram como artistas, no sentido de pratican-

os interesses de quem est pagando pelo trabalho dele, ou de quem o usar. Seja, por exemplo, produzindo programas que ningum entende, seno o prprio autor (e, depois de certo tempo, nem ele mesmo). Seja, como outro exemplo, introduzindo funes que o autor achou interessantes, mas no so realmente necessrias, nem foram solicitadas. E muito prxima de Arte est a palavra Artesanato, que lembra produo caseira, em pequena escala, sem a utilizao de mtodos industriais, que so caracterizados pela padronizao e pela repetio. E, realmente, parece mais difcil aplicar esses mtodos industriais na confeco de software, do que nos ramos da engenharia do mundo material. Nestes, as leis fsicas impem limites claramente visveis ao que pode ser feito. Na Engenharia de Software, a criatividade no limitada por leis fsicas, e sim pela capacidade humana de entender e dominar a complexidade. Mas no se pode escapar do fato de que a Engenharia de Software tem que resolver muitos problemas de ordem industrial. Raramente possvel construir software profissional sem envolver equipes, s vezes de dezenas ou at centenas de pessoas; raramente possvel trabalhar na rea sem a presso de prazos e oramentos apertados; freqentemente defeitos de software podem acarretar prejuzos vul-

seu escopo tambm pequenos programas descartveis, feitos por algum apenas para resolver um problema dessa pessoa, e que no sero utilizados por outros. Mas, se um desses programas interessar a outras pessoas, e assim passar a ter valor, aparecero demandas para melhorar suas qualidades, aumentar suas funes, prolongar sua vida. E aparecer quem esteja disposto a investir nisso, com a expectativa de ganhar dinheiro. Nesse momento, o programa entrou no escopo da Engenharia de Software e se tornou um produto. Muitos dos produtos de software mais usados seguiram esse caminho. Todo produto tem usurios: aqueles que efetivamente usam o produto. Alguns produtos so feitos por encomenda de um cliente: aquele que pagar por sua produo. Outros, chamados de produtos de prateleira, so vendidos no mercado aberto, a quem se interessar. Neste caso, quem faz o papel do cliente quem define que recursos e funes se esperam do produto; talvez um departamento de vendas, ou de marketing, ou de definio de produtos de uma organizao, ou at, para produtos menores, os prprios desenvolvedores, colocando o chapu de investidores de risco. E existem todos os casos intermedirios, em que um produto parcialmente pronto completado, adaptado ou incrementado, por encomenda de um cliente. Como todo produto industrial, o produ-

Edio 01 Engenharia de Software Magazine

to de software tem seu ciclo de vida: ele concebido para tentar atender a uma necessidade; especificado, quando essas necessidades so traduzidas em requisitos viveis; desenvolvido, transformando-se em um conjunto formado por cdigo e outros itens, como modelos, documentos e dados; passa por algum procedimento de aceitao e entregue a um cliente; entra em operao, usado, e sofre atividades de manuteno, quando necessrio; retirado de operao ao final de sua vida til. O ciclo de vida compreende muitas atividades, que so assunto das diferentes reas da Engenharia de Software. A Figura 1 mostra um modelo do ciclo de vida do software, usando a notao conhecida como UML (Unified Modeling Language). Essa

notao usada para descrever muitos aspectos diferentes do desenvolvimento de software, inclusive as seqncias de atividades que compem esse desenvolvimento. O tipo especfico de diagrama que mostrado na figura o Diagrama de Atividades, que representa uma evoluo dos tradicionais fluxogramas, usados pelos programadores h dcadas. interessante observar que a codificao, que representa a escrita final de um programa em forma inteligvel para um computador, apenas uma pequena parte do ciclo de vida. Muitas pessoas, inclusive alguns profissionais da informtica, acham que a codificao a nica tarefa de um engenheiro de software. Nos Diagramas de Atividades da UML, a bolinha cheia representa Incio; a bolinha com um anel adicional representa fim; cada retngulo simples de cantos arredondados representa uma ao, ou seja, uma atividade simples, da qual no

mostram detalhes; cada seta representa uma transio entre atividades; as barras paralelas representam incio e trmino de atividades executadas em paralelo; um retngulo de cantos arredondados com detalhes internos representa uma atividade estruturada, que composta de outras atividades.

Projetos, Atividades e Estruturas Analticas


Normalmente, o software desenvolvido dentro de projetos. Todo projeto tem uma data de incio, uma data de fim, uma equipe e outros recursos. O responsvel por um projeto chamado de gerente de projeto. O trabalho realizado dentro de um projeto pode ser descrito por um conjunto de atividades, que podem possuir relaes de dependncia, paralelismo, e decomposio em atividades mais elementares, como no diagrama da Figura 1. As atividades so delimitadas por marcos, isto , pontos que representam estados significativos do projeto. Geralmente, os marcos so associados a resultados concretos: documentos, modelos ou pores do produto, que podem fazer parte do conjunto prometido aos clientes, ou ter apenas utilizao interna ao projeto. O prprio produto um resultado concreto associado ao marco de concluso do projeto, que pode ser utilizado sozinho, ou como componente de um sistema. O PMI (Project Management Institute) uma organizao internacional, com sees em muitos pases, inclusive o Brasil, que tem o objetivo de promover e difundir boas prticas de gesto de projetos. Para isso, administra programas de certificao de profissionais nessa rea, e publica o guia conhecido PMBOK (Project Management Body of Knowledge). Nesse guia, define-se um projeto como um empreendimento temporrio realizado para criar um produto, servio ou resultado distinto. Um produto, por sua vez, definido como um objeto produzido, quantificvel e que pode ser um item final ou um item componente. Uma atividade definida como um componente de trabalho realizado durante o andamento de um projeto. Os relacionamentos entre as atividades que compem um projeto so mostrados em uma estrutura analtica, que o PMBOK define como uma decomposio hierrquica orientada entrega do trabalho

Figura 1. Modelo UML do ciclo de vida do software

Engenharia de Software Magazine Alguns Fundamentos da Engenharia de Software

E N GENHA R I A

a ser executado pela equipe do projeto, para atingir os objetivos do projeto e criar as entregas necessrias. Estruturas analticas de projeto podem ser apresentadas de muitas maneiras. Diagramas de atividade so uma das representaes mais usadas atualmente. Outro tipo de representao usual fornecida por planilhas e cronogramas, como aqueles que so produzidos pela ferramenta Microsoft Project (Figura 2).

Modelos de Referncia e Fatores de Produo


O PMBOK um exemplo de modelo de referncia: uma estrutura de conhecimento que organiza conceitos, prticas e padres de uma rea. No caso do PMBOK, a rea focalizada a gesto de projetos de qualquer natureza, cobrindo assuntos como integrao, escopo, tempo, custos, qualidade, recursos humanos, comunicaes, riscos e aquisies. Outro modelo de referncia importante

na Engenharia de Software o CMMI (Capability Maturity Model Integration), que foi formulado pelo Software Engineering Institute da Carnegie-Mellon University. O CMMI foi encomendado e patrocinado pelo Departamento de Defesa americano, popularmente conhecido como Pentgono, que o utiliza para avaliao da capacidade de seus fornecedores de software. Sendo o Pentgono provavelmente a maior organizao compradora de software do mundo, o CMMI tem grande aceitao da indstria americana de software, e considervel influncia no resto do mundo. A rigor, suas prticas no so restritas indstria de software, podendo ser aplicadas ao desenvolvimento de outros tipos de produtos. Os conceitos do CMMI tm razes em comum com o PMBOK, como se pode observar pela similaridade das definies que adota: Produto - Resultado que se pretende entregar a um cliente ou usurio.

Projeto - Conjunto gerido de recursos inter-relacionados, que entrega um ou mais produtos a um cliente ou usurio, com incio definido e que, tipicamente, opera conforme um plano. Estrutura analtica do projeto - Um arranjo dos elementos do trabalho e dos relacionamentos deles entre si e com o produto final. Ao contrrio do PMBOK, o CMMI no se limita aos conhecimentos sobre gesto de projetos. Cobre tambm reas tcnicas, e focaliza principalmente a aplicao dos processos ao desenvolvimento de produtos. Um processo, segundo o IEEE, uma seqncia de passos executados com um determinado objetivo; segundo o PMBOK, um conjunto de aes e atividades inter-relacionadas, realizadas para obter um conjunto especificado de produtos, resultados ou servios. Um projeto representa a execuo de um processo, e um processo uma receita que seguida durante a realizao um

Figura 2. Cronograma de um projeto.

Edio 01 Engenharia de Software Magazine

projeto; em outras palavras, o projeto o empreendimento que concretiza uma abstrao, que o processo. No se deve confundir um processo (digamos, uma receita de bolo) com o respectivo produto (o bolo) ou com a execuo do processo atravs de um projeto (a confeco de um bolo por determinada pessoa, em determinado dia). Processos, pessoas e tecnologia constituem os fatores de produo, que determinam o grau de sucesso dos projetos, ou seja: se eles conseguem entregar um produto de qualidade suficiente, dentro de um prazo aceitvel e com custos viveis. Portanto, desses fatores dependem a rentabilidade e a sobrevivncia das organizaes produtoras. Para muitos profissionais, a tecnologia o fator mais atraente; muitas vezes, h um otimismo exagerado quanto aos resultados da aplicao de novas tecnologias. Entretanto, tecnologias aparentemente promissoras podem levar para um beco sem sada, e, s vezes, tecnologias consideradas inferiores pelos especialistas lanam razes permanentes, graas a foras de mercado. Alm disso, a tecnologia s se paga quando colocada nas mos de pessoas capacitadas, trabalhando dentro de processos adequados. Toda introduo de nova tecnologia tem uma curva de aprendizado: as pessoas precisam ser treinadas, cometem inicialmente muitos erros e, por isso, podem at se tornarem

menos produtivas, durante algum tempo. Algumas tecnologias mais complexas s se pagam depois de muitos projetos. Investir na capacitao das pessoas certamente necessrio. Entretanto, formar pessoas difcil, caro e demorado. Recrutar pessoas capacitadas tambm: no h sinais de que a oferta de pessoas com alta qualificao no desenvolvimento de software venha a se igualar demanda, em futuro prximo. Alm disso, muitas pessoas produzem menos que a sua capacidade permitiria, por falta de liderana, por deficincia de ferramentas e suporte, ou por inadequao de processos. Dos investimentos nos fatores de produo, os investimentos nos processos so geralmente aqueles que podem trazer retorno em prazo mais curto. Processos tambm no fazem milagres, mas a melhoria dos processos costuma trazer benefcios em prazos relativamente curtos, como ilustrado por inmeros relatos de experincia publicados. No mnimo, contribuem para reduzir o desperdcio e o retrabalho, o que geralmente j traz ganhos muito significativos. A melhoria dos trs fatores (tecnologias, pessoas e processos) tambm requer seu prprio processo: ela deve ser feita em etapas bem-definidas e controladas, para que as organizaes, em prazos relativamente curtos, possam avaliar se seu investimento est tendo o retorno

esperado. E a principal contribuio de modelos de referncia como o CMMI indicar o caminho das pedras e o mapa da mina: onde a experincia coletada indica que o investimento em melhorias mais rentvel, em cada passo da evoluo das organizaes.

Concluso
A Engenharia de Software visa criao de produtos de software que atendam as necessidades de pessoas e instituies e, portanto, tenham valor econmico. Para isso, usa conhecimentos cientficos, tcnicos e gerenciais, tanto tericos quanto empricos. Ela atinge seus objetivos de produzir software com alta qualidade e produtividade quanto praticada por profissionais treinados e bem informados, utilizando tecnologias adequadas, dentro de processos que tirem proveito tanto da criatividade quando da racionalizao do trabalho.

Links
SEI http://www.sei.cmu.edu/ CMMI http://www.sei.cmu.edu/cmmi/ PMI Brasil http://www.pmi.org.br/

Engenharia de Software Magazine Alguns Fundamentos da Engenharia de Software

Você também pode gostar