Vous êtes sur la page 1sur 57

UFU Universidade Federal de Uberlndia

FACOM Faculdade de Computao

GSI030 ENGENHARIA DE SOFTWARE

Aula 08 Projeto e Implementao

Prof. William Chaves de Souza Carvalho


Tpicos cobertos

Projeto orientado a objetos com UML

Padres de projeto

Questes de implementao

Desenvolvimento open source


Projeto e implementao

O projeto e implementao de software o estgio no processo


de engenharia de software no qual um sistema de software
executvel desenvolvido.

As atividades de projeto e implementao de software so


invariavelmente intercaladas.

O projeto de software uma atividade criativa na qual voc


identifica os componentes de software e seus
relacionamentos baseando-se nos requisitos do cliente.

A implementao o processo de realizao do projeto em


um programa.
Construir ou comprar

Nas mais variadas reas, j possvel comprar sistemas de


prateleira (COTS Commercial Off-The-Shelf) que podem ser
adaptados aos requisitos dos usurios.

Por exemplo, se voc quer implementar um sistema de


pronturio mdico, voc pode comprar um pacote que j
usado em hospitais. Pode ser mais barato e mais rpido
usar essa abordagem ao invs de desenvolver um sistema
em uma linguagem de programa convencional.

Quando voc desenvolve uma aplicao dessa forma, o processo


de projeto passa a se preocupar em como usar os recursos de
configurao deste sistema para cumprir os requisitos desse.
O processo de projeto orientado a
objetos
Os processos de projeto orientados a objetos envolvem o
desenvolvimento de vrios modelos diferentes de sistema.

Eles precisam de muito esforo no desenvolvimento e na


manuteno desses modelos e, para sistemas pequenos, talvez
no tenham um bom custo-benefcio.

No entanto, para sistemas de grande porte, desenvolvidos por


diferentes grupos, os modelos de projeto so um importante
mecanismo de comunicao.
Estgios do processo
Existe uma grande variedade de diferentes processos de projeto
orientados a objetos, essa escolha depender da organizao
que est usando o processo.

As atividades comuns nesses processos incluem:

A definio do contexto e interaes do sistema;


O projeto de arquitetura do sistema;
A identificao dos principais objetos de classe do sistema;
O desenvolvimento dos modelos de projeto;
As especificaes de interface de objetos.

O processo ilustrado, usa um projeto para uma estao


meteorolgica no deserto.
Contexto e interaes de
sistema
Entender os relacionamentos entre o software que est sendo
desenvolvido e seu ambiente externo essencial na deciso de
como prover a funcionalidade requerida para o sistema e como
estruturar o sistema para se comunicar com seu ambiente.

Entender o contexto tambm lhe permite estabelecer os limites


do sistema.

Estabelecer os limites do sistema ajuda a decidir quais recursos


sero implementados no sistema que est sendo desenvolvido e
quais sero implementados em outros sistemas associados.
Modelos de contexto e de
interao

Um modelo de contexto de sistema um modelo estrutural que


mostra outros sistemas no ambiente do sistema que est sendo
desenvolvido.

Um modelo de interao um modelo dinmico que mostra


como o sistema interage com seu ambiente, durante o seu uso.
Contexto de sistema para a estao
meteorolgica
Os casos de uso da estao
meteorolgica
Descrio de caso de uso
Relatar clima
Projeto de arquitetura

Assim que as interaes entre o sistema e seu ambiente forem


entendidas, usa-se essa informao no projeto de arquitetura do
sistema.

Identificam-se
os componentes principais que compem o
sistema e suas interaes, e ento pode-se organizar os
componentes usando um padro de arquitetura como por
exemplo, um modelo em camadas ou cliente-servidor.

A estao meteorolgica composta de subsistemas


independentes que se comunicam atravs de transmisso de
mensagens em um infraestrutura comum.
Arquitetura de alto nvel da estao
meteorolgica
Arquitetura do sistema de coleta
de dados
Identificao das classes de
objetos
Geralmente, a identificao das classes de objetos uma parte
difcil do projeto orientado a objetos.

No existe uma frmula mgica para a identificao dos


objetos. Isso depende do conhecimento, da experincia e
habilidade dos projetistas de sistema.

A identificao de objetos um processo iterativo. Voc


