Você está na página 1de 87

Engenharia de Software

Msc. Vinicius Pessoni


vinicius.pessoni@gmail.com
Professor Pessoni Engenharia de Software 1
Roteiro da Aula 1

1. Apresentaes Pessoais;
2. Programa da disciplina;
3. Introduo;
a. conceitos bsicos;
b. crise de software;
c. mitos de software;
d. swebok.

Professor Pessoni Engenharia de Software 2


Programa da Disciplina
(Plano de Curso)

Professor Pessoni Engenharia de Software 3


Programa da Disciplina

Objetivos

Esclarecer aos discentes a importncia do emprego da


Engenharia de Software no contexto de sistemas de informao;

Apresentar uma viso abrangente da Engenharia de Software;

Aprender sobre:

os paradigmas de desenvolvimento de software;


caractersticas de qualidade de software;
normas de processo de software;
cada rea de conhecimento da engenharia de software
conforme o SWEBOK.

Professor Pessoni Engenharia de Software 4


Programa da Disciplina

Contedo
1. Introduo Engenharia de Software 5. Gerncia de Projetos de Software
Conceitos bsicos e viso geral
Crise de software;
Mitos de software; 6. Modelagem, Projeto e Construo de
Swebok; Softwares
Contextualizao de reas (CC, EC,
ES)
7. Teste de Software
2. Atividades Fundamentais do
Desenvolvimento de Software
8. Qualidade de Software
3. Processos e Ciclos de Vida de
Software:
processo;
modelos de processos: sequencial,
incremental, iterativo e hbrido) e
metodologias a geis

4. Requisitos de Software
Professor Pessoni Engenharia de Software 5
Programa da Disciplina

Engenharia de Software

Carga horria: 48 h (Tericas) 18 h (Prticas)

Perodo:

16/08/2017 a 13/12/2017

Aulas canceladas sero avisadas com antecedncia

Horrios e locais:
Quarta: 18:50 - 22:00; Bloco B, EMC.

Professor Pessoni Engenharia de Software 6


Programa da Disciplina

Avaliaes
N1
Prova Escrita Individual sem Consulta (27 de setembro)
nota de 0-10, 60% da N1

Entrega do trabalho 1 (27 de setembro)


nota de 0-10, 40% da N1

N2
Prova Escrita Individual sem Consulta (29 de novembro)
nota de 0-10, 60% da N2

Entrega do trabalho 2 (29 de novembro)


nota de 0-10, 40% da N2

AE
1 ponto extra de atividades extraclasse que a mdia de quantas forem as
atividades ministradas
Nota Final (NF) = ((P1 * 0,6 + T1 * 0,4) + (P2 * 0,6 + T2 * 0,4)) / 2 + (0,1 * AE)
Professor Pessoni Engenharia de Software 7
Programa da Disciplina

Avaliaes

Caso o aluno perca uma ou mais avaliaes (A1 ou A2) ter o direito
de fazer avaliao substitutiva mediante processo com uma
justificativa formal (atestado mdico, certificados, declaraes,
entre outros);
Sero aprovados os alunos com Nota Final >= 6,0 e Frequncia >=
75,0%;
Nas atividades em grupo, podero ser atribudas notas diferentes
para os integrantes de um mesmo grupo, se forem observadas
diferenas nos esforos e resultados produzidos por esses
integrantes;
Em qualquer atividade ou produto avaliado, a ocorrncia de plgio
leva atribuio da nota zero.
Professor Pessoni Engenharia de Software 8
Programa da Disciplina

Ambientes de Interao
Os materiais so postados no SIGAA;

E-mail:

vinicius.pessoni@ufg.br

Professor Pessoni Engenharia de Software 9


Programa da Disciplina
Bibliografia Bsica

SOMMERVILLE, Ian.; - Engenharia de Software - 8 Edio 2007 - Pearson Education - Br

SOMMERVILLE, Ian.; - Sommerville, Ian Software engineering - Ian Sommerville. - 9th ed.

PRESSMAN, Roger S.; - Software Engineering - A PRACTITIONERS APPROACH - 7th ed.


2010, McGraw-Hill.

