Você está na página 1de 40

1

INSTITUTO FEDERAL DE EDUCAO, CINCIA E


TECNOLOGIA DO RIO GRANDE DO NORTE
CAMPI JOO CMARA

ENGENHARIA DE SOFTWARE

Nickerson Fonseca Ferreira


nickerson.ferreira@ifrn.edu.br

Introduo
2

Antes de qualquer coisa... O que Software ???


Programas

de computador
Documentao associada
Configuraes

Os softwares podem ser:


Genricos
Sob

encomenda

Introduo
3

E a engenharia de Software ??
Disciplina

de engenharia relacionada com os aspectos


da produo de Software.
Possui uma abordagem sistemtica e organizada.
O principal objetivo produzir um produto de maneira
eficaz e de alta qualidade.

Histria
4

Os primeiros softwares surgiram na dcada de 50.


O foco dos pesquisadores era o hardware.
Software era algo invivel.

Histria
5

Na dcada de 60 surgiram os computadores baseados


em CI (circuitos integrados).
Seu poder fez surgir o interesse no desenvolvimento de
aplicaes, at ento consideradas no realizveis.
Os pesquisadores comearam a mudar o foco para os
softwares.
As aplicaes se tornaram muito complexas.
Desenvolvimento de software informal.
Resultava em sistemas caros, difceis de manter e de
desempenho insatisfatrio.
O Software estava em crise.

Histria
6

O que fazer para reverter a situao?

Histria
7

A Engenharia de Software (ES) surgiu para tentar


solucionar o problema da crise do software.
Este conceito foi inicialmente proposto em 1968.
Foram criadas novas tcnicas e mtodos para
controlar a complexidade dos grandes sistemas e
organizar o processo de desenvolvimento de
Software.

Quais os desafios da ES ?
8

Diminuir custos;
Melhorar qualidade;
Atender s expectativas do cliente.

Fundamentos da ES
9

A Engenharia de Software utiliza conceitos de


vrias reas, como:
Cincias

da computao: abrange arquitetura de


computadores, lgica de programao, estrutura de
dados algoritmos, etc.
Administrao: o engenheiro de software atua como
gestor de um projeto, administrando prazos, equipe,
custos, resultados etc.
Comunicao: habilidade para saber se expressar
com clientes ou usurios;

Camadas da ES
10

A base da Engenharia de Software o foco na


qualidade.

Camadas da ES
11

Processo: define uma metodologia que deve ser


utilizada no desenvolvimento do software. O
processo a base para o controle do
gerenciamento do projeto.
Mtodos: fornecem informaes tcnicas para o
desenvolvimento do projeto. Eles podem envolver
diversas tarefas como: comunicao, anlise de
requisitos, etc.
Ferramentas: responsveis por fornecer suporte
automatizado para o processo e os mtodos.

Identificando a qualidade
12

Como identificar a qualidade de um software??


Existem alguns atributos que indicam qualidade
num software:
Facilidade

de manuteno: o software deve evoluir


para atender s necessidades de mudana do cliente.
Confiana: O software deve ser confivel.
Eficincia: o sistema deve realizar suas atividades
utilizando a menor quantidade de recursos possveis.
Usabilidade: o sistema deve ser compreensvel, usvel
e compatvel com outros sistemas.

Processo de Software
13

Segundo SOMERVILLE, Processo de Software um


conjunto de atividades que leva produo de um
produto de Software.
Processos complexos.
Podemos contar com ferramentas de apoio com o
objetivo de automatizar esses processos, conhecidas
como ferramentas CASE (Computer-Aided Software
Engineering).
Por se tratar de um objeto subjetivo e da imensa
diversidade de processos de software, as tentativas
de automatizao tm tido sucesso limitado.

Processo de Software
14

Existem diversos processos de software.


No existe um processo ideal.
Existem atividades comuns aos processos de
software, so elas:
Especificao

