Você está na página 1de 4

25/7/2014

Engenharia de software Wikipdia, a enciclopdia livre

Engenharia de software
Origem: Wikipdia, a enciclopdia livre.

Engenharia de software uma rea da computao voltada especificao, desenvolvimento e manuteno de sistemas de
software, com aplicao de tecnologias e prticas de gerncia de projetos e outras disciplinas, visando organizao, produtividade
e qualidade.2
Atualmente, essas tecnologias e prticas englobam linguagens de programao, banco de dados, ferramentas, plataformas,
bibliotecas, padres, processos e a questo da Qualidade de Software.
Os fundamentos cientficos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao
engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. Alm disso, a
engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento de um sistema
computacional.

ndice
1 Definio
2 reas de conhecimento
3 Processo de software
3.1 Modelos de processo de software
3.2 Modelos de maturidade
4 Metodologias e mtodos
4.1 Modelagem
5 Ferramentas, tecnologias e prticas
5.1 Ferramentas
6 Gerncia de projetos
6.1 Planejamento
6.2 Anlise de requisitos
6.3 Gesto
7 Histrico
8 ES no presente e tendncias
9 Ver tambm
10 Referncias
11 Bibliografia
12 Ligaes externas

A engenharia de software a rea


responsvel pelo estabelecimento de
tcnicas e prticas para o desenvolvimento
de software cobrindo uma ampla rea de
aplicaes e diferentes tipos de
dispositivos. 1