WAZLAWICK, Raul S.; - Engenharia de Software - Conceitos e Prticas


**verses em .pdf em facilmente encontrada na internet =}
Professor Pessoni Engenharia de Software 10
Programa da Disciplina
Bibliografia Complementar

KOSCIANSKI, Andr.; SOARES, Michel dos Santos.; Qualidade de software: aprenda as


metodologias e tcnicas mais modernas para o desenvolvimento de software. 2. ed. So
Paulo: Novatec, 2009. 395 p;

DELAMARO, Mrcio Eduardo; MALDONADO, Jos Carlos.;s Introduo ao Teste de


Software

Professor Pessoni Engenharia de Software 11


Programa da Disciplina

Entrega de Trabalhos e Atividades

** No sero aceitos trabalhos e atividades entregues fora das


datas estipuladas.

*** Excees, caso ocorram, sero combinadas com a turma


anteriormente.

Professor Pessoni Engenharia de Software 12


Programa da Disciplina

Bibliografia desta Aula

Captulos 1 dos livros:

PRESSMAN, Roger S.; - Software


Engineering - A PRACTITIONERS
APPROACH - 7th ed. 2010, McGraw-Hill.

SOMMERVILLE, Ian.; - Sommerville, Ian


Software engineering - Ian Sommerville. -
9th ed.

WAZLAWICK, Raul S.; - Engenharia de


Software - Conceitos e Prticas

Professor Pessoni Engenharia de Software 13


Introduo

Professor Pessoni Engenharia de Software 14


O que um Programa?

Professor Pessoni Engenharia de Software 15


O que um Programa?

Professor Pessoni Engenharia


Algoritmos e de Software
Programao de Computadores 16
Conceitos Bsicos

O que um Programa?

Tanenmbaum:

um computador digital uma mquina que pode resolver


problemas para as pessoas executando instrues
fornecidas;

Uma sequncia de instrues que descreve como realizar uma


tarefa denominada programa.

Puga:

um programa um conjunto de instrues que dizem ao


computador o que deve ser feito.

Professor Pessoni Engenharia de Software 17


Conceitos Bsicos

Mas,

e SOFTWARE, o que ?

Professor Pessoni Engenharia de Software 18


Conceitos Bsicos

Mas,

e SOFTWARE, o que ?

software == programa?

Professor Pessoni Engenharia de Software 19


Conceitos Bsicos

O que um Software?
s vezes, usamos software e programa como conceitos
equivalentes;

Porm, para a Engenharia de Software, o conceito de software


mais amplo que o de programa:

Pressman
Software um composto:
a. um conjunto de instrues (programas) que, quando
executadas, produzem a funo e o desempenho desejados;
b. estruturas de dados que possibilitam que os programas
manipulem corretamente as informaes;
c. documentos que descrevem a operao e o uso dos
programas.
Professor Pessoni Engenharia de Software 20
Conceitos Bsicos

O que um Software?
s vezes, usamos software e programa como conceitos
equivalentes;

Porm, para a Engenharia de Software, o conceito de software


mais amplo que o de programa:

Sommerville
Software no apenas o programa,

mas tambm toda a documentao associada

e os dados de configurao para fazer com que eles operem


corretamente.

*algo abstrato, intangvel, no palpvel.


Professor Pessoni Engenharia de Software 21
Conceitos Bsicos

O que um Software?
s vezes, usamos software e programa como conceitos
equivalentes;

Porm, para a Engenharia de Software, o conceito de software


mais amplo que o de programa:

Sommerville
De forma simplificada, um Bom Software (de boa qualidade)
aquele que entrega as funes e desempenho que o usurio
espera;

e tambm deve ser manutenvel, usvel, dentre outras


caractersticas de qualidade que vamos estudar mais
amplamente quando estudarmos sobre qualidade.

Professor Pessoni Engenharia de Software 22


Conceitos Bsicos

O que um Software?

Os produtos de software podem ser classificados em:

produtos genricos (software de prateleira): produzidos por


uma organizao e vendidos em diversos locais (mercados);

windows, word, photoshop, cad, etc.

produtos sob encomenda: desenvolvidos para sanar uma


