You are on page 1of 5

Alguns Fundamentos da Engenharia de

Software

O que é Engenharia de Software? duzem grande quantidade de software, ou


É a mesma coisa que Ciência da Com- até naquelas em que o desenvolvimento
putação? Ou é uma entre muitas espe- de software é atividade fim. Programas
cialidades da Ciência da Computação? e exames de certificação em Engenharia
Ou dos Sistemas de Informação, ou do de Software são pouco conhecidos, ao
Processamento de Dados, ou da Informá- contrário do que acontece com algumas
tica, ou da Tecnologia da Informação? Ou linguagens e tecnologias usados por esses
é uma especialidade diferente de todas profissionais.
as anteriores? Em outros países, a situação é um pouco
Na maioria das instituições brasileiras diferente. Algumas universidades ameri-
de ensino superior, o conjunto de co- canas oferecem programas de graduação,
nhecimentos e técnicas conhecido como mestrado e doutorado na área. O IEEE
Engenharia de Software é ensinado em (Institute of Electrical and Electronics Engi-
uma ou duas disciplinas dos cursos que neers), principal organização internacional
têm os nomes de Ciência da Computação, de profissionais de Engenharia Elétrica,
Wilson de Pádua Paula Filho Informática ou Sistemas de Informação. através da Computer Society, que forma o
(wppf@ieee.org) Raramente, em mais disciplinas, muitas seu ramo em Computação, oferece a qua-
Engenheiro Mecânico pelo ITA, Doutor em
vezes opcionais, e muitas vezes oferecidas lificação de Profissional Certificado para
Engenharia Elétrica pela Escola Politécnica da
USP, Professor Titular aposentado do Departa- apenas em nível de pós-graduação. Algu- o Desenvolvimento de Software.
mento de Ciência da Computação da UFMG. mas instituições oferecem cursos de pós-
Autor dos Livros “Engenharia de Software: graduação em Engenharia de Software, Ciência, Engenharia e Valor
Fundamentos, Métodos e Padrões” e “Multi- geralmente no nível de especialização. Sem pretender fazer distinções defini-
mídia: Conceitos e Aplicações”. Atualmente é
O uso do termo para designar uma tivas, vamos explorar o que dizem os di-
consultor em Engenharia de Software e traba-
lha no Synergia – Laboratório de Engenharia carreira profissional também não é muito cionários. O Dicionário Aurélio Eletrônico
de Software e Sistemas da UFMG. comum, mesmo em organizações que pro- V.2.0 assim define Ciência e Engenharia:

4 Engenharia de Software Magazine – Alguns Fundamentos da Engenharia de Software


engenharia

