Prof. Geraldo Braz Junior Reuso Reutilizao de Software Na maioria das reas de engenharia de software, sistemas so desenvolvidos pela composio de componentes existentes que tenham sido utilizados em outros sistemas. Atualmente, a engenharia de software tem sido mais focada no desenvolvimento original Mas para alcanar um software melhor, mais rapidamente e com menor custo, precisamos adotar um processo de design que se baseia na reutilizao de software. 2 Engenharia de Software baseada na reutilizao Aplicao do sistema de reutilizao O conjunto de um sistema aplicativo pode ser reutilizado por incorpor-lo sem mudanas em outros sistemas (reutilizao COTS*) ou por famlias de aplicativos em desenvolvimento. Reutilizao de componentes Componentes de uma aplicao podem ser reutilizados para compor outra aplicao Reutilizao de objetos e funo Os componentes de software que implementam um objeto nico e bem definido ou a funo pode ser reutilizados. 3 COTS: commercial off-the-shelf Sistemas de Prateleira Benefcios da Reutilizao 4 Aumento da confiabilidade Reso de software, que tem sido experimentado e testado em sistemas de trabalho, devem ser mais confivel do que o novo software. Reduo do risco de processo Se o software existe, h menos incerteza nos custos de reutilizao de software que no nos custos de desenvolvimento. Particularmente verdadeiro quando os componentes de software relativamente grande como sub-sistemas so reutilizados. O uso efetivo de especialistas Especialistas no ficam fazendo trabalho repetitivo Benefcios Reutilizao 5 Conformidade com os padres Algumas normas, como padres de interface do usurio, podem ser implementadas como um conjunto de normas em componentes reutilizveis. Desenvolvimento acelerado Trazendo um sistema para ao mercado mais cedo possvel muitas vezes estimar os custos de desenvolvimento global. Reutilizao de software pode acelerar a produo do porque o tempo de desenvolvimento e validao podem ser reduzidos Problemas na Reutilizao 6 Aumento dos custos de manuteno Se o cdigo-fonte de um componente reusvel no estiver disponvel, os custos de manuteno podem ser aumentados, pois os elementos do sistema de reso pode tornar-se cada vez mais incompatvel com alteraes no sistema. Falta de suporte de ferramenta Sindrome do no inventado aqui Criao e Manuteno de uma biblioteca de componentes Procura, compreenso e adaptao de componentes reusveis
O panorama reutilizao Embora a reutilizao muitas vezes simplesmente pensar em como a reutilizar componentes no sistema, existem muitas abordagens diferentes para fazer reutilizao O reaproveitamento possvel em uma escala de nveis que vo desde funes simples at sistemas completos O panorama da reutilizao abrange toda a gama de tcnicas de reaproveitamento possvel. 7 O panorama reutilizao Design patterns Component-based development Component frameworks Service-oriented systems COTS integ ration Application product lines Legacy system wrapping Program libraries Program generators Aspect-oriented software development Configurable ver tical applications 8 Tipos de Reuso Design Patterns Abstraes genricas que ocorrem ao longo das aplicaes aplicativos Desenvolvimento baseado em componentes Os sistemas so desenvolvidos pela integrao de componentes (colees de objetos) que atendem aos padres do modelo de componente Frameworks de aplicaes Colees de classes abstratas e concretas que podem ser adaptadas e estendida para criar sistemas de aplicativos. Empacotamento de sistemas legados Os sistemas legados que pode ser envoltos por uma camada que define um conjunto de interfaces e proporciona o acesso a estes sistemas legados atravs dessas interfaces. Sistemas orientados a servios Os sistemas so desenvolvidos pela ligao de servios compartilhados que podem ser fornecidos externamente. 9 Tipos de Reuso
Linhas de Produtos de Aplicao Um tipo de aplicativo generalizado em torno de uma arquitetura comum para que possam ser adaptadas de maneiras diferentes para clientes diferentes. Integrao COTS Os sistemas so desenvolvidos pela integrao dos sistemas aplicativos existentes. Configurao de sistemas Verticais Um sistema genrico projetado de modo que ele possa ser configurado para as necessidades de clientes especficos do sistema. Bibliotecas do Programa Conjunto de Classes e Funes Geradores de Programa Um sistema que capaz de gerar outro sistema especfico Desenvolvimento de software orientado a aspectos Componentes compartilhados integrados em uma aplicao em diferentes lugares quando o programa compilado 10 Planejamento para Reutilizao O cronograma de desenvolvimento do software. O tempo de vida do software esperado. Competncias e experincia da equipe de desenvolvimento. A criticidade do software e seus requisitos no-funcionais. O domnio de aplicao. A plataforma de execuo do software. 11 Reutilizao conceitual Quando se reutiliza componentes pr-construdos necessrio seguir as decises de design feitas pelo desenvolvedor original do componente. Isto pode limitar as possibilidades de reutilizao. No entanto, uma forma mais abstrata de reuso a reutilizao do conceito quando uma determinada abordagem descrita de uma maneira independente de aplicao e uma aplicao ento desenvolvida. As duas principais abordagens para a reutilizao de conceito so: Design patterns (ou padres de projeto); Geradores Automticos 12 Os padres de projeto Um padro de projeto uma forma de reutilizar um conhecimento abstrato sobre um problema e sua soluo. Um padro uma descrio do problema e da essncia da sua soluo. Deve ser suficientemente abstrata para ser reutilizado em diferentes contextos. Padres muitas vezes dependemde caractersticas de objetos, como herana e polimorfismo. 13 Elementos de um Padro Nome Um identificador padro significativo. Descrio do problema. Soluo descrio. No um projeto concreto, mas um modelo para uma soluo de design que pode ser instanciado em diferentes maneiras. Consequncias Os resultados e trade-offs da aplicao do modelo. 14 Mltiplos visualizadores (observer) 15 O padro Observer Nome Observer. Descrio Separa a exibio do estado do objeto a partir do prprio objeto. Descrio do problema Usado quando vrios monitores de estado so necessrios. Descrio da soluo Veja slide com a descrio UML. Consequncias Otimizaes para melhorar o desempenho de exibio so impraticveis. 16 O padro Observer 17 Geradores Automticos Geradores Programa envolvem a reutilizao de padres e algoritmos padro. Estes so incorporados no gerador e parametrizados por comandos do usurio. Um programa, ento, gerado automaticamente. possvel utilizar quando abstraes do domnio e mapeamento para cdigo executvel podem ser identificados. Uma linguagem de domnio especfico utilizado para compor e controlar essas abstraes. 18 Tipos de geradores automticos Tipos Geradores de aplicativos para sistemas comerciais; Parser e geradores de analisadores lxicos para o processamento da linguagem; Lex/Yacc Flex/Bison Geradores de cdigo em ferramentas CASE. (Astah, MDA) Aplicabilidade pequena dado que limitado por um nmero relativamente pequeno de domnios de aplicao. Para usurios finais, os gerados facilitam o desenvolvimento 19 Reutilizao atravs da gerao automtica 20 Descrio da Aplicao Domnio Telas Gerador de Programa Conhecimento de Domnio da Aplicao Programa Gerado Banco de Dados Desenvolvimento Orientada a Aspectos Aborda um problema de engenharia de software - a separao de assuntos (funcionalidades). Os assuntos so muitas vezes simplesmente funcionalidades transversais (afetam todo os sistema) - por exemplo, todos os componentes podem monitorar sua prpria operao, todos os componentes podem ter para manter a segurana, etc Assuntos transversais so implementados como aspectos e so dinamicamente ligados em um programa (pontos de juno). 21 Desenvolvimento Orientado a Aspectos 22 Frameworks de aplicaes Frameworks so um projeto sub-sistema composto por uma coleo de classes abstratas e concretas e as interfaces (chamadas) entre eles. O sub-sistema implementado pela adio de componentes para preencher as partes do projeto e, instanciando as classes abstratas do framework. 23 Classes Framework Frameworks de infra-estrutura do sistema Apoiar o desenvolvimento de componentes de infraestruturas, tais como comunicaes, interfaces de usurio e compiladores. Middleware Padres e classes que oferecem suporte comunicao de componentes e intercmbio de informaes. Frameworks de aplicaes empresariais Apoiar o desenvolvimento de tipos especficos de aplicao, tais como telecomunicaes ou sistemas financeiros. 24 Estendendo Frameworks Frameworks so genricos e so estensveis para criar uma aplicao mais especfica ou sub-sistema. Estender um framework engloba: Adicionar classes concretas que herdam as operaes a partir de classes abstratas no framework; Adicionar mtodos Problema com frameworks a sua complexidade, o que significa que ele leva muito tempo para us-los eficazmente. 25 Model View Controller Framework de infra-estrutura para o projeto grfico. Permite a vrias apresentaes de um objeto separado e interaes com essas apresentaes. Framework MVC envolve a instanciao de uma srie de padres (como discutido anteriormente no conceito de reutilizao). 26 Model-view-controller 27 Reuso de Sistemas de Aplicao Consiste na reutilizao de sistemas aplicativo inteiro seja por configurar um sistema para um ambiente ou pela integrao de dois ou mais sistemas para criar uma nova aplicao. Dois enfoques abordados aqui: COTS Produtos de linha. 28 Reutilizao de produtos COTS COTS Commercial Off-the-shelf. so normalmente sistemas aplicativos completos que oferecem uma API (Application Programming Interface). A construo de sistemas atravs da integrao de grandes sistemas COTS agora uma estratgia de desenvolvimento vivel para alguns tipos de sistemas, tais como sistemas de comrcio eletrnico. O principal benefcio o desenvolvimento rpido de aplicativos e menores custos de desenvolvimento. 29 Projeto de escolha de COTS Quais so os produtos COTS oferecem a funcionalidade mais adequada? Podemhaver vrios produtos similares que podem ser utilizados. Como os dados sero trocados? Produtos de uso individual das suas estruturas de dados prprias e formatos. Quais as caractersticas do produto sero realmente usadas? A maioria dos produtos tem mais funcionalidades do que o necessrio. Voc deve tentar negar o acesso a funcionalidades no utilizadas. 30 COTS reutilizao Client Web browser E-mail system Server E-commerce system Ordering and invoicing system E-mail system Adaptor Adaptor 31 COTS reutilizao No cliente, o padro de e-mail e programas de navegao na web so usados. No servidor, uma plataforma de comrcio eletrnico tem que ser integrada com um sistema j existente de ordenao. Isso envolve a escrita de um adaptador para que possam trocar dados. Um sistema de e-mail tambm est integrado ao gerar e-mails para os clientes. Isso tambm requer um adaptador para receber dados do sistema de faturamento de pedidos. 32 Reuso: COTS problemas A falta de controle sobre as funcionalidade e desempenho sistemas COTS podem ser menos eficazes do que parecem Interoperabilidade Diferentes sistemas COTS podem fazer suposies diferentes que significa a integrao difcil Sem controle sobre a evoluo do sistema Suporte dos fornecedores COTS fornecedores COTS pode no oferecer suporte durante a vida til do produto 33 Produtos de Linha Linhas de produto de software ou famlias de aplicao com funcionalidades genricas que podem ser adaptados e configurados para uso em um contexto especfico. A adaptao pode envolver: Componente e configurao do sistema; Adicionar novos componentes ao sistema; Seleo de uma biblioteca de componentes j existentes; Modificar componentes para atender as novas exigncias. 34 Configurao Implantao de configurao Um sistema genrico configurado por incorporao de conhecimento dos requisitos do cliente e processos de negcios. O software em si no alterado. Design de configurao de tempo Um cdigo comum genrico adaptado e modificado de acordo com as exigncias dos clientes em particular. 35 Organizao do sistema ERP 36 Sistemas ERP Um Enterprise Resource Planning (ERP) um sistema genrico que suporta processos comuns de negcios Estes so amplamente utilizados em grandes empresas - que representam provavelmente a forma mais comum de reutilizao de software. O ncleo genrico adaptado, incluindo mdulos e ao incorporar o conhecimento dos processos de negcio e regras. 37 Referncias 38 Ian Sommerville, Engenharia de Software. 8 edio Traduo das Notas de Aula disponibilizadas em http://www.cs.st- andrews.ac.uk/~ifs/Books/SE8/Syllabuses/index.html