• Nenhum resultado encontrado

texto-ReusoDeSoftware

N/A
N/A
Protected

Academic year: 2021

Share "texto-ReusoDeSoftware"

Copied!
12
0
0

Texto

(1)

Universidade Federal de Alagoas - UFAL

Curso: Bacharelado em Sistemas de Informação do

Sistema UAB/UFAL

Instituto de Computação – IC

Disciplina:

Tópicos Especiais em Sistemas de Informação

“Projetando Sistemas Baseados no Reuso”

Unidade 1 - Reuso de Software: Conceitos

Prof. Arturo Hernández Domínguez

Conteúdo:

1. Introdução

2. O que é Reuso de Software? 3. Técnicas de Reuso de Software 3.1 Componentes de Software 3.2 Frameworks

3.3 Linha de Produto de Software 3.4 Padrões de Projeto

Atividades usando o Ambiente Virtual de Aprendizagem Exercícios

(2)

1. Introdução

O desenvolvimento baseado em reuso de software foi uma resposta às demandas por menores custos de produção e manutenção de software, entrega mais rápida de sistemas e aumento da qualidade de software (SOMMERVILLE, 2007). O uso de reuso no é exclusivo do desenvolvimento de software, também, em outras disciplinas da engenharia o reuso é utilizado, por exemplo, normalmente projetos realizados por engenheiros mecânicos ou elétricos baseiam seus projetos em componentes experimentados e testados em outros projetos (SOMMERVILLE, 2007).

Nesta Unidade 1, são apresentados os conceitos sobre reuso de software, algumas técnicas de reuso de software, particularmente, componentes de software, frameworks, padrões de projeto e linha de produto de software.

2. O que é Reuso de Software?

A seguir, uma definição sobre reuso de software:

Reuso de software é o processo de criação de sistemas de software a partir de software existente (KRUEGER, 1992).

As unidades de software que podem ser reusadas podem ser de tamanhos diferentes (SOMMERVILLE, 2007):

Reuso de objetos e funções: Componentes que implementam uma função, exemplo função matemática, ou uma classe, podem ser reusados;

Reuso de componentes: Componentes de uma aplicação que variam desde subsistemas a simples objetos podem ser reusados;

Reuso da arquitetura comum: arquiteturas comuns podem ser reutilizadas, no contexto de famílias de aplicações. Uma aplicação será adaptada as necessidades específicas de um cliente e cada nova aplicação reusará a arquitetura comum.

(3)

As vantagens do reuso de software são (SOMMERVILLE, 2007): Custos reduzidos: Os custos totais de desenvolvimento são reduzidos;

Desenvolvimento acelerado: O reuso de software pode tornar rápida a produção do sistema porque tanto o tempo de desenvolvimento quanto o de validação devem ser reduzidos;

Confiança aumentada: Software reusado, experimentado e testado em sistemas funcionando, deve ser mais confiável do que software novo, já que seus defeitos de projeto e implementação foram identificados e corrigidos;

Conformidade com padrões: O uso de componentes reusáveis padronizados possibilitam o desenvolvimento de alguns padrões, tais como interfaces padronizadas, isto é, todas a aplicações desenvolvidas, reusando os componentes padronizados de interface, apresentarão o mesmo formato para os diferentes elementos da interface (menus, botões, etc). Também, componentes reusáveis padronizados podem ser desenvolvidos para a geração de relatórios de uma organização;

Uso eficiente de especialistas: Os especialistas podem desenvolver software reusável, aplicando seus conhecimentos.

Vamos interagir com o tutor online e os colegas da turma. Pesquisar,

participar, colaborar e contribuir no debate do fórum da Atividade 1

da Unidade1 no AVA (Moodle).

Também, lembrar de realizar a Atividade 2 da mesma unidade.

3. Técnicas de Reuso de Software

Algumas das técnicas que foram desenvolvidas para apoiar o reuso de software (SOMMERVILLE, 2007) são:

(4)

Design patterns (padrões de projeto): são abstrações que documentam soluções bem-sucedidas de projeto. Eles são fundamentais para o reuso de projeto no desenvolvimento orientado a objetos;

Desenvolvimento baseado em componentes: Sistemas desenvolvidos pela integração de componentes (conjunto de objetos) que estão em conformidade com padrões de modelos e componentes.

Frameworks de aplicações: são conjuntos de objetos concretos e abstratos projetados para serem reusados através da especialização e adição de novos objetos;

Linha de produto de software: um tipo de aplicação generalizada com base em uma arquitetura comum de tal maneira que possa ser adaptada para atender os requisitos específicos de uma nova aplicação;

Sistemas orientados a serviços: Sistemas desenvolvidos pela ligação de serviços compartilhados, que podem ser providos externamente;

Bibliotecas: Bibliotecas de classes e funções que implementam abstrações comumente usadas e disponíveis para reuso.

3.1 Componentes de Software