necessidade especfica de um cliente especfico.

Professor Pessoni Engenharia de Software 23


Conceitos Bsicos

Assim,

software != programa

Professor Pessoni Engenharia de Software 24


Conceitos Bsicos

O que sistema?

Professor Pessoni Engenharia de Software 25


Conceitos Bsicos

O que um Sistema?
Sommerville

um conjunto de componentes inter-relacionados que funcionam


juntos para atingir um certo objetivo;

Exemplos:

sistemas de computador;
sistemas operacionais;
sistema educacional;
sistema de governo;
sistema de abastecimento;
sistema bancrio;
sistema eltrico, etc.

Professor Pessoni Engenharia de Software 26


Conceitos Bsicos

O que um Sistema?
Sommerville

Um sistema de software profissional, frequentemente mais


do que um nico programa;

Consiste de um determinado nmero de programas separados e


arquivos de configuraes para eles;

Pode incluir documentao adicional para descrever a


estrutura do sistema, documentao de usurio, etc;

essa uma das principais diferenas entre desenvolvimento


amador (sem documentao) e profissional (outros vo usar,
ento precisa de explicao).

Professor Pessoni Engenharia de Software 27


Conceitos Bsicos

O que
Engenharia de Software?

Professor Pessoni Engenharia de Software 28


Conceitos Bsicos

O que Engenharia de Software?


Pressman:
Engenharia de Software consiste em processo; uma coleo
de mtodos (prticas); e um conjunto de ferramentas que
permitem que profissionais de software produzam software de
alta qualidade;

Sommerville:
Engenharia de Software uma disciplina de engenharia que
se preocupa com todos os aspectos de produo de software;
dos estgios iniciais at a sua manuteno, depois que este entra
em operao. Objetiva auxiliar na produo de software
profissional de qualidade dentro do cronograma e oramento,
descrevendo tcnicas para isso.

Professor Pessoni Engenharia de Software 29


Conceitos Bsicos

O que Engenharia de Software?


Importncia da Engenharia de Software

Aumento infindvel de indivduos, sociedades e sistemas que


necessitam de software para viver;

necessrio produzir softwares confiveis, economicamente


viveis e em pouco prazo.

A longo prazo, mais barato produzir software de forma


sistemtica, por meio das tcnicas e mtodos da Engenharia de
Software, do que de forma desordenada;
a maior parte dos custos de SW vem aps a implantao
(software usado em produo).
algumas referncias fala-se 60% manuteno 40% desenvolvimento.
Professor Pessoni Engenharia de Software 30
Conceitos Bsicos

O que Engenharia de Software?


Importncia da Engenharia de Software

As atividades fundamentais da Engenharia de Software so:

especificao de software;
desenvolvimento de software;
validao de software;
e evoluo de software.

estudaremos essas fases melhor quando estudarmos


processos de software.

Professor Pessoni Engenharia de Software 31


Conceitos Bsicos

O que Engenharia de Software?

A engenharia de software no est


relacionada apenas com os processos
tcnicos de desenvolvimento de software,
mas tambm com todas as atividades como
gerenciamento de projeto de software e o
desenvolvimento de ferramentas e mtodos
que apoiem a produo de software.

Professor Pessoni Engenharia de Software 32


Conceitos Bsicos

Se a Engenharia de Software to
ampla,

como saber tudo o que tem nela?

Professor Pessoni Engenharia de Software 33


Conceitos Bsicos
O que Engenharia de Software?
Corpo de Conhecimento de Engenharia de Software (SWEBOK)

Software Engineering Body of


Knowledge;

Promover uma viso consistente da


engenharia de software em todo o mundo;

Posio da engenharia de software em


relao a outras disciplinas;

Base para desenvolvimento curricular e


certificao.

Professor Pessoni Engenharia de Software 34


Conceitos Bsicos
O que Engenharia de Software?
Corpo de Conhecimento de Engenharia de Software (SWEBOK)

Descreve 15 reas de conhecimento:


