leonardogarciachristoni · 2020. 3. 3. ·...

48
LEONARDO GARCIA CHRISTONI UM EXPERIMENTO DE LINHA DE PRODUTO DE SOFTWARE PARA O DESENVOLVIMENTO DE SISTEMAS DE LOJAS VIRTUAIS LONDRINA 2019

Upload: others

Post on 31-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • LEONARDO GARCIA CHRISTONI

    UM EXPERIMENTO DE LINHA DE PRODUTO DESOFTWARE PARA O DESENVOLVIMENTO DE SISTEMAS

    DE LOJAS VIRTUAIS

    LONDRINA2019

  • LEONARDO GARCIA CHRISTONI

    UM EXPERIMENTO DE LINHA DE PRODUTO DESOFTWARE PARA O DESENVOLVIMENTO DE SISTEMAS

    DE LOJAS VIRTUAIS

    Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

    Orientador: Prof(a). Dr(a). JandiraGuenka Palma

    LONDRINA2019

  • Ficha de identificação da obra elaborada pelo autor, através do Programa de GeraçãoAutomática do Sistema de Bibliotecas da UEL

    C556 Christoni, Leonardo Garcia.UM EXPERIMENTO DE LINHA DE PRODUTO DE SOFTWARE PARA ODESENVOLVIMENTO DE SISTEMAS DE LOJAS VIRTUAIS / LeonardoGarcia Christoni. - Londrina, 2019.47 f.

    Orientador: Jandira Guenka Palma.Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) -

    Universidade Estadual de Londrina, Centro de Ciências Exatas, Graduação emCiência da Computação, 2019.

    Inclui bibliografia.

    1. Linha de Produto de Software - TCC. 2. Sistema de Lojas Virtuais - TCC. I.Palma, Jandira Guenka. II. Universidade Estadual de Londrina. Centro deCiências Exatas. Graduação em Ciência da Computação. III. Título.

    CDU 519

    Powered by TCPDF (www.tcpdf.org)

  • LEONARDO GARCIA CHRISTONI

    UM EXPERIMENTO DE LINHA DE PRODUTO DESOFTWARE PARA O DESENVOLVIMENTO DE SISTEMAS

    DE LOJAS VIRTUAIS

    Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

    BANCA EXAMINADORA

    Orientador: Prof(a). Dr(a). Jandira GuenkaPalma

    Universidade Estadual de Londrina

    Prof. Dr. Adilson Luiz BonifácioUniversidade Estadual de Londrina – UEL

    Prof(a). Dr(a). Cinthyan Renata S. C.Barbosa

    Universidade Estadual de Londrina – UEL

    Londrina, 18 de novembro de 2019.

  • “Eu faço da dificuldade a minha motivaçãoA volta por cima, vem na continuação.“

  • AGRADECIMENTOS

    Agradeço a Deus pelo dom da vida, pela vida de meus familiares e de todos osmeus amigos.

    Aos meus pais Célio e Sueli, fonte de sabedoria e amor, pelo apoio incondicional,por todo carinho e confiança depositada em mim.

    Gostaria de agradecer também a todos que fizeram parte dessa etapa de minhavida, principalmente aos amigos da turma 24 e aos meus parceiros de república, sem elesnão conseguiria chegar até aqui.

    Agradecimento especial ao departamento de computação da Universidade Estadualde Londrina, à minha orientadora Prof(a). Dr(a). Jandira por todo o apoio e atençãodurante o desenvolvimento desse trabalho, e finalmente a todos professores e funcionáriosque de alguma forma contribuíram para o meu aprendizado.

  • “Não diga que a vitória está perdidaSe é de batalhas que se vive a vida

    Tente outra vez”

  • CHRISTONI, LEONARDO. GARCIA. Um experimento de Linha de Produto deSoftware para o desenvolvimento de sistemas de lojas virtuais. 2019. 47f. Tra-balho de Conclusão de Curso (Bacharelado em Ciência da Computação) – UniversidadeEstadual de Londrina, Londrina, 2019.

    RESUMO

    Linha de Produtos de Software (LPS) é um conjunto de sistemas alinhados a uma mesmavertente, a qual se baseia no desenvolvimento de produtos a partir de características emcomum. É uma estratégia que agrega qualidade e eficiência ao produto final. O trabalhofaz um estudo de LPS aplicada ao sistema de lojas virtuais, utilizando conceitos de LPScom o propósito de identificar e expor técnicas para elaboração de uma LPS. Espera-secom este trabalho obter conhecimento sobre o tema e ao fim mostrar uma estruturaçãopara a criação de um conjunto de elementos que compõe uma LPS. Como resultado deverárelatar as vantagens e desvantagens do emprego de LPS no desenvolvimento de uma lojavirtual a partir de evidências encontradas no experimento.

    Palavras-chave: Linha de Produto de Software, Sistema de Lojas Virtuais.

  • CHRISTONI, LEONARDO. GARCIA. Software Product Line: An experiment fordeveloping a virtual store system. 2019. 47p. Final Project (Bachelor of Science inComputer Science) – State University of Londrina, Londrina, 2019.

    ABSTRACT

    Software Product Line (SPL) is a set of systems aligned to the same subject, which isbased on the development of products based on common characteristics. It is a strategythat adds quality and efficiency to the final product. The work makes a study of LPSapplied to online stores system, using concepts of LPS with the purpose of identifyingand exposing techniques for elaboration of an LPS. It is hoped that with this work, getyourself knowledge about the theme and finally show a structure for the creation of aset of elements that make up an LPS. As a result, should report the advantages anddisadvantages of using LPS in the development of a virtual store from the evidence foundin the experiment.

    Keywords: Software Product Line, Virtual Store System.

  • LISTA DE ILUSTRAÇÕES

    Figura 1 – Modelo ciclo de vida clássico (Fonte: Autor). . . . . . . . . . . . . . . . 16Figura 2 – Único produto para todos vs. produtos individuais (Tradução:[1]. Fonte:

    [2]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Figura 3 – Relação entre ponto de variabilidade e variante (Tradução: Autor. Fonte:

    [2]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Figura 4 – Abordagens para construção de Linhas de Produto de Software (Tra-

    dução: Autor. Fonte: [3]). . . . . . . . . . . . . . . . . . . . . . . . . . 22Figura 5 – Tempo para o mercado com e sem Linha de Produto de Software (Tra-

    dução: Autor. Fonte: [2]). . . . . . . . . . . . . . . . . . . . . . . . . . 23Figura 6 – Diagrama das etapas e processos envolvidos (Fonte: Autor). . . . . . . 24Figura 7 – Diagrama de atividades propostas (Fonte: Autor). . . . . . . . . . . . . 25Figura 8 – Ciclo de Desenvolvimento de Ativos-Base (Fonte: [4]). . . . . . . . . . . 26Figura 9 – Modelo de característica de um E-Shop (Fonte: Autor). . . . . . . . . . 28Figura 10 – Etapas para a produção de um artefato (Fonte: Autor). . . . . . . . . . 29Figura 11 – Exemplo de um sistema de loja virtual (Fonte: Magazine Luiza). . . . . 31Figura 12 – Fluxo genérico de atividade para realização de um pedido (Fonte: Autor). 32Figura 13 – Pagina renderizada em dispositivo mobile, fazendo uso do Material De-

    sign (Fonte: Material Design). . . . . . . . . . . . . . . . . . . . . . . . 33Figura 14 – Processos executados para definição da LPS (Fonte: Autor). . . . . . . 34Figura 15 – Requisitos de usuário da loja virtual (Fonte: Autor). . . . . . . . . . . 35Figura 16 – FODA da Loja Virtual (Fonte: Autor). . . . . . . . . . . . . . . . . . . 35Figura 17 – Componentes reutilizáveis (Fonte: Autor). . . . . . . . . . . . . . . . . 36Figura 18 – Camadas presente em cada componente (Fonte: Autor). . . . . . . . . . 37Figura 19 – Componente Login (Fonte: Autor). . . . . . . . . . . . . . . . . . . . . 38Figura 20 – Componente Cadastro (Fonte: Autor). . . . . . . . . . . . . . . . . . . 38Figura 21 – Componente Lista de produtos (Fonte: Autor). . . . . . . . . . . . . . 39Figura 22 – Componente LOGIN - HTML (Fonte: Autor). . . . . . . . . . . . . . . 45Figura 23 – Componente LOGIN - CSS (Fonte: Autor). . . . . . . . . . . . . . . . 45Figura 24 – Componente CADASTRO - HTML (Fonte: Autor). . . . . . . . . . . . 46Figura 25 – Componente CADASTRO - CSS (Fonte: Autor). . . . . . . . . . . . . 46Figura 26 – Componente LISTA DE PRODUTOS - HTML (Fonte: Autor). . . . . 47Figura 27 – Componente LISTA DE PRODUTOS - CSS (Fonte: Autor). . . . . . . 47

  • LISTA DE TABELAS

    Tabela 1 – Exemplo dos diversos níveis de abstração onde pontos de variabilidadepodem ser aplicados(Fonte [5]). . . . . . . . . . . . . . . . . . . . . . . 19

    Tabela 2 – Lista das características identificadas e classificadas.(Fonte Autor) . . . 36

  • LISTA DE ABREVIATURAS E SIGLAS

    CSS Cascade Style Sheets

    HTML Hypertext Markup Language

    LP Linha de Produto

    LPS Linha de Produto de Software

    MVC Model View Controller

    MV Modelo de Variabilidade

  • SUMÁRIO

    1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    2 REVISÃO BIBLIOGRÁFICA . . . . . . . . . . . . . . . . . . . 152.1 Processo de Desenvolvimento de Software . . . . . . . . . . . . 152.2 Linha de Produto de Software . . . . . . . . . . . . . . . . . . . . 172.2.1 Variabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2.1.1 Modelo de Características . . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.2 Engenharia de Domínio . . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.3 Engenharia de Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . 212.2.4 Abordagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2.5 Vantagens e Desvantagens . . . . . . . . . . . . . . . . . . . . . . . . 22

    3 METODOLOGIA PARA O DESENVOLVIMENTO DE UMALINHA DE PRODUTO DE SOFTWARE . . . . . . . . . . . . 24

    3.1 Análise de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2 Engenharia de Domínio . . . . . . . . . . . . . . . . . . . . . . . . 263.2.1 Feature Oriented Domain Analysis . . . . . . . . . . . . . . . . . . . . 273.3 Engenharia de Aplicação . . . . . . . . . . . . . . . . . . . . . . . 28

    4 APLICAÇÃO DE LINHA DE PRODUTO DE SOFTWAREPARAS LOJAS VIRTUAIS . . . . . . . . . . . . . . . . . . . . 30

    4.1 Materiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.1.1 Sistema de Loja Virtual (E-commerce) . . . . . . . . . . . . . . . . . . 304.1.2 Material Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 Experimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.2.1 Análise de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.2.2 Engenharia de Domínio . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2.3 Engenharia de Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Análise de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . 39

    5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

  • APÊNDICES 44

    APÊNDICE A – CÓDIGO FONTE DOS COMPONENTES 45A.1 LOGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45A.1.1 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45A.1.2 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45A.2 CADASTRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46A.2.1 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46A.2.2 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46A.3 LISTA DE PRODUTOS . . . . . . . . . . . . . . . . . . . . . . . 47A.3.1 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47A.3.2 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

  • 14

    1 INTRODUÇÃO

    O mercado de softwares vem crescendo e evoluindo, tecnologias são lançadas, sis-temas são desenvolvidos, maneiras de arquitetar aplicações são criadas, trata-se de umaárea dinâmica que a todo momento aumenta o grau de exigência e qualidade de seusprodutos e requer maior velocidade na produção de um sistema conciliando o baixo custono desenvolvimento do mesmo. Para que as empresas possam se destacar nesse mercadocompetitivo, a qualidade alinhada a alta produtividade, se faz necessária, e para issoexiste uma estratégia utilizada durante todo o projeto arquitetural e desenvolvimento dosistema, que é conhecida como Linha de Produto de Software(LPS)[3].

    LPS é um conjunto de produtos de software relacionados, todos compartilhandofuncionalidades, características ou aspectos comuns, ainda que existam particularidadesem cada produto. Ao aplicar essa estratégia obtém-se alguns benefícios como qualidadee produtividade, pois é reduzido o número de defeitos relatados, o tempo de correções,o custo total de desenvolvimento e o tempo até a entrega do produto final[6]. Por outrolado o custo inicial se torna alto, pois é necessário tempo e contar com profissionais dealta qualidade para se projetar e desenvolver uma LPS.

    O objetivo desse trabalho é realizar um estudo a respeito de LPS por meio de umexperimento, baseado em sistemas de lojas virtuais, e como resultado expor e ou propormetodologias, técnicas e ferramentas para produção da mesma. Será utilizado abordagempró-ativa na elaboração da LPS. Essa abordagem consiste no desenvolvimento de produtosapós a criação dos elementos base, que são caracterizados pelas características comunsdos produtos pertencentes à LPS.

    O documento organiza-se da seguinte forma: o capítulo 2 apresenta os resultados edefinições obtidos de trabalhos relacionados ao assunto abordado neste projeto; o capítulo3 aborda a metodologia para o desenvolvimento de uma LPS para sistemas de lojasvirtuais; o capítulo 4 expõe a aplicação da proposta, bem como os materiais e métodosutilizados no experimento; por fim, o capítulo 5 apresenta as considerações finais sobre otrabalho.

  • 15

    2 REVISÃO BIBLIOGRÁFICA

    Este trabalho aborda uma estratégia utilizada na produção de softwares que farãoparte de uma linha de produtos. Seu objetivo é diminuir custos, tempo e esforço noprocesso de desenvolvimento e manutenção. Portanto, os tópicos a seguir irão explanarsobre o processo de desenvolvimento de software no contexto de uma linha de produtos.Assim sendo, os tópicos a serem estudados tratarão sobre o processo de desenvolvimento desoftware que contemplam os processos utilizados na engenharia de software, as principaiscaracterísticas e metodologias utilizadas no decorrer do desenvolvimento de software eda linha de produto. Será apresentado também o conceito de uma Linha de Produto deSoftware, uma estratégia empregue na confecção de softwares, sua definição segundo àliteratura. O ultimo tópico conterá alguns trabalhos que fizeram uso dessa estratégia e aforma com que a mesma foi implementada no projeto. Para elaboração dessa monografiafoi realizado busca bibliográfica na literatura como, Scopus(Elsevier), Web of Science,Google Academics, IEEE Explore e em outros meios como sites e revistas. Foram utilizadaspalavras chaves como "Software Product Line", "Software Product Line AND proactiveapproach" e "processo de desenvolvimento de software". Os artigos, livros e trabalhosselecionados foram os relevantes a área em questão.

    2.1 Processo de Desenvolvimento de Software

    O desenvolvimento de um software é realizado por meio de etapas, normalmentesequenciais, que caracterizam seu ciclo de vida a partir da aplicação de certa metodologiade desenvolvimento[7].

    Essas etapas podem ser compostas por diversas ações e tarefas, diferentes mo-delos e processos de desenvolvimento de software. É uma abordagem variável definidanormalmente pelas pessoas que irão atuar no software e que visa atingir o objetivo finalde entregar um software de qualidade.

    Existem algumas atividades que são comuns no projeto de um software. São ati-vidades que fazem parte das mais variadas aplicações, programas de pequeno e grandeporte, dos mais simples aos mais complexos. Um modelo genérico de desenvolvimento desoftware abrange o seguinte conjunto de atividades:

    Comunicação. Atividade responsável pela caracterização do projeto, conhecimento daproblemática, das possíveis soluções, e da definição das funcionalidades do software, nessaatividade a comunicação com o cliente é crucial[8].

    Planejamento. Nessa fase se define um cronograma, um mapa, com todos os conjuntos

  • 16

    de atividades e tarefas que auxiliará no processo de análise e desenvolvimento do sistemafinal. É realizado um levantamento das tarefas necessárias, assim como os requisitos,recursos e riscos associados a cada uma[8].

    Modelagem. Em grande parte dos projetos é necessário um modelo, um "esboço"doproblema, de forma a entender melhor as necessidades e os passos a serem tomados. Nessafase se cria modelos arquiteturais que são usados para o desenvolvimento do software[8].

    Construção. Atividade designada para a codificação e depuração, criação do códigoexecutável e dos testes, sejam eles manuais ou automatizados[8].

    Emprego. Onde é realizado a entrega parcial ou total do software, podem envolver tarefascomo validação e homologação[8].

    A definição dos processos inerentes a cada atividade podem divergir, assim comoa sequência das atividades, porém as atividades metodológicas continuarão sendo asmesmas[8].

    A Figura 1 demonstra o ciclo de vida, utilizando o modelo cascata, onde uma etapasó é realizada a partir de uma anterior finalizada, nunca havendo sobreposição entre elas.

    Figura 1 – Modelo ciclo de vida clássico (Fonte: Autor).

    O ciclo de vida pode ser empregado interativamente ao decorrer do projeto, onde acada iteração terá como resultado um incremento de software, ao final de várias iterações

  • 17

    o software se torna completo, atingindo o resultado esperado[8][9].

    Todo esse processo é realizado para a confecção de um único sistema, conformea engenharia de software foi evoluindo juntamente com o crescimento da demanda desoftwares em larga escala, um novo conceito foi criado, a de componentes reutilizáveis,que é um componente de software que deve ser projetado e implementado de modo quepossa ser reutilizado em muitos programas diferentes, e a partir disso o engenheiro podeconcentrar seus esforços nos elementos inovadores, distintos dos já desenvolvidos, isto é,nas partes do projeto que têm características diferentes, elementos novos[8].

    Os componentes de software reutilizáveis encapsulam tanto dados quanto o pro-cessamento aplicado a eles, ou seja permitirão reusar partes de um sistema desenvolvidoanteriormente como: especificações, módulos de um projeto, arquitetura e código fonte,possibilitando criar novas aplicações a partir de partes reutilizáveis[8].

    A linha de produto de software faz uso desses componentes para prover um con-junto de componentes que poderão ser utilizados em muitos softwares. Esses componentespodem pertencer a softwares de um mercado específico, ou ainda a genéricos[8].

    2.2 Linha de Produto de Software

    O modo com que os produtos são produzidos tem mudado com o passar do tempo.A princípio eram produzidos para consumidores individuais. O poder aquisitivo das pes-soas aumentou, assim como a capacidade delas de comprar vários tipos produtos. Nomercado automotivo isso fez com que Ford criasse o conceito de linha de produto[2]. Se-gundo Mota[10] uma Linha de produto(LP) é definida como "grupo de artigos afins quese destinam a um mesmo grupo de consumidores, atendendo a necessidades e desejossemelhantes", atualmente um conceito já estabelecido na maioria das áreas de mercado.Naquela época com o conceito de Ford, os produtos passaram a ser produzidos em massa,diminuindo os custos da produção em detrimento das diversificações de cada produto[2].

    Após um certo período com o uso da produção em massa, que tinha como focoprodutos padronizados, os clientes passaram a requerer produtos diferentes, com carac-terísticas e qualidades diferenciadas. As pessoas queriam ter outros carros ou um melhorque o de seus vizinhos. A indústria automotiva foi confrontada com uma crescente de-manda por produtos com características diferentes. Esse foi o começo da customização emmassa,"Personalização em massa é a produção em grande escala de mercadorias adapta-das às necessidades individuais dos clientes", em outras palavras, significa levar em contaos requisitos e desejos dos clientes[2].

    Os quatro carros na parte inferior da Figura 2 são um exemplo de customizaçãoem massa: carros diferentes que atendem aos desejos dos clientes individuais, cada umproduzido em grande número.

  • 18

    Figura 2 – Único produto para todos vs. produtos individuais (Tradução:[1]. Fonte: [2]).

    Para os clientes a customização em massa significa a capacidade de ter um produtoindividualizado. Para as empresas significa um maior custo envolvido na produção, o queacarreta em alto preço no produto final, e/ou acaba diminuindo a margem de lucro dosprodutos. Sendo assim, muitas indústrias, especialmente a indústria automotiva, começa-ram a utilizar plataformas comuns na fabricação dos veículos. Isso consiste em analisare definir quais partes são comuns e serão usadas nos diferentes modelos de carro. Cadamodelo possui os itens de série e os opcionais. Os itens de séries são a estrutura seguidapor todos os carros fabricados a partir de um mesmo modelo, como motor, transmissão,tamanho do veículo, etc. Esses itens normalmente são a parte mais custosa na produçãodo veículo, pois envolve design e manufatura. O uso de uma plataforma para a fabricaçãodos diferentes modelos de carro levam a uma redução no custo de produção para um carroparticular[2].

    O uso em conjunto da customização em massa com as plataformas comuns permitegerar uma família de produtos, com características comuns que faz reuso de uma basetecnológica e com características variáveis que atendem a necessidade de cada cliente. Naárea de software esse conceito é chamado de Linha de Produto de Software - (SoftwareProduct Line)[2].

    LPS usa a mesma analogia de uma LP para a análise e desenvolvimento de um,ou vários sistemas, visando uma customização em massa, utilização de plataformas co-muns(na área de software o termo plataforma é usado um pouco diferente, mas aindacontinua em acordo com o significado clássico) e produção em larga escala de bens adap-tados de acordo com as necessidades individuais do usuário. Pode-se dizer que o objetivo

  • 19

    de uma LPS é fazer reuso de softwares, criar uma estrutura, independente de linguagemde programação, que contenha as características comuns dos sistemas de um domínio es-pecifico e que possa por meio dessa estrutura, com a inclusão de particularidades, gerarum conjunto de sistemas, conforme a necessidade de cada projeto[2][11].

    2.2.1 Variabilidade

    Variabilidade é um conceito importante de LPS e está relacionada às diversas mu-danças, customizações, que ocorrem ou podem ocorrer durante o desenvolvimento da LPS.O cliente normalmente deseja que haja mudanças no escopo do produto gerando diversoscenários, que levam na confecção de diversos sistemas, cada um com sua particularidade.Os dois principais termos usados sobre variabilidade em uma LPS são:

    Ponto de variabilidade: diz respeito a um aspecto funcional em um elementode software base que possui variação. Um ponto de variabilidade pode possuir diversasvariantes, ele defini o mecanismo para instanciar as variantes e o tempo de ativação dasmesmas, são pontos pré-definidos que podem receber customizações ao decorrer do ciclode desenvolvimento do produto, a Tabela 1 mostra alguns exemplos onde podem ocorreros pontos de variabilidade[5].

    Tabela 1 – Exemplo dos diversos níveis de abstração onde pontos de variabilidade podemser aplicados(Fonte [5]).

    Nível de abstração Descrição

    Arquitetura Utilização de documentos de alto nível de design como linguagensde descrição de arquitetura e documentação de texto.Diagramas Utilização de diagramas UML.Código-fonte Descrição dos pontos na forma de código fonte.Código compilado O código fonte é compilado para ser analisado.

    Código ligadoOs resultados obtidos na fase de compilação são ligados deforma estática em tempo de compilação ou de forma dinâmica em tempo deexecução.

    Código de execução O sistema é construído e configurado. Devido ao dinamismo,mudanças ocorrem a todo o tempo.

    Variantes: são as possibilidades existentes em cada ponto de variabilidade, ouseja todas instâncias que podem ser geradas.

    A Figura 3 retrata o conteúdo abordado, bem como sua relação.

  • 20

    Figura 3 – Relação entre ponto de variabilidade e variante (Tradução: Autor. Fonte: [2]).

    2.2.1.1 Modelo de Características

    O modelo de características(Feature Model), é o principal mecanismo para mo-delagem de variabilidade e foi introduzido pelo Feature Oriented Domain Analysis. Asfeatures são utilizadas para agrupar um conjunto de requisitos relacionados, sendo umaforma de abstrair requisitos. A relação entre requisitos e feature ocorre de n para n[5].

    As features têm como objetivo facilitar o entendimento e compreensão dos desen-volvedores e usuários com relação aos requisitos. Dessa forma, quando há necessidadesde ocorrer mudanças ou até mesmo atualizações nos sistemas, essas mudanças podem sercaracterizadas em formato de features, as quais podem ser aplicadas em todos os ciclosde desenvolvimento de software, até mesmo em produção. Ou seja, o feature model temcomo propósito abstrair requisitos e apresentar em alto nível as principais característicasde uma família de produtos, sejam elas comuns ou variáveis[5].

    O modelo de características é utilizado na engenharia de domínio para a modela-gem dos produtos, porém não consegue ser aplicado na engenharia de aplicação, pois nãoconsegue representar como esses produtos serão gerados por meio dos artefatos presentesnos ativos base[5].

    2.2.2 Engenharia de Domínio

    A engenharia de domínio é responsável por determinar a plataforma de reusoapontando quais artefatos são comuns e quais são variáveis na linha de produto. Osartefatos também chamados de ativos base podem ser de todo tipo, requisito, design,teste, etc[5].

  • 21

    Nessa fase é feita uma análise dos artefatos que podem vir a fazer parte do conjuntode ativos. A característica desses artefatos é o reuso do mesmo nos diversos produtos dafamília de produtos.

    2.2.3 Engenharia de Aplicação

    A engenharia de aplicação é encarregada de criar as aplicações concretas, construirum produto novo, por meio da análise dos artefatos explorados na engenharia de domínio.Ela explora a variabilidade da linha de produtos, assegurando uma correta instanciaçãoconforme as necessidades das aplicações finais[5].

    2.2.4 Abordagens

    Existem diversas abordagens para o desenvolvimento de LPS. Serão apresentadasas abordagens proativa, reativa e extrativa.

    A abordagem proativa consiste na ideia de construção de uma nova família deprodutos, sem a necessidade de produtos já existentes. Primeiramente é feita a aplicaçãode conceitos da engenharia de software como análise do domínio, projeto arquitetural edefinição dos ativos e somente após aplicados esses processos é iniciada a criação dosativos base visando desenvolver os produtos finais.

    Ao contrário da proativa, na abordagem reativa os ativos-base já estão prontos,assim como uma versão da LPS. Então, a empresa evolui a linha existente, atendendo aosrequisitos para instanciação de novos produtos.

    Na abordagem extrativa são analisados produtos do domínio escolhido para extrairsuas similaridades e variabilidades. A partir dessa análise é construída uma versão inicialda linha.

  • 22

    Figura 4 – Abordagens para construção de Linhas de Produto de Software (Tradução:Autor. Fonte: [3]).

    2.2.5 Vantagens e Desvantagens

    O uso de LPS traz várias vantagens como, redução dos custos de desenvolvimentoe manutenção, principalmente nas partes comuns, também chamados de ativos base. Aelaboração de uma LPS gera redução no tempo entrega de um produto ao mercado "time-to-market", conforme ilustrado na Figura 5, o tempo de desenvolvimento de somenteum produto é constante, entretanto no desenvolvimento de uma LPS o tempo passa aser menor conforme a quantidade de produtos, ativos base, que já foram desenvolvidos. Aqualidade do produto normalmente tende a aumentar, pois a cada inserção de um membronessa linha, são realizados novos testes, sejam eles unitários, de sistema ou regressão. Ecaso necessário é feita a refatoração dos ativos, beneficiando toda a família, a qual oproduto em questão pertence.

  • 23

    Figura 5 – Tempo para o mercado com e sem Linha de Produto de Software (Tradução:Autor. Fonte: [2]).

    As desvantagens associadas ao uso de LPS são a alta demanda de tempo na ini-ciação do processo para criação da linha de produto, bem como no desenvolvimento dosprimeiros artefatos, nome dado aos sistemas desenvolvidos que representam os ativos base.O processo de análise dos requisitos, da definição dos ativos base, e do desenvolvimentodos artefatos necessita de um engenheiro com experiência em arquitetura de software„oqual é um profissional muito requisitado no mercado.

  • 24

    3 METODOLOGIA PARA O DESENVOLVIMENTO DEUMA LINHA DE PRODUTO DE SOFTWARE

    Este trabalho tem como objetivo propor um modelo para o desenvolvimento deuma LPS para sistemas de lojas virtuais, utilizando a estratégia de uma linha de produtosde software com abordagem proativa, permitindo analisar e definir a arquitetura que seráempregue no sistema. A Figura 6 retrata esse modelo mostrando todas etapas e processosdefinidos, por meio dela é possível obter uma visão geral do passo a passo adotado nessametodologia e cada passo será detalhado ao decorrer desse capítulo.

    Figura 6 – Diagrama das etapas e processos envolvidos (Fonte: Autor).

    A implementação dessa proposta será dividida em três etapas sequencias conformemostra a Figura 7. A primeira, análise de requisitos, é um processo descrito pela enge-nharia de software e comumente utilizada no processo de desenvolvimento de sistemas.A segunda e terceira etapa, engenharia de domínio e engenharia de aplicação, são pro-cessos mais específicos usados na confecção de uma linha de produto de software. Paraa elaboração dessas etapas serão utilizadas as ferramentas e os conceitos apresentadosanteriormente no referencial bibliográfico.

    Para o desenvolvimento da linha de produto de software de uma loja virtual foiadotado alguns modelos e abordagens citados anteriormente, devido ao estudo realizadopor meio dos referenciais aqui presentes. Esses modelos e abordagem foram os que me-lhores atenderam ao estudo de caso proposto.

  • 25

    Na gestão de variabilidade foi utilizado o modelo de características, pois o mesmotem grande acervo referencial, possui uma notação de fácil entendimento e é utilizado namaioria das linhas de produtos no que se diz a respeito a engenharia de domínio.

    A abordagem escolhida foi a proativa, pois sua principal característica é o pla-nejamento inicial para os futuros produtos que serão produzidos. É o caso da propostadesse trabalho que é a de planejar uma família de produtos para uma plataforma de lojasvirtuais.

    Figura 7 – Diagrama de atividades propostas (Fonte: Autor).

    3.1 Análise de requisitos

    A análise de requisitos faz parte da engenharia de requisitos e segundo Sommervile[12] "os requisitos de um sistema são as descrições do que o sistema deve fazer, os serviçosque oferece e as restrições a seu funcionamento". Ainda, segundo esse, os requisitos podemser distinguidos em requisitos de usuários e requisitos de sistema.

    Os requisitos de usuário contém os processos nos quais o usuário faz parte e sãocomportamentos externos do sistema. Nos requisitos de sistema são encontrados as fun-

  • 26

    cionalidades, serviços, validações e restrições que fazem parte do sistema.

    O papel da primeira etapa é realizar a análise desses requisitos, definir, levantaras principais características e especificidades de uma loja virtual para que posteriormentese aplique os processos das demais etapas.

    3.2 Engenharia de Domínio

    A Engenharia de Domínio será responsável por determinar o conjunto de artefatoscomuns e variáveis que estará presente em todos, ou parte, dos sistemas da família deprodutos. Ao final dessa etapa pode-se observar na Figura 8 que será obtido o escopo dalinha de produto com o conjunto de ativos base (Core Asset Base) e o plano de produção(Production Plan) [13][14].

    A Figura 8 retrata também os ciclos de desenvolvimento do conjunto de ativos(CoreAsset Development),e de gerenciamento dos ativos(Management). A função do desenvol-vimento do conjunto de ativos é criar o escopo da LP, os ativos e o plano de produçãoque são essenciais para o futuro desenvolvimento das aplicações. O gerenciamento de ati-vos servirá como atividade de suporte para gerenciar todos os conjuntos de ativos e aprodução dos produtos da LP. [15]

    Todo o processo é contínuo e executado durante a criação e manutenção dos pro-dutos pertencentes a LP.

    Figura 8 – Ciclo de Desenvolvimento de Ativos-Base (Fonte: [4]).

  • 27

    Serão utilizados dois processos nessa etapa:

    ∙ definição do que é comum e variável na linha de produto de software;

    ∙ definição dos componentes reutilizáveis, formando o conjunto de artefatos que serãoutilizados em todos sistemas pertencentes à linha de produto de software.

    3.2.1 Feature Oriented Domain Analysis

    Existem vários métodos e modelos usados na modelagem da variabilidade, o Fea-ture Oriented Domain Analysis é o principal modelo de variabilidade e será referenciadonesse trabalho pela sigla MV. O MV será utilizado para realização do primeiro processoé responsável por representar um modelo de características por meio de gráficos e di-agramas. Ele é utilizado durante a definição da variabilidade da linha de produto, quepor sua vez é caracterizada durante o processo de engenharia de domínio. O MV é capazde representar as features e descrever outras informações como pontos de variabilidade,relacionamentos e pontos de variabilidade[5][16].

    A Figura 9 mostra um modelo de característica de um E-Shop utilizando MV.Nesse método são utilizadas algumas notações e definidas algumas regras, para que aofinal se consiga representar as features e vários outros itens adicionais.

    Cada feature deve ser caracterizada com uma das seguintes opções:

    ∙ Obrigatória: A feature deve estar presente em todas os sistemas da linha de produtode software.

    ∙ Opcional: A feature pode ou não estar presente nos sistemas que compõe a linhade produto de software.

    ∙ Alternativa: composição de várias features, pode se escolher uma ou mais featuresalternativas.

  • 28

    Figura 9 – Modelo de característica de um E-Shop (Fonte: Autor).

    No diagrama mostrado pela Figura 9 temos algumas observações a serem feitas:

    As features são representados por retângulos. As arestas que as ligam e contémcírculo preto são consideradas relações de features obrigatórias. As arestas com círculo embranco correspondem às features opcionais. Os arcos vazados correspondem à escolha deuma feature alternativa. Os arcos preenchidos com preto correspondem a escolher maisde uma alternativa.

    3.3 Engenharia de Aplicação

    Na engenharia de aplicação serão desenvolvidas as aplicações de fato, serão usadosos conjuntos de ativos base e os planos de produção definidos anteriormente na engenhariade domínio[14]. Nesse processo serão implementados os artefatos pertencentes à famíliade produtos.

    Para a produção de cada artefato serão seguidos alguns processos conforme mostraa Figura 10.

  • 29

    Figura 10 – Etapas para a produção de um artefato (Fonte: Autor).

    No processo de requisitos será realizado a especificação do artefato que está sendodesenvolvido. O processo de realização será responsável pela implementação do artefatoa partir dos requisitos levantados anteriormente, várias atividades podem ser realizadascomo criação de interfaces do usuário, criação e implementações de classes e interfacesdo sistema, entre outras. O último processo é responsável por realizar testes na aplicaçãodesenvolvida, validando e verificando se os requisitos foram atendidos.

  • 30

    4 APLICAÇÃO DE LINHA DE PRODUTO DE SOFTWAREPARAS LOJAS VIRTUAIS

    Este capítulo trata a respeito do desenvolvimento do experimento na prática. Serámostrado a arquitetura definida, assim como suas features e todas características quepertencem ao processo de confecção de uma linha de produtos.

    4.1 Materiais

    Essa seção apresenta os matérias e ferramentas que participaram do processo deanálise e desenvolvimento do experimento.

    4.1.1 Sistema de Loja Virtual (E-commerce)

    Este trabalho tem como objeto de estudo os sistemas de lojas virtuais, conformevisto no Capítulo 3 a proposta foi criar por meio da análise e da extração de característicasdesses sistemas, uma linha de produto de software para o domínio de lojas virtuais, poréma aplicação concreta deste trabalho se resume a aplicar o conceito de uma linha de produtode software na criação e manutenção do front end de uma loja virtual, ou seja da interfaceque o usuário tem acesso, deixando outras etapas arquiteturais para serem implementadasem trabalhos futuros.

    A loja virtual a ser desenvolvida é uma plataforma convencional de compras onlinee é uma aplicação web que pode ser implementada em diversas linguagens e com diferentestecnologias. Em outras palavras a loja virtual, a qual este trabalho se remete, é um siteconforme mostra a Figura 11, cuja principal funcionalidade é possibilitar a realização decompras online, para isso oferece informações uteis ao cliente, como preço, descrição dosprodutos, oque possibilita a escolha da forma de pagamento e entrega[17].

  • 31

    Figura 11 – Exemplo de um sistema de loja virtual (Fonte: Magazine Luiza).

    Na Figura 12 é mostrado um fluxo genérico de atividade de um cliente em umsistema de loja virtual.

  • 32

    Figura 12 – Fluxo genérico de atividade para realização de um pedido (Fonte: Autor).

  • 33

    4.1.2 Material Design

    O Material Design foi lançado em 2014 e é uma padronização da google para ofront-end de suas aplicações, é uma linguagem de design e uma das ferramentas definidaspara ser utilizada neste trabalho durante o processo de engenharia de aplicação. Trata-sede uma linguagem visual que sintetiza os princípios clássicos do bom design com a inovaçãoda tecnologia e da ciência, projetado para ser um conceito para a interface do usuário comas seguintes características: de simples compreensão, intuitivo, fluído e natural[18][19].

    Na Figura 13 é mostrado uma interface renderizada em um dispositivo mobilefazendo uso do Material Design.

    Sua escolha para este trabalho foi devido a ser uma ferramenta que permite unificara experiência do usuário em todas plataformas e sistemas que compõe ou que possam vira compor a linha de produto de software em questão[18] .

    Figura 13 – Pagina renderizada em dispositivo mobile, fazendo uso do Material Design(Fonte: Material Design).

  • 34

    4.2 Experimento

    Neste capítulo é descrito como foi realizado a estruturação, e definição da linha deproduto de software para um sistema de lojas virtuais. Foram executados os 3 processoscontidos na Figura 14, e que anteriormente foram descritos no capítulo 3.

    Figura 14 – Processos executados para definição da LPS (Fonte: Autor).

    4.2.1 Análise de requisitos

    Conforme descrito na seção 3, a análise de requisitos pode ser separada em re-quisitos de usuários e de sistema, e nesse trabalho será realizado a análise de alguns dosrequisitos de usuário, a de sistema ficará a cargo de trabalhos futuros. Como forma dedocumentar os requisitos foi utilizado a ferramenta Visual Paradigm1.

    A Figura 15 mostra alguns dos requisitos que o usuário necessita em um sistemade loja virtual.1 https://www.visual-paradigm.com/

  • 35

    Figura 15 – Requisitos de usuário da loja virtual (Fonte: Autor).

    4.2.2 Engenharia de Domínio

    Essa etapa se baseia na definição de outras 2 subetapas, são elas:

    ∙ Definição do que é comum e variável na linha de produto de software

    Com base nos requisitos que foram definidos na etapa anterior, foi possível definiras características e mapeá-las por meio de um modelo de características.

    A representação do modelo de característica foi feita através da notação MV, con-forme mostra a Figura 16.

    Figura 16 – FODA da Loja Virtual (Fonte: Autor).

    A Tabela 2 mostra as características identificadas no sistema e a classificação decada uma delas.

  • 36

    Tabela 2 – Lista das características identificadas e classificadas.(Fonte Autor)

    Característica ClassificaçãoCadastro ComumLogin ComumLista de Pedidos ComumLista de Favoritos VariávelLista de Produtos ComumCarrinho Comum

    ∙ Definição dos componentes reutilizáveis, formando o conjunto de artefatos que serãoutilizados em todos sistemas pertencentes à LPS.

    Para a constituição do conjunto de artefatos foram selecionadas as característicasque são comuns em todos os sistemas pertencentes à LP. Com base nas caracterís-ticas selecionadas, foi definido um componente para representar cada uma delas. AFigura 17 retrata os componentes definidos neste experimento, cada componente érepresentado através de um retângulo.

    Figura 17 – Componentes reutilizáveis (Fonte: Autor).

    Esses componentes são e serão utilizados por todos os sistemas que compõem ouirão compor a família de produtos.

  • 37

    A construção e implementação desses artefatos podem ser divididas em vários pro-cessos, neste trabalho foram dividido em 3, conforme abordado na Seção 3.2.1. Cadaprocesso é composto por várias camadas interconectadas, sendo elas, camada de ló-gica da aplicação, também conhecida como model, camada de visualização que éresponsável pela representação dos dados de saída e entrada, e a camada de con-trole que faz a conexão entra as duas camadas anteriores. A Figura 18 ilustra arelação entre essas camadas, todas presentes em cada componente.

    Figura 18 – Camadas presente em cada componente (Fonte: Autor).

    4.2.3 Engenharia de Aplicação

    Neste trabalho foi realizada a implementação de uma das camadas de alguns doscomponentes pertencentes à linha de produto.

    A camada implementada foi a de visualização(View), ficando as demais, lógica econtrole, para serem implantadas em trabalhos futuros.

    A confecção dos componentes foi feita com base no Material Design, já descritoanteriormente na seção 4.1.1, também foi utilizado Hypertext Markup Language (HTML)e Cascade Style Sheets (CSS) para o desenvolvimento.

    As Figuras 19 e 20 mostram a parte visual dos componentes, o código HTML eCSS deles está presente no Apêndice.

  • 38

    ∙ Componente - Login.

    Figura 19 – Componente Login (Fonte: Autor).

    ∙ Componente - Cadastro.

    Figura 20 – Componente Cadastro (Fonte: Autor).

  • 39

    ∙ Componente - Lista de produtos.

    Figura 21 – Componente Lista de produtos (Fonte: Autor).

    De forma que facilite o acesso aos componentes pertencentes à linha de produto,eles se encontram no GitHub, um repositório online open source que possibilita o upload,edição de códigos, gerenciamento de projetos, entre outras funcionalidades e podem serser acessados através do link 2. [20]

    4.3 Análise de Resultados

    A criação de uma linha de produto de software utilizando abordagem proativarequer que vários processos sejam definidos, entre eles o de análise, arquitetura e imple-mentação e cada processo implica na necessidade de conhecimentos de técnicas e ferra-mentas especificas. Com tudo ainda se faz necessário o conhecimento do próprio produtoque será desenvolvido, a área em que o mesmo se encontra e as possíveis variações para2 https://github.com/LeonardoChristoni/componentesLPS

  • 40

    que se possa prever as possíveis mudanças de escopo, as adaptações necessárias e outrosempecilhos que possam aparecer na utilização dos componentes em toda a LP.

    Ao final do experimento se obteve um conjunto de componentes com a camadavisual implementada que podem ser utilizados por todos os membros que compõe ouvirão compor a linha de produto de software. Apesar das camadas Model e Controllernão serem contempladas nesse trabalho pode-se observar que será necessário realizar umaanálise e definir uma arquitetura para implementação dessas camadas, podem apareceralgumas necessidades conforme a instanciação de novos componentes, como por exemploda criação de macros componentes que servirão de auxilio aos já existentes. Porém apósimplementadas as 3 camadas o componente será de extrema valia para criação de novaslojas virtuais.

    O conjunto de processos propostos neste trabalho e a metodologia adotada emcada um deles tornou a confecção de um linha de produto de sistemas de lojas virtuaisum trabalho mais fácil, principalmente pelo pequeno número de etapas definidas e pelosmétodos didáticos que foram adotados em cada uma delas, como é o caso do MV.

  • 41

    5 CONCLUSÃO

    Este trabalho apresentou o conceito de linha de produto de software, uma dasestratégias utilizadas no mercado de software, para que sistemas de uma mesma vertentepossam ser desenvolvidos com qualidade e agilidade. Neste trabalho também foram ex-postas as principais abordagens utilizadas na implementação de uma linha de produtode software e demonstrado um modelo de característica didático, que facilita listar eclassificar às característica encontradas na linha de produto.

    A metodologia proposta neste trabalho se mostrou eficiente e alcançou o objetivode expor e propor métodos, técnicas e ferramentas para a criação de uma linha de pro-duto de software. Por meio das etapas pode-se analisar os principais requisitos de umsistema de loja virtual, definir as características presentes nas lojas virtuais, e por fimcriar componentes de camada visual, tendo como resultado depois da execução de todosos processos, a configuração de um conjunto de ativos base, que pode ser utilizada portodas aplicações pertencentes à linha de produto.

    Para trabalhos futuros é proposto realizar o desenvolvimento das outras camadasque compõe cada um dos componentes, a camada lógica, onde irá ser definidas as interfacese caracterizada toda a parte lógica do componente junto a aplicação e a camada decontrole, responsável por controlar a relação entre as outras duas camadas. Com todas ascamadas implementadas o conjunto de artefatos final poderá atender a todos os sistemasque compõe ou virão a compor a linha de produtos, de maneira ágil, fácil e com qualidade.

    Apesar da não evidenciação dos resultados devido ao uso de uma abordagem pro-ativa que tem como característica estruturação de uma LP do início, da não instanciaçãocompleta dos componentes e da integração dos mesmos, pode identificar-se por meio dosestudos e referenciais levantados que a estratégia de uso de uma LPS possui varias van-tagens, principalmente se comparado ao modelo tradicional.

    No modelo tradicional as organizações fazem uso da estratégia de reuso de soft-ware por meio de repositórios que armazenam estruturas, métodos e fragmentos geradosdurante o desenvolvimento de um software. Porém estes repositórios não são organizados esistematizados visando atender um reuso em larga escala, aumentando consideravelmenteo tempo de desenvolvimento dos produtos posteriormente.

    A LPS utiliza uma estratégia diferente, ela é baseada em planejamento e sistemati-zação. Como os repositórios são os ativos base, estes são customizados para a instanciaçãode produtos por meios de mecanismos de variabilidade, uma das vantagens por exemploé a manutenção desses ativos, pois uma vez realizado as devidas alterações, as mesmas jásão replicadas a todos produtos que fazem uso desse ativo.

  • 42

    REFERÊNCIAS

    [1] AGUILAR, M. C. A reengenharia com o propósito de criar uma Linha de Produtosde Software. Universidade Estadual de Londrina, p. 68, 2018.

    [2] POHL, K.; BÖCKLE, G.; LINDEN, F. van der. Software Product Line Engineering.[S.l.]: Springer Berlin Heidelberg, 2005.

    [3] SILVA, F. A. P. da et al. Linhas de produtos de software: Uma tendênciada indústria. Escola Regional de Informática Ceará, Maranhão, Piauí:Livro texto dos minicursos. [livro eletrônico], p. 7–31, 2011. Disponível em:. Acesso em: 18de jul. de 2019.

    [4] NORTHROP, L. Software Product Lines Essentials. [S.l.]: Carnegie MellonUniversity, 2008.

    [5] NASCIMENTO, R. J. O. D. Linha de Produto de Software. 2015. Disponível em:. Acesso em:26 de ago. de 2019.

    [6] DURSCKI, R. C. et al. Linhas de Produto de Software : riscos e vantagens de suaimplantação. VI Simpósio Internacional de Melhoria de Processos de Software, p.155–166, 2004.

    [7] AMADEU, C. V.; GONÇALVES, P. R. &. T. J. Análise e Projeto de Sistemas.Batatais: Claretiano, 2013.

    [8] PRESSMAN, R. S. Software Engineering: a Practitioner’s Approach. 7th. ed. [S.l.]:AMGH Editora Ltda, 2011. 780 p.

    [9] MANZANO, A. Processo de Desenvolvimento de Software, o ciclo de vida clássicosobre a ótica ISO/IEC/IEEE 12207:2017(E). Revista Programar, 2018.

    [10] MOTA, H. Estratégias de marketing garantem o sucesso do produto nomercado. Disponível em: . Acesso em: 08 de abr. de 2019.

    [11] LEE, Y. H.; VILAIN, P.; KOMOSINSKI, L. J. Uma Arquitetura para Linhas deProduto de Software de E- Commerce usando o Framework Play em Scala. p.442–451, 2005.

    [12] SOMMERVILE, I. Engenharia de Software. 9. ed. [S.l.]: Pearson Education, 2011.544 p. ISBN 978-85-7936-108-1.

    [13] MENDES, R. R. R. Linhas De Produto De Software : Um Estudo De Caso Para ODesenvolvimento De Um Sistema De Faq. 2015.

    [14] IANZEN, A. Definição De Escopo Em Linhas De Produto De Software: UmaAbordagem Semiautomática Utilizando Anotação Linguística. 111 p. Dissertação(Mestrado) — Pontifícia Universidade Católica do Paraná, 2013.

    http://www.die.ufpi.br/ercemapi2011/minicursos/EBOOK.pdfhttps://www.devmedia.com.br/linha-de-produto-de-software/33894http://www.sebrae.com.br/sites/PortalSebrae/artigos/estrategias-de-marketing-garantem-o-sucesso-do-produto-no-mercado,b10032736a186410VgnVCM1000003b74010aRCRDhttp://www.sebrae.com.br/sites/PortalSebrae/artigos/estrategias-de-marketing-garantem-o-sucesso-do-produto-no-mercado,b10032736a186410VgnVCM1000003b74010aRCRDhttp://www.sebrae.com.br/sites/PortalSebrae/artigos/estrategias-de-marketing-garantem-o-sucesso-do-produto-no-mercado,b10032736a186410VgnVCM1000003b74010aRCRD

  • 43

    [15] LANG, M. Design of a Portfolio Management System for Software LineDevelopment: Merging the Gap between Software Project and Product Management.[S.l.]: Anchor Academic Publishing, 2015.

    [16] DALMON, D. L.; BRANDÃO, L. D. O. Sobre o Desenvolvimento de SoftwareEducacional: proposta de uma Linha de Produto de Software para Módulos deAprendizagem Interativa. Revista Brasileira de Informática na Educação, v. 21,n. 03, 2014. ISSN 1414-5685.

    [17] MILO, L. Loja Virtual: O Que É, Como Criar, Estratégias e MuitoMais. 2019. Disponível em: . Acesso em: 20 de abr. de 2019.

    [18] MATERIAL Design. Disponível em: .Acesso em: 05 de out. de 2019.

    [19] RALLO, R. Material Design. 2019. Disponível em: . Acesso em: 05. de out. de 2019.

    [20] CHRISTONI, L. Componentes de uma LPS para Sistemas de Lojas Virtuais.GitHub repository, 2019. Disponível em: . Acesso em: 12 de out. de 2019.

    https://www.bertholdo.com.br/blog/como-criar-loja-virtual-guia-pratico/https://www.bertholdo.com.br/blog/como-criar-loja-virtual-guia-pratico/https://material.io/design/introductionhttps://rockcontent.com/blog/material-design/https://rockcontent.com/blog/material-design/https://github.com/LeonardoChristoni/componentesLPShttps://github.com/LeonardoChristoni/componentesLPS

  • Apêndices

  • 45

    APÊNDICE A – CÓDIGO FONTE DOS COMPONENTES

    A.1 LOGIN

    A.1.1 HTML

    Figura 22 – Componente LOGIN - HTML (Fonte: Autor).

    A.1.2 CSS

    Figura 23 – Componente LOGIN - CSS (Fonte: Autor).

  • 46

    A.2 CADASTRO

    A.2.1 HTML

    Figura 24 – Componente CADASTRO - HTML (Fonte: Autor).

    A.2.2 CSS

    Figura 25 – Componente CADASTRO - CSS (Fonte: Autor).

  • 47

    A.3 LISTA DE PRODUTOS

    A.3.1 HTML

    Figura 26 – Componente LISTA DE PRODUTOS - HTML (Fonte: Autor).

    A.3.2 CSS

    Figura 27 – Componente LISTA DE PRODUTOS - CSS (Fonte: Autor).

    Folha de rostoFolha de aprovaçãoDedicatóriaAgradecimentosEpígrafeResumoAbstractLista de ilustraçõesLista de tabelasLista de abreviaturas e siglasSumárioIntroduçãoREVISÃO BIBLIOGRÁFICAProcesso de Desenvolvimento de SoftwareLinha de Produto de SoftwareVariabilidadeModelo de Características

    Engenharia de DomínioEngenharia de AplicaçãoAbordagensVantagens e Desvantagens

    Metodologia para o desenvolvimento de uma linha de produto de softwareAnálise de requisitosEngenharia de DomínioFeature Oriented Domain Analysis

    Engenharia de Aplicação

    Aplicação de Linha de Produto de Software paras lojas virtuaisMateriaisSistema de Loja Virtual (E-commerce)Material Design

    ExperimentoAnálise de requisitosEngenharia de DomínioEngenharia de Aplicação

    Análise de Resultados

    ConclusãoReferênciasApêndicesCódigo fonte dos componentesLOGINHTMLCSS

    CADASTROHTMLCSS

    LISTA DE PRODUTOSHTMLCSS