Engenharia de Software - Componentes de software

00:17:10
https://www.youtube.com/watch?v=Jm5gStUzqQc

Ringkasan

TLDRNesta aula, o professor Marcelo Fantinato aborda o conceito de componentes de software como parte fundamental do reuso em engenharia de software. São discutidos os princípios da engenharia de software baseada em componentes, que busca sistematizar o uso de componentes por meio de abordagens orientadas a objetos. Componentes são definidos como abstrações de nível mais alto que objetos, englobando grupos de objetos inter-relacionados. A aula ressalta também a importância de interfaces padronizadas para a comunicação entre componentes e a necessidade de documentação adequada para garantir a reutilização eficaz. Exemplos visuais são usados para explicar como componentes podem ser compostos em sistemas maiores. Por fim, é destacado que o material da aula se fundamenta na obra de Ian Sommerville sobre engenharia de software.

Takeaways

  • 📚 Componentes de software são fundamentais para o reuso eficiente na engenharia de software.
  • 🔄 Engenharia de software baseada em componentes sistematiza o reuso de software.
  • 🖥️ Componentes são abstrações de níveis mais altos que objetos, englobando grupos de objetos inter-relacionados.
  • 🔗 Componentes devem ser independentes e fracamente acoplados para facilitar a reutilização.
  • 🛠️ As interfaces padronizadas são essenciais para a comunicação entre componentes.
  • 📑 A documentação clara é vital para o sucesso dos componentes.
  • 🔧 Componentes podem ser compostos para criar sistemas maiores e mais complexos.
  • 🕹️ Modelos de desenvolvimento devem definir regras claras para o uso de componentes.
  • 🖼️ Exemplos visuais ajudam a entender a composição de componentes.
  • 📘 O material se baseia na obra de Ian Sommerville sobre engenharia de software.

Garis waktu

  • 00:00:00 - 00:05:00

    O professor Marcelo Fantinato introduz o conceito de reuso de software através da engenharia de software baseada em componentes. Ele explica que essa abordagem sistematiza o uso de componentes, que são agrupamentos de objetos menores e independentes em sistemas orientados a objetos. Os componentes são abstrações de alto nível que encapsulam implementações, permitindo seu uso em diferentes sistemas sem revelar detalhes internos por meio das interfaces.

  • 00:05:00 - 00:10:00

    A aula continua enfocando a importância dos padrões e das interfaces padronizadas para a interação entre componentes de software. Fantinato destaca a necessidade de uma metodologia de desenvolvimento que sustente a comunicação entre componentes distribuídos em sistemas, exemplificando com diagramas UML para ilustrar a representação e composição de componentes. A importância de documentação adequada é enfatizada para garantir a independência e padronização dos componentes.

  • 00:10:00 - 00:17:10

    Finalmente, são abordadas as diferentes técnicas de composição de componentes, como as sequenciais e diretas, usando adaptadores para integrar componentes com diferentes tipos de interfaces. Exemplos práticos são dados para ilustrar possíveis configurações de componentes e interfaces. Fantinato conclui com a sugestão de um modelo de processo para desenvolver software baseado em componentes, destacando a importância de atividades como aquisição e gerenciamento de componentes para promover o reuso eficiente.

Peta Pikiran

Video Tanya Jawab

  • O que são componentes de software?

    Componentes de software são abstrações de um nível mais alto que objetos, consistindo de grupos de objetos inter-relacionados.

  • Como os componentes de software ajudam no reuso?

    Eles permitem a integração de partes reutilizáveis em diferentes sistemas por meio de interfaces padronizadas.

  • Quais são os fundamentos da engenharia de software baseada em componentes?

    São a independência, fraco acoplamento, interfaces padronizadas e boa documentação dos componentes.

  • Qual é o papel das interfaces em componentes de software?

    Interfaces permitem a comunicação e integração entre componentes e sistemas.

  • Por que é importante a documentação dos componentes?

    Uma boa documentação ajuda os engenheiros de software a entenderem como usar e integrar componentes.

  • Como funciona a composição de componentes?

    Componentes podem ser compostos para formar sistemas maiores, dependendo de sua compatibilidade e interfaces.

  • Qual é a importância dos modelos de desenvolvimento na engenharia de software baseada em componentes?

    Modelos definem as regras e métodos para o uso eficaz dos componentes em sistemas de software.

  • O que é necessário para que os componentes sejam reutilizáveis?

    Devem ser independentes, bem documentados e ter interfaces padronizadas para comunicação.

  • De onde vem o material da aula?

    O conteúdo se baseia no livro "Engenharia de Software" de Ian Sommerville, décima edição, 2018.

  • Qual a relação entre orientação a objetos e componentes de software?

    Componentes são formados por grupos de objetos, sendo uma extensão da programação orientada a objetos.