1. Requisitos de Software
2. Projeto de Software
3. Construo de Software
4. Teste de Software
5. Manuteno de Software
6. Gerncia de Configurao
7. Gerncia de Engenharia de Software
8. Engenharia de Processos de Software
9. Mtodos e Modelos de Engenharia de Software
10. Qualidade de Software
11. Prticas Profissionais de Engenharia de Software
12. Economia de Engenharia de Software
13. Fundamentos da Computao
14. Fundamentos Matemticos
15. Fundamentos de Engenharia
Professor Pessoni Engenharia de Software 35
Conceitos Bsicos
O que Engenharia de Software?
Diferenciao de Grandes reas

Engenharia de Software Cincia da Computao

X ????????????
????????????

Engenharia de Computao

????????????

Professor Pessoni Engenharia de Software 36


Conceitos Bsicos
O que Engenharia de Software?
Diferenciao de Grandes reas

Engenharia de Software Cincia da Computao

Foco nas melhores prticas Foco nas teorias e


de desenvolvimento e entrega X Fundamentos da computao,
de software que seja til. expanso das fronteiras do
conhecimento.

Engenharia de Computao

Foco no projeto, desenvolvimento e de equipamentos e


dispositivos computacionais. Foco em hardware
(aplicaes industriais, redes de comunicao, sistemas
embarcados em dispositivos dos mais variados portes).
Professor Pessoni Engenharia de Software 37
Conceitos Bsicos

O que Engenharia de Software?

A Engenharia de Software surgiu como uma tentativa de


soluo para a Crise do Software (1970):

Impreciso nas estimativas de prazo e de custo;


Insatisfao do cliente com o sistema concludo (no
atende os requisitos);
Baixa Qualidade de software;
Dificuldade de gerenciar, dar manuteno e evoluir.

Como estamos hoje em termos de


produo de software?
muito diferentes dessa realidade?
Professor Pessoni Engenharia de Software 38
Conceitos Bsicos

O que Engenharia de Software?

Cenrio atual de grande parte das empresas de SW

Professor Pessoni Engenharia de Software 39


Conceitos Bsicos

O que Engenharia de Software?

Crise do Software:

Ainda real e presente!


Embora a engenharia de software tenha evoludo sua
aplicao na prtica ainda muito limitada;
especialmente em empresas pequenas e mdias.

Professor Pessoni Engenharia de Software 40


Conceitos Bsicos

O que Engenharia de Software?

Crise do Software: Ainda real e presente!

Mesmo depois de 40 anos, ainda so comuns as queixas


dos executivos em relao ao setor de informtica quanto:
prazos que no so cumpridos;
custos ainda muito elevados;
sistemas que demandam muita manuteno;
e dificuldade de encontrar profissionais qualificados.

Os usurios tambm esto infelizes:


erros e falhas inadmissveis em produo;
inseguros em usar tais sistemas;
necessidade de manuteno e do seu alto custo.
Professor Pessoni Engenharia de Software 41
Conceitos Bsicos

O que Engenharia de Software?

Crise do Software: Ainda real e presente!

Os desenvolvedores, por sua vez, no esto mais


satisfeitos:

sentem que sua produtividade baixa em relao ao


seu potencial;
lamentam a falta de qualidade no produto gerado por
seu trabalho;
sofrem presso para cumprir prazos e oramentos
apertados;
e ficam inseguros com as mudanas de tecnologia que
afetam sua qualificao em relao ao mercado.
Professor Pessoni Engenharia de Software 42
Conceitos Bsicos

O que Engenharia de Software?

Crise do Software: Ainda real e presente!

Booch (1994) afirma:


We often call this condition the software crisis, but
frankly, a malady that has carried on this long must be
called normal;

A adoo de processos industriais para a produo de


software poder auxiliar a rea a sair dessa dificuldade
crnica que j nem pode ser chamada de crise;

Da a grande importncia da Engenharia de Software


nessa crise.

Professor Pessoni Engenharia de Software 43


Conceitos Bsicos

Tipos de Software (Wazlawick)

Apesar de no haver consenso nas literatura quanto a


classificao dos produtos de software, podemos destacar
alguns tipos;

a. Software bsico: so os compiladores, drivers e


componentes do sistema operacional.

