Você está na página 1de 39

INE 5417

Engenharia de Software I
Prof
a
. Patrcia Vilain
2010.2

Contedo
1. Introduo
2. Levantamento de Requisitos
3. Anlise Orientada a Objetos
4. Projeto Orientado a Objetos
5. UML
Introduo
O que Software?
Software Programa de Computador
Software = conjunto de programas
+
arquivos de configurao
+
documentao do sistema
(descreve a estrutura do sistema)
+
documentao do usurio
(explica como usar o sistema)
O que Engenharia de Software (ES)?
uma disciplina de engenharia que est relacionada com todos os
aspectos da produo de software, desde os estgios iniciais da
especificao at a manuteno. [Sommerville]
- processos tcnicos de desenvolvimento de sw
- atividades como gerenciamento de projetos de sw
- desenvolvimento de ferramentas, mtodos e teorias
que dem apoio produo de sw.
Para que ES?
Para solucionar o aumento da demanda de software.
Para solucionar o aumento do custo.
Para solucionar os problemas do software:
estimativas de prazo e de custo imprecisas
qualidade no adequada
manuteno
complexidade (difcil entender um sw grande como um todo)
O que Processo de Software?
Um processo de software um conjunto de atividades e resultados que
produzem um produto de software.
Processos de software diferentes organizam essas atividades de
maneiras diferentes e so descritas em nveis de detalhes diferentes.
Processos de Software
Processos de Software so complexos e dependem do julgamento e
criatividade humana
Tentativas de automatizao do processo de software no tem muito
sucesso
Etapas do Processo de Software
Apesar de existirem diferentes processos para o desenvolvimento de
software, no geral, todos os processos apresentam as seguintes
atividades:

A funcionalidade do software e restries da sua
operao so definidas.
Converte a especificao do sistema em
um sistema executvel.
O software validado para assegurar que faz o que o
usurio deseja.
O software deve evoluir para incluir as mudanas
resultantes das novas necessidades do cliente.
Especificao:
Evoluo:
Validao:
Projeto e Implementao:
Especificao do Software
Define quais os servios que o sistema deve oferecer (requisitos
funcionais) e as restries sobre as operaes e o desenvolvimento do
sistema (requisitos no funcionais).
Etapa crtica do processo de software.
Os requisitos so detalhados em dois nveis:
para os usurios e clientes: uma especificao dos requisitos em alto
nvel;
Levantamento (ou Anlise) de Requisitos
para os desenvolvedores: uma especificao detalhada do sistema.
Anlise
Anlise x Projeto (Design)
Anlise: Especifica o comportamento do sistema sem considerar um
ambiente de implementao. Focaliza o O QUE?.
Anlise OO: investigao dos objetos do domnio
Projeto: Especifica como o sistema dever ser implementado. Focaliza
o COMO?.
Projeto OO: Enfatiza a definio dos objetos do software e como eles
colaboram, ao invs da sua implementao.
Exemplo
Passos de um Projeto (Project) OO
Jogo de Dados: um jogador joga dois dados. Se o total for 7, ele
ganha, seno, perde.
Etapas:
1. Definio dos Casos de Uso
2. Definio de um Modelo de Domnio
3. Definio dos Diagramas de Interao
4. Definio dos Diagramas de Classes de Projeto
Exemplo - Levantamento de Requisitos
1. Definio dos Casos de Uso
Caso de Uso: estria de uso do sistema.
Caso de uso Jogar um jogo de dados:
O jogador pede para jogar os dados. O sistema apresenta o resultado:
se a soma das faces dos dados for 7, ele ganha; seno, perde.
Exemplo - Anlise
2. Definio de um Modelo de Domnio
Modelo do domnio: descreve os conceitos do mundo real, sob a
perspectiva de objetos.
Identificao dos conceitos, atributos e associaes.
1
2
inclui
1
1
joga
Dado
valorFace
Jogador
nome
JogoDados
Exemplo - Projeto
3. Atribuio das Responsabilidades dos Objetos e Definio dos
Diagramas de Interao (Viso dinmica)
Diagrama de interao: mostra a troca de mens. entre os objetos de sw.
Usurio
dado1:Dado :JogoDados dado2:Dado
valor2:=obtemValorFace():int
rola
valor1:=obtemValorFace():int
rola
joga
Exemplo - Design
4. Definio dos Diagramas de Classes de Projeto (Viso esttica)
Diagramas de classes de projeto: descrio dos objetos de
software.
Dado
-valorFace:int
+obtemValorFace:int
+rola:void
JogoDados
-dado1:Dado
-dado2:Dado
+joga:void
2 1
Exemplo
... continuao:
Implementao e Testes de Unidade
Testes de Integrao e Sistema
Validao
Evoluo
UML
(Unified Modeling Language)
UML
A UML uma linguagem visual para especificao, construo e
documentao de artefatos de sistemas.
[OMG - Object Management Group]
A UML uma notao diagramtica.
Processo Unificado
(Unified Process)
Processo Unificado
um processo genrico de software que pode ser especializado
Utiliza a UML (Unified Modeling Language) como notao.
Caractersticas:
Direcionado por Caso de Uso
Centrado na Arquitetura
Iterativo e Incremental
Processo Unificado
Direcionado por Caso de Uso
Os casos de uso descrevem a funcionalidade completa do sistema.
Direcionam o design, implementao e teste.
Processo Unificado
Centrado na Arquitetura
A arquitetura define os aspectos estticos e dinmicos mais
significantes do sistema.
A arquitetura influenciada por:
plataforma do sw (e.g. arquitetura do computador, sistema
operacional, SGBD, protocolos para comunicao);
blocos que sero reusveis (e.g. framework para interface
grfica);
sistemas legados; requisitos no-funcionais, etc.
Processo Unificado
Iterativo e Incremental
O desenvolvimento dividido em mini-projetos. Cada mini-projeto
uma iterao que resulta em um incremento.
Vantagens do desenvolvimento iterativo:
Os clientes no precisam esperar o desenvolvimento de todo o
sistema (parte com os requisitos crticos j estar pronta).
Feedback e envolvimento do usurio desde o incio leva a um
sistema que melhor satisfaz as necessidades dos stakeholders.
Existe um baixo risco de que todo o projeto (project) falhe.
Fases do Processo Unificado
Uma srie de ciclos so repetidos durante a vida do sistema.