Definio
Friedrich Ludwig Bauer foi o primeiro dizendo: "Engenharia de Software a criao e a utilizao de slidos princpios de engenharia a fim de obter software de maneira
econmica, que seja confivel e que trabalhe em mquinas reais". O prprio significado de engenharia j traz os conceitos de criao, construo, anlise, desenvolvimento e
manuteno.
A Engenharia de Software se concentra nos aspectos prticos da produo de um sistema de software, enquanto a cincia da computao estuda os fundamentos tericos dos
aspectos computacionais.
O termo foi criado na dcada de 1960 e utilizado oficialmente em 1968 na NATO Science Committee. Sua criao surgiu numa tentativa de contornar a crise do software e dar
um tratamento de engenharia (mais sistemtico e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um
conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funes, mdulos, objetos ou agentes e
interconectados entre si, compondo a arquitetura do software, que devero ser executados em sistemas computacionais.
Os fundamentos cientficos envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software,
avaliando e garantindo suas qualidades. Alm disto, deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento. Empresas desenvolvedoras de
software passaram a empregar esses conceitos sobretudo para orientar suas reas de desenvolvimento, muitas delas organizadas sob a forma de Fbrica de Software.
A Engenharia de Sistemas uma rea mais ampla por tratar de todos os aspectos de sistemas baseados em computadores, incluindo hardware e engenharia de processos alm
do software.
A Universidade Federal de Gois foi a primeira instituio no pas a criar o curso de graduao em Engenharia de Software, tendo em constante evoluo de sua grade curricular.

reas de conhecimento
Segundo o SWEBOK (Corpo de Conhecimento da Engenharia de Software), verso 2004, as reas de conhecimento da Engenharia de Software so:
Requisitos (Requirements) de Software
Projeto (Design) de Software
Construo (Construction) de Software
Teste (Testing) de Software
Manuteno (Maintenance) de software
Gerncia de Configurao de Software
Gerncia de Engenharia de Software
Processos de Engenharia de Software
Ferramentas e Mtodos de Engenharia de Software
Qualidade (Quality) de Software
Conforme Pressman, a Engenharia de Software (ES) uma tecnologia em camadas. E a base de todas essas camadas o foco na qualidade do software desenvolvido. Portanto,
inclusive do ponto de vista didtico, interessante estudarmos a ES em suas camadas de Processo, Mtodos e Ferramentas.

Processo de software
Processo de software, ou processo de engenharia de software, uma seqncia coerente de prticas que objetiva o desenvolvimento ou evoluo de sistemas de software. Estas
prticas englobam as atividades de especificao, projeto, implementao, testes e caracterizam-se pela interao de ferramentas, pessoas e mtodos.
SEE e PSEE so os ambientes voltados ao desenvolvimento e manuteno de processos. O projeto ExPSEE uma continuao dos estudos de processos, principalmente do
ambiente PSEE.
Devido ao uso da palavra projeto em muitos contextos, por questes de clareza, h vezes em que se prefira usar o original em ingls design.

Modelos de processo de software


Um modelo de processo de desenvolvimento de software, ou simplesmente modelo de processo, pode ser visto como uma representao, ou abstrao dos objetos e atividades
envolvidas no processo de software. Alm disso, oferece uma forma mais abrangente e fcil de representar o gerenciamento de processo de software e consequentemente o
progresso do projeto.
Exemplos de alguns modelos de processo de software;

http://pt.wikipedia.org/wiki/Engenharia_de_software

1/4

25/7/2014

Engenharia de software Wikipdia, a enciclopdia livre

Modelos ciclo de vida


Sequencial ou Cascata (do ingls waterfall) - com fases distintas de especificao, projeto e desenvolvimento.
Desenvolvimento iterativo e incremental - desenvolvimento iniciado com um subconjunto simples de Requisitos de Software e iterativamente alcana evolues
subsequentes das verses at o sistema todo estar implementado
Evolucional ou Prototipao - especificao, projeto e desenvolvimento de prottipos.
V-Model - Parecido com o modelo cascata, mas com uma organizao melhor, que permite que se compare com outros modelos mais modernos.
Espiral - evoluo atravs de vrios ciclos completos de especificao, projeto e desenvolvimento.
Componentizado - reuso atravs de montagem de componentes j existentes.
Formal - implementao a partir de modelo matemtico formal.
gil
RAD
Quarta gerao.

Modelos de maturidade
Os modelos de maturidade so um metamodelo de processo. Eles surgiram para avaliar a qualidade dos processos de software aplicados em uma organizao (empresa ou
instituio). O mais conhecido o Capability Maturity Model Integration (CMMi), do Software Engineering Institute - SEI.
O CMMI pode ser organizado atravs de duas formas: Contnua e estagiada. Pelo modelo estagiado, mais tradicional e mantendo compatibilidade com o CMM, uma organizao
pode ter sua maturidade medida em 5 nveis:
Nvel 1 - Inicial (Ad hoc): Ambiente instvel. O sucesso depende da competncia de funcionrios e no no uso de processos estruturados;
Nvel 2 - Gerenciado: Capacidade de repetir sucessos anteriores pelo acompanhamento de custos, cronogramas e funcionalidades;
Nvel 3 - Definido: O processo de desenvolvimento de software bem definido, documentado e padronizado a nvel organizacional;
Nvel 4 - Gerenciado quantitativamente: Realiza uma gerncia quantitativa do processo de software e do produto por meio de mtricas adequadas;
Nvel 5 - Em otimizao: Usa a informao quantitativa para melhorar continuamente e gerenciar o processo de desenvolvimento. At maro/2012, no Brasil, h somente
13 empresas neste nvel.3

O (MPS.BR), ou Melhoria de Processos do Software Brasileiro, simultaneamente um movimento para a melhoria e um modelo de qualidade de processo voltada para a
realidade do mercado de pequenas e mdias empresas de desenvolvimento de software no Brasil. O MPS.BR contempla 7 nveis de maturidade, de A a G, sendo a primeira o
mais maduro. At agosto/2012, no Brasil, h somente 2 empresas neste nvel.4

Metodologias e mtodos
O termo metodologia bastante controverso nas cincias em geral e na Engenharia de Software em particular. Muitos autores parecem tratar metodologia e mtodo como
sinnimos, porm seria mais adequado dizer que uma metodologia envolve princpios filosficos que guiam uma gama de mtodos que utilizam ferramentas e prticas diferenciadas
para realizar algo.5
Assim teramos, por exemplo, a Metodologia Estruturada, na qual existem vrios mtodos, como Anlise Estruturada e Projeto Estruturado (muitas vezes denominados SA/SD, e
Anlise Essencial). Dessa forma, tanto a Anlise Estruturada quanto a Anlise Essencial utilizam a ferramenta Diagrama de Fluxos de Dados para modelar o funcionamento do
sistema.
Segue abaixo as principais Metodologias e Mtodos correspondentes no desenvolvimento de software:
Metodologia Estruturada
Anlise Estruturada
Projeto Estruturado
Programao Estruturada
Anlise Essencial
SADT
DFD - Diagrama de Fluxo de Dados
MER - Modelo de Entidades e Relacionamentos
Metodologia Orientada a Objetos
Orientao a Objetos
Rational Unified Process ( RUP )
Desenvolvimento gil de software
Feature Driven Development ( FDD )
Enterprise Unified Process (EUP)
Scrum (Scrum)
Crystal (Crystal Clear, Crystal Orange, Crystal Orange Web)
Programao extrema ( XP )
Outras Metodologias
Microsoft Solution Framework ( MSF )

Modelagem
A abstrao do sistema de software atravs de modelos que o descrevem um poderoso instrumento para o entendimento e comunicao do produto final que ser
desenvolvido.
A maior dificuldade nesta atividade est no equilbrio (tradeoff) entre simplicidade (favorecendo a comunicao) e a complexidade (favorecendo a preciso) do modelo.
Para a modelagem podemos citar 3 mtodos:
Anlise estruturada, criada por Gane & Searson;
Anlise Essencial, criada por Palmer & McMenamin e Ed. Yourdon;
UML, criada por Grady Booch, Ivar Jacobson & Jaimes Rumbaugh. hoje o mtodo mais comum para o paradigma orientado a objetos.

Ferramentas, tecnologias e prticas


A engenharia de software aborda uma srie de prticas e tecnologias, principalmente estudadas pela cincia da computao, enfocando seu impacto na produtividade e
qualidade de software.
Destacam-se o estudo de linguagem de programao, banco de dados e paradigmas de programao, como:
Programao estruturada
Programao funcional
Programao orientada a objetos
Componentes de Software
Programao orientada a aspecto

Ferramentas
Outro ponto importante o uso de ferramentas CASE (do ingls Computer-Aided Software Engineering). Essa classificao abrange toda ferramenta baseada em
computadores que auxiliam atividades de engenharia de software, desde a anlise de requisitos e modelagem at programao e testes.
Os ambientes de desenvolvimento integrado (IDEs) tm maior destaque e suportam, entre outras coisas:
Editor
Compilador

http://pt.wikipedia.org/wiki/Engenharia_de_software

2/4

25/7/2014

Engenharia de software Wikipdia, a enciclopdia livre

Compilador
Debug
Gerao de cdigo
Modelagem
Deploy
Testes no automatizados
Testes automatizados
Refatorao (Refactoring)
Gesto de Riscos nos projectos de Software
Uso da Prototipagem na Eng. de Requisitos

Gerncia de projetos
A gerncia de projetos se preocupa em entregar o sistema de software no prazo e de acordo com os requisitos estabelecidos, levando em conta sempre as limitaes de
oramento e tempo.
A gerncia de projetos de software se caracteriza por tratar sobre um produto intangvel, muito flexvel e com processo de desenvolvimento com baixa padronizao.

Planejamento
O planejamento de um projeto de desenvolvimento de software inclui:
Anlise Econmica de Sistemas de Informaes
organizao do projeto (incluindo equipes e responsabilidades)
estruturao das tarefas (do ingls WBS - work breakdown structure)
cronograma do projeto (do ingls project schedule)
anlise e gesto de risco
estimativa de custos
Essas atividades sofrem com dificuldades tpicas de desenvolvimento de software. A produtividade no linear em relao ao tamanho da equipe e o aumento de produtividade
no imediato devido aos custos de aprendizado de novos membros. A diminuio de qualidade para acelerar o desenvolvimento constantemente prejudica futuramente a
produtividade.
A estimativa de dificuldades e custos de desenvolvimentos so muito difceis, alm do surgimento de problemas tcnicos. Esses fatores requerem uma anlise de riscos cuidadosa.
Alm da prpria identificao dos riscos, h que ter em conta a sua gesto. Seja evitando, seja resolvendo, os riscos necessitam ser identificados (estimando o seu impacto) e
devem ser criados planos para resoluo de problemas.

Anlise de requisitos
As atividades de anlise concentram-se na identificao, especificao e descrio dos requisitos do sistema de software. Em resumo, requisito uma necessidade que o
software deve cumprir.
H vrias interpretaes e classificaes sobre requisitos, entre elas:
funcional
no funcional
de usurio
de sistema
comum que o cliente no saiba o que ele realmente deseja, que haja problemas na comunicao e ainda que haja mudana constante de requisitos. Todos esses fatores so
recrudescidos pela intangibilidade sobre caractersticas de sistemas de software, principalmente sobre o custo de cada requisito.
Estudo de Viabilidade (Levantamento de Requisitos)
A Engenharia de requisitos um processo que envolve todas as atividades exigidas para criar e manter o documento de requisitos de sistema (SOMMERVILLE). Segundo
RUMBAUGH, alguns analistas consideram a engenharia de Requisitos como um processo de aplicao de um mtodo estrutura como a anlise orientada a objetos. No entanto, a
Engenharia de requisitos possui muito mais aspectos do que os que esto abordados por esses mtodos.
Abaixo um pequeno Processo de Engenharia de Requisitos (SOMMERVILLE).
Estudo da viabilidade "Relatrio de Viabilidade" Obteno e Anlise de Requisitos "Modelos de Sistema" Especificao de Requisitos "Requisitos de Usurio e de
Sistema" Validao de Requisitos "Documento de Requisitos"
O primeiro processo a ser realizado num Sistema novo o Estudo de Viabilidade. Os resultados deste processo devem ser um relatrio com as recomendaes da viabilidade
tcnica ou no da continuidade no desenvolvimento do Sistema proposto. Basicamente um estudo de viabilidade, embora seja normalmente rpido, dever abordar
fundamentalmente as seguintes questes:
O Sistema proposto contribui para os objetivos gerais da organizao?
O Sistema poder ser implementado com as tecnologias dominadas pela equipe dentro das restries de custo e de prazo? Ou precisa de treinamentos adicionais?
O Sistema pode ser integrado, e compatvel com os outros sistemas j em operao?

Gesto
Existem cinco tipo de gestes: pessoal, produto, processo, projeto e material.

Histrico
A Engenharia de Software (ES) surgiu em meados dos anos 1970 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemtico e
controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software
(estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funes, mdulos, objetos ou agentes interconectados entre si, compondo a arquitetura do software,
que devero ser executados em sistemas computacionais.

ES no presente e tendncias
Atualmente existe um destaque todo especial para a Engenharia de Software na Web. Tambm utilizado por Presmann a sigla WebE, o processo usado para criar WebApps
(aplicaes baseadas na Web) de alta qualidade. Embora os princpios bsicos da WebE sejam muito prximos da Engenharia de Software clssica, existem peculiaridades
especficas e prprias.
Com o advento do B2B (e-business) e do B2C (e-commerce), e ainda mais com aplicaes para a Web 2.0, maior importncia ficou sendo esse tipo de engenharia.
Normalmente adotam no desenvolvimento a arquitetura MVC (Model-View-Controller).
Outra rea de tendncia em Engenharia de Software trata da aplicao de tcnicas otimizao matemtica para a resoluo de diversos problemas da rea. A rea, denominada
Search-based software engineering, ou Otimizao em engenharia de software em Portugus, apresenta vrios resultados interessantes.6 Para mais detalhes em Portugus, ver
texto com aplicaes da otimizao em engenharia de software (http://goesuece.yolasite.com/resources/Search-based%20Software%20Engineering%20%20Aplicao%20de%20Metaheursticas%20em%20Problemas%20da%20Engenharia%20de%20Software%20Reviso%20de%20Literatura%20%28Otimizao%20em%20Engenharia%20de%20Software%292.pdf).7
O Brasil atualmente conta com seis cursos de nvel superior em Engenharia de Software nas seguintes instituies reconhecidas pelo MEC: UnB, UFRN, Universidade Federal do
Cear, Universidade Federal de Gois, Universidade de Rio Verde, Unipampa e UniCesumar.8
Eventos acadmicos tambm mostram tpicos interessantes sobre futuras tendncias de engenharia de software. O Brasil em 2013 sedia grandes eventos de engenharia como a
Conferncia Internacional de Engenharia de Requisitos9 e a Escola Latino Americana de Engenharia de Software.10

http://pt.wikipedia.org/wiki/Engenharia_de_software

3/4

25/7/2014

Engenharia de software Wikipdia, a enciclopdia livre

Ver tambm
Engenharia informtica
Desenvolvimento de software
Qualidade de software
Arquitetura de dados
Software Engineering Body of Knowledge
Anlise econmica de sistemas de informaes
Matriz CRUD
Otimizao em engenharia de software
Praxis - Processo de desenvolvimento de software com enfoque educacional

A Wikipdia possui o portal:


Portal das tecnologias
de informao

Referncias
1. Engenharia de Software (http://www.dimap.ufrn.br/bes/). www.dimap.ufrn.br. Pgina visitada em 26 de julho de 2012.
2. Notas de aula sobre engenharia de software, proferias pelo professor Ricardo de Almeida Falbo, 2005 - UFES (http://www.inf.ufes.br/~falbo/download/aulas/es-g/20051/NotasDeAula.pdf)
3. Washington Souza, Lista de empresas CMMI no brasil (2012), Site brasileiro BlogCMMI.
4.
5.
6.
7.

Washington Souza, Lista de empresas MPS.BR no Brasil (atualizado: ago-12), Site BlogCMMI.
Veja mais detalhes em Metodologia (engenharia de software)
HARMAN, M., JONES, B.F., Search-based software engineering, Information and Software Technology, 2001, pp. 833-839.
FREITAS, F.G., MAIA, C.L.B., COUTINHO, D.P., CAMPOS, G.A.L., SOUZA, J.T., Aplicao de Metaheursticas em Problemas da Engenharia de Software: Reviso de Literatura
(http://goesuece.yolasite.com/resources/Search-based%20Software%20Engineering%20%20Aplicao%20de%20Metaheursticas%20em%20Problemas%20da%20Engenharia%20de%20Software%20Reviso%20de%20Literatura%20%28Otimizao%20em%20Engenharia%20de%20Software%292.pdf),
II Congresso Tecnolgico Infobrasil, 2009,
8. emec.mec.gov.br
9. Conferncia Internacional de Engenharia de Requisitos[1] (http://www.re2013.inf.puc-rio.br/)
10. Escola Latino Americana de Engenharia de Software[2] (http://www.inf.ufrgs.br/elaes2013)

Bibliografia
MAGELA, Rogerio. Engenharia de Software Aplicada: Princpios (volume 1). Alta Books. 2006.
MAGELA, Rogerio. Engenharia de Software Aplicada: Fundamentos (volume 2). Alta Books. 2006.
MOLINARI, Leonardo. Gerncia de Configurao - Tcnicas e Prticas no Desenvolvimento do Software. Florianpolis: Visual Books, 2007. 85-7502-210-5
PRESSMAN, Roger. Software Engineering: A Practitioner's Approach, 6edio, Mc Graw Hill, 2005.
ANLISE ECONMICA DE SISTEMAS DE INFORMAES. (http://www.editoraixtlan.com/livros.htm) (ISBN 978-85-909374-7-0) Editora Ixtlan. Autor : Sergio
Kaminski. Comentrio: Mostra todas as etapas de desenvolvimento do software, relacionando ao lucro,receita e custo.
Livro: Reengenharia de Software, Tcnicas de Manuteno de Programas e Sistemas, Autor: Girish Parikh, 1990, Livros Tcnicos e Cientficos Editora, ISBN 85-216-0725-3

Ligaes externas
Podcasts (em portugus) sobre reas de interesse da Engenharia de Software (http://www.improveit.com.br/podcast) CMMI, MPS.BR, Scrum, Extreme Programming e
Lean Software Development
The 10 Best Jobs of 2012 (http://www.careercast.com/jobs-rated/10-best-jobs-2012) (em ingls) - Engenharia apontada como melhor profisso dos Estados Unidos em
2012
The 10 Best Jobs of 2012 (http://www.careercast.com/jobs-rated/10-best-jobs-2012) (em ingls) - Engenharia apontada como melhor profisso dos Estados Unidos em 2012
The 10 Best Jobs of 2012 (http://www.careercast.com/jobs-rated/10-best-jobs-2012) (em ingls) - Engenharia apontada como melhor profisso dos Estados Unidos em 2012
Obtida de "http://pt.wikipedia.org/w/index.php?title=Engenharia_de_software&oldid=39364796"
Categoria: Engenharia de software
Esta pgina foi modificada pela ltima vez (s) 23h52min de 5 de julho de 2014.
Este texto disponibilizado nos termos da licena Creative Commons - Atribuio - CompartilhaIgual 3.0 No Adaptada (CC BY-SA 3.0); pode estar sujeito a condies
adicionais. Para mais detalhes, consulte as Condies de Uso.

http://pt.wikipedia.org/wiki/Engenharia_de_software

4/4