b. Software de tempo real: so os sistemas que monitoram,


analisam e controlam eventos do mundo real.

c. Software comercial: so os sistemas aplicados nas


empresas, como controle de estoque, vendas etc. Tambm
conhecidos como sistemas de informao.
Professor Pessoni Engenharia de Software 44
Conceitos Bsicos

Tipos de Software (Wazlawick)

Apesar de no haver consenso nas literatura quanto a


classificao dos produtos de software, podemos destacar
alguns tipos;

d. Software cientfico e de engenharia: so os sistemas que


utilizam intenso processamento de nmeros.

e. Software embutido ou embarcado: so os sistemas de


software presentes em celulares, eletrodomsticos,
automveis etc. Normalmente, precisam trabalhar sob
severas restries de espao, tempo de processamento e
gasto de energia

Professor Pessoni Engenharia de Software 45


Conceitos Bsicos

Tipos de Software (Wazlawick)

Apesar de no haver consenso nas literatura quanto a


classificao dos produtos de software, podemos destacar
alguns tipos;

f. Software pessoal: so os sistemas usados por pessoas


no dia a dia, como processadores de texto, planilhas etc.

g. Jogos: todas as categorias de jogos tm caractersticas


intrnsecas que extrapolam o domnio da engenharia de
software.

h. Inteligncia artificial: so os sistemas especialistas, redes


neurais e sistemas capazes de alguma forma de
aprendizado.
Professor Pessoni Engenharia de Software 46
Conceitos Bsicos

Mitos do Software (Pressman, Wazlawick)

Mitos de Software so crenas errneas sobre o software e


sobre os processos de software que existem h vrios anos e
por algum motivo ainda so acreditados;
so afirmaes que parecem ser verdadeiras mas no so,
apesar de conter alguns elementos verdadeiros.

Os estudamos para que melhoremos nossa formao


profissional e no cometamos os mesmos enganos;

Podemos classific-los em trs grupos:


1. administrativos;
2. relacionados ao cliente;
3. relacionados ao profissional.
Professor Pessoni Engenharia de Software 47
Conceitos Bsicos

Mitos do Software (Pressman, Wazlawick)

1. Administrativos

a. A existncia de um manual de procedimentos e padres


suficiente para a equipe produzir com qualidade.

b. A empresa deve produzir com qualidade, pois tem


ferramentas e computadores de ltima gerao.

c. Se o projeto estiver atrasado, sempre possvel adicionar


mais programadores para cumprir o cronograma.

d. Um bom gerente pode gerenciar qualquer projeto

Professor Pessoni Engenharia de Software 48


Conceitos Bsicos

Mitos do Software (Pressman, Wazlawick)

2. Relacionados ao Cliente

a. Uma declarao geral de objetivos suficiente para


iniciar a fase de programao. Os detalhes podem ser
adicionados depois.

b. Os requisitos mudam com frequncia, mas sempre


possvel acomod-los, pois o software flexvel.

c. Eu sei do que preciso.


o cliente sabe? o programador entende?

Professor Pessoni Engenharia de Software 49


Conceitos Bsicos

Mitos do Software (Pressman, Wazlawick)

3. Relacionados ao Profissional

a. Assim que o programa for colocado em operao, nosso


trabalho terminou. **

b. Enquanto o programa no estiver funcionando, no ser


possvel avaliar sua qualidade.

c. Se eu esquecer alguma coisa, posso arrumar depois.

d. A nica entrega importante em um projeto de software o


software funcionando.

Professor Pessoni Engenharia de Software 50


Conceitos Bsicos

Mitos do Software (Leveson, Wazlawick)

Mitos atuais

a. O teste do software ou sua verificao formal pode remover


todos os erros.

b. Aumentar a confiabilidade do software aumenta a


segurana.

c. O reuso de software aumenta a segurana.

Professor Pessoni Engenharia de Software 51


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

No Silver Bullet - Essence and Accidents of Software


Engineering (Frederick P. Brooks, 1987)

Professor Pessoni Engenharia de Software 52


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

Brooks compara projetos tradicionais de software lobisomens;

Um lobisomem pode ser um membro querido de sua famlia e um