provavelmente no conseguir acert-lo na primeira tentativa.
Abordagens de identificao
Use uma abordagem gramatical baseada em uma descrio em
linguagem natural do sistema (usada no mtodo Hood de projeto
orientado a objetos, Hood OOD).

Baseie a identificao em entidades tangveis no domnio da


aplicao.

Use uma abordagem comportamental e identifique os objetos


baseando-se em o qu participa de qual comportamento.

Use uma anlise baseada em cenrios.

Os objetos, atributos e mtodos em cada cenrio so


identificados.
Descrio da estao
meteorolgica
Uma estao meteorolgica um pacote de instrumentos
controlados por software que coletam dados, executam algum
processamento de dados e transmitem esse dados para
processamento posterior.

Os instrumentos incluem termmetros de cho e de ar, um


anemmetro, um cata-vento, um barmetro e um medidor de
chuva. Os dados so coletados periodicamente.

Quando um comando dado para transmitir os dados


meteorolgicos, a estao meteorolgica processa e resume os
dados coletados.

Os dados resumidos so transmitidos para o computador de


mapeamento quando um pedido recebido.
Classes de objeto da estao
meteorolgica
A identificao das classes de objeto no sistema de estao
meteorolgica pode se basear no hardware e em dados tangveis
do sistema:

Termmetro de cho, Anemmetro, Barmetro


Objetos do domnio da aplicao que so objetos de
hardware relacionados aos instrumentos do sistema.

Estao meteorolgica
A interface bsica da estao meteorolgica que a liga a
seu ambiente. Reflete as interaes identificadas no modelo
de caso de uso.

Dados meteorolgicos
Encapsula os dados resumidos dos instrumentos.
Classes de objeto da estao
meteorolgica
Modelos de projeto

Os modelos de projeto mostram os objetos e classes de objeto,


e os relacionamentos entre essas entidades.

Os modelos estticos descrevem a estrutura esttica do


sistema nos termos das classes de objetos e suas relaes.

Os modelos dinmicos descrevem as interaes dinmicas


entre os objetos.
Exemplos de modelos de
projeto
Os modelos de subsistemas que mostram os agrupamentos
lgicos de objetos em subsistemas coerentes.

Os modelos de sequncia que mostram a sequncia das


interaes dos objetos.

Os modelos de mquina de estados que mostram como objetos


individuais mudam de estado em resposta a eventos.

Outros modelos incluem modelos de casos de uso, modelos de


agregao, modelos de generalizao, etc.
Modelo de subsistema

Mostra como o projeto est organizado em grupos de objetos


relacionados logicamente.

Em UML, esses so apresentados usando pacotes um


construto encapsulador. Esse um modelo lgico. (no
encontrei isso no livro)

A organizao real dos objetos no sistema pode ser diferente.


Modelos de sequncia
Os modelos de sequncia mostram a sequncia das interaes
dos objetos que ocorrem.

Os objetos so organizados horizontalmente no topo;

O tempo representado verticalmente para que os modelos


sejam lidos de cima para baixo;

As interaes so representadas por setas com rtulos.


Diferentes estilos de setas representam diferentes tipos de
interao;

Um retngulo fino na linha de vida de um objeto representa


o momento em que o objeto o objeto controlador do
sistema.
Diagrama de sequncia descrevendo a
coleta de dados
Diagrama de estado
O diagrama de estado usado para mostrar como os objetos
respondem a diferentes pedidos de servios e as transies de
estado acionadas por esses pedidos.

Os diagramas de estado so modelos teis, de alto nvel, de um


sistema, ou do comportamento de um objeto em execuo.

Geralmente no necessrio um diagrama de estado para todos


os objetos do sistema.

Vrios dos objetos em um sistema so relativamente simples e


um modelo de estado adiciona detalhes desnecessrios ao
projeto.
Diagrama de estado da estao
meteorolgica
Especificaes de interface

As interfaces de objeto precisam ser especificadas para que se


possa fazer paralelamente o projeto dos objetos e de outros
componentes.

Os projetistas devem evitar projetar a representao da


interface, devem escond-la no prprio objeto.

Os objetos podem ter vrias interfaces, as quais so pontos de


vista dos mtodos oferecidos.

A UML usa diagramas de classes para a especificao da


interface, mas a linguagem Java tambm pode ser usada.
Interfaces da estao
meteorolgica
Pontos Importantes

O projeto e a implementao de softwares so atividades


intercaladas.

