Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software...
Transcript of Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software...
![Page 1: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/1.jpg)
Programação Orientada a Objetos
Componentes de Software
André SantanchèMarço 2015
![Page 2: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/2.jpg)
Componentes
▪ “Aquilo que entra na composição de alguma coisa.” (Aurélio, 2004)
▪ “que ou o que compõe ou ajuda na composição de algo” (Houaiss, 2006)
![Page 3: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/3.jpg)
Porque usar componentes?
▪ Componentes na engenharia:“Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho em confrontos com as pessoas de hardware porque eles são os industriais e nós somos os lavradores.” (Mcilroy, 1968)
Tradução do original feita pelo autor: “We undoubtedly produce software by backward techniques. We undoubtedly get the short end of the stick in confrontations with hardware people because they are the industrialists and we are the crofters.” (Mcilroy, 1968)
![Page 4: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/4.jpg)
Composição
▪ “Composition enables prefabricated 'things' to be reused by rearranging them in ever-new composities”. (Szyperski, 2002)
![Page 5: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/5.jpg)
O que é um componente?
▪ “Today, few terms in the software industry are less precise than component software.” (Olsen, 2006)
![Page 6: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/6.jpg)
O que é um componente?Características Comuns
▪ Entidade concebida para ser composta
▫ do latim componens, derivado de componere, que quer dizer “colocar junto”.
▪ Publica sua funcionalidade através de uma interface
▫ interface guia relacionamento componente x ambiente
▪ Componentes podem ser aninhados em outros componentes
▫ componentes e sub-componentes
![Page 7: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/7.jpg)
O que é um componente?Características Desejáveis
▪ Contém código binário que implementa a funcionalidade declarada na interface
▪ Serviços acessíveis exclusivamente pela interface (black-box)
▪ Pacote padrão para distribuição
![Page 8: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/8.jpg)
Diagrama de Componentes
ProvidedInterfaces
RequiredInterfaces
![Page 9: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/9.jpg)
Componentes x Objetos
▪ Componentes são unidades de distribuição, objetos não. (Szyperski, 2002)
![Page 10: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/10.jpg)
Estudo de Caso
Componentização Sucessiva
![Page 11: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/11.jpg)
Estudo de Caso
Componentização Sucessiva
▪ Programa para gerar identificadores únicos sequenciais.
▪ Mostra uma componentização em granularidades crescentes.
▪ Compara o papel de classes e componentes.
![Page 12: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/12.jpg)
Componentização Sucessiva
Primeira Versão
Gerar identificador simplesUso do Singleton
![Page 13: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/13.jpg)
Primeira Versão
Uso do Padrão Singleton
SimpleSequenceStamp
-instance: SimpleSequenceStamp-lastId: int
+getInstance(): SimpleSequenceStamp+nextId(): String
SequenceStampTest01
![Page 14: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/14.jpg)
Componentização Sucessiva
Segunda Versão
Gerar identificador simples e URIAplicação do Dependency Inversion Principle
![Page 15: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/15.jpg)
Dependency Inversion Principle (DIP)
▪ “Depender das Abstrações. Não depender das Concretizações.” (Martin, 2000)
![Page 16: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/16.jpg)
Segunda Versão
Aplicação do Dependency Inversion Principle
SimpleSequenceStamp
-instance: SimpleSequenceStamp-lastId: int
+getInstance(): SimpleSequenceStamp+nextId(): int
SequenceStamp<<interface>>
+nextId()
SimpleURISequenceStamp
-instance: SimpleURISequenceStamp-lastId: int
+getInstance(): SimpleURISequenceStamp+nextId(): int
SequenceStampTest02
![Page 17: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/17.jpg)
Componentização Sucessiva
Terceira Versão
Acrescentando capacidade de armazenamentoMini Framework
![Page 18: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/18.jpg)
Terceira Versão
Mini Framework
SimpleSequenceStamp
SequenceStamp<<interface>>
SimpleURISequenceStamp
SequenceStorage<<interface>>AbstractSequenceStamp
SequenceStorageException<<exception>>
Exception<<exception>>
SequenceStampException<<exception>>
DatabaseSequenceStorage FileSequenceStorage
![Page 19: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/19.jpg)
Terceira Versão
Detalhamento SequenceStamp
SimpleSequenceStamp
-instance: SimpleSequenceStamp
+createInstance(idType, SequenceStorage storage): SimpleSequenceStamp+getInstance(): SimpleSequenceStamp+nextId(): int
SequenceStamp<<interface>>
+nextId()
SimpleURISequenceStamp
-instance: SimpleURISequenceStamp
+getInstance(): SimpleURISequenceStamp+createInstance(idType, SequenceStorage storage, prefix): SimpleURISequenceStamp+nextId(): int
AbstractSequenceStamp
#lastId: int
#init(byte idType, SequenceStorage storage)#persistId()
Exception<<exception>>
SequenceStampException<<exception>>
![Page 20: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/20.jpg)
Terceira Versão
Detalhamento SequenceStorage
SequenceStorage<<interface>>
+getLastSequence(): String+updateLastSequence(String lastSequence)
SequenceStorageException<<exception>>
Exception<<exception>>
DatabaseSequenceStorage
-instance: DatabaseSequenceStorage
+createInstance(String parameters): DatabaseSequenceStorage+getInstance(): DatabaseSequenceStorage+getLastSequence(): String+updateLastSequence(String lastSequence)
FileSequenceStorage
-instance: FileSequenceStorage
+createInstance(String parameters): FileSequenceStorage+getInstance(): FileSequenceStorage+getLastSequence(): String+updateLastSequence(String lastSequence)
![Page 21: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/21.jpg)
Terceira Versão
Detalhamento Exceptions
SequenceStorageException<<exception>>
Exception<<exception>>
SequenceStampException<<exception>>
![Page 22: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/22.jpg)
Componentização Sucessiva
Quarta Versão
Interface única para componenteUsando o padrão Facade
![Page 23: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/23.jpg)
Classes e Componentes
Quarta Versão
SimpleSequenceStamp
SequenceStamp<<interface>>
SimpleURISequenceStamp
SequenceStorage<<interface>>
AbstractSequenceStamp
SequenceStorageException<<exception>>
SequenceStampException<<exception>>
DatabaseSequenceStorageFileSequenceStorage
Stamp<<interface>>
+nextId(): String
StampComponent
+createInstance(stampType, storageType): Stamp+nextId(): String
AbstractSequenceStorage
StamoException<<exception>>
![Page 24: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/24.jpg)
Digital Content Component (DCC)
![Page 25: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/25.jpg)
Fish DCC
▪ Goal
▫ Draw a character-based Fish
_ |\/O\ |/\_/
![Page 26: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/26.jpg)
Step 1Modeling
![Page 27: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/27.jpg)
DCC Principle
▪ Publicly available DCC methods are exclusively accessed through DCC interfaces
![Page 28: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/28.jpg)
Provided Interface
▪ Specifies services provided by a component
![Page 29: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/29.jpg)
Component and Interface
Fish
IFish
Provided Interface
Software Component
![Page 30: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/30.jpg)
Fish
+fishImage()
Fish Modeling
![Page 31: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/31.jpg)
Fish
+fishImage()
IFish<<interface>>
+fishImage()
Fish Modeling
![Page 32: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/32.jpg)
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
Fish
+fishImage()
IFish<<interface>>
+fishImage()
Fish Modeling
![Page 33: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/33.jpg)
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
All components mustimplement this interface.
Fish
+fishImage()
IFish<<interface>>
+fishImage()
Fish Modeling
![Page 34: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/34.jpg)
ComponentBase
+queryInterface(interfaceId: String): ISupports
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
All components mustimplement this interface.
Fish
+fishImage()
IFish<<interface>>
+fishImage()
Fish Modeling
![Page 35: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/35.jpg)
ComponentBase
+queryInterface(interfaceId: String): ISupports
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
All components mustimplement this interface.
Implements all componentbasic services.
Fish
+fishImage()
IFish<<interface>>
+fishImage()
Fish Modeling
![Page 36: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/36.jpg)
ComponentBase
+queryInterface(interfaceId: String): ISupports
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
All components mustimplement this interface.
Implements all componentbasic services.
Fish
+fishImage()
IFish<<interface>>
+fishImage()
Fish Modeling
![Page 37: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/37.jpg)
Step 2Identifying
![Page 38: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/38.jpg)
URI-based Identification
▪ DCC identification approach is based on URIs
▪ See details inhttp://apps.sourceforge.net/mediawiki/infrabig/index.php?title=DCC_Identification
![Page 39: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/39.jpg)
Creating an Identification
▪ URI prefix + Class path
▪ Ex.:
1)infraBig/DCC URI prefix:http://purl.org/NET/dcc/
2)Component class path:examples.fish.s01.Fish
3)Result:http://purl.org/NET/dcc/examples.fish.s01.Fish
![Page 40: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/40.jpg)
Step 3Documenting
![Page 41: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/41.jpg)
Interface Card
Title Fish Interface Id http://purl.org/NET/dcc/examples.fish.s01.IFish
Author André Santanchè Goal Interface for the Fish component that enables to trigger the fish drawing.
Methods fishImage Draw the fish.
UML Diagram
IFish<<interface>>
+fishImage()
![Page 42: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/42.jpg)
Component CardTitle Fish Component Id http://purl.org/NET/dcc/examples.fish.s01.Fish
Author André Santanchè Goal Draw a character-based Fish. Provided Interfaces
Fish Interface http://purl.org/NET/dcc/examples.fish.s01.IFish
UML Diagram
Fish
+fishImage()
IFish<<interface>>
+fishImage()
![Page 43: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/43.jpg)
Step 4Implementing
![Page 44: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/44.jpg)
Cards to Components
IFish
/** * Interface for the Fish component that * enables to trigger the fish drawing. * * @author Andre Santanche * */
public interface IFish extends ISupports
Author André Santanchè Goal Interface for the Fish component that enables to trigger the fish drawing.
![Page 45: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/45.jpg)
Cards to Components
IFish
@ComponentInterface( "http://purl.org/NET/dcc/examples.fish.s01.IFish")
public interface IFish extends ISupports
Id http://purl.org/NET/dcc/examples.fish.s01.IFish
![Page 46: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/46.jpg)
Cards to Components
IFish
/** * Draw the fish. */
public String fishImage();
fishImage Draw the fish.
![Page 47: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/47.jpg)
Cards to Components
Fish
@Component( id="http://purl.org/NET/dcc/examples.fish.s01.Fish", provides={"http://purl.org/NET/dcc/examples.fish.s01.IFish"} )
Id http://purl.org/NET/dcc/examples.fish.s01.Fish
Provided Interfaces
Fish Interface http://purl.org/NET/dcc/examples.fish.s01.IFish
![Page 48: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/48.jpg)
Step 5Using
![Page 49: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/49.jpg)
Instantiation and Abstract Factory
▪ DCCs are instantiated using the Abstract Factory Design Pattern
▪ See detailed description in:
▫ Gamma, E. Helm, R. Johnson, R. Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
![Page 50: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/50.jpg)
Creating a Global Factory
ContextFactory
createGlobalFactory()
(Java Local)Global Factory
Default Global Factory
![Page 51: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/51.jpg)
Creating DCCs using the Factory
ContextFactory
createInstance()
(Java Local)Global Factory
createInstance()
createInstance()
![Page 52: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/52.jpg)
DCC Repository
ComponentFactory
Fish
Application
DCC Repository
Fish DCC Id
![Page 53: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/53.jpg)
ComponentFactory
Fish
Application
DCC Repository
Fish DCC Id
Fish
Fish
DCC Repository
![Page 54: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/54.jpg)
Temporary Repository
PermanentRepository
TemporaryRepository
DCC Prototypes(development)
Final DCCs(deployment)
![Page 55: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/55.jpg)
PermanentRepository
TemporaryRepository
registerPrototype( )
Fish.class
Fish
Temporary Repository
![Page 56: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/56.jpg)
Creating a DCC using the Factory
ComponentFactory
createInstance( )
http://purl.org/NET/dcc/examples.fish.s01.Fish
Fish DCC Id
Fish
![Page 57: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/57.jpg)
Objetivo do DCC
▪ Registrar um conjunto de números e calcular a soma e média destes números.
![Page 58: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/58.jpg)
Delimitação
▪ DCC deve ter delimitações explícitas
▫ Essencial para distribuição e reuso
▫ Estratégia básica: único pacote
▪ Pacote do componente de estatísticas:
▫ pt.c02foundations.statistics.s01
![Page 59: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/59.jpg)
Projetando o DCC
![Page 60: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/60.jpg)
Componente e Interface Provida
StatisticsComponent
IStatistics
![Page 61: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/61.jpg)
StatisticsComponent
+valueSet: Vector
+insertValue(float value)+sum(): float+average(): float
![Page 62: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/62.jpg)
IStatistics<<interface>>
+void insertValue(float value)+float sum()+float average()
StatisticsComponent
+valueSet: Vector
+insertValue(float value)+sum(): float+average(): float
![Page 63: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/63.jpg)
IStatistics<<interface>>
+void insertValue(float value)+float sum()+float average()
StatisticsComponent
+valueSet: Vector
+insertValue(float value)+sum(): float+average(): float
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
All components mustimplement this interface.
![Page 64: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/64.jpg)
IStatistics<<interface>>
+void insertValue(float value)+float sum()+float average()
StatisticsComponent
+valueSet: Vector
+insertValue(float value)+sum(): float+average(): float
ComponentBase
+queryInterface(interfaceId: String): ISupports
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
All components mustimplement this interface.
Implements all componentbasic services.
![Page 65: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/65.jpg)
IStatistics<<interface>>
+void insertValue(float value)+float sum()+float average()
StatisticsComponent
+valueSet: Vector
+insertValue(float value)+sum(): float+average(): float
ComponentBase
+queryInterface(interfaceId: String): ISupports
ISupports<<interface>>
+queryInterface(interfaceId: String): ISupports
All components mustimplement this interface.
Implements all componentbasic services.
![Page 66: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/66.jpg)
Criando uma Identificação
▪ URI prefixo + caminho da Classe
▪ Ex.:
1)DCC URI Namespace:http://purl.org/dcc/
2)Caminho da classe do componente:pt.c02foundations.statistics.s01.StatisticsComponent
3)Resultado:http://purl.org/dcc/pt.c02foundations.statistics.s01.IStatistics
![Page 67: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/67.jpg)
Documentação
![Page 68: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/68.jpg)
![Page 69: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/69.jpg)
![Page 70: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/70.jpg)
Codificação em Java
![Page 71: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/71.jpg)
Da Ficha ao Componente
IStatistics
/** * Interface for a Statistics Component that registers a set of numbers * and calculates the sum and average of these numbers. * * @author Andre Santanche */public interface IStatistics extends ISupports
![Page 72: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/72.jpg)
Da Ficha ao Componente
IStatistics
@ComponentInterface("<http://purl.org/dcc/pt.c02foundations.statistics.s01.IStatistics>"
)
public interface IStatistics extends ISupports
![Page 73: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/73.jpg)
Da Ficha ao Componente
IStatistics
/**
* Insert a value into the set.
* @param value the value to be inserted into the set
*/
public void insertValue(float value);
![Page 74: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/74.jpg)
Da Ficha ao Componente
StatisticsComponent
@Component( id = "<http://purl.org/dcc/pt.c02foundations.statistics.s01.StatisticsComponent>", provides = {"<http://purl.org/dcc/pt.c02foundations.statistics.s01.IStatistics>"})
![Page 75: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/75.jpg)
Caso 1
Primeira Versão
StatisticsUsando um Componente
![Page 76: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/76.jpg)
Criação da Fábrica Global
![Page 77: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/77.jpg)
Criando componentes usando a fábrica
![Page 78: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/78.jpg)
Criando componentes usando a fábrica
Component Factory
createInstance( )
<http://purl.org/dcc/pt.c02foundations.statistics.s01.StatisticsComponent>
StatiscsComponent Id
StatiscsComponent
![Page 79: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/79.jpg)
Case Study 2
Displaying Statistics
![Page 80: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/80.jpg)
Interfaces Providas e Requeridas
ProvidedInterfaces
RequiredInterfaces
![Page 81: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/81.jpg)
Interface RequeridaIStatisticsReceptacle
StatisticsComponent StatisticsGUIComponent
IStatistics IRequires<IStatistics>
![Page 82: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/82.jpg)
Interface RequeridaIStatisticsReceptacle
StatisticsComponent StatisticsGUIComponent
IStatistics IStatisticsReceptacle
![Page 83: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/83.jpg)
IStatisticsReceptacle
IStatistics<<interface>>
+void insertValue(float value)+float sum()+float average()
IStatisticsReceptacle<<interface>>
+void connect(IStatistics provider)
![Page 84: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/84.jpg)
Bibliografia▪ Bachmann, F.; Bass, L.; Buhman, C.; Dorda, S.C.; Long, F.; Robert, J.
& Wallnau, R.S.K. Volume II: Technical Concepts of Component-Based Software Engineering, 2nd Edition. Carnegie Mellon University, 2000.
▪ Broy, M.; Deimel, A.; Henn, J.; Koskimies, K.; Plásil, F.; Pomberger, G.; Pree, W.; Stal, M. & Szyperski, C. What characterizes a (software) component? Software -- Concepts & Tools, Springer-Verlag Heidelberg, 1998, 19, 49-56.
▪ Gamma, E. Helm, R. Johnson, R. Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
![Page 85: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/85.jpg)
Bibliografia▪ Hopkins, J. Component primer. Communications ACM, ACM Press,
2000, 43, 27-30.
▪ Martin, R. C. Design Principles and Design Patterns. Object Mentor, 2000.
▪ Mcilroy, M. D. Naur, P. & Randell, B. (ed.) Mass Produced Software Components. Software Engineering: Report of a conference sponsored by the NATO Science Committee, 1968.
▪ Olsen, G. From COM to Common. Queue, ACM Press, 2006, 4, 20-26.
▪ Szyperski, C. Component Software: Beyond Object-Oriented Programming. Addison-Wesley Longman Publishing Co., Inc., 2002.
![Page 86: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/86.jpg)
André Santanchèhttp://purl.org/andresantanche
![Page 87: Componentes de Software - Instituto de Computação€¦ · “Sem dúvida nós produzimos software usando técnicas ultrapassadas. Sem dúvida nós ficamos com o lado curto do palitinho](https://reader030.fdocumentos.tips/reader030/viewer/2022040112/5eb760a62828aa4681471514/html5/thumbnails/87.jpg)
License▪ These slides are shared under a Creative Commons License.
Under the following conditions: Attribution, Noncommercial and Share Alike.
▪ See further details about this Creative Commons license at:http://creativecommons.org/licenses/by-nc-sa/3.0/