belo dia se transformar num monstro;

Da mesma forma que um projeto de software pode parecer


inofensivo e se transformar numa tortura de prazos perdidos,
oramentos estourados e num produto final problemtico.

A soluo para matar todos os lobisomens nica, basta uma bala


de prata;

O mesmo no vale para resolver todos os problemas de projetos de


software.

Professor Pessoni Engenharia de Software 53


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

Dificuldades em se construir software

Essenciais: pertinentes natureza do software, ao modelo


conceitual para o sistema (conjunto de dados, relao entre
esses itens de dados e a invocao de funes).

Acidentais: dificuldades que se tem na produo do software,


mas que no so inerentes s regras de negcio implementadas
pelo software (linguagem, tecnologias, etc.);

Conquistas passadas resolveram as dificuldades acidentais, mas


no as essenciais.

Professor Pessoni Engenharia de Software 54


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

Principais Problemas

Complexidade: entidades de software so mais complexas pelo


seu tamanho que qualquer outra construo humana, pois suas
partes so desiguais;

Softwares tem um grande nmero de estados, o que faz sua


concepo, descrio e teste muito difceis;

A complexidade do software essencial, no acidental, e


muitos problemas na sua construo derivam dessa
complexidade e do seu crescimento no linear.

Professor Pessoni Engenharia de Software 55


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

Principais Problemas

Conformidade: muito da complexidade existente em engenharia


de software se d pela necessidade de conformidade com
padres desenvolvidos por pessoas diferentes, em tempos
diferentes, com softwares que apareceram primeiro em cena;

Essa complexidade no pode ser simplificada apenas


redesenhando o software.

Professor Pessoni Engenharia de Software 56


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

Principais Problemas

Alterabilidade: um software est sujeito mudanas


constantemente, inclusive aps ser desenvolvido;

o que torna a sua alterao ainda mais onerosa;

Sistemas adicionam funcionalidades e essas so as que mais


recebem presso por mudanas.

Professor Pessoni Engenharia de Software 57


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

Principais Problemas

Invisibilidade: o software invisvel, no palpvel, no pode ser


representado por uma abstrao geomtrica;

Para constituir uma representao so necessrios vrios


diagramas que devem representar fluxo de controle, fluxo de
dados, padres de dependncia, sequncia temporal, entre
outros.

Professor Pessoni Engenharia de Software 58


Conceitos Bsicos
Dificuldades Essenciais e Acidentais da Engenharia de Software

Ataques promissores

Comprar X Construir: a soluo mais radical possvel para a


construo do software no constru-lo completamente.

Refinamento de requisitos e prototipagem rpida: a parte


mais difcil na construo de um sistema de software decidir
precisamente o que construir. Portanto, necessrio permitir
uma interao extensiva entre o cliente e o projetista como parte
da definio do sistema.

Grandes projetistas: a questo central de como melhorar os


produtores de software est nas pessoas. A empresa deve
desenvolver maneiras de formar grandes projetistas.

Professor Pessoni Engenharia de Software 59


Processos de Software

Professor Pessoni Engenharia de Software 60


O que um processo de
software?

Professor Pessoni Engenharia de Software 61


Processos de Software

Processo

uma palavra com origem no latim procedere;

Um verbo que significa:

a ao de avanar, ir para frente (pro+cedere)


mtodo;
maneira de agir;
ou conjunto de medidas tomadas para atingir algum objetivo.

Professor Pessoni Engenharia de Software 62


Processos de Software

Processo

Sommerville:

um conjunto de:

atividades e resultados associados

que geram um produto de software.

Professor Pessoni Engenharia de Software 63


Processos de Software

Processo

PMBOK, 2008:

Conjunto de atividades inter-relacionadas

realizadas para obter um conjunto especfico

de produtos, resultados ou servios.

Professor Pessoni Engenharia de Software 64


Processos de Software

Processo

Wazlawick:

Pode ser definido como um conjunto estruturado de atividades


para as quais so definidos:

artefatos de entrada;
artefatos de sada;
papis responsveis;
participantes;
recursos necessrios;

Professor Pessoni Engenharia de Software 65


Processos de Software

