Escolar Documentos
Profissional Documentos
Cultura Documentos
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,