O nvel de detalhamento no projeto depende do tipo de sistema,


e se est sendo usada uma abordagem orientada a planos ou
gil.

O processo de projeto orientado a objetos inclui atividades para


projetar da arquitetura de sistema, identificar os objetos no
sistema, descrever o projeto usando diferentes modelos de
objetos e documentar as interfaces de componentes.
Pontos Importantes

Uma srie de diferentes modelos pode ser produzida durante um


processo de projeto orientado a objetos.

Inclusive os modelos estticos (modelos de classes, modelos de


generalizao, modelos de associao) e os modelos dinmicos
(modelos de sequncia, modelos de mquina de estados).

As interfaces de componentes devem ser definidas com exatido


para que os outros objetos possam us-las.

Um esteretipo de interface da UML pode ser usado para definir


as interfaces.
Padres de projeto

Um padro de projeto uma forma de reusar conhecimento


abstrato sobre um problema e sua soluo.

Um padro uma descrio do problema e a essncia da sua


soluo.

Esse precisa ser abstrato o suficiente para ser reusado em


configuraes diferentes.

Geralmente, as descries do padro fazem uso de


caractersticas orientadas a objetos, como herana e
polimorfismo.
Elementos do padro
Nome
Um identificador significativo do padro.

Descrio do problema

Descrio da soluo
No um projeto concreto mas um template, uma soluo de
projeto que pode ser instanciada de diferentes maneiras.

Consequncias
Os resultados e os compromissos da aplicao desse
padro.
O padro Observer
Nome
Observer.

Descrio
Separa o estado do display do estado do objeto do prprio objeto.

Descrio do problema
Usada quando vrios displays de estado so necessrias.

Descrio da soluo
Ver slide com descrio em UML.

Consequncias
Otimizaes para melhorias do desempenho do display so
impraticveis.
O padro Observer (1)
O padro Observer (2)
Mltiplos displays usando o padro
Observer
Um modelo UML do padro
Observer
Problemas de projeto
Para usar padres no seu projeto, voc precisa reconhecer que qualquer
problema de projeto que voc est encarando pode ter um padro
associado, o qual pode ser aplicado.

Informar a vrios objetos que o estado de algum outro objeto mudou


(padro Observer).

Ligar as interfaces a um nmero de objetos relacionados, os quais,


geralmente, foram desenvolvidos incrementalmente (padro Faade).

Prover uma forma padro de acesso aos elementos em uma coleo,


sem se ater em como essa coleo implementada. (padro
Iterador).

Permitir a possibilidade de extenso da funcionalidade de uma classe


existente em tempo de execuo (padro Decorador).
Questes de implementao
O foco aqui no na programao, apesar de, obviamente, essa ser
importante, mas em outras questes de implementao que geralmente
no so cobertas em textos sobre programao:

Reso A maioria dos softwares modernos so construdos pelo


reuso de componentes e sistemas existentes. Quando se est
desenvolvendo softwares, deve-se fazer o maior uso possvel de
cdigos existentes.
Gerenciamento de configurao Durante o processo de
desenvolvimento, deve-se manter registro, em um sistema de
gerenciamento de configurao, das vrias verses diferentes de
cada componente de software.
Desenvolvimento host-target Geralmente, o software de produo
no executado no mesmo computador que o ambiente de
desenvolvimento de software. Ao invs disso, desenvolve-se o
software em um computador (o sistema host) e se executa em um
computador separado (o sistema target).
Reso
De 1960 a 1990, a maioria dos novos softwares foram
desenvolvidos a partir do zero, escrevendo-se todo cdigo em
uma linguagem de alto nvel.

O nico reso de software era o reso das funes e objetos


em bibliotecas de linguagem de programao.

As presses por reduo de custos e prazo tornaram essa


abordagem cada vez mais invivel, especialmente para sistemas
comerciais baseados na Internet.

Uma abordagem de desenvolvimento baseada em reso de


softwares existentes emergiu, e atualmente, essa geralmente
usada para softwares cientficos e de negcios.
Nveis de reso
O nvel de abstrao
Nesse nvel, no se reusa o software diretamente, mas usa-se o
conhecimento de abstraes bem sucedidas no projeto do seu
software.

O nvel de objeto
Nesse nvel, reusa-se diretamente os objetos de uma biblioteca,
ao invs de se escrever o cdigo.