Processo

Wazlawick, refinado:

Um processo de engenharia de software formado por

um conjunto de passos de processo ordenados,

relacionados com artefatos, pessoas, recursos, estruturas


organizacionais e restries

tendo como objetivo produzir e manter os produtos de software finais


requeridos.

Professor Pessoni Engenharia de Software 66


Processos de Software

Processo

Wazlawick, refinado:

Um processo pode ser entendido como um conjunto de


atividades:

interdependentes;

com responsveis;

com entradas e sadas definidas.

Professor Pessoni Engenharia de Software 67


Processos de Software

Processo

A Engenharia de Software pode ser vista como uma disciplina multi camada
que deve ser apoiada na qualidade;
A gerncia total de qualidade, Six Sigma** e filosofias similares fomentam a
cultura de melhoria contnua dos processos e essa cultura auxilia no
desenvolvimento de melhores abordagens de engenharia de software;
Assim, a Engenharia de Software est fundamentada em processos;
so os processos que permitem um desenvolvimento racional e
organizado.
**Six Sigma um conjunto de prticas desenvolvidas pela Motorola para melhorar sistematicamente os processos ao eliminar defeitos. Um defeito
definido como a no conformidade de um produto ou servio com suas especificaes.
Grfico adaptado de Pressman, 7th edition, pg 14.

Professor Pessoni Engenharia de Software 68


Processos de Software

Processo

Os processos de software:

definem um framework que deve ser estabelecido para entrega


efetiva de software;

formam as bases para o gerenciamento e controle dos processos


de software;

estabelecem o contexto no qual os mtodos sero aplicados

estabelecem quais so os produtos de trabalho e quais artefatos


sero produzidos: modelos, documentos, dados, relatrios,
formulrios, etc.

estabelecem ainda marcos de projeto, objetivos de qualidade e


gerenciamento adequado de mudanas.
Professor Pessoni Engenharia de Software 69
Processos de Software

Processo

Os processos de software:

prescrevem a ordem e a frequncia de cada fase/atividade;


especificam critrios para mudar de uma fase para outra;
definem o que tem que ser entregue ao final de cada fase;
auxilia no atendimento do cronograma e na obteno de software
com mais qualidade
(manutenvel, legvel, etc. )

Os processos de software NO significam:

sobrecarga, papelada desnecessria, perda da tempo ;

Professor Pessoni Engenharia de Software 70


Processos de Software

Processo

Sommerville 2011:

Existem diversas formas de representar um processo de


software, mas genericamente, esses processos devem ter as
seguintes atividades fundamentais da engenharia de software:

Especificao de software;
Projeto e implementao de software;
Validao de software;
Evoluo do software.

Professor Pessoni Engenharia de Software 71


Processos de Software

Processo

Como escolher um processo?

Precisamos levar em considerao:

as caractersticas da aplicao;
domnio do problema, tamanho, complexidade, etc;
a tecnologia que ser adotada na sua construo;
paradigma de desenvolvimento, linguagem de
programao, mecanismo de persistncia, etc;
a organizao onde o produto ser desenvolvido;
perfil da equipe de desenvolvimento, tamanho da
organizao, etc.
Professor Pessoni Engenharia de Software 72
Processos de Software

Processo

Como escolher um processo?

Quando se escolhe um processo define-se um modelo de


processo;
tambm chamado de ciclo de vida.

Sommerville
Ciclo de Vida:
uma representao abstrata de um processo de
software. Cada modelo de processo representa um
processo sob determinada perspectiva e, dessa
forma, fornece somente informaes parciais sobre
esse processo.
Professor Pessoni Engenharia de Software 73
Modelo de Processo
(Ciclo de Vida)

Professor Pessoni Engenharia de Software 74


Processos de Software

Ciclo de Vida
Um modelo de processo um conjunto de regras abstratas que
definem um processo de forma simplificada.

tambm chamado de ciclo de vida de software.

So utilizados para explicar diferentes abordagens do desenvolvimento de


software;

Definem sequncia de atividades, aes, tarefas, marcos e produtos de


trabalho necessrios para desenvolver um software com qualidade;

