Você está na página 1de 8

Engenharia de software

Engenharia de software uma rea do conhecimento da computao voltada para a


especificao, desenvolvimento e manuteno de sistemas de software aplicando tecnologias e
prticas de gerncia de projetos e outras disciplinas, objetivando organizao, produtividade e
qualidade.

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
de informao Sistema computacional, pois ambos se confundem!

Definio
Friedrich Ludwig Bauer foi o primeiro a defini-la como sendo: "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 eficientemente 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 Conference on
Software Engineering (Conferncia sobre Engenharia de Software da OTAN). 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.

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
Processos de Engenharia 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;

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 interativamente alcana evolues
subseqentes 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

muito importante o desenvolvimento do software.

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 - Catico;
Nvel 2 - Capacidade de repetir sucessos anteriores pelo acompanhamento de custos,
cronogramas e funcionalidades;
Nvel 3 - O processo de software bem definido, documentado e padronizado;
Nvel 4 - Realiza uma gerncia quantitativa do processo de software e do produto;
Nvel 5 - Usa a informao quantitativa para melhorar continuamente e gerenciar o
processo de software.

O CMMi um modelo de maturidade recentemente criado com o fim de agrupar as diferentes


formas de utilizao que foram dadas ao seu predecessor, o CMM.

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.
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.[1]

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). Tanto a Anlise Estruturada quanto a Anlise Essencial utilizam a ferramenta
Diagrama de Fluxos de Dados para modelar o funcionamento do sistema.

Metodologia Estruturada
o Anlise Estruturada
o Projeto Estruturado
o Programao Estruturada
o Anlise Essencial
o SADT
o DFD - Diagrama de Fluxo de Dados
o MER - Modelo de Entidades e Relacionamentos
Metodologia Orientada a Objetos
o Orientao a Objetos
o Rational Unified Process ( RUP )
Desenvolvimento gil de software
o Feature Driven Development ( FDD )
o Enterprise Unified Process (EUP)
o Scrum (Scrum)
o Crystal (Crystal Clear, Crystal Orange, Crystal Orange Web)
o Programao extrema ( XP )
Outras Metodologias
o 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 (veja exemplos).
Atualmente a modelagem mais recomendada, e sendo a mais comum, a utilizao da
linguagem UML.

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
Debug
Gerao de cdigo
Modelagem
Deploy
Testes no automatizados
Testes automatizados
Refatorao (Refatoring)
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 analise 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 Analise 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

Pessoal
Produto
Processo
Projeto
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. [2] Para mais detalhes em Portugus, ver texto com aplicaes da
otimizao em engenharia de software. [3]

Referncias
1. Veja mais detalhes em Metodologia (engenharia de software)
2. HARMAN, M., JONES, B.F., Search-based software engineering, Information and Software
Technology, 2001, pp. 833-839.
3. 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, II
Congresso Tecnolgico Infobrasil, 2009,

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. (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.