Вы находитесь на странице: 1из 37

Engenharia de Software

Objetivo da aula

Depois desta aula voc ter uma reviso sobre


o que a engenharia de software, os seus
objetivos e conceitos bsicos.

Leitura recomendada

Captulo 1 (Software and Software


Engineering) do livro Software Engineering
A Practioners Approach (de Roger Pressman)
Captulo 1 (Introduction) do livro Software
Engineering (de Ian Sommerville)

O que a Engenharia de Software?

Estudo ou aplicao de abordagens sistemticas,


econmicas e quantificveis para o
desenvolvimento, operao e manuteno de
software de qualidade.
Engenheiros de software devem adotar uma
abordagem sistemtica e organizada para seu
trabalho e usar ferramentas e tcnicas/mtodos
apropriados dependendo do problema a ser
solucionado, das restries de desenvolvimento e
dos recursos disponveis

O que software?

Programas de computador e documentao


associada
Produtos de software podem ser desenvolvidos
para um cliente particular ou podem ser
desenvolvidos para um mercado geral

Objetivos da Engenharia de
Software

Controle sobre o desenvolvimento de software


dentro de custos, prazos e nveis de
qualidade desejados
Produtividade no desenvolvimento, operao e
manuteno de software
Qualidade versus Produtividade
Permitir que profissionais tenham controle
sobre o desenvolvimento de software dentro de
custos, prazos e nveis de qualidade desejados

Caractersticas da
Engenharia de Software

A Engenharia de Software se refere a software


(sistemas) desenvolvidos por grupos ao invs
de indivduos
usa princpios de engenharia ao invs de arte,
e
inclui tanto aspectos tcnicos quanto no
tcnicos

O que um software de qualidade?

O software que satisfaz os requisitos solicitados


pelo usurio. Deve ser fcil de manter, ter boa
performance, ser confivel e fcil de usar
Alguns atributos de qualidade

Manutenibilidade

Eficincia

O software deve evoluir para atender os requisitos


que mudam
O software no deve desperdiar os recursos do
sistema

Usabilidade

O software deve ser fcil de usar pelos usurios


para os quais ele foi projetado

Qualidade de Software
(um exemplo para o Varejo)

Correto
A

loja no pode deixar de cobrar por produtos


comprados pelo consumidor

Robusto e altamente disponvel


A

loja no pode parar de vender

Eficiente
O

consumidor no pode esperar


A empresa quer investir pouco em recursos
computacionais (CPU, memria, rede)

Qualidade de Software
(um exemplo para o Varejo)

Amigvel e fcil de usar

A empresa quer investir pouco em treinamento

Altamente extensvel e adaptvel


A empresa tem sempre novos requisitos (para ontem!)
A empresa quer o software customizado do seu jeito
(interface, teclado, idioma, moeda, etc.)

Reusvel

Vrias empresas precisam usar partes de um mesmo


sistema

Qualidade de Software
(um exemplo para o Varejo)

Aberto, compatvel, de fcil integrao com outros


sistemas

Portvel e independente de plataforma (hw e sw)

A empresa j tem controle de estoque, fidelizao, etc.


A empresa opta por uma determinada plataforma

Baixo custo de instalao e atualizao

A empresa tem um grande nmero de PDVs

Produtividade

Custo de desenvolvimento reduzido


A

empresa consumidora quer investir pouco em


software
A empresa produtora tem que oferecer software
barato

Tempo de desenvolvimento reduzido


Suporte

rpido s necessidades do mercado

Software Barato
Nem tanto resultado de baixos custos de
desenvolvimento, mas principalmente da
distribuio dos custos entre vrios clientes.
Reuso, extensibilidade e adaptabilidade so
essenciais para viabilizar tal distribuio.

Importncia da Engenharia de
Software

Qualidade de software e produtividade


garantem:
Disponibilidade

de servios essenciais
Segurana de pessoas
Competitividade das empresas
Produtores

Consumidores

Mas, na realidade, temos a Crise de


Software...

25% dos projetos so cancelados


o tempo de desenvolvimento bem maior do
que o estimado
75% dos sistemas no funcionam como
planejado
a manuteno e reutilizao so difceis e
custosas
os problemas so proporcionais a
complexidade dos sistemas

Causas da Crise de Software

Essncias
Complexidade

dos sistemas
Dificuldade de formalizao

Acidentes
M

qualidade dos mtodos, linguagens,


ferramentas, processos, e modelos de ciclo de
vida
Falta de qualificao tcnica

Elementos e Atividades da
Engenharia de Software

Elementos
Modelos do ciclo de
vida do software
Linguagens
Mtodos
Ferramentas
Processos

Atividades