Um componente de software é uma parte ou peça de software reutilizável, que é desenvolvida de forma independente, pode ser utilizada junto com outros componentes para construir (compor) unidades de software maiores (D’SOUZA, 1999).

Na Figura 1, dois sistemas (Sistema 1 e Sistema 2) são construídos a partir do reuso de componentes de software. Considerando os requisitos associados a cada sistema, os sistemas 1 e 2 serão construídos reusando os componentes de software disponíveis. No contexto do Sistema 1, os requisitos R1, R2 e R3 serão realizados através dos componentes C1, C2 e C3. No Sistema 2, serão utilizados os componentes C3, C4 e C5 para realizar os requisitos R3, R4 e R5. No caso do componente C3, acontecerá uma reutilização para os dois sistemas.

(5)

Figura 1: Reuso de componentes na construção de novos sistemas.

Vamos refletir e realizar o exercício proposto 1 (consultar no final

deste documento).

Dúvidas na realização do exercício proposto 1?

Se a resposta é sim, lembrar de revisar seus conceitos desta unidade e

entrar em contato com o tutor online.

Conseguiu realizar o exercício proposto 1?

Se a resposta é sim, parabéns!

se a resposta é não, calma!, tente mais uma vez.

3.2 Frameworks

Um framework (ou arcabouço), segundo Fayad (1999), é:

Um esqueleto de uma aplicação em determinado domínio que pode ser customizada pelo desenvolvedor de aplicações.

Um framework (ou arcabouço) representa uma arquitetura reusável que fornece a estrutura e o comportamento genérico em determinado domínio (PRESSMAN, 2010). Um framework representa a parte invariante de uma aplicação que deverá ser reusado para a construção de uma aplicação que poderá ser customizada. Um framework orientado a objetos representa uma estrutura de classes inter-relacionadas, que constitui

(6)

uma implementação inacabada, para um domínio de aplicações (SILVA, 1999). Uma aplicação construída a partir de um framework será acabada quando o desenvolvedor de aplicações acrescentar o código específico da aplicação. No contexto de um framework, o reuso é de código e de projeto.

Na figura 2, uma aplicação para ser construída precisa do framework associado (retângulo interno cinza) e do código especifico da aplicação (retângulo interno que é representado com linha tracejada) que será acrescentado pelo desenvolvedor de aplicações.

Figura 2: Criação de uma aplicação a partir de um framework.

3.3 Padrões de Projeto

Um padrão de projeto é uma descrição do problema e a essência da sua solução num contexto (GAMMA et al., 2000)(SOMMERVILLE, 2007). A solução pode ser reusada em aplicações diferentes.

Um padrão de projeto pode ser visto como uma descrição de conhecimento e experiência acumulados, uma solução comprovada para um problema (SOMMERVILLE, 2007).

Padrões de projeto são maneiras de descrever melhores práticas, bons projetos, e captam a experiência de uma maneira possível de ser reusada por outros.

Os padrões de projeto são úteis para melhorar a qualidade de software a ser desenvolvido, tais como, sistemas, subsistemas, arquiteturas de software, componentes, frameworks e linha de produto de software.

(7)

3.4 Linha de Produto de Software

Uma linha de produto de software, segundo Gimenes (2002), é:

Um conjunto de produtos de software com características suficientemente similares para permitir a definição de uma infra-estrutura comum de estruturação dos itens que compõem os produtos e a parametrização das diferenças entre os produtos.

Uma linha de produto representa um conjunto de aplicações com uma arquitetura comum específica de aplicação. Cada aplicação específica é especializada de alguma maneira. O núcleo comum da família de aplicações é reusado para cada nova aplicação. Um novo produto (ou aplicação) pode envolver componentes adicionais a serem projetados e implementados (SOMMERVILLE, 2007).

A Figura 3 mostra uma arquitetura comum para uma linha de produto de software, essa arquitetura comum será reutilizada na construção de novas aplicações desenvolvidas a partir dessa linha de produto.

Figura 3: Arquitetura comum para uma linha de produto de software.

A Figura 4 mostra um exemplo de arquitetura de software para uma linha de produto de software de AVA (Ambiente Virtual de Aprendizagem). Isto é, cada nova aplicação construída a partir da linha de produto de AVA, é um sistema de tipo AVA.

(8)

Figura 4: Arquitetura comum para uma linha de produto de software de AVA.

Uma linha de produto de software permite a sistematização do reuso de software e possibilita o uso de outras técnicas de reuso tais como componentes de software, framework que poderiam ser utilizado como a arquitetura de uma linha de produto de software, o uso de padrões projeto para projetar os componentes de software usados na linha de produto e também, o uso de padrões orientados a arquitetura para projetar a arquitetura de uma linha de produto.

4. Resumo

