quinta-feira, 22 de fevereiro de 2007

O que é Engenharia de Software?

O que é Engenharia?

Vejamos duas definções:
Engenharia é a atividade em que os conhecimentos científicos e técnicos e a experiência prática são aplicados para exploração dos recursos naturais, para o projeto, construção e operação de objetos úteis (Origem: Wikipédia, a enciclopédia livre).
Engenharia é a aplicação de métodos científicos ou empíricos à utilização dos recursos da natureza em benefício do ser humano (Dicionário Houaiss)
Essas definições não são suficientes para designar tudo aquilo que envolve engenharia. Para entender melhor o que é engenharia, propomos que você faça uma pesquisa para responder as seguintes questões:
  • Qual a diferença entre o desenvolvimento de um produto de forma artesanal e o desenvolvimento seguindo os princípios de engenharia? Em outras palavras, qual a diferença entre o trabalho de um artesão e o de um engenheiro?
  • Qual a diferença entre cozinhar e fazer engenharia de alimentos?
  • O que as diferentes engenharias (civil, mecânica, elétrica/eletrônica, química, ambiental, etc.) têm em comum?

Uma engenharia não é uma atividade específica. Um engenheiro é aquele que tem o conhecimento científico e a experiência para desempenhar uma ou mais das diversas atividades da engenharia.

Além disso, a atividade de engenharia não pode prescindir da garantia da qualidade do produto, da conformidade às normas, e do planejamento e gerenciamento de custos e prazos.

Objetivos da Engenharia de Software

A engenharia de software tem por objetivos a aplicação de teoria, modelos, formalismos e técnicas e ferramentas da ciência da computação e áreas afins para a produção (ou desenvolvimento) sistemática de software.

Associado ao desenvolvimento, é preciso também aplicar métodos, técnicas e ferramentas para o gerenciamento do processo de produção. Isto envolve planejamento de custos e prazos, montagem da equipe e garantia de qualidade do produto e do processo.

Finalmente, a engenharia de software visa a produção da documentação formal do produto, do processo, dos critérios qualidade e dos manuais de usuários finais.


Definições de Engenharia de Software

Os autores apresentam diversas definições para engenharia de software. Vamos apresentar três que consideramos complementares.
  • A engenharia de software é a disciplina envolvida com a produção e manutenção sistemática de software que são desenvolvidos com custos e prazos estimados.
  • Disciplina que aborda a construção de software complexo - com muitas partes interconectadas e diferentes versões - por uma equipe de analistas, projetistas, programadores, gerentes, "testadores", etc.
  • O estabelecimento e uso de princípios de engenharia para a produção economicamente viável de software de qualidade que funcione em máquinas reais.
A primeira destas definições enfatiza que a engenharia visa não apenas o desenvolvimento, mas também a manutenção do produto. Além disso, ela ressalta a importância da estimativa de custos e prazos de desenvolvimento.

A segunda definição enfatiza a complexidade do produto e do processo. O software é formado por diversos componentes interconectados e o seu desenvolvimento é realizado por uma equipe com diferentes funções e especialidades, cujo trabalho precisa ser gerenciado.

A terceira ressalta que o desenvolvimento de software deve seguir os princípios comuns a todas as engenharias e deve visar a qualidade.

Veja o material apresentado em aula ( arquivo em PDF).

Para saber mais:

  1. James D. Herbsleb. Beyond computer science. Proceedings of the 27th international conference on Software engineering 2005, Pages: 23 - 27.
  2. Boehm, B. "A view of 20th and 21st century software engineering", Proceeding of the 28th international conference on Software engineering 2006, Shanghai, China May 20 - 28, 2006.
  3. Brooks, Jr., Frederick P. No Silver Bullet - Essence and Accidents of Software Engineering, in The Mythical Man-Month.Essays on Software Engineering, Twentieth Anniversary Edition, Reading, MA: Addison-Wesley1995
  4. Finkelstein, A. Kramer, J. "Software engineering: a roadmap", in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  5. Shaw, M. Software Engineering Education: a roadmap.in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  6. Shaw, M. What Makes Good Research in Software Engineering. ETAPS, Grenoble, 2002.

4 comentários:

Anônimo disse...

Parabéns, pelo blog.

Segurança disse...

Muito bom, falar sobre engenharia de software é ótimo, pois assim as pessoas iniciam os estudos.
Também estou escrevendo textos sobre engenharia de software no meu site:
www.analistasi.com.br

Anônimo disse...

Parabens, os assuntos são bastante esclarecedores.

Anônimo disse...

Gostei vei... Esse blog é massa.