de
software:
Definio
das
funcionalidades e das restries sobre suas operaes.
Projeto e implementao de software: produo do
software que atenda s especificaes solicitadas.
Validao de software: O software deve ser validado
para garantir que ele faa o que o cliente deseja.
Evoluo de software: o software deve evoluir para
atender s necessidades mutveis do cliente.

Modelos de Processo de Software


15

uma representao abstrata de um processo de


software.
Representa um processo sob uma determinada
perspectiva.
Os principais modelos de processos so:
Modelo

cascata
Desenvolvimento evolucionrio
Engenharia de software baseada em componentes
Iterativo
Iterativo-incremental
Espiral

Modelos de Processo de Software


16

Por qu utilizar um modelo de processo de


software??
Padroniza

o desenvolvimento de software.
Padronizao dos artefatos de software.
Melhora a comunicao da equipe.

Consequentemente, agrega qualidade ao software.

Modelo Cascata
17

Foi o primeiro modelo de processo de software


proposto.
um modelo sequencial.
Devido ao encadeamento de suas fases, o modelo ficou
conhecido como modelo cascata.
Uma nova fase s pode ser iniciada com a finalizao
da anterior.
Possui 5 fases definidas:

Requisitos, projeto,
manuteno.

implementao,

integrao

Ao final de cada fase um ou mais documentos so


aprovados.

Modelo Cascata
18

Modelo Cascata
19

Vantagens
Documentao

rgida em cada fase do processo.


Aderncia a outros modelos de processo
Pode

ser combinado com outros modelos.

Desvantagens
Projetos

reais raramente seguem um fluxo sequencial.


difcil para o cliente definir todos os requisitos no
incio do processo.
Difcil adequao mudanas de requisitos.
Uma verso executvel somente ficar pronta no final
do processo.

Desenvolvimento evolucionrio
20

Tem como base uma implementao inicial e


realizar aprimoramentos por meio de vrias
verses.
Todo o trabalho realizado concorrentemente.
Rpido retorno (feedback) para o cliente.

Desenvolvimento evolucionrio
21

Existem 2 tipos de desenvolvimento evolucionrio:


Desenvolvimento

exploratrio: trabalha diretamente


com o cliente a fim de explorar seus requisitos e
entregar um sistema final.
Possui

incio com os requisitos compreendidos.


O sistema evolui com o acrscimo de caractersticas,
medida que so propostas pelo cliente.
Prototipao

throwaway: o objetivo deste tipo de


desenvolvimento utilizar um prottipo (experimentos)
para compreender melhor requisitos mal entendidos.

Desenvolvimento evolucionrio
22

Atividades Simultneas

Desenvolvimento evolucionrio
23

Vantagens
Rpido

feedback para o cliente.


Desenvolvimento de forma incremental.
Desvantagens
Dificulta

a gerncia da documentao do projeto.


Tendncia de corromper a estrutura do software.

ES baseada em componentes
24

Apoiada pela orientao a objetos.


Base

na reusabilidade de cdigos ou componentes


adequadamente projetadas e implementadas.
So
reutilizveis em diferentes aplicaes e
arquiteturas.

Compe a aplicao de software a partir de


componentes previamente preparados.
Resumindo, o processo de definio,
implementao, integrao ou composio de
componentes independentes.

ES baseada em componentes
25

O que so componentes?

uma entidade executvel e independente


Possui servios que esto disponveis por meio de uma
interface, por onde suas interaes acontecem.

Principais caractersticas de um componente:


Padronizado
Independente
Passvel

de composio
Implantvel
Documentado

ES baseada em componentes
26

Interfaces do componente:
Requires:

servios que devem ser fornecidos ao


componente.
Provides: servio fornecido pelo componente.

ES baseada em componentes
27

Processo de desenvolvimento de software baseado


em componentes

Modelos Iterativos
28

Esse tipo de modelo repete partes do processo


medida que os requisitos do sistema evoluem.
Mistura conceitos dos modelos vistos anteriormente.
Os principais modelos iterativos so:
Espiral
Iterativo-incremental