No contexto de reuso de software, foram apresentados, neste documento, os seguintes assuntos: o que é reuso de software, definições sobre componentes de software, frameworks, padrões de projeto e linha de produto de software. O estudo das técnicas de reuso apresentadas será aprofundado na Unidade 2 (Componentes de Software), na Unidade 3 (Frameworks), na Unidade 4 (Linha de Produtos de Software) e na Unidade 5 (Uso de Padrões de Projeto na modelagem) desta disciplina.

(9)

Vamos tentar e realizar o desafio do exercício proposto 2 (consultar

no final deste documento

).

Dúvidas na realização do desafio do exercício proposto 2?

Se a resposta é sim, lembrar de revisar seus conceitos desta unidade e

entrar em contato com o tutor online.

Conseguiu realizar o desafio do exercício proposto 2?

Se a resposta é sim, mais uma vez parabéns!,

se a resposta é não, calma!, vamos tentar mais uma vez.

(10)

Referências Bibliográficas

Fayad M. E., Schmidt D. C., Johnson R. E. Building Application Frameworks. John Wiley & Sons. 1999.

Gamma E., Helm R., Johnson R., and Vlissides J. Padrões de Projeto: soluções reutilizáveis de software orientado a objetos, Bookman. 2000.

Gimenes, I. M. S.; TRAVASSOS, G. H. O Enfoque de Linha de Produto para Desenvolvimento de Software. Florianópolis, SC. SBC 2002. 34p. Trabalho apresentado na Jornada de Atualização em Informática. 2002.

Krueger C. Software Reuse. ACM Computing Surveys, Vol. 24, No. 2. Junho 1992. Pressman R. Engenharia de Software, 6a edição, AMGH Editora. 2010.

Silva R. P., Price R. T. Suporte ao Desenvolvimento e Uso de Componentes Flexíveis. SBES 99 – Simpósio Brasileiro de Engenharia de Software. Florianópolis – Santa Catarina 1999.

Sommerville, I. Engenharia de Software. 8a Edição. Addison Wesley. 2007.

Souza, D. F, Wills, A. Objects, Components and Frameworks with UML: the catalysis approach. Addison-Wesley, 785 p. 1999.

(11)

Atividades usando o Ambiente Virtual de Aprendizagem

Atividade 1 - Discussão no Fórum: Quais são as principais técnicas de reuso no contexto de desenvolvimento de sistemas de software? Justifique a resposta.

Atividade 2 (a realização desta atividade é individual) - Pesquise na Internet e em outros documentos sobre as técnicas de reuso de software: Componentes de Software, Frameworks e Linha de Produto de Software.

Construa um texto, descrevendo, de forma detalhada, exemplos de aplicação dessas técnicas de reuso de software. Para cada técnica de reuso (Componentes de Software, Frameworks e Linha de Produto de Software) descrever um exemplo de aplicação. Envie o texto através da tarefa, lembrando-se de colocar o nome do aluno.

(12)

Exercícios propostos

1. No contexto de sistemas de tipo comercio eletrônico, refletir e propor quais seriam os componentes para a construção de sistemas de venda de produtos online, esses componentes serão reaproveitados para a construção de sistemas de tipo venda de livros online (livraria virtual), venda de aparelhos eletrônicos online e loja virtual.

2. A direção da biblioteca de uma universidade A quer disponibilizar o acervo de livros para consulta e reserva pela internet, refletir e comparar de forma detalhada como seria o desenvolvimento desse sistema (biblioteca online) nas seguintes situações:

a) desenvolver esse sistema sem o uso de reuso de software e

Referências

Documentos relacionados

A discussão mais recente em torno das ações afirmativas para a população negra brasileira, com a cobrança das responsabilidades levadas a termo em declarações de direitos humanos

CAPÍTULO V – CONSIDERAÇÕES FINAIS Esta pesquisa teve como objetivo a construção e a validação de dois jogos didáticos: “Trinca Genética” e “Dominogêneo”, para

Devido a importância da HPIE para o cavalo atleta e as dificuldades naturais para o diagnóstico da HPIE, que compromete não só a saúde mas também a performance dos atletas,

CHROUSOS, 2002, com menor atuação em infecções crônicas pela Burkholderia mallei, concluindose que o período do dia para a coleta de material não interfere na resposta sorológica

Diversas fontes de carbono são empregadas no cultivo em bioflocos, açúcares, amidos, álcoois e fibras, assim, o objetivo deste trabalho foi avaliar os efeitos das fontes de

O farelo de algodão, caroço de algodão e a ureia podem ser utilizadas como alternativas ao farelo de soja, na alimentação de cabras leiteiras, com média de produção de 2kg de

Tabela 10:Taxas de infiltração de água, coeficiente de escoamento superficial C, taxas de desagregação do solo em entressulcos Di e perdas de solo PS obtidas sob as condições

Ao optar por uma história centrada nos traumas de uma relação entre pai e filho, foi impossível não pensar em Carta ao pai, de Franz Kafka. De novo, aqui, não quis margear a