Ciência - Conjunto organizado de conheci- tes das Belas Artes, e valorizam critérios tosos, e, em certos casos, até riscos à vida
mentos relativos a um determinado objeto, es- estéticos na criação de seus programas. humana; muitas vezes empreendimentos
pecialmente os obtidos mediante a observação, a Isso pode ter conseqüências boas e ruins, de software são afetados por um contexto
experiência dos fatos e um método próprio. do ponto de vista de gerar valor. Por um econômico, político ou social.
Engenharia - Arte de aplicar conhecimen- lado, a busca da elegância pode levar
tos científicos e empíricos e certas habilitações à economia e simplicidade de formas, Produtos e Ciclos de Vida
específicas à criação de estruturas, dispositi- fazendo com que resultados de melhor A íntima relação entre a Engenharia de
vos e processos que se utilizam para converter qualidade sejam obtidos de maneira mais Software e a noção de valor significa que
recursos naturais em formas adequadas ao produtiva. E, principalmente, levando essa profissão trata o software como pro-
atendimento das necessidades humanas. a escrever programas que possam ser duto. Estão fora do escopo da Engenharia
mais facilmente reutilizados, mantidos e de Software programas que são feitos
Vê-se que, pelas definições acima, a expandidos. Por outro lado, a auto-satisfa- com objetivo exclusivamente lúdico: a
Ciência focaliza acumulação do conheci- ção do programador pode ter como preço diversão do programador. Estão fora de
mento através do método científico, com
base em experimentos e observações. Já
a Engenharia aplica esses conhecimen-
tos “ao atendimento das necessidades A íntima relação entre a Engenharia de Software e a noção
humanas”. Embora o conhecimento seja
certamente uma necessidade humana, de valor significa que essa profissão trata o software como
trata-se de uma entre várias outras,
sejam necessidades materiais, como produto.
alimentação, moradia, segurança, ou
imateriais, como afeição ou auto-estima.
A tudo aquilo que satisfaz a necessidades,
atribui-se um valor. A Engenharia está, os interesses de quem está pagando pelo seu escopo também pequenos programas
portanto, ligada à noção de valor, e a En- trabalho dele, ou de quem o usará. Seja, descartáveis, feitos por alguém apenas
genharia de Software busca gerar valor por exemplo, produzindo programas que para resolver um problema dessa pessoa,
com o processamento de informação. A ninguém entende, senão o próprio autor e que não serão utilizados por outros.
noção de valor tem muitas conseqüên- (e, depois de certo tempo, nem ele mesmo). Mas, se um desses programas interessar
cias práticas importantes, e, de fato, a Seja, como outro exemplo, introduzindo a outras pessoas, e assim passar a ter va-
teoria conhecida como “Engenharia de funções que o autor achou interessantes, lor, aparecerão demandas para melhorar
Software Baseada em Valor” representa mas não são realmente necessárias, nem suas qualidades, aumentar suas funções,
uma importante escola de pensamento foram solicitadas. prolongar sua vida. E aparecerá quem
dentro da área. E muito próxima de “Arte” está a esteja disposto a investir nisso, com a
palavra “Artesanato”, que lembra pro- expectativa de ganhar dinheiro. Nesse
Arte, Técnica, Artesanato, Indústria? dução caseira, em pequena escala, sem momento, o programa entrou no escopo
Outros termos constantes da definição a utilização de métodos industriais, que da Engenharia de Software e se tornou um
de Engenharia podem ser explorados são caracterizados pela padronização e produto. Muitos dos produtos de software
de várias formas, com conseqüências pela repetição. E, realmente, parece mais mais usados seguiram esse caminho.
interessantes. Por exemplo, é usada a difícil aplicar esses métodos industriais Todo produto tem usuários: aqueles que
palavra “Arte”, que o mesmo dicionário na confecção de software, do que nos efetivamente usam o produto. Alguns
define como a “capacidade que tem o ramos da engenharia do mundo material. produtos são feitos por encomenda de um
homem de pôr em prática uma idéia, Nestes, as leis físicas impõem limites cliente: aquele que pagará por sua produ-
valendo-se da faculdade de dominar a claramente visíveis ao que pode ser feito. ção. Outros, chamados de produtos de
matéria”, ou “a utilização de tal capa- Na Engenharia de Software, a criativida- prateleira, são vendidos no mercado aber-
cidade, com vistas a um resultado que de não é limitada por leis físicas, e sim to, a quem se interessar. Neste caso, quem
pode ser obtido por meios diferentes”. pela capacidade humana de entender e faz o papel do cliente é quem define que
Na Engenharia de Software, a matéria dominar a complexidade. recursos e funções se esperam do produto;
dominada pelas faculdades humanas Mas não se pode escapar do fato de que a talvez um departamento de vendas, ou de
consiste em máquinas de processamento Engenharia de Software tem que resolver marketing, ou de definição de produtos de
da informação, devidamente configura- muitos problemas de ordem industrial. uma organização, ou até, para produtos
das e programadas. Nesse sentido, os Raramente é possível construir software menores, os próprios desenvolvedores, co-
conceitos de “Arte” e “Técnica” são bem profissional sem envolver equipes, às ve- locando o chapéu de investidores de risco.
próximos; aliás, a palavra grega techné zes de dezenas ou até centenas de pessoas; E existem todos os casos intermediários,
significa, exatamente, Arte. raramente é possível trabalhar na área em que um produto parcialmente pronto
O termo “Arte” abre outras discussões. sem a pressão de prazos e orçamentos é completado, adaptado ou incrementado,
Não poucos programadores se conside- apertados; freqüentemente defeitos de por encomenda de um cliente.
ram como artistas, no sentido de pratican- software podem acarretar prejuízos vul- Como todo produto industrial, o produ-

Edição 01 – Engenharia de Software Magazine 5


