Baixe o app para aproveitar ainda mais
Prévia do material em texto
4ºAula Engenharia de software para web Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: • saber como desenvolver aplicações Web; • entender o que é engenharia de software para Web. Caros(as) alunos(as), Chegamos à aula 4, e é momento de discutirmos a engenharia de software para web. Espero que seja momento de muitos aprendizados, pois a web é um aspecto importante de nossa disciplina. Vamos lá? Bons estudos! 26Engenharia de software II 1 – Aplicações web 2 – O que é engenharia de software para web? 3 – Características de sistemas e de aplicações baseados na web 4 – Categorias de aplicações web 5 – A equipe web 6 – Gestão de projetos web Seções de estudo 1 - Aplicações web 2 - O que é engenharia de software para web? Em nossa primeira seção, abordaremos as aplicações web. É interessante notar que, por volta da década de 1960, não se imaginava que uma instituição pudesse controlar suas atividades e negócios por meio de um computador próprio. Na época, os equipamentos tinham alto valor, além de caro sistema de manutenção. Também não haviam muitos profissionais atuando na área. Foi por volta de 1980 que surgiram os microcomputadores, o que tornou o desejo de ter um sistema próprio na empresa possível. Assim, pouco a pouco, as máquinas, antes gigantes, foram sendo substituídas e ganhando espaço no mercado. Inicialmente, disponível nas grandes empresas, aos poucos, começou a ganhar espaço nas empresas de médio e pequeno prazo. Aí, trabalhos que antes eram exclusivos de agências especializadas, como processamento de dados, passaram a ser realizados na própria empresa. Foram, então, sendo criados os Centro de Processamento de Dados – CPD’s nas empresas. No começo, utilizavam a chamada linguagem COBOL, que tinha sistema robusto; implementação trabalhosa e manutenção bastante cara. Na época, a função do CPD era desenvolver um sistema que tinha por tarefa construir programas que recebiam dados de entrada, processavam e forneciam relatórios imensos como saída. Conforme as linguagens de programação foram evoluindo, as necessidades das empresas foram crescendo e o desenvolvimento de sistema começou a exigir muito mais técnica. A demanda fez, então, com que a área fosse crescendo cada vez mais. Já com o surgimento da web, as barreiras físicas de comunicação foram sendo derrubadas e ampliou-se a possibilidade de construção de sistemas com o uso de recursos de comunicação sem fronteiras. Além disso, o custo de transmissão de dados a distância foi ficando mais baixo e acessível para empresas menores. Atualmente, o uso da tecnologia nas empresas e organizações é fundamenta, pois envolve agilidade e confiabilidade nos processos. A utilização de aplicativos web é, assim, uma excelente alternativa, visto que permite o acesso aos dados e o processamento de grande quantidade de informações com um diferencial: não há fronteiras geográficas; o sistema pode gerenciar informações de locais variados por um custo baixo. Hoje, a web permite alguns benefícios ao seu uso: • Possibilidade de compartilhar informações; • Possibilidade de criação de conteúdo e de aplicações para distribuição global de modo fácil; • Manutenção simples, sem necessidade de o usuário instalar softwares; • Acesso de qualquer localidade. Entendidas as considerações iniciais sobre a engenharia de software e sua relação com a web, é importante questionar: os mesmos princípios da engenharia de software podem ser aplicados ao desenvolvimento na web? A Engenharia de Software para Web (EW) não é uma cópia fiel da engenharia de software tradicional. Contudo, há aproveitamento de muitos conceitos, princípios e métodos. Mesmo assim, sua aplicação pode exigir abordagem diferente. A EW envolve a preocupações que vão desde a entrevista com o cliente até a entrega do produto, assim, como na engenharia de software tradicional, por meio de um processo multidisciplinar: Segundo Pressman, sistemas e aplicativos da Web são caracterizados por disponibilizar grande quantidade de conteúdo e funcionalidade para grande população de usuários. A Engenharia para a Web é, portanto, o processo utilizado para criar aplicativos Web de alta qualidade. A Engenharia para Web não é igual à Engenharia de Software tradicional, mas compartilham muitos conceitos e princípios fundamentais, com ênfase nas mesmas técnicas de gerenciamento e atividades. Há pequenas diferenças na maneira como essas atividades são conduzidas, mas a fi losofi a que dita uma abordagem disciplinada para o desenvolvimento de um sistema de computador é a mesma <http://gabyeray.blogspot.com. br/2010/10/>. Acesso em: 30 jun. 2017. Não se pode acreditar que o desenvolvimento de aplicações para web seja apenas a criação de uma página utilizando HTML, ou de ferramentas como FrontPage ou Dreamweaver. O EW envolve a mistura de publicações impressas e desenvolvimento de software. Envolve marketing e computação. Há comunicações internas e relações externas e entre arte e tecnologia. Não há metodologia específica para o desenvolvimento de sites ou processos que acompanhem o ciclo de vida do desenvolvimento. Disciplinas como modelagem de negócio, requisitos de sistema, qualidade, testes e homologação de fases são fundamentais para que o projeto de uma Aplicação Web (AW) atinja a proposta final. Devido à ampliação da necessidade de aplicativos voltados para web e complexidade adquirida por eles nos últimos anos, é preciso utilizar métodos e processos de engenharia que sejam específicos para eles. Para entendermos mais a respeito das características da EW, vejamos a discussão de Sommerville (2011). 27 3 - Características de sistemas e de aplicações baseados na web Os usuários não compram o software, mas pagam de acordo com o uso ou possuem acesso gratuito em troca de propagandas que são exibidas em suas telas. Portanto, o surgimento da Internet trouxe uma mudança signifi cativa na maneira como o software corporativo é organizado. Antes da Internet, aplicações corporativas eram, na maioria das vezes, monolíticas, programas isolados executando em computadores isolados ou em clusters de computadores. Agora, um software é altamente distribuído, às vezes pelo mundo todo. As aplicações corporativas não são programadas do zero; de fato, elas envolvem reúso extensivo de componentes e programas. Essa mudança radical na organização de software obviamente causou mudanças na maneira como os sistemas Web são projetados. Por exemplo: 1. O reúso de software tornou-se a abordagem dominante para a construção de sistemas Web. Quando construímos esses sistemas, pensamos em como podemos montá-los a partir de componentes e sistemas de software preexistentes. 2. Atualmente, aceita-se que é impraticável especifi car todos os requisitos para tais sistemas antecipadamente. Sistemas Web devem ser desenvolvidos e entregues incrementalmente. 3. Interfaces de usuário são restringidas pela capacidade dos navegadores. Embora tecnologias como AJAX (HOLDENER, 2008) signifi quem que interfaces ricas podem ser criadas dentro de um navegador, essas tecnologias ainda são difíceis de usar. Formulários Web com scripts locais são mais usados. Interfaces das aplicações em sistemas Web são normalmente mais pobres do que interfaces projetadas especialmente para produtos de software que executam em PCs. As ideias fundamentais da engenharia de software discutidas na seção anterior aplicam-se para software baseado em Web da mesma forma que para outros tipos de sistemas de software. A experiência adquirida com o desenvolvimento de grandes sistemas no século XX ainda é relevante para softwares baseados em Web. (SOMMERVILLE, 2011, p. 9). Comparações entre Engenharia de Software e Engenharia para WebDe modo geral, as aplicações da engenharia de software oferecem serviços e soluções, já as aplicações da engenharia para web oferecem conteúdo em forma de informações, e serviços. A primeira foca na funcionalidade e na aplicabilidade, enquanto que a segunda foca na apresentação, na aparência, na navegação e em outras qualidades estéticas. Devido à evolução tecnológica, a tecnologia para o software convencional se apresenta um pouco mais estável, pois dispõe de API para interfaces gráficas e banco de dados relacionais com SQL. Já no caso das aplicações Web, os maiores destaques ficam por conta dos Browsers, Servidores, HTML, XML, ASP, PHP e outras linguagens para Web. Em aplicações convencionais, a classe de usuários é melhor definida. Nas AW, o escopo é voltado para um público amplo. Na AW, há preocupação constante com controle navegacional, que vai além de somente definir links para “ir e voltar”. É necessário que o usuário não se perca nos caminhos por onde “navega”. Além do mais, essas aplicações se caracterizam pela multidisciplinaridade, pois envolvem conhecimentos de Engenharia de Software, multimídia e hipermídia, interação usuário-computador, indexação e recuperação de informação, banco de dados, artes, comunicação visual, linguística computacional, gerência de projeto, projeto e apresentação gráfica, computação gráfica. Engenharia de Software Engenharia Web Público-alvo • Público bem defi nido. • Ênfase na aplicabilidade e funcionalidade. • Público diversifi cado. • Ênfase na apresentação, navegação, aparência e outras características estéticas. Maturidade da tecnologia • Tecnologia mais estável. • Ótimas ferramentas disponíveis para Análise, Projeto, Implementação e Testes • Tecnologia em evolução. • Ferramentas disponíveis em nível de implementação, mas existem poucas para Análise, Projeto e as outras atividades da EW. Os sistemas e aplicações baseados na Web, os chamados Webapps, provocaram forte impacto na história da computação. Tendo em vista que eles vêm crescendo e ganhando importância, fortalece-se enquanto área específica dentro da engenharia de software. O impacto de sistemas e aplicações baseados na Web (WebApps) é considerado o evento único bastante significativo na história da computação. À medida que as WebApps crescem em importância, uma abordagem disciplinada da Engenharia para Web surge, adaptada dos princípios, conceitos, processos e métodos da Engenharia de Software. Se nos primeiros anos da Word Wide Web, na década de 1990, os sites eram páginas estáticas e com poucos recursos, além de limitado uso de gráficos. Hoje, as aplicações Web são ferramentas muito sofisticadas, que fornecem além de funções isoladas ao usuário, mas são integradas com um banco de dados coorporativos e aplicações de negócio: Assim como esses produtos de software, o desenvolvimento de navegadores Web capazes de executar programas pequenos e fazer algum processamento local levou a uma evolução no software corporativo e organizacional. Em vez de escrever o software e instalá-lo nos computadores dos usuários, o software era implantado em um servidor Web. Isso tornou muito mais barato alterar e atualizar o software, porque não havia necessidade de se instalar o software em cada computador. Isso também reduziu os custos, porque o desenvolvimento de interface de usuário é particularmente caro. Consequentemente, sempre que possível, muitos negócios mudaram para interação Web com os sistemas de software da empresa. O próximo estágio no desenvolvimento de sistemas Web foi a noção de web services. Web services são componentes de software acessados pela Internet e fornecem uma 28Engenharia de software II funcionalidade específi ca e útil. Aplicações são construídas integrando esses web services, os quais podem ser fornecidos por empresas diferentes. A princípio, essa ligação pode ser dinâmica, para que a aplicação possa usar web services diferentes toda vez que é executada (SOMMERVILLE, 2011, p. 8). Aplicações para Web são diferentes de outras categorias de software de computador. Alguns atributos podem ser observados na grande maioria destas aplicações. Vejamos algumas de suas características: • Voltadas para redes: aplicativos para a Web utilizam recursos de rede por natureza. Ele se localiza em uma rede que atende às necessidades de diversas comunidades de clientes. Pode estar disponível na Internet (permitindo comunicação com o mundo todo), em uma Intranet (implementando comunicação em uma organização) ou em uma Extranet (comunicação inter-redes); • Guiadas por conteúdo: a função inicial do aplicativo para a Web é usar hipermídia para apresentar textos, gráficos, e vídeo para os usuários. A estética do conteúdo é necessária para que se determine a qualidade da aplicação; • Evoluem continuamente: contrariamente aos aplicativos convencionais que evoluem por meio de uma série de versões planejadas e lançadas em determinados intervalos de tempo, os aplicativos para a Web evoluem continuamente e se adaptam às necessidades; • Concorrência: vários usuários podem acessar ao mesmo tempo. Contudo, os padrões de utilização podem ter significativa variação; • Quantidade de usuários: a quantidade de usuários pode ter grande variação de um dia para outro; • Disponibilidade: os usuários esperam os sistemas web estejam disponíveis por 100% do tempo, mesmo que essa expectativa não possa ser correspondida; • Desempenho: esse tipo de aplicação não pode deixar o usuário esperando muito. Devido à interatividade, o usuário pode acabar indo pra outro lugar; • Voltada a dados: além de apresentar conteúdo hipermídia, as aplicações Web são utilizadas, ainda, para dar acesso às informações armazenadas em bancos de dados que não eram parte do conteúdo original do ambiente baseado na web. Figura: Aplicação Web com acesso a banco de dados. Acesso em: 3 jul. 2017. 29 Figura: Aplicação Web com acesso a banco de dados. Acesso em: 3 jul. 2017. Como se pode perceber no comparativo das duas páginas do site da Unigran, o software deve estar sempre em evolução para que possa atender às demandas de todos os grupos de usuários. Algumas características indispensáveis ao software são: imediatismo; segurança e estética. Vamos conhecer melhor cada um deles: • Imediatismo: há necessidade de se priorizar a rapidez no momento de colocar um software ou aplicação em funcionamento. Na atuação profissional, vocês perceberão que os prazos nem sempre são fáceis de cumprir e, ao profissional, cabe a necessidade de se adaptar para cumprir o cronograma: • Segurança: certamente, é fundamental que o site seja seguro. Quando há algum tipo de transmissão de dados, tendo em vista que qualquer usuário pode acessar o site. • Estética: é preciso, ainda, atentar à qualidade da apresentação, pois isso contribui significativamente para a atração de usuários e o mercado, de modo geral. Agora, veremos algumas categorias de aplicações web. Entre elas, estão as categorias: • Informativas: são os conteúdos para leitura e com possibilidades de navegação, com links simples: jornais, manuais, catálogos de produtos e livros online, por exemplo; 4 - Categorias de aplicações web • Interativas: a comunicação entre usuários é feita por meio de mensagens, salas de chat ou quadro de avisos; • Transacionais: permitem compras eletrônicas e serviços de banco online; • Workflow: corresponde a um sistema de gerência, de planejamento e de acompanhamento online; • Colaborativas: diz respeito a um sistema de autoria distribuída; • Comunidades online: são grupos de chat, leilões online, entre outros; • Portais: são os portais sobre educação, como UOL e Terra, por exemplo. 5 - A equipe web Para Pressman(2006), uma equipe de engenharia da Web bem-sucedida mistura uma grande variedade de talentos que precisam trabalhar como uma equipe em um ambiente de projeto de alta pressão. Como já vimos anteriormente, os prazos são curtos, as modificações são ininterruptas e a tecnologia mantém-se em evolução. As equipes de engenharia Web podem ser organizadas de modo bastante semelhante às equipes de software tradicional. No entanto, os personagens e seus papéis são frequentemente bem diferentes. Entre as várias habilidades que precisam ser distribuídas pelos membros de uma equipe Web, estão a engenharia de software baseada em componentes, o projeto de rede, arquitetural e navegacional, as normas/linguagens da 30Engenharia de software II Internet, o projeto de interface homem/máquina, o projeto gráfico, o layout de conteúdo e o teste de aplicações Web. Os papéis a seguir devem ser distribuídos entre os membros da equipe: • Desenvolvedores/Provedores de conteúdo: atividade que deve ser designada para um pessoal não técnico, oriundo de uma área que não seja de software. Deve-se voltar à aplicação Web para a geração ou coleta de conteúdo; • Editor da Web: o conteúdo obtido pelos desenvolvedores e provedores de conteúdo precisam ser organizados. O ocupante deste papel deve fazer a ligação entre a equipe técnica e os desenvolvedores/provedores de conteúdo, devendo para isto conhecer tanto de conteúdo quanto de tecnologia Web; • Engenheiro da Web: é o responsável pelas atividades das fases de desenvolvimento, incluindo a coleta de requisitos, modelagem, projeto arquitetural, navegacional e de interface, implementação e testes. Além disso, precisa conhecer as tecnologia Web disponíveis e de hardware; • Especialistas no domínio do negócio: esse especialista deve conhecer todos os objetivos do negócio da empresa que serão associados à aplicação Web; • Especialista de suporte: é responsável pela manutenção aplicação Web, seja ela corretiva, adaptativa ou de melhoramento funcional. Deve cuidar da contínua evolução da aplicação; • Administrador: conhecido como o Web Master, esse profissional é responsável pelas políticas de operação da aplicação Web, segurança e direitos de acesso, controle de tráfego do site e modificações necessárias. Deve interagir com os engenheiros da aplicação Web e os Especialistas de suporte. A gestão de projetos corresponde a uma parte essencial da engenharia de software. O gerenciamento adequado do projeto pode não garantir seu sucesso, contudo, o gerenciamento inadequado gera resultados negativos e falhas. O mau gerenciamento pode ocasionar em atrasos, custos elevados e falha no atendimento de requisitos. O gerente de projetos é responsável por fazer com que o cliente seja satisfeito com um software adequado, mas que isso seja feito de modo a corresponder a um custo adequado, em um prazo viável e a um serviço de qualidade. Vejamos as ideias de Sommerville (2013, p. 415) acerca do assunto: O gerenciamento de projetos de software é uma parte essencial da engenharia de software. Os projetos precisam ser gerenciados, pois a engenharia de software profi ssional está sempre sujeita a orçamentos organizacionais e restrições de cronograma. O trabalho do gerente de projetos é garantir que o projeto de software atenda e supere essas restrições, além de oferecer softwares de alta qualidade. O sucesso do projeto não é garantido por um bom gerenciamento. No entanto, a mau gerenciamento costuma resultar em falha do projeto — o software pode ser entregue com atraso, custar mais do que o inicialmente estimado, ou não se conseguem satisfazer as expectativas dos clientes. Os critérios de sucesso para o gerenciamento de projetos, certamente, variam de um projeto para outro, mas, para a maioria dos projetos, estas são as metas mais importantes: 1. Fornecer o software ao cliente no prazo estabelecido. 2. Manter os custos gerais dentro do orçamento. 3. Entregar software que atenda às expectativas do cliente. 4. Manter uma equipe de desenvolvimento que trabalhe bem e feliz. Esses objetivos não são exclusivos para a engenharia de software, mas são os objetivos de todos os projetos de engenharia. No entanto, a engenharia de software é diferente dos outros tipos de engenharia de muitas formas que tornam o gerenciamento de software particularmente desafi ador (SOMMERVILLE, 2013, p. 415). Ferramentas de gestão de projetos possibilitam à equipe de Engenharia Web estabelecer um conjunto de tarefas de trabalho, atribuir esforço e responsabilidade específica para cada tarefa, estabelecer as dependências de tarefas, definir um cronograma e acompanhar e controlar as atividades no projeto. Diversas ferramentas dessa categoria são baseadas na Web. Algumas das ferramentas existentes são: • Business Engine: desenvolvida por Business Engine, é um conjunto de ferramentas baseadas na Web que fornece plenas facilidades de gestão de projetos Web e de software convencional; • Iteamwork: desenvolvida por iTeamwork.com, é uma aplicação livre, on-line, baseada na Web, de gestão de equipe de projeto que você usa como o seu navegador Web; • OurProject: desenvolvida por Our Project, é um conjunto de ferramentas de gestão de projetos que é aplicado a projetos da Engenharia Web e de software convencional; • Proj-Net: desenvolvida por Rational Concepts, ela implementa um “escritório virtual de projeto (virtual project Office, VPO) para colaboração e comunicação”; • StartWright: desenvolveu um dos recursos mais abrangentes da Web, tanto para Engenharia Web quanto para software convencional de ferramentas e informação de gestão de projetos. 6 - Gestão de projetos web 31 Retomando a aula É hora de relembrarmos os pontos estudados nesta aula. Vamos lá! 1 – Aplicações web Em nossa primeira seção, abordamos as aplicações web. É interessante notar que, por volta da década de 1960, não se imaginava que uma instituição pudesse controlar suas atividades e negócios por meio de um computador próprio. Na época, os equipamentos tinham alto valor, além de caro sistema de manutenção. Também não havia muitos profissionais atuando na área. Foi por volta de 1980 que surgiram os microcomputadores, o que tornou o desejo de ter um sistema próprio na empresa possível. Assim, pouco a pouco, as máquinas, antes gigantes, foram sendo substituídas e ganhando espaço no mercado. 2 – O que é engenharia de software para web? Vimos a Engenharia de Software para Web (EW) não é uma cópia fiel da engenharia de software tradicional. Contudo, há aproveitamento de muitos conceitos, princípios e métodos. Mesmo assim, sua aplicação pode exigir abordagem diferente. 3 – Características de sistemas e de aplicações baseados na web Vimos que, primeiros anos da Word Wide Web, na década de 1990, os sites eram páginas estáticas e com poucos recursos, além de limitado uso de gráficos. Hoje, as aplicações Web são ferramentas muito sofisticadas, que fornecem além de funções isoladas ao usuário, mas são integradas com um banco de dados coorporativos e aplicações de negócio. 4 – Categorias de aplicações web Nesta seção, conhecemos algumas categorias de aplicações web. 5 – A equipe web Vimos que equipes de engenharia Web podem ser organizadas de modo bastante semelhante às equipes de software tradicional. No entanto, os personagens e seus papéis são frequentemente bem diferentes. Entre as várias habilidades que precisam ser distribuídas pelos membros de uma equipe Web, estão a engenharia de software baseada em componentes, o projeto de rede, arquitetural e navegacional, as normas/ linguagens da Internet, o projeto de interface homem/ máquina, o projeto gráfico, o layout de conteúdo e o teste de aplicações Web. 6 – Gestãode projetos web Percebemos que a gestão de projetos corresponde a uma parte essencial da engenharia de software. O gerenciamento adequado do projeto pode não garantir seu sucesso, contudo, o gerenciamento inadequado gera resultados negativos e falhas. O mau gerenciamento pode ocasionar em atrasos, custos elevados e falha no atendimento de requisitos. <http://periodicos.unicesumar.edu.br/index.php/ iccesumar/article/viewFile/268/87>. Acesso em: 3 jul. 2017. Vale a pena Vale a pena acessar Minhas anotações
Compartilhar