Você está na página 1de 38

Engenharia de Software: conceitos e

aplicaes

Prof. Tiago Eugenio de Melo, MSc


tiagodemelo@gmail.com

1
Objetivos da aula

Apresentar os conceitos de Engenharia de


Software e explicar a sua importncia.

Explicar as questes chaves sobre


Engenharia de Software.

Apresentar os principais processos de


desenvolvimento de software.

2
Sumrio

Introduo Engenharia de Software

Princpios de Engenharia de Software

Processos de Engenharia de Software

Questes de reviso

Referncias bibliogrficas

3
Motivao

A economia de todos pases dependem


do uso de software.

Cada vez mais, o controle dos processos


tem sido feito por software.

Atualmente, os custos de software


superam os custos de hardware.

A manuteno de software onde se tem


os maiores gastos. Principalmente em
sistemas de vida longa.
4
Conceitos

O que software?

Programas de computador e documentao
associadas.

O software pode ser classificado em:

Sistemas genricos, produzidos e vendidos no
mercado a qualquer pessoa que queira compr-los.

Sistemas especficos, encomendados
especificamente por um determinado cliente.

5
Conceitos

Tipos de sistema de software:



Sistemas legados.

Sistemas de tempo real.

Sistemas embarcados (embutidos).

Sistemas cientficos.

Sistemas para WEB.

Ciclo de vida do produto de software



Comea na concepo do problema
(solicitao do usurio).

Termina quando o sistema sai de uso.
6
Conceitos

O que Engenharia de Software?



uma das reas da Engenharia que trata dos
aspectos de produo de software.

O seu objetivo estabelecer uma sistemtica
abordagem de desenvolvimento, atravs de
ferramentas e tcnicas apropriadas,
dependendo do problema a ser abordado,
considerando restries e recursos
disponveis.

7
Conceitos

Quais so os custos da Engenharia de


Software?

Pesquisas mostram que 60% dos custos
para o desenvolvimento e 40% para os
testes.

O custo de evoluo do software,
normalmente, excede o custo de
desenvolvimento.

O custo depende do tipo de sistema a ser
desenvolvido e suas restries.

A distribuio dos custos depende do modelo
de desenvolvimento adotado. 8
Conceitos

Qual a diferena entre a Engenharia de


Software e a Cincia da Computao?

A Cincia da Computao tem como objetivo
o desenvolvimento de teorias e
fundamentaes, enquanto que a Engenharia
de Software se preocupa com as prticas de
desenvolvimento de software.

9
Conceitos

Qual a diferena entre Engenharia de


Software e Engenharia de Sistemas?

A Engenharia de Sistemas trata dos sistemas
baseados em computadores, que inclui
hardware e software. Enquanto a Engenharia
de Software trata apenas dos aspectos de
desenvolvimento de software.

10
Conceitos

Princpios da Engenharia de Software



Formalidade: produtos mais confiveis,
controlar seu custo e mais confiana no seu
desempenho.

Abstrao: identificar os aspectos
importantes, ignorando os detalhes.

Decomposio: subdividir o processo em
atividades especficas, atribudas a diferentes
especialistas.

Generalizao: sendo mais geral, bem
possvel que a soluo possa ser reutilizada.

Flexibilizao: modificao com facilidade. 11
Conceitos

A Engenharia de Software uma


disciplina que rene:

Processos.

Mtodos.

Ferramentas.

Os processos seguem os mtodos e estes


se utilizam de ferramentas.

Visam resolver problemas inerentes:



Ao processo.

Ao produto.
12
Conceitos

Quais so os mtodos da Engenharia de


Software?

So abordagens estruturadas para o
desenvolvimento de software que incluem os
modelos de software, notaes, regras e
maneiras de desenvolvimento.

13
Conceitos

O que so ferramentas CASE?



So programas de computador que tm o
objetivo fornecer um suporte automatizado
para as atividades de processo de software.

Operam em dois nveis:

Alto nvel: ferramentas que suportam as atividades
iniciais de requisitos e projetos.

Baixo nvel: ferramentas que suportam as
atividades de programao, depurao e testes.

14
Conceitos

O que um modelo de processo de


software?

uma representao simplificada de um
processo de software, apresentada sobre
uma perspectiva especfica.

Os principais modelos so:

Cascata ou sequencial.

Modelo evolutivo.

Transformao formal.

Integrao de componentes reusveis.

Espiral.
15
Conceitos

Modelos de processo

Especificam as atividades e a ordem em que,
de acordo com o modelo, devem ser
executadas.

Produtos de software podem ser construdos
utilizando-se de diferentes modelos de
processo.

Alguns modelos so mais adequados que
outros para determinados tipos de aplicao.

A opo por um determinado modelo deve
ser feita levando-se em considerao o
produto a ser desenvolvido.
16
Conceitos

Objetivos dos modelos



Auxiliar no processo de produo -> produtos
de alta qualidade, produzidos mais
rapidamente e a um custo cada vez menor.

Atributos: complexidade, visibilidade,
aceitabilidade, confiabilidade,
manutenibilidade, segurana etc.

Possibilitam:

Ao gerente: controlar o processo de
desenvolvimento de sistemas de software.

Ao desenvolvedor: obter a base para produzir, de
maneira eficiente, software que satisfaa os
requisitos pr-estabelecidos. 17
Conceitos

O que um processo de software?



Um conjunto de atividades que objetivam o
desenvolvimento e a evoluo de software.

De maneira geral, as principais atividades
so:

Especificao: define o que o sistema dever fazer,
considerando as suas restries.

Desenvolvimento: produo do software.

Validao: checagem se o software faz o que o
usurio deseja.