to de software tem seu ciclo de vida: notação é usada para descrever muitos mostram detalhes; cada seta representa
• ele é concebido para tentar atender a aspectos diferentes do desenvolvimento uma transição entre atividades; as barras
uma necessidade; de software, inclusive as seqüências de paralelas representam início e término
• é especificado, quando essas necessida- atividades que compõem esse desenvol- de atividades executadas em paralelo;
des são traduzidas em requisitos viáveis; vimento. O tipo específico de diagrama um retângulo de cantos arredondados
• é desenvolvido, transformando-se que é mostrado na figura é o Diagrama de com detalhes internos representa uma
em um conjunto formado por código e Atividades, que representa uma evolução atividade estruturada, que é composta
outros itens, como modelos, documentos dos tradicionais fluxogramas, usados pe- de outras atividades.
e dados; los programadores há décadas.
• passa por algum procedimento de É interessante observar que a codifica- Projetos, Atividades e Estruturas
aceitação e é entregue a um cliente; ção, que representa a escrita final de um Analíticas
• entra em operação, é usado, e sofre programa em forma inteligível para um Normalmente, o software é desenvolvi-
atividades de manutenção, quando ne- computador, é apenas uma pequena parte do dentro de projetos. Todo projeto tem
cessário; do ciclo de vida. Muitas pessoas, inclu- uma data de início, uma data de fim, uma
• é retirado de operação ao final de sua sive alguns profissionais da informática, equipe e outros recursos. O responsável
vida útil. acham que a codificação é a única tarefa por um projeto é chamado de gerente de
de um engenheiro de software. projeto. O trabalho realizado dentro de um
O ciclo de vida compreende muitas ativi- Nos Diagramas de Atividades da UML, projeto pode ser descrito por um conjunto
dades, que são assunto das diferentes áre- a bolinha cheia representa Início; a boli- de atividades, que podem possuir relações
as da Engenharia de Software. A Figura 1 nha com um anel adicional representa de dependência, paralelismo, e decom-
mostra um modelo do ciclo de vida do sof- fim; cada retângulo simples de cantos posição em atividades mais elementares,
tware, usando a notação conhecida como arredondados representa uma ação, ou como no diagrama da Figura 1.
UML (Unified Modeling Language). Essa seja, uma atividade simples, da qual não As atividades são delimitadas por mar-
cos, isto é, pontos que representam esta-
dos significativos do projeto. Geralmente,
os marcos são associados a resultados
concretos: documentos, modelos ou por-
ções do produto, que podem fazer parte
do conjunto prometido aos clientes, ou
ter apenas utilização interna ao projeto. O
próprio produto é um resultado concreto
associado ao marco de conclusão do pro-
jeto, que pode ser utilizado sozinho, ou
como componente de um sistema.
O PMI (Project Management Institute)
é uma organização internacional, com
seções em muitos países, inclusive o
Brasil, que tem o objetivo de promover e
difundir boas práticas de gestão de pro-
jetos. Para isso, administra programas de
certificação de profissionais nessa área, e
publica o guia conhecido PMBOK (Project
Management Body of Knowledge).
Nesse guia, define-se um projeto como
um empreendimento temporário reali-
zado para criar um produto, serviço ou
resultado distinto. Um produto, por sua
vez, é definido como um objeto produzi-
do, quantificável e que pode ser um item
final ou um item componente. Uma ativi-
dade é definida como um componente de
trabalho realizado durante o andamento
de um projeto.
Os relacionamentos entre as atividades
que compõem um projeto são mostrados
em uma estrutura analítica, que o PM-
BOK define como uma decomposição hie-
Figura 1. Modelo UML do ciclo de vida do software rárquica orientada à entrega do trabalho

6 Engenharia de Software Magazine – Alguns Fundamentos da Engenharia de Software


engenharia

a ser executado pela equipe do projeto, na Engenharia de Software é o CMMI Projeto - Conjunto gerido de recursos
para atingir os objetivos do projeto e (Capability Maturity Model Integration), que inter-relacionados, que entrega um ou mais
criar as entregas necessárias. Estruturas foi formulado pelo Software Engineering produtos a um cliente ou usuário, com início
analíticas de projeto podem ser apresen- Institute da Carnegie-Mellon University. O definido e que, tipicamente, opera conforme
tadas de muitas maneiras. Diagramas de CMMI foi encomendado e patrocinado um plano.
atividade são uma das representações pelo Departamento de Defesa ameri- Estrutura analítica do projeto - Um ar-
mais usadas atualmente. Outro tipo cano, popularmente conhecido como ranjo dos elementos do trabalho e dos relaciona-
de representação usual é fornecida por Pentágono, que o utiliza para avaliação mentos deles entre si e com o produto final.
planilhas e cronogramas, como aqueles da capacidade de seus fornecedores de
que são produzidos pela ferramenta Mi- software. Sendo o Pentágono provavel- Ao contrário do PMBOK, o CMMI não
crosoft Project (Figura 2). mente a maior organização compradora se limita aos conhecimentos sobre gestão
de software do mundo, o CMMI tem de projetos. Cobre também áreas técni-
Modelos de Referência e Fatores de grande aceitação da indústria americana cas, e focaliza principalmente a aplicação
Produção de software, e considerável influência no dos processos ao desenvolvimento de
O PMBOK é um exemplo de modelo de resto do mundo. A rigor, suas práticas não produtos. Um processo, segundo o IEEE,
referência: uma estrutura de conheci- são restritas à indústria de software, po- é uma seqüência de passos executados
mento que organiza conceitos, práticas dendo ser aplicadas ao desenvolvimento com um determinado objetivo; segundo
e padrões de uma área. No caso do de outros tipos de produtos. o PMBOK, é um conjunto de ações e
PMBOK, a área focalizada é a gestão de Os conceitos do CMMI têm raízes em atividades inter-relacionadas, realizadas
projetos de qualquer natureza, cobrindo comum com o PMBOK, como se pode para obter um conjunto especificado de
assuntos como integração, escopo, tempo, observar pela similaridade das definições produtos, resultados ou serviços.
custos, qualidade, recursos humanos, que adota: Um projeto representa a execução de
comunicações, riscos e aquisições. Produto - Resultado que se pretende entre- um processo, e um processo é uma receita
Outro modelo de referência importante gar a um cliente ou usuário. que é seguida durante a realização um