Modelagem do negcio
Elicitao de requisitos
Anlise e Projeto
Implementao
Testes
Distribuio
Planejamento
Gerenciamento
Gerncia de Configurao
e Mudanas
Manuteno

Atividades e Artefatos da
Engenharia de Software

Artefatos
Plano de Negcios
Modelagem do negcio
Plano de Projeto
Elicitao de requisitos
Plano de Riscos
Anlise e Projeto
Documento de Requisitos
Implementao
Testes
Mapeamentos A&P
Distribuio
Documento de Caso de Uso
Planejamento
Documento de Arquitetura
Gerenciamento
Classes
Gerncia de Configurao e
Documento de Testes
Mudanas
Documento de Validao
Manuteno
Manual do Sistema

Atividades

O que um modelo de ciclo de vida


de processo de software?

Uma representao abstrata e simplificada


do processo de desenvolvimento software,
tipicamente mostrando as principais
atividades e dados usados na produo e
manuteno de software

Modelos do Ciclo de Vida de


Software

Cascata
Modelos Iterativos
Espiral

Incremental

...

(ex: do RUP)

Modelo Cascata

Modelo Cascata na Prtica

Modelos Iterativos

Requisitos de sistema SEMPRE evoluem


durante curso de um projeto. Assim a iterao
do processo sempre faz parte do
desenvolvimento de grandes sistemas
Iteraes podem ser aplicadas a quaisquer dos
modelos de de ciclo de vida
Duas abordagens (relacionadas)
Desenvolvimento

espiral
Desenvolvimento incremental

Desenvolvimento Espiral

Acrescenta aspectos gerenciais ao processo de


desenvolvimento de software.
anlise de riscos em intervalos regulares do processo de
desenvolvimento de software
planejamento
controle
tomada de deciso
O processo representado como uma espiral em vez de
uma seqncia de atividades
Cada volta na espiral representa uma fase no processo
No h fases fixas como especificao ou projeto - voltas na
espiral so escolhidas dependendo do que requerido
Riscos so avaliados explicitamente e resolvidos ao longo
do processo

Desenvolvimento Espiral

Desenvolvimento Incremental

Em vez de entregar o sistema como um todo, o


desenvolvimento e a entrega so divididos em
incrementos, com cada incremento entregando
parte da funcionalidade requerida
Requisitos dos usurios so priorizados e os
requisitos de mais alta prioridade so includos
nas iteraes iniciais
Uma vez que o desenvolvimento de um
incremento iniciado, os requisitos so
"congelados". Embora os requisitos possam
continuar a evoluir para incrementos posteriores

Desenvolvimento Iterativo e
Incremental (do RUP)

Linguagem

Notao com sintaxe e semntica bem


definidas
com

representao grfica ou textual

Usada para descrever os artefatos gerados


durante o desenvolvimento de software
Exemplos: UML, Java

Mtodo

Descrio sistemtica de como deve-se


realizar uma determinada atividade ou tarefa
A descrio normalmente feita atravs de
padres e guias
Exemplos: Mtodo para descoberta das
classes de anlise no RUP.

Ferramenta CASE

Prov suporte computacional a um


determinado mtodo ou linguagem
Ambiente de desenvolvimento: conjunto de
ferramentas integradas (CASE)
Exemplos: Rational Rose, JBuilder

Processo

Conjunto de atividades
bem

definidas
com responsveis
com artefatos de entrada e sada
com dependncias entre as mesmas e ordem
de execuo
com modelo de ciclo de vida

Processo de software

Um conjunto de atividades cujo objetivo o


desenvolvimento ou a evoluo do software
Conjunto coerente de atividades para
especificao, projeto, implementao e teste
de sistemas de software

Metodologia

Conjunto de mtodos + processo

Pontos principais

Engenharia de software uma disciplina de engenharia


que est envolvida com todos os aspectos da produo
de software
Produtos de software consistem de programas
desenvolvidos e documentao associada. Alguns
atributos
de
qualidade
do
produto
so
manutenibilidade, eficincia e usabilidade
O processo de software consiste nas atividades que
so envolvidas no desenvolvimento de produtos de
software

Pontos principais

Mtodos so formas organizadas de produzir software.


Eles incluem sugestes para o processo a ser seguido,
as notaes a serem usadas, regras que governam as
descries do sistema que so produzidas e diretrizes
de projeto
Ferramentas CASE so sistemas de software que so
projetados para suportar as atividades rotineiras no
processo de software, como edio de diagramas de
projeto e verificao de consistncia dos diagramas

Leitura adicional

Daniel M. Berry. Myths and Realities in


Software Development.
W. Wayt Gibbs. Software's chronic crisis.
Scientific American, September 1994.
Alan Joch. How software doesn't work. Byte,
December 1995.

Cenas do prximo captulo

Processos de Software existentes


Processo que iremos utilizar