Cadastre-se Revistas DevMedia Cursos
 

Space de WILSON DE PáDUA PAULA FILHO
Busca Autor


Últimas 20 atualizações de WILSON DE PáDUA PAULA FILHO

Artigo - Artigo Engenharia de Software - Alguns Fundamentos da Engenharia de Software

Esse artigo faz parte da revista Engenharia de Software edição especial. Clique aqui para ler todos os artigos desta edição

Engenharia de Software

Alguns Fundamentos da Engenharia de Software

O que é Engenharia de Software?

É a mesma coisa que Ciência da Computação? Ou é uma entre muitas especialidades da Ciência da Computação? Ou dos Sistemas de Informação, ou do Processamento de Dados, ou da Informática, ou da Tecnologia da Informação? Ou é uma especialidade diferente de todas as anteriores?

Na maioria das instituições brasileiras de ensino superior, o conjunto de conhecimentos e técnicas conhecido como Engenharia de Software é ensinado em uma ou duas disciplinas dos cursos que têm os nomes de Ciência da Computação, Informática ou Sistemas de Informação. Raramente, em mais disciplinas, muitas vezes opcionais, e muitas vezes oferecidas apenas em nível de pós-graduação. Algumas instituições oferecem cursos de pós-graduação em Engenharia de Software, geralmente no nível de especialização.

O uso do termo para designar uma carreira profissional também não é muito comum, mesmo em organizações que produzem grande quantidade de software, ou até naquelas em que o desenvolvimento de software é atividade fim. Programas e exames de certificação em Engenharia de Software são pouco conhecidos, ao contrário do que acontece com algumas linguagens e tecnologias usados por esses profissionais.

Em outros países, a situação é um pouco diferente. Algumas universidades americanas oferecem programas de graduação, mestrado e doutorado na área. O IEEE (Institute of Electrical and Electronics Engineers), principal organização internacional de profissionais de Engenharia Elétrica, através da Computer Society, que forma o seu ramo em Computação, oferece a qualificação de Profissional Certificado para o Desenvolvimento de Software.

 

Ciência, Engenharia e Valor

Sem pretender fazer distinções definitivas, vamos explorar o que dizem os dicionários. O Dicionário Aurélio Eletrônico V.2.0 assim define Ciência e Engenharia:

Ciência - Conjunto organizado de conhecimentos relativos a um determinado objeto, especialmente os obtidos mediante a observação, a experiência dos fatos e um método próprio.

Engenharia - Arte de aplicar conhecimentos científicos e empíricos e certas habilitações específicas à criação de estruturas, dispositivos e processos que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas.

 

Vê-se que, pelas definições acima, a Ciência focaliza acumulação do conhecimento através do método científico, com base em experimentos e observações. Já a Engenharia aplica esses conhecimentos “ao atendimento das necessidades humanas”. Embora o conhecimento seja certamente uma necessidade humana, trata-se de uma entre várias outras, sejam necessidades materiais, como 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á, portanto, ligada à noção de valor, e a Engenharia de Software busca gerar valor com o processamento de informação. A noção de valor tem muitas conseqüências práticas importantes, e, de fato, a teoria conhecida como “Engenharia de Software Baseada em Valor” representa uma importante escola de pensamento dentro da área.

 

Arte, Técnica, Artesanato, Indústria?

Outros termos constantes da definição de Engenharia podem ser explorados de várias formas, com conseqüências interessantes. Por exemplo, é usada a palavra “Arte”, que o mesmo dicionário define como a “capacidade que tem o homem de pôr em prática uma idéia, valendo-se da faculdade de dominar a matéria”, ou “a utilização de tal capacidade, com vistas a um resultado que pode ser obtido por meios diferentes”. Na Engenharia de Software, a matéria dominada pelas faculdades humanas consiste em máquinas de processamento da informação, devidamente configuradas e programadas. Nesse sentido, os conceitos de “Arte” e “Técnica” são bem próximos; aliás, a palavra grega techné significa, exatamente, Arte.

O termo “Arte” abre outras discussões. Não poucos programadores se consideram como artistas, no sentido de praticantes das Belas Artes, e valorizam critérios estéticos na criação de seus programas. Isso pode ter conseqüências boas e ruins, do ponto de vista de gerar valor. Por um lado, a busca da elegância 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-satisfação do programador pode ter como preço os interesses de quem está pagando pelo trabalho dele, ou de quem o usará. Seja, por exemplo, produzindo programas que ninguém entende, senão o próprio autor (e, depois de certo tempo, nem ele mesmo). Seja, como outro exemplo, introduzindo funções que o autor achou interessantes, mas não são realmente necessárias, nem foram solicitadas.

E muito próxima de “Arte” está a palavra “Artesanato”, que lembra produção caseira, em pequena escala, sem a utilização de métodos industriais, que são caracterizados pela padronização e pela repetição. E, realmente, parece mais difícil aplicar esses métodos industriais na confecção de software, do que nos ramos da engenharia do mundo material. Nestes, as leis físicas impõem limites claramente visíveis ao que pode ser feito. Na Engenharia de Software, a criatividade não é limitada por leis físicas, e sim pela capacidade humana de entender e dominar a complexidade.

Mas não se pode escapar do fato de que a Engenharia de Software tem que resolver muitos problemas de ordem industrial. Raramente é possível construir software profissional sem envolver equipes, às vezes de dezenas ou até centenas de pessoas; raramente é possível trabalhar na área sem a pressão de prazos e orçamentos apertados; freqüentemente defeitos de software podem acarretar prejuízos vultosos, e, em certos casos, até riscos à vida humana; muitas vezes empreendimentos de software são afetados por um contexto econômico, político ou social.

 

Produtos e Ciclos de Vida

A íntima relação entre a Engenharia de Software e a noção de valor significa que essa profissão trata o software como produto. Estão fora do escopo da Engenharia de Software programas que são feitos com objetivo exclusivamente lúdico: a diversão do programador. Estão fora de seu escopo também pequenos programas descartáveis, feitos por alguém apenas para resolver um problema dessa pessoa, e que não serão utilizados por outros. Mas, se um desses programas interessar a outras pessoas, e assim passar a ter valor, aparecerão demandas para melhorar suas qualidades, aumentar suas funções, 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 usuários: aqueles que efetivamente usam o produto. Alguns produtos são feitos por encomenda de um cliente: aquele que pagará por sua produção. Outros, chamados de produtos de prateleira, são vendidos no mercado aberto, a quem se interessar. Neste caso, quem faz o papel do cliente é quem define que recursos e funções se esperam do produto; talvez um departamento de vendas, ou de marketing, ou de definição de produtos de uma organização, ou até, para produtos menores, os próprios desenvolvedores, colocando o chapéu de investidores de risco. E existem todos os casos intermediários, em que um produto parcialmente pronto é completado, adaptado ou incrementado, por encomenda de um cliente.

Como todo produto industrial, o produto de software tem seu ciclo de vida:

·    &nbs

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
03/03/2008 16:15:00





 

Engenheiro Mecânico pelo ITA, Doutor em Engenharia Elétrica pela Escola Politécnica da USP, Professor Titular aposentado do Departamento de Ciência da Computação da UFMG. Autor dos Livros “Engenharia de Software: Fundamentos, Métodos e Padrões” e “Multimídia: Conceitos e Aplicações”. Atualmente é consultor em Engenharia de Software e trabalha no Synergia – Laboratório de Engenharia de Software e Sistemas da UFMG.
Arquivo de atualizações
 2008

Estatísticas do Autor:
Número de posts: 1
Características dos posts deste autor:
Conteúdo:
Utilidade:
22 6
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group