420 likes | 516 Views
Uma Visão de Web Engineering. Luciano Tadeu Esteves Pansanato CEFET-PR / ICMC-USP Renata Pontin de Mattos Fortes ICMC-USP. Roteiro. Engenharia de Software Engenharia de Web Aplicações Web Modelo de Processo Métodos de Desenvolvimento NBR ISO/IEC 12207 Software Livre
E N D
Uma Visão de Web Engineering Luciano Tadeu Esteves Pansanato CEFET-PR / ICMC-USP Renata Pontin de Mattos Fortes ICMC-USP
Roteiro • Engenharia de Software • Engenharia de Web • Aplicações Web • Modelo de Processo • Métodos de Desenvolvimento • NBR ISO/IEC 12207 • Software Livre • Processo de Software Livre • Exemplo • Resumo Web Engineering
Engenharia de Software • Engenharia de Software é um enfoque sistemático para o desenvolvimento, operação, manutenção e descontinuação do software (IEEE) • Engenharia de Software é a aplicação prática do conhecimento científico no projeto e construção de programas e da documentação requerida para desenvolver, operar e manter esses programas (Boehm) • Engenharia de Software é uma disciplina que aplica os princípios de engenharia com o objetivo de produzir software de alta qualidade a baixo custo (Bauer) Web Engineering
Como alcançar esse objetivo? Objetivo: produzir sofware de alta qualidade a baixo custo Modelos de Processo de Software Um Modelo de Processo de Software consiste de uma série de atividades, métodos, técnicas e ferramentas que garantem que o software seja produzido com alta qualidade e baixo custo Engenharia de Software Web Engineering
A aplicação das práticas de engenharia no desenvolvimento de Aplicações Web Objetivo: produzir Aplicações Web de alta qualidade a baixo custo Abordagem “ad hoc” para desenvolvimento de Aplicações Web Os princípios, conceitos e métodos de engenharia podem ser aplicados ao desenvolvimento de Aplicações Web? Por que a Engenharia de Web é importante? Engenharia de Web Web Engineering
Atributos da aplicação [Pressman 2001] Uso intensivo da rede Internet, intranet e extranet Diversos e diferentes grupos de usuários Direcionadas a conteúdo Hipermídia Evolução contínua ... e rápida (horas?) Estrutura e funcionalidade Informação Aplicações Web Web Engineering
Atributos do processo [Pressman 2001] Características que direcionam o desenvolvimento Urgência Adaptação dos métodos Segurança Aplicação e infraestrutura Estética Sucesso da aplicação Aplicações Web Web Engineering
Atributos de qualidade [Pressman 2001] Usabilidade Funcionalidade Confiabilidade Eficiência Manutenibilidade Base para avaliar a qualidade de aplicações Web ISO/IEC 9126 Software product evaluation – Quality characteristics and guidelines for their use Portabilidade Qualidade de Aplicações Web [Rocha et al. 2001] Aplicações Web Web Engineering
Tecnologias [Pressman 2001] Desenvolvimento baseado em componentes Construir menos e reusar mais Substituir um componente por outro Segurança Permitir apenas acesso autorizado Padrões W3C(sopa de letrinhas!) Web Semântica http://www.w3.org/2001/sw/ Acessibilidade http://www.w3.org/WAI/ Internacionalização http://www.w3.org/International/ Aplicações Web Web Engineering
Pressman [2001] Modelo de processo Web Engineering
Lowe & Eklund [2002] Modelo de processo Web Engineering
Práticas de desenvolvimento Web e Multimídiana Irlanda[Barry & Lang 2001] 1.000 empresas98 respostas válidas 100 empresas (multimídia)15 respostas válidas Resultados Não existe uma abordagem uniforme Modelos citados na literatura não são utilizados Conclusão Novas técnicas são necessárias Levantamento Web Engineering
Metodologias Levantamento Metodologias adotadas para desenvolvimento de aplicações multimídia Web Engineering
Intenções futuras Levantamento Desenvolver aplicações multimídia Incluir dados multimídia nos sistemas de informação Web Engineering
Métodos • HDM – Hypermedia Design Method • RMM – Relationship Management Methodology • EORM – Enhanced Object Relationship Methodology • OOHDM – Object-Oriented Hypermedia Design Method • SOHDM – Scenario-based Object-oriented Hypermedia Design Methodology • WSDM – Web Site Design Method • RNA – Relationship-Navigational Analysis • MacWeb Approach • HFPM – Hypermedia Flexible Process Modeling • OO/Pattern Approach • Lowe-Hall’s Engineering Approach [Koch 1999] Web Engineering
Fases cobertas pelos métodos Web Engineering
Métodos (RE) • WSDM – Web Site Design Method • SOHDM – Scenario-based Object-oriented Hypermedia Design Methodology • RNA – Relationship-Navigational Analysis • HFPM – Hypermedia Flexible Process Modeling • OOHDM – Object-Oriented Hypermedia Design Method • UWE – UML-based Web Engineering • W2000 (UML+HDM) • WebML – Web Modeling Language • NDT – Navigational Development Techniques • Design-driven Requirements Elicitation [Escalona & Koch 2004] Web Engineering
Captura Definição Validação Técnicas Web Engineering
NBR ISO/IEC 12207 • A NBR ISO/IEC 12207 – Processos de Ciclo de Vida de Software é um framework para processos de ciclo de vida com terminologia bem definida • Processos Fundamentais • Processos de Apoio • Processos Organizacionais • Processo de Adaptação Web Engineering
NBR ISO/IEC 12207 Processos Fundamentais Processos de Apoio Aquisição Documentação Fornecimento Gerência de Configuração Desenvolvimento Operação Garantia da Qualidade Adaptação Verificação Validação Manutenção RevisãoConjunta Auditoria Resolução de Problemas Processos Organizacionais Gerência Infraestrutura Melhoria Treinamento Web Engineering
Processos Fundamentais Desenvolvimento Definição: Análise de Sistemas, Planejamento do Projeto, Análise de Requisitos Construção: Projeto, Codificação, Teste Operação Manutenção Entendimento, Modificação, Revalidação Processos de Apoio Documentação Gerenciamento de Configuração Garantia da Qualidade Verificação Validação Revisão Conjunta Auditoria Resolução de Problemas NBR ISO/IEC 12207 Web Engineering
Projetos de software livre Constante atenção da comunidade científica Alta qualidade obtida no desenvolvimento de projetos de software livre Exemplos de casos de sucesso Mozilla, Apache, kernel do Linux Aplicações Web? Software Livre Web Engineering
Estudos Objetivo de compreender o processo de desenvolvimento de software livre Krishnamurthy [2002] Thomas [2003] Reis [2003] Resultados de um amplo levantamento [Reis 2003] 1.102 projetos estáveis519 respostas válidas Definição de requisitos (42,8%) Documentação: requisitos (69,6%), projeto (30,1%) e para usuários (77,6%) Garantia de qualidade: testes (55,7% e 27,0%), revisão (15,0%) Ferramentas: SCM (73,2%), comunicação (66,9) Processo de de software livre Web Engineering
Reflexões Pessoais e Discussões Eng. de Requisitos Implemen- tação Repositório de Versões Versão 1.2 Versão 1.3 download integração lançamento Usuários Desenvolvedores esporádicos Líderes (core) Desenvolvedores freqüentes Testes beta Documen- tação Revisão de projeto Revisão de código Auxílio a usuários, propostas de alteração, dúvidas, problemas, sugestões Ferramentas de comunicação, artigos científicos, notícias e weblogs Web Engineering
Processos Fundamentais Desenvolvimento Definição: Análise de Sistemas, Planejamento do Projeto, Análise de Requisitos Construção: Projeto, Codificação, Teste Operação Manutenção Entendimento, Modificação, Revalidação Processos de Apoio Documentação Gerenciamento de Configuração Garantia da Qualidade Verificação Validação Revisão Conjunta Auditoria Resolução de Problemas NBR ISO/IEC 12207 Web Engineering
Atividades [Pressman 2001] Identificação de itens de configuração de software Controle de versões Controle de alterações Auditoria de configuração Relatório de status Conceitos Itens de configuração de software (SCIs) Baseline Gerenciamento de Configuração Web Engineering
Atividade de garantia da qualidade Objetivo: garantir qualidade e consistência à medida que as alterações são realizadas em um item de configuração de software Processo Pedido de alteração de um item de configuração de software Decisão de realizar ou rejeitar o pedido de alteração Alteração controlada do item de configuração de software Controle de Alterações Web Engineering
Projeto open-source http://www.bugzilla.org Defect Tracking System Bug-Tracking System Bugzilla Web Engineering
Keyword: Planejamento A introdução de um novo sistema em um fluxo de trabalho existente exige planejamento inicial Para a aceitação e uso do novo sistema por todos A introdução deveria ter somente impacto positivo no trabalho diário Ciclo PDCA(Plan Do Check Act) Década de 50 W. Edwards Deming Modelos de Melhoria de Processo de Software Bugzilla: preparação (1/3) Web Engineering
Associar a estrutura da ferramenta com o fluxo de trabalho diário Estrutura: produtos, componentes, bugs Produto Produtos ou serviços reais Produtos especiais para representar grupos de trabalho internos Componente Subseção de um produto Usuário que recebe error reports Bugs associados Bug Versão do produto na qual ocorreu o bug Milestones: limite para um bug ser corrigido Bugzilla: preparação (2/3) Web Engineering
Keyword: simplicidade Adaptar as características da ferramenta às necessidades específicas do fluxo de trabalho diário Bug: prioridades (severities) e estados Prioridades High, Medium e Low Estados New Accepted In Progress/Open Resolved Not a Bug Tested/Completed Bugzilla: preparação (3/3) Web Engineering
Perl (5.6.0 ou maior) MySQL (3.23.41 ou maior) Servidor Web, p.e. Apache Bugzilla (2.18) Módulos Perl Servidor/Agente de Transferência de Mail (Sendmail 8.7 ou maior, ou um compatível com essa versão) Configuração dos parâmetros Bugzilla: instalação Web Engineering
Login e inserção de usuários Inserção de produtos e componentes Bugzilla: inserção de usuários, produtos e componentes Web Engineering
Inserção de bug Consulta à lista de bugs Consulta a um bug específico Consulta avançada Bugzilla: inserção e consulta de bugs Web Engineering
Atividades realizadas em Projetos de Software Livre podem ajudar no processo de desenvolvimento de Aplicações Web? Atividades de Gerenciamento de Configuração Ferramentas de apoio às atividades Artigo OSSDW Reis, C. S., Fortes, R. P. M. An Overview of the Software Engineering Process and Tools in the Mozilla Project, In Proceedings of Workshop on Open Source Software Development. Newcastle UK, February 2002, pp.162-182. http://www.dirc.org.uk/events/ossdw/OSSDW-Proceedings-Final.pdf Processo de Software Livre Web Engineering
Métodos Ágeis podem ajudar no processo de desenvolvimento de Aplicações Web? Extreme Programming (XP) Artigo JBCS Goldman, A., Kon, F., Silva, P. J. S., Yoder, J. W. Being Extreme in the Classroom: Experiences Teaching XP, Journal of the Brazilian Computer Society, November, 2004 http://www.ime.usp.br/~kon/papers/jbcs04.pdf Extreme Programming (XP) Web Engineering
Pense! Porque a Engenharia de Web é importante? Os princípios, conceitos e métodos de engenharia podem ser aplicados ao desenvolvimento de Aplicações Web? Como alcançar o objetivo de produzir Aplicações Web de alta qualidade a baixo custo? Resumo Web Engineering
Referências • Pressman, R. S. (2001) Software engineering: a practitioner’s approach, 5th edition, McGraw-Hill • Rocha, A. R. C., Maldonado, J. C., Weber, K. C. (2001) Qualidade de Software: Teoria e Prática, Prentice Hall • Lowe, D. B., Eklund, J. (2002) Client Needs and the Design Process in Web Projects, Journal of Web Engineering, 1(1) • Barry, C., Lang, M. A (2001) Survey of Multimedia and Web Development Techniques and Methodology Usage, IEEE Multimedia 8(2) p. 52-60 • Koch, N. (1999) A Comparative Study of Methods for Hypermedia Development, LMU Technical Report 9905 • Escalona, M. J., Koch, N. (2004) Requirements Engineering for Web Applications – A Comparative Study, Journal of Web Engineering, 2(3) p. 193-212 • Krishnamurthy, S. (2002). Cave or Community? An Empirical Examination of 100 Mature Open Source Projects. First Monday, 7(6). Web Engineering
Referências • Thomas, C. (2003) A Survey of Quality Practices in Open Source Software and the Linux Kernel. In Proceedings of 2003 Pacific Northwest Software Quality Conference. http://developer.osdl.org/craiger/pnsqc2003.pdf • Reis, C. R. (2003) Caracterização de um Processo de Software para Projetos de Software Livre. São Carlos, abril de 2003. 195p. Dissertação (Mestrado). Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo. http://coweb.icmc.usp.br/coweb/mostra.php?ident=59.33.1 • The Bugzilla Team (2005). The Bugzilla Guide - 2.18 Release. http://www.bugzilla.org/docs/2.18/pdf/Bugzilla-Guide.pdf • Lohmeyer, J. (2004) Open-Source Bug Tracking with Bugzilla. Linux Journal. http://www.linuxjournal.com/article/7216 Web Engineering