Instituto Federal de Educao, Cincia e Tecnologia IFALBacharelado em Sistemas de Informao
Anlise e Projeto de Sistemas
Prof. MSc. Ricardo R NunesRicardo (arroba) ifal.edu.br
Agenda Desenvolvimento de Sistemas OO UML Processo de desenvolvimento Processo Unificado (UP) e suas atividades Anlise e Projeto de Sistemas Design Patterns
2
Objetivo Apresentar um conjunto de informaes
prticas que possibilite a compreenso e utilizao da orientao a objetos de forma consciente e eficaz em processos de anlise e projeto de sistemas
Compreenso dos conceitos de anlise e projeto de sistemas, processo de desenvolvimento e UML
3
Desenvolvimento de Sistemas Orientados a Objetos
Como desenvolver OO?
Utilizar linguagem OO? Utilizar parte de um processo OO? Utilizar classes. Como foram desenvolvidos os
mtodos? Utilizar ferramentas CASE para criar diagramas
UML?
4
Desenvolvimento de Sistemas Orientados a Objetos (2)
Comprar um martelo no transforma voc em um
arquiteto; pode ser necessrio, mas no
suficiente
5
Desenvolvimento de Sistemas Orientados a Objetos (3)
O uso de diagramas no vai melhorar necessariamente a
qualidade do software produzido
6
Desenvolvimento de Sistemas Orientados a Objetos (4)
O que preciso para desenvolver OO? Conhecer as tcnicas de delegao e
distribuio de responsabilidades e desenvolver cdigo reusvel e baixo acoplamento, de acordo com padres de projeto
7
Desenvolvimento de Sistemas Orientados a Objetos (5)
Componentes do desenvolvimento de software Anlise e projeto OO Linguagem de modelagem (UML?) Processo de desenvolvimento Padres de projeto (Design patterns) Linguagem de programao (Java, Python?)
8
UML O que UML?
Metodologia?
Unified Modeling Language (Linguagem de Modelagem Unificada)
9
UML (2) Conhecer a linguagem X Criar bons artefatos
Escrever bons projetos como escrever poesia. No basta conhecer a linguagem. preciso
dominar certas tcnicas de escrita.
10
UML (3) Breve histrico da UML
1994 James Rumbaugh e Grady Booch criaram a Rational
1995 Unificaram suas linguagens de diagramas
1996 Ivar Jacobson adicionou casos de uso e outras notaes ao sistema de
diagramas
11
UML (4) Famlias de diagramas
Diagramas estruturais diagramas de pacotes, classes, objetos, estrutura
composta, componentes e distribuio. Diagramas comportamentais
diagramas de casos de uso, atividades e mquina de estados.
Diagramas de interao diagramas de comunicao, sequncia, tempo e viso
geral de integrao. Quais diagramas utilizar?
12
Processo de Desenvolvimento
Um processo um conjunto de passos que define quem est fazendo o que, quando e como para alcanar determinado objetivo
13
Exemplo 01
14
Exemplo 02
15
Processo de Desenvolvimento de Software (1)
Uma linguagem de modelagem no suficiente
Precisamos tambm de um processo de desenvolvimento Linguagem de modelagem + processo de
desenvolvimento = mtodo (ou metodologia) de desenvolvimento
No objetivo da disciplina estudar processos de desenvolvimento
16
Processo de Desenvolvimento de Software (2)
Fases
Anlise
Projeto
Implementao
Teste
17
Anlise (1) Enfatiza a investigao do problema
Objetivo de levar o analista a investigar e a descobrir
Para que esta etapa seja realizada em menos tempo e de forma mais precisa, deve-se ter um bom mtodo de trabalho
18
Anlise (2) A qualidade do processo de anlise
importante porque um erro de concepo resolvido na fase de anlise tem um custo menor do que se resolvido em qualquer outra fase
19
Anlise (3)
20
Projeto Enfatiza a proposta de uma soluo que
atenda os requisitos da anlise
Ento, se a analise uma investigao para tentar descobrir o que o cliente quer, o projeto consiste em propor uma soluo com base no conhecimento adquirido na anlise
21
Implementao A utilizao de tcnicas sistemticas nas
fases de anlise e projeto faz com que o processo de gerao de cdigo possa ser automatizado
Neste caso, cabe ao programador dominar as caractersticas especficas das linguagens, ferramentas, frameworks e estruturas de dados para adaptar o cdigo gerado aos requisitos indicados quando necessrio
22
Testes (1) Envolve
Testes de unidade, feitos pelo programador, para verificar se os componentes gerados atendem especificao do projetista
Testes de caso de uso, normalmente efetuados por um analista experiente, que visam verificar a adequao do sistema aos requisitos inicialmente levantados
23
Testes (2)
24
Processo de Desenvolvimento de Software (3)
25
Processo Unificado - UP Proposto por Grady Booch, James Rumbaugh e Ivar
Jacobson (1999) Valores
dirigido por casos de uso planejamento feito em funo dos casos de uso identificados,
tratando-se prioritariamente os mais complexos centrado na arquitetura
desenvolvimento prioriza a construo de uma arquitetura de sistema que permita a realizao dos requisitos
Baseia-se na identificao de uma estrutura de classes, produzida a partir de um modelo conceitual
iterativo e incremental a cada ciclo de trabalho realizado, novas caractersticas so
adicionadas arquitetura do sistema, deixando-a mais completa e mais prxima do sistema final
26
Dirigido por casos de uso
27
UP Centrado na Arquitetura (1)
28
UP Centrado na Arquitetura (1)
29
Iterativo X Incremental
30
Processo Unificado UP (2) Fases
Concepo, elaborao, construo e transio
31
Processo Unificado UP (2) Concepo, elaborao, construo e
transio
32
Processo Unificado UP (3) Fases
Concepo: incorpora o estudo de viabilidade, o levantamento dos requisitos e uma parte da sua anlise
Elaborao: incorpora o detalhamento da anlise de requisitos, a modelagem de domnio e o projeto
Construo: corresponde programao e testes Transio: consiste na instalao do sistema e
migrao de dados
33
Processo Unificado UP (4) Concepo:
Inception, em ingls Realiza-se o levantamento dos requisitos e
compreende-se o sistema de forma abrangente Resultados
Documento de requisitos e riscos Listagem de casos de uso de alto nvel Cronograma de desenvolvimento baseado nesses
casos de uso
34
Processo Unificado UP (5) Elaborao e construo
Ocorrem em ciclos iterativos Elaborao incorpora a maior parte da anlise e
projeto Construo incorpora a maior parte da
implementao e testes Durante os ciclos iterativos propriamente ditos
que acontece a anlise detalhada do sistema, a modelagem de domnio e o projeto do sistema usando os padres de projeto
35
Processo Unificado UP (6) Transio
depois de pronto, o sistema ser implantado substituindo o sistema atual
36
Processo Unificado UP (6) O UP como um processo gil
poucos artefatos e burocracia, permitindo o desenvolvimento de software de forma eficiente
o cliente deseja o software pronto e no uma pilha de documentos
documentao deve ser dirigida produo do software
Atividade realizadas com objetivo claro e utilizao precisa, visando produo de cdigo que atenda aos requisitos da melhor forma possvel no menor tempo
37
As Atividades de APno Contexto do UP
As diferentes nfases das atividades de desenvolvimento ao longo das quatro fases do Processo Unificado (fonte: IBM).
38
Retomando a discusso sobre Anlise e Projeto...
...para se chegar em Anlise e Projeto OO
O que so Anlise e Projeto? Primeira alternativa:
A anlise modela o problema e consiste das atividades necessrias para entender o domnio do problema (o que deve ser feito). uma atividade de investigao.
O projeto modela a soluo e consiste das atividades de criao (como pode ser feito)
40
O que so Anlise e Projeto?
41
O que so Anlise e Projeto? Segunda alternativa:
A anlise consiste de todas as atividades feitas com ou para o conhecimento do cliente. A informao produzida aquela que o cliente deve discutir e aprovar
O projeto inclui as atividades que resultam em informao que interessa apenas ao programador
Com essa definio, a anlise invade um pouco o "lado da soluo", pois o cliente deve discutir alguns tipos de interaes que ocorrero na interface do usurio, etc.
42
O que so Anlise e Projeto?
43
O que so Anlise e Projeto? Observe, portanto, que no h definio binria que
isole "anlise" de "projeto" Nesta disciplina, adotaremos a segunda alternativa,
pois queremos associar as palavras "anlise" e "projeto" aos artefatos entregues no final de cada fase Um modelo de anlise deve ser aprovado pelo cliente e
pode incluir alguma (pequena) discusso da soluo, principalmente no que diz respeito interface com usurio, etc.
44
O que Anlise e Projeto Orientados a Objeto (APOO)?
A perspectiva empregada de objetos (coisas, conceitos ou entidades)
Durante a Anlise OO, a nfase est em achar e descrever objetos (ou conceitos) no domnio do problema Por exemplo, num sistema de informao para
uma biblioteca, alguns dos conceitos so Livro, Biblioteca, Usurio.
Tais objetos podem ter atributos e responsabilidades
45
O que Anlise e Projeto Orientados a Objeto (APOO)?
Durante o projeto orientado a objeto, a nfase est em achar objetos lgicos de software que podero ser eventualmente implementados usando uma linguagem de programao OO Tais objetos podem ter atributos e mtodos
46
O que Anlise e Projeto Orientados a Objeto (APOO)?
Cuidado! No verdade que haja correspondncia 1-para-
1 entre entidades no modelo de anlise e entidades no modelo de projeto
Pode haver entidade do modelo de anlise que no ser representado no Projeto ( raro)
Pode haver entidade adicional no projeto ( frequente)
Exemplo: Conexo de banco de dados, objeto controlador, cache de objetos, etc.
47
O que Anlise e Projeto Orientados a Objeto (APOO)?
Durante a construo (programao OO), os objetos do projeto so implementados e testados
48
Acabou? Posso comear a construir software?
Quase...
49
Software Deselegante O software deselegante aquele software
feito sem uma estrutura clara O software deselegante aquele do qual no
se consegue reusar partes e que no se consegue entender como funciona sem uma boa carga de documentao (e muitas vezes nem assim).
tambm aquele no qual uma pequena modificao em uma de suas caractersticas pode causar um no funcionamento generalizado
50
Software Elegante O software elegante o software cuja
estrutura intrinsecamente mais fcil de compreender, que autodocumentado e pode ser compreendido em nvel macro ou em detalhes.
Ele mais fcil de modificar: quando alguma de suas caractersticas mudada, ele continua funcionando.
51
Solues para prover elegncia (1) Padres de Projeto (Design Patterns)
52
Solues para prover elegncia (2) Padres de Projeto (Design Patterns)
lies aprendidas ao longo dos anos em diferentes projetos
Cada pattern descreve um problema que ocorre vrias vezes ao nosso redor e com isso, descrevem a soluo para o problema de uma maneira que voc pode usar essa soluo diversas vezes sem ter que fazer a mesma coisa duas ou mais vezes.
53
Exemplo Padro de Projeto (1) Em interfaces grficas um elemento grfico pode
ser constitudo pela composio de vrios outros elementos grficos.
Uma janela pode conter um ou mais cones, uma caixa de texto e vrios outros elementos grficos -at mesmo outra janela
54
Exemplo Padro de Projeto Considerando que uma determinada hierarquia de
classes indicasse ElementoGrfico como a super-classe comum a todas classes que representassem os elementos grficos atmicos, a classe Janela seria representada como uma classe que contm zero (0) ou mais elementos grficos
55
Exemplo Padro de Projeto
56
Referncias / Leituras Obrigatrias
Captulo 1 Raul Sidnei Wazlawick. Anlise e projeto de
sistemas de informao orientados a objetos. 2 Ed. Rio de Janeiro: Elsevier, 2011. (Srie SBC, Sociedade Brasileira de Computao)
Captulo 1 Larman, Craig. Utilizando UML e Padres: Uma
introduo anlise e ao projeto orientado a objetos. Porto Alegre: Bookman, 2000.
57
Leituras Fortemente Recomendadas
Captulo 2 Larman, Craig. Utilizando UML e Padres: Uma
introduo anlise e ao projeto orientado a objetos. Porto Alegre: Bookman, 2000.
58
Outras Referncias1. JACOBSON, Ivar; BOOCH, Grady;
RUMBAUGH; James; The Unified Software Developmente Process. Massachusetts: Addison-Wesley, 199. 463p
2. http://www.princiweb.com.br/blog/programacao/design-patterns/o-que-sao-design-patterns.html
3. http://pt.wikipedia.org/wiki/Composite
59
Exerccios (1)1. Discuta o papel da UML para anlise e projeto de sistemas
de informao?2. O que um artefato?3. O que um processo de desenvolvimento de software?4. Explique os valores do Processo Unificado?5. Descreva cada uma das fases do processo unificado.6. Discuta sobre como as atividades so organizadas e
realizadas dentro de cada fase no processo unificado.7. Qual a diferena entre anlise e projeto de sistemas?8. O que so Padres de Projeto (design patterns)?
60
Exerccios (2)1. Pesquise sobre 3 processos de
desenvolvimento de software e faa um breve comentrio sobre cada um deles.
2. Pesquise sobre exemplos de artefatos da UML para resolver um problema especfico. Apresente esse exemplo em sala de aula. Certifique-se que compreende o exemplo para explic-lo.
61
Exerccios (3)1. Escreva um texto discutindo a diferena
entre o processo de desenvolvimento em cascata e um processo de desenvolvimento iterativo e incremental.
1. Descreva como funciona cada um desses processos
2. Discuta as diferenas entre eles, bem como suas vantagens
62