O nvel de componentes
Os componentes so colees de objetos e as classes de objeto
que voc reusa nos sistemas de aplicao.

O nvel de sistema
Nesse nvel, reusa-se sistemas de aplicao inteiros.
Custos de reso

Os custos de tempo gasto na busca por softwares para reso e a


avaliao de, se esses atendem ou no s suas necessidades.

Quando se aplicam os custos de aquisio do software reusvel.


Para grandes sistemas de prateleira, esses custos podem ser
bem altos.

Os custos de adaptao e configurao dos componentes do


software reusvel ou sistemas para refletir os requisitos do
sistema que voc est desenvolvendo.

Os custos de integrao entre os elementos de software


reusvel (caso esteja usando software de fontes diferentes) e o
novo cdigo que voc desenvolveu.
Gerenciamento de
configurao
Gerenciamento de configurao o nome dado para o processo
geral de gerenciamento de um sistema de software em
mudana.

O objetivo do gerenciamento de configurao dar suporte ao


processo de integrao do sistema para que todos os
desenvolvedores possam acessar o cdigo do projeto e os
documentos de uma maneira controlada, descobrir quais
mudanas foram feitas e compilar e ligar os componentes para
criar um sistema.
Atividades do gerenciamento de
configurao
Gerenciamento de verses, em que dado o suporte para
manter registro das diferentes verses dos componentes de
software. Sistemas de gerenciamento de verses incluem
recursos para coordenar o desenvolvimento de diversos
programadores.

Integrao de sistemas, em que dado o suporte para auxiliar


os desenvolvedores a definir quais verses dos componentes
sero usadas para criar cada verso do sistema. Em seguida,
essa descrio usada para construir o sistema
automaticamente, pela compilao e ligao dos componentes
necessrios.

Rastreamento de problemas, em que dado suporte aos


usurios para reportarem bugs e outros problemas, e para
permitir a todos os desenvolvedores que vejam quem est
trabalhando nesses problemas e quando esses sero resolvidos.
Desenvolvimento host-target
A maioria dos softwares desenvolvida em um computador (o
host), mas executado em uma mquina separada (o target).

Maisgenericamente, podemos falar de uma plataforma de


desenvolvimento e uma plataforma de execuo.

Uma plataforma mais do que apenas o hardware.


Inclui o sistema operacional instalado alm de outros
softwares de suporte como um sistema de gerenciamento de
banco de dados ou, para plataformas de desenvolvimento, um
ambiente de desenvolvimento interativo.

Geralmente, a plataforma de desenvolvimento tem diferentes


softwares instalados da plataforma de execuo; essas plataformas
podem ter arquiteturas diferentes .
Ferramentas de plataforma de
desenvolvimento
Um compilador integrado um sistema de edio orientado a
sintaxe, que permita a criao, edio e compilao de cdigos.

Um sistema de depurao de linguagem.

Ferramentas de edio grfica, como por exemplo ferramentas


para edio de modelos da UML.

Ferramentas de teste, como o Junit, que podem executar,


automaticamente, um conjunto de testes em uma nova verso
de um programa.

Ferramentasde apoio a projetos que podem auxiliar na


organizao do cdigo para diferentes projetos de
desenvolvimento.
Ambiente de Desenvolvimento
Integrados (IDE)
Geralmente, as ferramentas de desenvolvimento de software
so agrupadas para criarem um ambiente de desenvolvimento
integrado (IDE Integrated Development Environment).

Um IDE um conjunto de ferramentas de software que d apoio


a diferentes aspectos do desenvolvimento de software em um
framework comum e em uma interface de usurio.

Os IDEs so criados para dar apoio ao desenvolvimento em


linguagens de programao especficas como o Java.

O IDE da linguagem pode ser desenvolvido especialmente, ou


pode ser uma instncia de um IDE de uso geral com ferramentas
de apoio a uma linguagem especfica.
Fatores de implantao de componente/
sistema

Se um componente for destinado a uma arquitetura de hardware


especfica ou se depender de outros sistemas de software,
obviamente, esse precisa ser implantado em uma plataforma
que fornea suporte ao hardware e software necessrios.

Os sistemas de alta disponibilidade podem necessitar que os


componentes sejam implantados em mais de uma plataforma. O
que significa que, no evento de falha de uma plataforma, uma
implementao alternativa do componente estar disponvel.

