Você está na página 1de 36

1

Viso Geral sobre a


Engenharia de Software
Prof. Jos Wilson
j.wilson.df@gmail.com
2
O Que voc quer ser quando crescer?
3
Objetivo da aula
Depois desta aula voc ter uma viso
sobre o que a engenharia de software,
os seus objetivos e conceitos bsicos.


4
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

5
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
6
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
7
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
Caractersticas da Engenharia de Software
8
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
O software deve evoluir para atender os
requisitos que mudam
Eficincia
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
9
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)
10
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
11
Qualidade de Software
(um exemplo para o Varejo)
Aberto, compatvel, de fcil integrao
com outros sistemas
A empresa j tem controle de estoque,
fidelizao, etc.
Portvel e independente de plataforma
(hw e sw)
A empresa opta por uma determinada
plataforma
Baixo custo de instalao e atualizao
A empresa tem um grande nmero de PDVs

12
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



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



14
Importncia da Engenharia de
Software
Qualidade de software e
produtividade garantem:
Disponibilidade de servios essenciais
Segurana de pessoas
Competitividade das empresas
Produtores
Consumidores
15
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
16
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
17
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
18
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
19
Modelos do Ciclo de Vida de Software
Cascata
Modelos Iterativos
Espiral
Incremental (ex: do RUP, do XP)
...
20
Modelo Cascata
21
Modelo Cascata na Prtica
22
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
23
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
24
Desenvolvimento Espiral
25
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
26
Desenvolvimento Iterativo e Incremental (do RUP)
27
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
28
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.

29
Ferramenta CASE
Prov suporte computacional a um
determinado mtodo ou linguagem
Ambiente de desenvolvimento: conjunto
de ferramentas integradas (CASE)
Exemplos: Rational Rose, JBuilder
30
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
31
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
32
Metodologia
Conjunto de mtodos + processo
33
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
34
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
35
"Somos o que fazemos, mas somos,
principalmente, o que fazemos para
mudar o que somos."
Eduardo Galeano
36
Perguntas