Figura 2. Cronograma de um projeto.

Edição 01 – Engenharia de Software Magazine 7


projeto; em outras palavras, o projeto é menos produtivas, durante algum tempo. esperado. E a principal contribuição de
o empreendimento que concretiza uma Algumas tecnologias mais complexas só modelos de referência como o CMMI é
abstração, que é o processo. Não se deve se pagam depois de muitos projetos. indicar o caminho das pedras e o mapa da
confundir um processo (digamos, uma Investir na capacitação das pessoas é mina: onde a experiência coletada indica
receita de bolo) com o respectivo produto certamente necessário. Entretanto, for- que o investimento em melhorias é mais
(o bolo) ou com a execução do processo mar pessoas é difícil, caro e demorado. rentável, em cada passo da evolução das
através de um projeto (a confecção de Recrutar pessoas capacitadas também: organizações.
um bolo por determinada pessoa, em não há sinais de que a oferta de pessoas
determinado dia). com alta qualificação no desenvolvi-
Processos, pessoas e tecnologia consti- mento de software venha a se igualar Conclusão
tuem os fatores de produção, que deter- à demanda, em futuro próximo. Além A Engenharia de Software visa à criação
minam o grau de sucesso dos projetos, disso, muitas pessoas produzem menos de produtos de software que atendam as
ou seja: se eles conseguem entregar um que a sua capacidade permitiria, por necessidades de pessoas e instituições e,
produto de qualidade suficiente, dentro falta de liderança, por deficiência de fer- portanto, tenham valor econômico. Para
de um prazo aceitável e com custos viá- ramentas e suporte, ou por inadequação isso, usa conhecimentos científicos, téc-
veis. Portanto, desses fatores dependem de processos. nicos e gerenciais, tanto teóricos quanto
a rentabilidade e a sobrevivência das Dos investimentos nos fatores de pro- empíricos. Ela atinge seus objetivos de
organizações produtoras. dução, os investimentos nos processos produzir software com alta qualidade
Para muitos profissionais, a tecnologia é são geralmente aqueles que podem trazer e produtividade quanto é praticada por
o fator mais atraente; muitas vezes, há um retorno em prazo mais curto. Processos profissionais treinados e bem informa-
otimismo exagerado quanto aos resulta- também não fazem milagres, mas a dos, utilizando tecnologias adequadas,
dos da aplicação de novas tecnologias. melhoria dos processos costuma trazer dentro de processos que tirem proveito
Entretanto, tecnologias aparentemente benefícios em prazos relativamente cur- tanto da criatividade quando da raciona-
promissoras podem levar para um beco tos, como é ilustrado por inúmeros relatos lização do trabalho.
sem saída, e, às vezes, tecnologias con- de experiência publicados. No mínimo,
sideradas inferiores pelos especialistas contribuem para reduzir o desperdício
lançam raízes permanentes, graças a for- e o retrabalho, o que geralmente já traz
ças de mercado. Além disso, a tecnologia ganhos muito significativos. Links
só se paga quando colocada nas mãos de A melhoria dos três fatores (tecnolo-
SEI
pessoas capacitadas, trabalhando dentro gias, pessoas e processos) também requer http://www.sei.cmu.edu/
de processos adequados. Toda introdução seu próprio processo: ela deve ser feita CMMI
de nova tecnologia tem uma curva de em etapas bem-definidas e controladas, http://www.sei.cmu.edu/cmmi/
aprendizado: as pessoas precisam ser para que as organizações, em prazos PMI Brasil
treinadas, cometem inicialmente muitos relativamente curtos, possam avaliar se http://www.pmi.org.br/

erros e, por isso, podem até se tornarem seu investimento está tendo o retorno

8 Engenharia de Software Magazine – Alguns Fundamentos da Engenharia de Software