No caso de alto nvel de trfego de comunicao entre os


componentes, geralmente, faz sentido implant-los na mesma
plataforma ou em plataformas fisicamente prximas. O que
reduz o atraso entre o envio de uma mensagem por um
componente e a recepo pelo outro.
Desenvolvimento open
source
O desenvolvimento open source uma abordagem de
desenvolvimento de software na qual o cdigo fonte de um
sistema de software publicado e os voluntrios so convidados
a participar no processo de desenvolvimento.

Suas razes esto no Free Software Foundation (www.fsf.org), que


advoga que o cdigo fonte no deveria ser proprietrio, mas,
deveria estar sempre disponvel para que os usurios possam
examin-lo e modific-lo como quiserem.

O software open source estendeu essa ideia usando-se a


Internet para recrutar uma populao muito maior de
desenvolvedores voluntrios. Vrios deles tambm so usurios
do cdigo.
Sistemas open source

O produto open source mais conhecido , sem dvida, o sistema


operacional Linux, o qual amplamente usado como sistema
servidor e cada vez mais, como um ambiente desktop.

Outros importantes produtos open source so o Java, o Apache


web server e o sistema de gerenciamento de banco de dados
mySQL.
Questes de open source

O produto que est sendo desenvolvido deve usar componentes


open source?

Deve ser usada uma abordagem open source para o


desenvolvimento de software?
Negcios de open source

Cada vez mais, empresas esto usando uma abordagem open


source para o desenvolvimento.

Seu modelo de negcios no bom na venda de um produto de


software, mas so bons no fornecimento de suporte para esse
produto.

Acreditam que envolver a comunidade open source permitir o


desenvolvimento mais barato e mais rpido de softwares, e
criar uma comunidade de usurios para o software.
Licenciamento de open
source
Um princpio fundamental do desenvolvimento open source
que o cdigo fonte deve ser disponibilizado gratuitamente, o que
no significa que qualquer um possa fazer o que quiser com o
cdigo.

Legalmente, o desenvolvedor do cdigo (tanto uma


empresa, quanto um indivduo) ainda o proprietrio do
cdigo. Ele pode colocar restries em como esse deve ser
usado, incluindo condies vinculadas legalmente, em uma
licena de software open source.
Alguns desenvolvedores open source acreditam que se um
componente open source usado para desenvolver um
novo sistema, esse sistema tambm deve ser open source.
Outros querem permitir que seu cdigo seja usado sem
essa restrio. Os sistemas desenvolvidos podem ser
proprietrios e vendidos como sistemas de cdigo fechado.
Modelos de licena

A GNU General Public Licence (GPL). Essa a chamada licena


recproca, o que significa que se voc usa um software open
source licenciado sob a GPL, voc precisa tornar esse software
open source.

A GNU Lesser General Public License (LGPL). Essa uma


variao da licena GPL na qual voc pode escrever
componentes que se ligam a cdigos open source, sem precisar
publicar o cdigo desses componentes.

A Berkley Standard Distribution (BSD). Essa uma licena no


recproca, o que significa que no necessrio republicar
quaisquer mudanas ou modificaes feitas no cdigo open
source. E que possvel incluir o cdigo em sistemas
proprietrios comercializados.
Gerenciamento de licenas
Estabelecer um sistema para manter informaes sobre os
componentes open source baixados e usados.

Estar ciente dos diferentes tipos de licenas e compreender


como um componente licenciado antes de us-lo.

Estar ciente dos caminhos de evoluo dos componentes.

Educar as pessoas sobre o open source.

Ter sistemas de auditoria em vigor.

Participar da comunidade open source.


Pontos Importantes
Ao desenvolver um software, importante sempre considerar a
possibilidade de reso dos softwares existentes, tanto na forma dos
componentes, quanto nos servios ou sistemas completos.

O gerenciamento de configurao o processo de gerenciar as mudanas


em um sistema de software em evoluo. Esse essencial quando uma
equipe de pessoas est cooperando para desenvolver um software.

A maior parte do desenvolvimento de um software desenvolvimento


host target. Usa-se um IDE em uma mquina host para desenvolver o
software, o qual transferido para uma mquina target, para a execuo.

O desenvolvimento open source envolve tornar o cdigo fonte de um


sistema disponvel publicamente. O que significa que vrias pessoas
podem propor mudanas e melhorias no software.
Questes?