Modelo Espiral
29

Em vez de representar o processo de software


como uma sequncia de atividades, o processo
representado como uma espiral.
Cada volta da espiral apresenta uma fase do
processo de software.
Ex: a volta mais interna pode estar relacionado
viabilidade do sistema; a volta seguinte pode estar
relacionada definio de requisitos e assim por
diante.

Modelo Espiral
30

Cada volta da espiral dividida em 4 setores:


Definio

dos objetivos: definio dos objetivos


especficos para essa fase do processo.
Avaliao e reduo de riscos: identificar os riscos,
analisar detalhadamente cada um e tomar
providncias para reduzir sua probabilidade.
Desenvolvimento e validao: aplicar as fases do
desenvolvimento.
Planejamento: reviso do projeto e planejamento da
prxima volta da espiral, se for o caso.

Modelo Espiral
31

Iterativo-Incremental
32

Foi sugerida com o objetivo de reduzir o


retrabalho no processo de desenvolvimento.
O cliente no precisa detalhar TODOS os requisitos
na fase inicial.
Priorizao das funcionalidades mais importantes.
O conjunto de funcionalidades que sero
desenvolvidos so conhecidos como incremento.
Uma vez que o incremento finalizado, o produto
pode ser colocado em operao.

Iterativo-Incremental
33

Iterativo-Incremental
34

Vantagens
O

cliente no precisa esperar at que todo sistema


seja entregue.
Risco menor de fracasso do sistema.
Priorizao de funcionalidades mais importantes.

Desvantagens
Os

incrementos devem ser relativamente pequenos.


Dificuldade no mapeamento de funcionalidades com
dependncia.

Exerccios
35

1) Considere o seguinte problema encontrado em projetos de


desenvolvimento
de
software:
Projetos reais raramente seguem um fluxo sequencial.
Apesar de um modelo linear poder acomodar a iterao,
ele o faz indiretamente. Como resultado, as modificaes
podem causar confuso medida que a equipe de projeto
prossegue. Esse um dos problemas que so algumas vezes
encontrados quando aplicado o modelo de
desenvolvimento.
a) em cascata.
b) gil.
c) espiral.
d) incremental.
e) unificado.

Exerccios
36

2)

O
processo
de
desenvolvimento
de software conhecido como modelo em espiral
(Modelo espiral de Boehm), divide cada volta da
espiral em quatro setores

( ) Correto
( ) Errado

Exerccios
37

3) Em Engenharia de Software, temos o Desenvolvimento em Espiral, cada loop da espiral


dividido em quatro setores, a seguir apresentamos alguns deles. Analise as assertivas e
assinale a alternativa que apresenta os corretos.
I. Desenvolvimento de integrao: O software que no puder ser comprado ser
desenvolvido, e os componentes e sistemas COTS sero integrados, a fim de criar um
sistema. A integrao de sistemas, nesse modelo, pode ser parte do processo de
desenvolvimento, em vez de uma atividade separada.
II. Definio de objetivos: So definidos os objetivos especficos para essa fase do projeto.
So identificadas as restries para o processo e o produto, e preparado um plano de
gerenciamento detalhado. So identificados os riscos do projeto e, dependendo dos riscos,
podero ser planejadas estratgias alternativas.
III. Avaliao e reduo de riscos: Para cada um dos riscos de projeto identificados,
realizada uma anlise detalhada e so tomadas providncias para reduzir esses riscos. Por
exemplo, se houver um risco de os requisitos serem inadequados, poder ser desenvolvido
um prottipo.
IV. Panejamento: O projeto revisto e tomada uma deciso sobre continuar com o
prximo loop da espiral. Se a deciso for continuar, sero traados os planos para a
prxima fase do projeto.

Exerccios
38

Exerccios
39

Exerccios
40

Gabarito
1)

A
2) C
3) F, V, V, V
4) D
5) C
6) E
7) C

Você também pode gostar