Quando uma empresa decide adotar um processo, deve buscar um modelo e


adaptar para suas necessidades, criando o seu prprio processo.

Professor Pessoni Engenharia de Software 75


Processos de Software

Ciclo de Vida
Independente do modelo de ciclo de vida escolhido, algumas atividades
sempre devem aparecer:

atividades de definio do problema (o qu);


de construo de uma soluo (como);
de manuteno do sistema depois da sua entrega ao cliente.

Professor Pessoni Engenharia de Software 76


Processos de Software

Ciclo de Vida
Em geral, os ciclos de vida envolvem as seguintes fases:

1. Planejamento
2. Anlise e Especificao de Requisitos
3. Projeto
4. Implementao
5. Testes
6. Entrega e Implantao
7. Operao
8. Manuteno

Professor Pessoni Engenharia de Software 77


Processos de Software

Ciclo de Vida: 1. Planejamento

Fornece uma estrutura que possibilita ao gerente fazer


estimativa iniciais de recursos, custos e prazos;

O escopo do software estabelecido;

Um plano de projeto deve ser elaborado configurando o


processo a ser utilizado;

Essa atividade faz parte da gerncia de projeto.

Professor Pessoni Engenharia de Software 78


Processos de Software

Ciclo de Vida: 2. Anlise e Especificao de Requisitos

O escopo do software refinado;

Descreve o que o software deve fazer;

Devem ser analisados o domnio do problema e o domnio da


soluo .

Professor Pessoni Engenharia de Software 79


Processos de Software

Ciclo de Vida: 3. Projeto

Utiliza a fase anterior como insumo;

Envolve duas grandes etapas:

projeto da arquitetura do software;

projeto detalhado.

Professor Pessoni Engenharia de Software 80


Processos de Software

Ciclo de Vida: 4. Implementao

O projeto traduzido para uma para uma forma passvel de


execuo pela mquina;

Efetivamente codificado na linguagem escolhida.

Professor Pessoni Engenharia de Software 81


Processos de Software

Ciclo de Vida: 5. Teste

Testes de unidade e documentao dos resultados;

Integrao dos componentes e teste do software como um


todo;

Alguns modelos de processo prevem a realizao de testes j


nas primeiras etapas.

Professor Pessoni Engenharia de Software 82


Processos de Software

Ciclo de Vida: 6. Entrega e Implantao

O software deve ser instalado em ambiente produo, o que


envolve:

Treinamento de usurios;

Configurao do ambiente de produo;

Converso/migrao bases de dados (se necessrio);

Principal propsito dessa fase:


Realiza-se os Testes de Aceitao (estabelecer que o
software satisfaz os requisitos dos usurios).

Professor Pessoni Engenharia de Software 83


Processos de Software

Ciclo de Vida:

7. Operao

Aps o teste de aceitao, o software passa a ser utilizado de


fato em ambiente de produo.

8. Manuteno

Adaptativas;
Corretivas;
Evolutivas.

Professor Pessoni Engenharia de Software 84


Processos de Software

Modelos de Ciclo de Vida

Sequenciais;
Incrementais;
Iterativos;
Hbridos.

Professor Pessoni Engenharia de Software 85


Atividade para Casa

Obter o artigo No Silver Bullet - Essence and Accidents of


Software Engineering (Frederick P. Brooks, 1987).

Ler e fazer um resumo textual de no mximo duas pginas


explicando os pontos principais do artigo.

Entregar para o email do professor em formato .pdf at a prxima


aula

**cpias no sero contabilizadas para pontuao.

Professor Pessoni Engenharia de Software 86


Referncias
Livros descritos na bibliografia;
Puga, Sandra; RISSETTI, Gerson.; Lgica de programao e estruturas de dados: com aplicaes em Java. 1. ed.
So Paulo: Pearson Education, 2004. xiv, 262 p. ISBN 9788576052074.;
Slides Engenharia de Software - professor Hagamenon, Centro Universitrio ALFA, gentilmente cedidos;
Slides Engenharia de Software - professor Adailton, Universidade Federal de Gois, gentilmente cedidos;

Professor Pessoni Engenharia de Software 87