Cada ciclo consiste de quatro fases:
Fase de Concepo: estudo rpido do sistema proposto a partir de
uma viso do produto final. (Continuar ou no o projeto?)
Fase de Elaborao: a maioria dos casos de uso so especificados
detalhadamente e a arquitetura do sistema projetada (modelo de
casos de uso, modelo de anlise, modelo de design, etc.).
Fase de Construo: o produto construdo e torna-se operacional.
Fase de Transio: o produto entra na fase de teste beta: um nmero
reduzido de usurios experientes utilizam o produto e identificam
defeitos e deficincias.
Cada fase subdividida em iteraes.
Cada iterao apresenta os workflows de requisitos, anlise, design,
implementao e testes.
Fases do Processo Unificado
Concepo Elaborao Construo Transio
Iterao
#1
Iterao
#2...
Iterao
n...
Iterao
n-1
... ... ... ... ...
Verses
Fases do Processo Unificado

Desenvolvimento Iterativo e
Evolucionrio
Desenvolvimento Iterativo e Evolucionrio
Desenvolvimento Iterativo:
O desenvolvimento organizado em sries de pequenos mini-
projetos de tamanho fixo, chamados de iteraes.
Cada iterao inclui as atividades de anlise, design, implementao
e teste.
Desenvolvimento Evolucionrio:
O sistema cresce incrementalmente (evolui), a cada iterao.
Desenvolvimento Iterativo e Evolucionrio
A sada de uma iterao no um prottipo experimental ou
descartvel (throw-away), ou seja, o desenvolvimento iterativo no
prototipao.
A sada um subconjunto do sistema final.
Mtodos geis
Mtodos geis
Aplicam o desenvolvimento iterativo e evolucionrio,

empregam o planejamento adaptativo,

promovem a entrega incremental,

e incluem outros valores e prticas que encorajam a agilidade


(resposta rpida e flexvel s mudanas).
Mtodos geis
Valores do Manifesto gil
Indivduos e interaes valem mais que processos e ferramentas.
Um software funcionando vale mais que uma documentao
extensa.
A colaborao do cliente vale mais que a negociao de contrato.
Responder a mudanas vale mais que seguir um plano.

Apesar dos itens da direita serem importantes, os itens da esquerda so


considerados mais importantes que os itens da direita.
Mtodos geis
Princpios geis
1. A prioridade satisfazer ao cliente atravs de entregas de software
contnuas e freqentes.
2. Receber bem as mudanas de requisitos, mesmo em uma fase
avanada, dando aos clientes vantagens competitivas.
3. Entregar software em funcionamento com freqncia de algumas
semanas ou meses, sempre na menor escala de tempo.
4. As equipes de negcio e de desenvolvimento devem trabalhar
juntas diariamente durante todo o projeto (project).
5. Manter uma equipe motivada fornecendo ambiente, apoio e
confiana necessrios para a realizao do trabalho.
6. A maneira mais eficiente da informao circular dentro da equipe
atravs de uma conversa face-a-face.
Mtodos geis
Princpios geis (continuao)
7. Ter o software funcionando a melhor medida de progresso.
8. Processos geis promovem o desenvolvimento sustentvel. Os
financiadores, desenvolvedores e usurios devem ser capazes de
manter um ritmo constante.
9. Ateno contnua a excelncia tcnica e a um bom projeto
aumentam a agilidade.
10. Simplicidade essencial.
11. As melhores arquiteturas, requisitos e projetos provm de equipes
organizadas.
12. Em intervalos regulares, a equipe deve refletir sobre como se tornar
mais eficaz e ento se ajustar e adaptar seu comportamento.
Estudos de Caso
Estudo de Caso 1: Sistema Ponto de Venda
Aplicao computadorizada para uma loja de varejo.
Objetivo: registrar compras e manipular pagamentos.
Computador, scanner para cdigo de barra e software para rodar o
sistema.
Interface com outras aplicaes (calculadora de impostos, controle do
estoque).
Tolerante a falhas.
Vrios terminais com browser Web no lado do cliente (thin).
Customizvel.
Estudo de Caso 2: Banco Imobilirio

Simulao do Banco Imobilirio: uma pessoa inicia o jogo e indica o
nmero de jogadores que sero simulados, e ento fica observando
enquanto o jogo vai sendo jogado automaticamente.
Estudo de Caso 3: Sistema de Reviso

Sistema de Reviso de Conferncia: suporte ao processo de
submisso, avaliao e seleo de artigos para uma conferncia
qualquer.
Funes do Sistema:
Submisso de um artigo
Atribuio de artigos aos avaliadores
Entrada de uma reviso
Escolha dos artigos aceitos e rejeitados

Você também pode gostar