Evoluo: mudanas no software para atender s
novas demandas.
18
Processos de
Desenvolvimento

Definio:

Conjunto de atividades para especificar,
projetar, implementar e testar sistemas de
software.

As atividades necessrias para o
desenvolvimento de software so:

Especificao.

Projeto.

Validao.

Evoluo.

19
Processos de
Desenvolvimento

Ciclo de vida clssico (Modelo Cascata)



Diferentes fases da especificao e desenvolvimento.

Desenvolvimento evolutivo

Especificao e desenvolvimento so alternados.

Desenvolvimento formal

Uso de modelo matemtico formalmente
transformado em uma implementao.

Desenvolvimento de sistemas baseado em reuso



O sistema montado a partir de componentes.

Desenvolvimento em espiral

Desenvolvimento evolutivo.
20
Ciclo de vida clssico

Mtodo sistemtico e sequencial.

O resultado de uma fase constitui na


entrada de outra.

Tambm conhecido como cascata.

Cada fase estruturada como um


conjunto de atividades que podem ser
executadas por pessoas diferentes,
simultaneamente.

21
Ciclo de vida clssico

Fases:

Anlise e definio de requisitos.

Projeto de software.

Implementao e teste unitrio.

Integrao e teste de sistema.

Operao e manuteno.

22
Ciclo de vida clssico

Problemas:

Utiliza modelo sistemtico e sequencial, em
que a entrada de uma fase o resultado da
anterior.

O reincio do modelo a dificuldade de
acomodar mudanas depois que o processo
est no final.

Dificuldade em atender s mudanas
exigidas posteriormente pelo cliente.

Modelo mais adequado quando os requisitos
esto muito bem entendidos.
23
Desenvolvimento Evolutivo

Desenvolvimento Exploratrio

O objetivo desenvolver o sistema com o
contnuo acompanhamento dos clientes
desde da especificao. Os requisitos
precisam ser bem entendidos.

Prototipao Descartvel

O objetivo entender os requisitos do
sistema.

24
Desenvolvimento Evolutivo

Prototipao

25
Desenvolvimento Evolutivo

Especificao Verso inicial

Descrio do Verso
Desenvolvimento intermediria
sistema

Validao Verso final

26
Desenvolvimento Evolutivo

Problemas:

Ausncia de visibilidade do processo.

Sistemas so fracamente estruturados.

Necessidades de ferramentas de rpido
desenvolvimento.

Aplicabilidade:

Sistemas de pequeno e mdio porte.

Como parte de um sistema grande.

Sistema de curta durao.

27
Desenvolvimento Formal de
Sistemas

Baseado na transformao de uma


especificao matemtica, atravs de
diferentes representaes para um
programa executvel.

Consegue alcanar os requisitos da


especificao mais facilmente.

28
Desenvolvimento Formal de
Sistemas

Problemas:

Dificuldade em encontrar profissionais
especializados.

Dificuldade em especificar determinados
aspectos como a interface do usurio.

Aplicabilidade:

Principalmente para sistemas crticos, onde
no so toleradas falhas.

29
Desenvolvimento baseado
em reuso

Os sistemas so baseado em
componentes j existentes, semelhantes
ao desenvolvimento de hardware.

Fases do processo:

Anlise do componente.

Modificao dos requisitos.

Projeto do sistema com reuso.

Desenvolvimento e integrao.

Mtodo que vem crescendo bastante nos


ltimos tempos.
30
Modelo Espiral

Engloba as caractersticas do ciclo de


vida clssico e evolutivo, ao mesmo
tempo que adiciona um novo elemento
a anlise de risco.

31
Modelo Espiral

Fases

Definio dos objetivos, alternativas e
restries.

Anlise de risco.

Desenvolvimento e validao.

Planejamento.

32
Conceitos

Quais so as questes atuais?



Sistemas legados: os sistemas antigos devem
ser mantidos e atualizados.

Heterogeneidade: sistemas so uma
combinao de hardware e software.

Prazos de entrega: presso para um menor
prazo de entrega.

33
Principais aspectos da aula

A Engenharia de Software uma


disciplina da Engenharia que se preocupa
com todos os aspectos da produo de
software.

Produtos de software consistem no


desenvolvimento de programas e
documentao associada.
Manutenibilidade, independncia,
validao e evoluo so os atributos
essenciais.
34
Principais aspectos da aula

O processo de software consiste de


atividades que so envolvidas no
desenvolvimento de produtos de
software. As atividades bsicas deste
desenvolvimento so: especificao,
desenvolvimento, validao e evoluo.

Mtodos so formas organizadas de


produzir software.

35
Principais aspectos da aula

Ferramentas CASE so programas que


so projetados para auxiliar nas
atividades rotineiras no processo de
desenvolvimento de software, tais como:
desenho de diagramas, checagem da
consistncia dos diagramas e
manuteno do programa.

36
Questes de reviso

Qual a importncia da Engenharia de


Software no desenvolvimento de
sistemas?

Faa um estudo comparativo entre o


modelo de desenvolvimento de software
tradicional e o evolutivo.

Comente os princpios da Engenharia de


Software.

Qual a importncia do software no


cotidiano das pessoas?

37
Referncias Bibliogrficas

Carvalho, Ariadne M. B. Rizzoni & Chiossi, Thelma


C. dos Santos. Introduo Engenharia de
Software. Unicamp, 2001.

Paulo Filho, Wilson de Pdua. Engenharia de


Software. LTC, 2003.

Pressaman, Roger S. Engenharia de Software. 6a


edio. McGraw-Hill, 2006.

Sommerville, Ian. Engenharia de Software. 8a


edio. Pearson Education, 2007.

38

Você também pode gostar