E aí [Música] o Olá eu sou o professor Marcelo Fantinato Esta é a disciplina de engenharia de software e nós vamos falar no essa aula sobre reuso de software thru bom nós já falamos um pouco sobre reuso de software nas aulas anteriores quando nós falamos sobre padrões arquiteturais a Estilos arquiteturais né é uma forma de reuso quando você a busca um padrão de arquitetura que já existe que já foi documentado para aplicar na sua solução é vocês devem se lembrar da daquela aula em que é em algum momento tá escrito lá que um padrão arquitetural
é uma forma de você documentário compartilhar e reusar a as ideias de uma arquitetura Que Se mostraram ser genéricas ou suficientes para ser aproveitadas em outros contextos e é mais nessa aula aqui nós vamos falar de uma forma mais geral sobre o reuso de software a E aí vocês vão ver que uma das abordagens possíveis são os padrões arquiteturais é mas existem várias outras abordagens várias outras propostas para se reusar softer ou reutilizar software né ou a reutilização de software depende do autor é em português pode falar reuso ou reúso utilização de software bom então
é quando a gente pensa em Rio usar bastante software ou partes de software na engenharia de software e isso foi feito de uma forma bastante sistemática nós podemos dizer que nós fazemos uma engenharia de software baseada em reuso orientada em reuso ou dirigida por reuso depende aí da forma como o autor preferir o que seria então essa engenharia de software baseado em reuso é a estratégia em que o processo de desenvolvimento de software É voltado para maximizar o reuso de software existente né não só para reusar mas para maximizar esse reúso Então vamos tentar ver
usar o máximo possível software que já existe de novo software de novo precisa eu já falei sem aulas anteriores né não hoje mas já falei em aulas anteriores que vocês devem estar acompanhando espero né mas talvez alguns tem ido diretamente nesta aula a mas não era esperado mas software não significa apenas o código então não significa a usar apenas partes de código só que significa qualquer artefato então requisitos arquitetura casas de teste então qualquer artefato que fez desenvolvido para propiciar a entrega final do do programa do software rodando é com Quem sofre então reusar requisitos
reusar casas de teste e usar partes né de requisitos partes de casos de teste partes de arquitetura qualquer tipo de pedaço do de artefato usado no ciclo de desenvolvimento de ciclo de desenvolvimento de software é considerado reuso de software 1 é bom e porque eu quero reusar né é meio que Óbvio a para diminuir o custo e o tempo eu vou pegar uma parte já tá pronta não vou ter que gastar tempo e nem dinheiro fazendo aquela parte é e aumentando a qualidade porque aumentar na qualidade parece que é mais fácil pensar entender né facilmente
que eu diminuto o custo e o tempo mas por que aumenta a qualidade porque em teoria aquele pedaço de software que eu estou reaproveitando e já foi validado já foi avaliado já foi testado Já Foi verificado n vezes antes de eu estar usando ele agora então é diferente de eu fazer e eu validar eu avaliar eu testar eu chegar pela primeira vez e esse já foi checado por várias vezes antes então é por isso que eu digo que eu não né mas a a o uso de esqui Aumenta também a qualidade e eu posso fazer
o reuso em diferentes níveis aqui esse autor né diz que a gente pode fazer em quatro níveis diferentes eu posso ver usar o sistema inteiro seria o nível mais alto ou o nível mais baixo é reusar a objetos e funções então eu vou lá no nível da classe reuso uma classe pega uma classe que foi desenvolvida por alguém e uso e reuso reaproveitar que ela classe ou métodos apenas daquela classe Então seria o reuso no nível mais baixo mas eu tenho aí é a níveis intermediários Rei usar um componente O que é um componente é
um conjunto de classes né na verdade dos objetos já no código objeto a das placas instâncias das classes no código objeto os lados na forma de um objeto com uma interface bem definido de entrada e saída o que a gente chama de apê isso né A então seria um nível intermediário ou re uso das aplicações que seria é a um nível abaixo do sistema não torre usando o sistema inteiro mas tô rezando por que a gente chama de aplicação que seria é louvor vou pegar uma aplicação e fazer algumas adaptações Para uma determinada área ou
por uma determinada ou para uma outra área de contexto bom e porque queria o rio usar né já Adiantei lá para os principais objetivos custo tempo e qualidade é eu vou então ter um desenvolvimento acelerado vou deixar os meus especialistas para aquilo que é realmente diferente do meu software porque o que o normalmente consigo reusar aquilo que é mais comum entre os diferentes rostos e aí os meus especialistas os meus Engenheiros de software podem gastar o seu tempo naquilo que é mais importante para o meu software que diferencia dos outros rostos O que é comum
eu reaproveito é maior dependabilidade né eu vou ter maior confiança confiabilidade e maior segurança e melhor desempenho nos softer a e repetindo aqui os custos de desenvolvimento mais baixos e um menor risco para o processo a existe menor risco de o tempo de ter qualidade ruim é de cliente ficar insatisfeito Então os riscos para o processo de desenvolvimento de uma forma geral e também eu posso ter maior conformidade com padrões a assumindo que aqueles componentes é aliás assumindo que aquelas partes do sofre que eu estou usando são já já passaram por uma validação de conformidade
com padrões mas como sempre né Nem tudo são flores Existem algumas dificuldades com reuso por exemplo se estiver fazendo um reuso baseado em Componentes é que não é a única forma de fazer mas se eu estiver é difícil criar manter e usar uma biblioteca de componentes não é uma coisa trivial muitas organizações empresas Já tentaram e falharam por não seguir a melhor abordagem para isso é e mesmo que exista essa biblioteca a entender e adaptar esses componentes é também não é uma tarefa trivial a normal é comum que eu tenho que adaptar algum desses componentes
que eu não posso necessariamente usar esses componentes da forma como eles vêm é eu posso ter maiores custos de manutenção porque a eu quero deixar algo genérico suficiente para que ele possa ser realizado em outras situações eu acabo gastando mais com isso então eu tenho que gastar no lugar para ter um os benefícios em outros lugares claro que entendendo que no final das contas eu vou ter uma relação custo-benefício boa mas é acaba sendo uma dificuldade eu acabo tendo que é ter um custo maior em um determinado momento e não existem assim ferramentas totalmente direcionadas
diretamente direcionadas com reuso e não é algo que você acha facilmente apoio nas nas ferramentas comercialmente disponíveis existe ainda muito protótipo e muito ainda na área acadêmica bom eu tinha mencionado que existem várias abordagens para reuso E aqui nessa figura eu tenho uma alma simples ilustração de algumas dessas abordagens a eu vou mencionar aqui apenas três delas eu acho mesmo no livro-texto que que a gente segue aqui é pouquíssimas são são mencionadas Por que a é um material de engenharia de software geral essa disciplina é uma disciplina engenharia de software em geral reuso de software
é um tema super abrangente e cada um desses temas aqui por si só pode ser um livro por exemplo ó ah ah bom mas é E aí qual dessas abordagens usar Então eu preciso saber qual tal como está o croissant e até mesmo se eu vou usar alguma dessas abordagens Como está o cronograma do projeto a qual é o tempo de vida prevista para o softer ou software vai ser usado por muito tempo por pouco tempo é informações e habilidades e experiência da equipe porque para usar o para para para usar o reuso para aplicar
o reuso Eu preciso de uma certa experiência de uma certa maturidade da equipe de desenvolvimento e acriticidade do software e seus requisitos não-funcionais então a E também o domínio de aplicação a são fatores que eu tenho que levar em consideração na hora de analisar para saber qual abordagem qual daquelas abordagens é eu eu vou querer usar na e para reuso e ainda tinha mais uma aqui que eu tinha perdido a plataforma em que o sistema será executado bom então eu havia mencionado que eu falaria de três eu vou falar dessas três aqui olha a engenharia
de software baseada em Componentes é é um item que a gente sempre ouvi falar bastante desenvolvimento baseado em Componentes dos componentes de software os padrões de projeto e eu já mencionei em aulas anteriores nós falamos já em aula anterior especificamente dos padrões de arquitetura mas existem os padrões de projeto certo como arquitetura faz parte do projeto de certa forma os padrões de arquitetura É um tipo específico de padrões de projeto Mas nós vamos falar ainda sobre padrões de projeto de uma forma geral é não ainda na aula de hoje nessa nessa aula aqui agora a
e também vão falar sobre Framework de aplicação tá começando agora com o Framework de aplicação Premier para quem é a é desenvolvedor já trabalha bastante com desenvolvimento com programação Possivelmente já trabalhou com frameworks de aplicação não sei se necessariamente entende isso como uma abordagem de reuso uma abordagem sistemática de reuso dentro da engenharia de software é ou ou apenas como uma ferramenta que ajuda no desenvolvimento Mas sendo é turista nas definições isso que vocês usam é uma abordagem de reuso da engenharia de software né mas o que são esses frameworks de aplicação e é são
estruturas que vocês usam estruturas né o estrutura é o tradução em português para frente né então é só estruturas genéricas e estendidas para criar um subsistema ou aplicação mais específico então um Framework de aplicação é uma estrutura que vocês usam para quando vocês vão desenvolver um um sistema um software que já vem semi-pronto e vocês adiciona um coisas a mais você ficou de ficam coisas a mais Então o exemplo clássico é algum tem um que tomar Rider Leite né que é muito famoso por exemplo você provavelmente vocês vão já usaram ou já ouviram falar mas
é por exemplo um tremor né problema de vocês só conhecem como fêmur que não como fêmur que de aplicação mas a palavra frame eu fiquei muito genérica e esse é um creme orfield aplicação é vocês baixam esse tremor que é de aplicar e é ele já tá saindo Pronto ele já vem com um monte de coisa programada que alguém fez alguma empresa algum usuário algum programador a um conjunto de programadores a e deixou serve pronta para vocês usarem incorporarem na aplicação de vocês de forma que você está Tem que adicionar o código próprio de vocês
específico para aplicação de vocês é no caso para fazer o a comunicação com o banco de dados num software que seja por exemplo orientada a objetos é Então essa é a ideia né de um frame hoje aplicação uma estrutura genérica que você vai estender Quando eu digo você vai para o código próprio de vocês a mais é porque vocês estão estendendo aquela estrutura genérica para criar um subsistema ou aplicações mais específicas então é um conjunto Integrado de artefatos de software por exemplo são classes objetos ou componentes é que Joy o que colaboram para proporcionar uma
arquitetura reusável para uma família de aplicações relacionadas então de certa forma vocês quando vocês escolhem por exemplo usar o rádio e você já estão escolhendo que faz a forma uma arquitetura de software na verdade vocês deveriam ter primeiro escolhido arquitetura de software conceitualmente falando para depois falar ah eu posso então agora usar aquela aquele frango eu pedi aplicação certo Inclusive eu vou mencionar aqui que existe um fêmur que que é o MV é o para o padrão mvc né provavelmente vocês conhecerão o mvc pelo Framework é possível que vocês tenham conhecido o o termo mvc
pelo frenor mvc e não pela pelo estilo arquitetural mvc mas primeiro surgiu o padrão arquitetural mvc como um com c e depois o prêmio morte é O que é de aplicação mvc que algo que já vem pronto para vocês a estenderem para própria solução de vocês é então o Framework de aplicação Eles foram ele fornece apoio as características genéricas que tendem a ser usadas em todas as aplicações de um tipo parecido por isso que ele se chama Framework de aplicação porque ele é genérico para qualquer aplicação de um tipo parecido por exemplo para qualquer aplicação
que precisa usar um banco de dados relacional mesmo o banco o aplicação sendo desenvolvido orientada a objetos é o desenvolvedor deve especializados eles especializar esse frenor adicionando a funcionalidade específica para uma determinada aplicação outros prêmios de aplicação comum são frameworks para interfaces gráficas então um determinado fêmur que você e é já vem com um determinado tipo de uso de implementação para interface gráfica você é todas as aplicações que usam aquele frango que vão ter uma interface gráfica Aparecida Mas você usa aquele creme que você estende né você especializa com o que você precisa então como
eu havia comentado um exemplo é o fêmur mvc baseado no padrão mvc e esse Framework mvc ele é formado com implementações e padrões de projeto que é um outro item que a gente vai ver em outra aula e só por curiosidade adiantando existem três padrões que são aproveitados nesse Frenesi o que quer o padrão Observe o padrão strategy e o padrão composite mas a gente ainda vai falar sobre o que são padrões e projetos embora vocês talvez já esteja imaginando o que sejam alguns de vocês Possivelmente já sabiam é a que vocês têm outros exemplos
de freio que eu de aplicação por exemplo os wfs que são uso web application Framework aplicação prêmio de aplicações web são frameworks que para quem vai desenvolver um sistema web com páginas web usando esse espremer para já pegar um monte de coisa pronta que é o jargão né a forma da gente usar a ele já traz um monte de coisa pronta por exemplo os atrás né vou desenvolver um sistema web com páginas web seja atrás por exemplo integração com banco de dados ele traz por exemplo já a interação do usuário ele traz gestão de sessão
de usuário as páginas web dinâmica segurança da informação que tem um pouco a ver com gestão de sessão e o que que falta fazer então colocar a minha lógica né o meu sistema vai ter o que é um software de comércio eletrônico é um software de governo eletrônico O que é aí eu vou adicionar as coisas que eu vou precisar mas eu vou aproveitar todas essas funcionalidades que já vem prontas nesse frango aqui e há outros exemplos só para citar alguns nomes aqui existem Freire Marques de infraestrutura de sistema é Framework de integração e me
deu né que é uma tecnologia para você permitir o desenvolvimento de sistemas distribuídos como por exemplo dot net e JB e frameworks de aplicações corporativas bom é isso então voltamos agora ter a referência do livro de engenharia de software do som ver viu décima edição de 2018 enfim Essas são as informações é visão geral básicas sobre reuso de software mas a gente ainda continua com esse assunto em aula futura obrigado a [Música] E aí [Música] [Música]