Sei sulla pagina 1di 43

INE 5417 Engenharia de Software I

Profa. Patrcia Vilain


2008.2

Contedo
1. Introduo 2. Levantamento de Requisitos 3. Anlise Orientada a Objetos 4. Projeto Orientado a Objetos 5. UML 6. Mtodos geis

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)

Tipos de Produto de Software


Produtos Genricos (Pacotes): sistemas desenvolvidos para serem adquiridos (com ou sem custo) por qualquer cliente. Exemplos: banco de dados, processador de texto, ferramentas para desenho, compactador. Produtos Customizados (Encomenda): sistemas desenvolvidos especialmente para um cliente. Exemplos: sistema de controle para dispositivos eletrnicos, sistemas de controle do trfego areo.

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 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. a aplicao de mtodos, ferramentas e processos na construo de software de alta qualidade. mtodos: detalhes de como fazer para construir o software. ferramentas: apoio automatizado ou semi-automatizado aos mtodos. processo: conjunto de todas as atividades relacionadas ao desenvolvimento, validao, manuteno e gerenciamento.

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

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.

Etapas do Processo de Software


Apesar de existirem diferentes processos para o desenvolvimento de software, no geral, todos os processos apresentam as seguintes atividades: Especificao: A funcionalidade do software e restries da sua operao so definidas. Design e Implementao: Converte a especificao do sistema em um sistema executvel. Validao: O software validado para assegurar que faz o que o usurio deseja. Evoluo: O software deve evoluir para incluir as mudanas resultantes das novas necessidades do cliente.

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 Design
Anlise: Especifica o comportamento do sistema sem considerar um ambiente de implementao. Focaliza o O QUE?. Anlise OO: investigao dos objetos do domnio Design: Especifica como o sistema dever ser implementado. Focaliza o COMO?. Design 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.
Jogador nome 1 joga 1 1 JogoDados 2 inclui Dado valorFace

Identificao dos conceitos, atributos e associaes.

Exemplo - Design
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.
:JogoDados dado1:Dado dado2:Dado

Usurio joga

rola valor1:=obtemValorFace():int rola valor2:=obtemValorFace():int

Exemplo - Design
4. Definio dos Diagramas de Classes de Design (Viso esttica) Diagramas de classes de design: descrio dos objetos de software.
JogoDados -dado1:Dado -dado2:Dado +joga:void
1 2

Dado -valorFace:int +obtemValorFace:int +rola:void

Exemplo
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.. Inicialmente definido um esboo da arquitetura; em seguida os casos de uso mais importantes so especificados em termos de subsistemas e classes; e a medida que outros casos de uso so especificados, a arquitetura melhor definida.

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.

Processo Unificado
Uma srie de ciclos so repetidos durante a vida do sistema. Cada ciclo consiste de quatro fases: concepo, elaborao, construo e transio.

Fases do Processo Unificado


Fase de Concepo (Inception Phase) 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.

Fases do Processo Unificado


Cada fase subdividida em iteraes.
Concepo
Iterao #1 Iterao #2...

Elaborao
... ... ...

Construo
... ...

Transio
Iterao n-1 Iterao n...

Verses

Cada iterao apresenta os workflows de requisitos, anlise, design, implementao e testes.

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
Poderiamos ter um projeto com sucesso entregando uma documentao sem software funcionando? Poderiamos ter um projeto com sucesso entregando um software funcionando sem nenhuma documentao?

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


Um sistema de ponto de venda uma aplicao computadorizada usada para registrar compras e manipular pagamentos; tipicamente usado em uma loja de varejo. Ele inclui componentes de hardware, tais como um computador e scanner de cdigo de barra, e software para rodar o sistema. Ele interfaceia com vrias aplicaes, tais como uma calculadora de impostos e um controle de estoque. Estes sistemas devem ser relativamente tolerantes a falhas; ou seja, mesmo que servios remotos estejam temporariamente indisponveis (tais como o sistema de controle de estoque), eles devem ser capazes de capturar as vendas e manipular no mnimo os pagamentos em dinheiro (assim a loja no pra de funcionar). Um sistema de ponto de venda deve incrementalmente dar suporte a vrios e diferentes terminais e interfaces no lado do cliente. Estes incluem um terminal de browser Web como cliente thin, um computador contendo algo como uma interface com o usurio grfica Java Swing, entrada touch screen, e assim por diante. Alm disso, o sistema de ponto de venda ser vendido para diferentes clientes com diferentes necessidades em termos do processamento das regras de negcio. Cada cliente desejar executar uma lgica prpria em determinados pontos previsveis nos cenrios de uso do sistema, tais como quando uma nova venda iniciada ou quando um novo item de linha adicionado. Portanto, ser necessrio um mecanismo para oferecer esta flexibilidade e customizao.

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

Potrebbero piacerti anche