Lihat lebih banyak ringkasan video

Dapatkan akses instan ke ringkasan video YouTube gratis yang didukung oleh AI!
Teks
pt
Gulir Otomatis:
  • 00:00:00
    E aí
  • 00:00:00
    [Música]
  • 00:00:07
    o Olá eu sou o professor Marcelo
  • 00:00:10
    Fantinato Essa é a disciplina de
  • 00:00:12
    engenharia de software E hoje nós vamos
  • 00:00:15
    falar sobre componentes de software essa
  • 00:00:18
    aula ela encerra um grupo de aulas é a
  • 00:00:22
    sobre reuso de software eu já em aulas
  • 00:00:27
    anteriores havia mencionado que uma das
  • 00:00:29
    abordagens para reuso de software é usar
  • 00:00:34
    componentes de software e hoje então nós
  • 00:00:36
    vamos falar sobre esses componentes de
  • 00:00:39
    software causar os componentes de
  • 00:00:42
    software nós temos o que é chamado de
  • 00:00:45
    engenharia de software baseada em
  • 00:00:48
    Componentes a O que é essa engenharia de
  • 00:00:52
    software baseada em Componentes é quando
  • 00:00:55
    você tem uma abordagem
  • 00:00:57
    e para sistematizar o reuso de
  • 00:01:01
    componentes então a em vez de você
  • 00:01:04
    basicamente
  • 00:01:06
    simplesmente sair usando componentes de
  • 00:01:09
    software de qualquer forma da forma como
  • 00:01:12
    você achar melhor não você segue uma
  • 00:01:16
    abordagem sistemática para fazer isso da
  • 00:01:19
    melhor forma possível para que nesse
  • 00:01:21
    caso nós estamos falando necessariamente
  • 00:01:23
    de
  • 00:01:24
    desenvolvimento de software orientado a
  • 00:01:27
    objetos porque componentes softer a por
  • 00:01:30
    definição Ele só faz sentido se a gente
  • 00:01:32
    tiver falando em
  • 00:01:34
    orientação ao objeto então nós estamos
  • 00:01:38
    falando né do processo de definir
  • 00:01:40
    implementar e integrar ou compor a os
  • 00:01:44
    componentes que são independentes e
  • 00:01:48
    fracamente acoplados
  • 00:01:50
    e é isso então é o que a gente chama de
  • 00:01:52
    engenharia de software baseada em
  • 00:01:55
    Componentes Mas afinal o que é um
  • 00:01:56
    componente de software um componente de
  • 00:02:00
    software ele é uma o que nós chamamos né
  • 00:02:04
    de uma abstração né é uma abstração de
  • 00:02:07
    um nível mais alto que o objeto ou seja
  • 00:02:09
    é é uma é um agrupamento de objetos
  • 00:02:12
    então novamente estamos falando de
  • 00:02:15
    orientação objetos né nós desenvolvemos
  • 00:02:17
    o softer de uma forma é organizada por
  • 00:02:22
    meio de classes as quartas tem os seus
  • 00:02:25
    métodos seus atributos e quando essas
  • 00:02:28
    classes elas são instanciados elas
  • 00:02:30
    formam os objetos porque na verdade os
  • 00:02:33
    componentes são formados por um grupo de
  • 00:02:37
    objetos Claro objetos inter-relacionados
  • 00:02:41
    é e também as interfaces as interfaces é
  • 00:02:46
    desses objetos a fazem parte então os
  • 00:02:50
    componentes eles são então maiores do
  • 00:02:53
    que os objetos individuais e os detalhes
  • 00:02:57
    da implementação de cada um dos seus
  • 00:02:59
    desses objetos eles vão ficar escondidos
  • 00:03:01
    né Nós encapsulamos um componente e
  • 00:03:05
    vamos apenas ter a interface do
  • 00:03:07
    componente como usar esse componente os
  • 00:03:11
    detalhes de implementação eles ficam
  • 00:03:14
    escondidos e aí então nós podemos usar
  • 00:03:17
    esse componente em diferentes sistemas
  • 00:03:20
    que estão sendo desenvolvidos por isso
  • 00:03:22
    que é uma abordagem de reuso
  • 00:03:25
    nós temos alguns fundamentos da
  • 00:03:29
    engenharia de software baseada em
  • 00:03:31
    Componentes que aí está representado
  • 00:03:33
    pela sigla CBF e a seguir em inglês
  • 00:03:37
    component-based software Engineering a
  • 00:03:41
    esses componentes eles são
  • 00:03:44
    independentes né Você pode acoplar o sol
  • 00:03:48
    o componente de um sistema é acoplar
  • 00:03:51
    acoplar no outro porque porque eles são
  • 00:03:53
    independentes Pensa num componente que
  • 00:03:55
    ele é é por si só ele existe Claro que
  • 00:03:59
    ele tem interface você envia dados para
  • 00:04:02
    ele você obtém dados dele mas você pode
  • 00:04:05
    Em algum momento retirar colocar no
  • 00:04:07
    outro sistema e ele continua funcionando
  • 00:04:10
    e aí para isso ele tem que ser bem
  • 00:04:14
    especificado por meio de suas
  • 00:04:16
    componentes de suas interfaces para isso
  • 00:04:19
    a gente tem que usar padrões que define
  • 00:04:23
    as interfaces
  • 00:04:24
    ao desenvolver esses componentes nós
  • 00:04:27
    devemos seguir padrões todos os sistemas
  • 00:04:30
    eles devem saber conversar com esses
  • 00:04:32
    componentes de uma forma padronizada
  • 00:04:34
    porque senão a gente vai pegar um
  • 00:04:36
    componente colocar dentro de um sistema
  • 00:04:37
    que não sabe conversar com aquele
  • 00:04:39
    componente não segue o padrão de
  • 00:04:42
    conversa é como você colocar uma pessoa
  • 00:04:45
    que fala inglês dentro de um país que
  • 00:04:47
    fala português eles não vão saber de
  • 00:04:50
    fato a precisamos também de me dor é que
  • 00:04:54
    é uma tecnologia para poder fazer a dar
  • 00:04:58
    o suporte a esta comunicação né como é
  • 00:05:01
    que um sistema vai poder fazer
  • 00:05:05
    cor se comunicar com os componentes como
  • 00:05:07
    é que vale os componentes dentro de um
  • 00:05:10
    sistema se comunicam novamente os
  • 00:05:12
    componentes inclusive estão distribuídos
  • 00:05:15
    pensando em Sistemas distribuídos alguns
  • 00:05:18
    componentes que formam o sistema rodando
  • 00:05:20
    no computador outros componentes rodando
  • 00:05:23
    num outro computador no outro servidores
  • 00:05:25
    isso é a são os líderes que permitem
  • 00:05:29
    isso e precisamos então de um processo
  • 00:05:31
    de desenvolvimento direcionado né que é
  • 00:05:34
    a engenharia de software baseada em
  • 00:05:36
    Componentes um processo de
  • 00:05:38
    desenvolvimento que permita
  • 00:05:39
    desenvolver sistemas usando
  • 00:05:44
    usando o reuso de componentes né e
  • 00:05:47
    usando componentes e e a bom aqui ó a
  • 00:05:51
    gente tem uma figura ilustrativa
  • 00:05:54
    usando um diagrama é um um elemento da o
  • 00:05:57
    ML e representa um componente Então
  • 00:06:00
    dentro da o ML e vocês já devem conhecer
  • 00:06:03
    a esse essa é a figura que representa um
  • 00:06:06
    componente então percebam que o
  • 00:06:08
    componente ele é representado por um
  • 00:06:10
    retângulo
  • 00:06:11
    é com esse desenho aí a
  • 00:06:15
    no canto superior a esquerdo é é aquele
  • 00:06:22
    aquele aquele desenho aquele ícone
  • 00:06:24
    representa o desenho de um componente e
  • 00:06:27
    esse dentro desse componente então nós
  • 00:06:30
    temos uma integração de objetos né os
  • 00:06:32
    objetos ficam ali dentro escondidos a
  • 00:06:34
    gente não sabe quais os objetos quantos
  • 00:06:37
    objetos quais objetos que estão ali
  • 00:06:39
    dentro e o que a gente sabe é qual é a
  • 00:06:41
    interface desse componente que está
  • 00:06:43
    representado por esses desenhos do lado
  • 00:06:47
    esquerdo e do lado direito do componente
  • 00:06:49
    nós o prefácio é de chamada aqui que
  • 00:06:54
    recebem algum algum dado para o
  • 00:06:57
    componente funcionar e algumas
  • 00:06:59
    interfaces que é o wiiware é e a
  • 00:07:04
    interface provides que a interface que o
  • 00:07:06
    componente fornece algum algum dado né
  • 00:07:10
    então o componente ele pode receber
  • 00:07:13
    informações e pode fornecer informações
  • 00:07:16
    e aí a interface ela tem esses dois
  • 00:07:20
    desenhos esses dois símbolos diferentes
  • 00:07:23
    e a esses componentes Eles são passíveis
  • 00:07:27
    de composição você pode juntar um
  • 00:07:30
    componente com outro com outro e formar
  • 00:07:32
    um grande componente então certo é eles
  • 00:07:35
    são implantar implantáveis que a ideia
  • 00:07:37
    que eu já tinha falado antes você pega
  • 00:07:39
    um componente coloca dentro de um
  • 00:07:41
    sistema
  • 00:07:42
    implanta aquele componente dentro de um
  • 00:07:44
    sistema são bem documentados eles a
  • 00:07:47
    gente espera que um documento um
  • 00:07:49
    componente seja bem documentado para que
  • 00:07:52
    alguém possa te usar aquele componente
  • 00:07:55
    senão a pessoa não entende né um
  • 00:07:58
    engenheiro de software não vai entender
  • 00:07:59
    como usar aquele componente são
  • 00:08:01
    independentes que eu já havia comentado
  • 00:08:04
    o e padronizados também eu já havia
  • 00:08:07
    comentado a bola para aqui a engenharia
  • 00:08:12
    de software baseada em Componentes
  • 00:08:13
    funcione nós precisamos um modelo bem
  • 00:08:16
    definido que defina todas essas regras
  • 00:08:19
    esse modelo ele está ilustrado nessa
  • 00:08:21
    imagem certo cada um ela é dividida esse
  • 00:08:25
    modelo de três partes como a interface
  • 00:08:29
    do componente deve funcionar nós temos
  • 00:08:32
    que ter uma definição
  • 00:08:34
    e a nós temos que ter uma definição da
  • 00:08:38
    interface podemos fazer composição de
  • 00:08:40
    componentes é como o componente pode ser
  • 00:08:44
    usado e como há o componente pode ser
  • 00:08:48
    implantado e para tudo isso existem aqui
  • 00:08:52
    subir partes desse modelo certo ah
  • 00:08:56
    é uma uma abordagem de engenharia de
  • 00:09:01
    software baseada em Componentes ela deve
  • 00:09:03
    seguir esse modelo Ah não coloquei a
  • 00:09:07
    figura aqui apenas para ilustrar para
  • 00:09:08
    mostrar para vocês que existem regras
  • 00:09:10
    que devem ser seguidas para usar
  • 00:09:12
    componentes e é o material de o
  • 00:09:18
    texto-base da disciplina ele traz os
  • 00:09:21
    detalhes de cada um desses itens eu
  • 00:09:23
    convido vocês a lerem para entender um
  • 00:09:26
    pouco mais o que significa cada um
  • 00:09:28
    desses modelos
  • 00:09:30
    e é aliás cada um dos componentes dos
  • 00:09:34
    itens das partes desses modelos ia falar
  • 00:09:36
    cada um dos componentes desse modelo até
  • 00:09:38
    porque componente é uma palavra que a
  • 00:09:40
    gente usa no dia a dia em outros em
  • 00:09:43
    outros contextos não só no componente
  • 00:09:45
    como componente de software né Ah bom
  • 00:09:49
    Aqui também mais uma parte da desse
  • 00:09:52
    modelo também trouxe aqui apenas como
  • 00:09:54
    uma ilustração e nós temos serviços de
  • 00:09:58
    suporte e serviços de plataforma para
  • 00:10:01
    dar apoio a ao desenvolvimento a
  • 00:10:04
    implantação ou a comunicação dos
  • 00:10:07
    componentes é mais uma coisa
  • 00:10:09
    interessante é que eu já havia
  • 00:10:12
    mencionado em algum uma um slide ali
  • 00:10:15
    atrás que os componentes Eles são
  • 00:10:17
    passíveis de composição então eu posso
  • 00:10:20
    poder eu deveria poder é compor
  • 00:10:24
    componentes para formar um componente
  • 00:10:27
    maior existem diferentes formas de
  • 00:10:29
    compor Oi gente como ilustrado aqui
  • 00:10:31
    nessa segura eu posso fazer composições
  • 00:10:34
    sequenciais virar dicas e aditivas isso
  • 00:10:38
    vai depender de quais são os componentes
  • 00:10:41
    que eu vou
  • 00:10:43
    das características dos componentes que
  • 00:10:45
    estão sendo compostos e o que eu quero
  • 00:10:48
    fazer né então por exemplo nesse
  • 00:10:50
    primeiro caso aqui olha notem que esse
  • 00:10:53
    componente aqui ele tem uma interface
  • 00:10:55
    apenas para prover dados e esse aqui
  • 00:10:59
    também uma Interface para prover dados
  • 00:11:02
    então ambos os componentes eles pro
  • 00:11:06
    vendados como é que eu faço uma
  • 00:11:08
    composição de dois componentes que
  • 00:11:10
    provêm dados eu preciso criar um
  • 00:11:12
    adaptador que vai ter uma interface que
  • 00:11:16
    consome dados de um e uma interface que
  • 00:11:19
    consome dados do outro né então percebam
  • 00:11:22
    que eu preciso fazer uma conexão aqui de
  • 00:11:26
    esse esse É como se eu fosse tivesse um
  • 00:11:29
    componente ok o alfa aqui né eu ia falar
  • 00:11:32
    fake Mas enfim falsa a e consome os
  • 00:11:37
    dados desse componente e consome os
  • 00:11:39
    dados desse componente E aí Isso aqui
  • 00:11:41
    vira um novo componente um componente
  • 00:11:44
    grandão aqui tá claro que esse é
  • 00:11:48
    esse adaptador AC Muito provavelmente eu
  • 00:11:51
    vou a querer fazer uma outra interface
  • 00:11:53
    dele é para prover um a também para
  • 00:11:58
    prover dados então eu estaria provendo
  • 00:12:00
    os dados desses dois componentes aqui de
  • 00:12:02
    uma forma integrada já a composição
  • 00:12:05
    desses dois componentes aqui olha é um
  • 00:12:09
    pro ver e o outro com fome então a
  • 00:12:11
    composição é diretas esse componente é
  • 00:12:14
    que ele está consumindo os dados desse
  • 00:12:18
    componente a está consumindo os dados do
  • 00:12:22
    componente B certo a e aqui existe uma
  • 00:12:26
    composição mais complexa que é e eu
  • 00:12:30
    tenho o componente a que com que tem os
  • 00:12:37
    dois tipos de interface que é invocado e
  • 00:12:40
    produz e o componente B também né os
  • 00:12:43
    dois tipos de interface o provar das e o
  • 00:12:45
    record então eu tenho um tipo de
  • 00:12:49
    adaptador AC para a
  • 00:12:54
    é a que produz algum tipo de informação
  • 00:12:57
    que o ar e o bebê requer e um outro o
  • 00:13:01
    adaptador aqui que consome a informação
  • 00:13:04
    que o ar e o b produz de forma que eu
  • 00:13:08
    vou ter um grande componente maior aqui
  • 00:13:10
    que a
  • 00:13:12
    produz informação do componente grande
  • 00:13:16
    aqui e requer a informação do componente
  • 00:13:19
    grande aqui não tá dando para ver
  • 00:13:21
    Exatamente porque a figura cortou bem
  • 00:13:23
    aqui mas essas duas interfaces aqui de
  • 00:13:25
    cima são do tipo requer Tá mas de
  • 00:13:28
    qualquer forma são formas são apenas
  • 00:13:30
    figuras ilustrativas de exemplos de
  • 00:13:33
    composições Aqui nós temos um exemplo um
  • 00:13:36
    pouco mais é
  • 00:13:39
    real que são já é
  • 00:13:43
    componentes que que alguém alguma vez
  • 00:13:47
    criou mesmo né componente aqui
  • 00:13:49
    biblioteca de fotos é interface com
  • 00:13:52
    usuário
  • 00:13:54
    as imagens e as que sim um componente
  • 00:13:56
    adaptador então um componente que é
  • 00:14:00
    consome dados do biblioteca de fotos
  • 00:14:03
    consome dados do gerenciador de imagens
  • 00:14:05
    e consome dados do
  • 00:14:07
    interface com o usuário Além disso
  • 00:14:10
    biblioteca de fotos ainda tem outras
  • 00:14:12
    duas interfaces que não está sendo usada
  • 00:14:14
    aqui tá aqui também nós temos o um
  • 00:14:18
    exemplo aqui de cima o
  • 00:14:21
    componente sensor que tem três
  • 00:14:24
    interfaces que produz dados O componente
  • 00:14:28
    coletor de dados que tem várias
  • 00:14:31
    interfaces que produz dados mas que tem
  • 00:14:34
    duas interfaces que consome dados Então
  • 00:14:36
    veja que interessante o coletor de dados
  • 00:14:39
    tem duas interfaces pedindo dados só que
  • 00:14:43
    o sensor tem três produzindo então foi
  • 00:14:46
    criado um adaptador aqui que pega as
  • 00:14:49
    duas interfaces é que requer dados
  • 00:14:53
    e do coletor de dados e conforme os
  • 00:14:58
    dados do sensor através por meio de três
  • 00:15:01
    outras interfaces em São Claro que aqui
  • 00:15:03
    dentro desse adaptador vai existir um
  • 00:15:05
    código vai existir uma inteligência para
  • 00:15:07
    poder fazer essa interface aqui essa
  • 00:15:10
    adaptação de o corredor de dados em
  • 00:15:13
    algum momento vai usar uma dessas
  • 00:15:16
    interfaces E aí o adaptador vai saber
  • 00:15:19
    qual das interfaces ou até mesmo duas ou
  • 00:15:21
    três ao mesmo tempo é do sensor certo
  • 00:15:25
    bom E aí a nós temos Finalmente né um
  • 00:15:30
    modelo de processo um exemplo uma
  • 00:15:32
    sugestão aqui de um modelo de processo
  • 00:15:34
    Qual o processo você deveria seguir para
  • 00:15:38
    desenvolver um software baseada em
  • 00:15:40
    Componentes e e tem semelhanças com
  • 00:15:43
    modelos de processos que nós já vimos em
  • 00:15:45
    aulas anteriores mas perceba que em
  • 00:15:48
    algum momento você precisa por exemplo
  • 00:15:51
    adquirir componentes você precisa
  • 00:15:55
    gerenciar os componentes então a ideia
  • 00:15:59
    que esse processo é ter atividades
  • 00:16:02
    voltadas para
  • 00:16:04
    reusar os componentes criar componentes
  • 00:16:07
    encontrar componentes usar esses
  • 00:16:10
    componentes certo né o bom é isso então
  • 00:16:15
    a a essa aula o material foi feito
  • 00:16:19
    baseado no livro do sommerville
  • 00:16:21
    engenharia de software décima edição de
  • 00:16:23
    2018 espero que com isso vocês tenham
  • 00:16:27
    tido uma boa ideia do que são os
  • 00:16:30
    componentes de software e da engenharia
  • 00:16:32
    de software baseada em Componentes
  • 00:16:34
    obrigado a
  • 00:16:39
    E aí
  • 00:16:42
    [Música]
  • 00:16:48
    E aí
  • 00:16:51
    E aí
  • 00:16:57
    E aí
  • 00:17:02
    E aí
  • 00:17:08
    [Música]
Tags
  • componentes de software
  • reuso
  • engenharia de software
  • interfaces
  • documentação
  • composição
  • orientação a objetos
  • modelos de desenvolvimento