Baixe o app para aproveitar ainda mais
Prévia do material em texto
Segurança de aplicações Aula 2: Metodologias tradicionais versus ágeis e Ferramentas para desenvolvimento de software Apresentação O desenvolvimento de um software possui muitos desa�os desde o levantamento dos requisitos, como sua codi�cação e implantação no cliente. Sendo um processo dinâmico, é essencial que seja estabelecida uma metodologia que acompanhe todo o seu ciclo de desenvolvimento. Historicamente, as chamadas metodologias tradicionais foram aplicadas para o processo de desenvolvimento de software através da incorporação de conceitos aplicados a outras áreas de negócios que já possuíam processos e requisitos bem de�nidos. Obviamente, mostraram-se inadequadas para o gerir o ciclo de vida de desenvolvimento de software. Nesse sentido, as metodologias ágeis ganharam destaque por se ajustarem à dinâmica do desenvolvimento de software. Além disso, a incorporação de ferramentas para o desenvolvimento viabilizou mais rapidez e robustez ao longo do processo, exigindo mais treinamento para os integrantes da equipe de desenvolvimento de modo a acelerar a curva de aprendizagem. Objetivos Comparar metodologias tradicionais versus ágeis; Identi�car ferramentas para desenvolvimento de software. Metodologias tradicionais versus ágeis As metodologias tradicionais de desenvolvimento de software são baseadas em fases pré-de�nidas executadas em um ciclo sequencial: A ênfase do desenvolvimento está na execução de processos lineares que envolvem documentação, planejamento antecipado e priorização. Nessa metodologia, as variáveis são o tempo e o orçamento. Uma das principais representantes das metodologias tradicionais é a metodologia Cascata, em que cada fase possui resultados especí�cos e documentação detalhada submetidos a um processo de revisão completo. Atenção Em projetos nos quais os requisitos são bem compreendidos, as abordagens tradicionais são adequadas. Um exemplo de um projeto que atende a esse critério é a construção civil, na qual o resultado é compreendido por todos os envolvidos. Por outro lado, na área de desenvolvimento de software, as metodologias tradicionais de desenvolvimento podem falhar, pois se trata de um ambiente dinâmico. Abaixo, seguem algumas das desvantagens dos métodos tradicionais de desenvolvimento de software: A declaração da necessidade do cliente deve ser de�nida com antecedência, ou seja, antes do desenvolvimento do software. Além disso, a solução também deve ser determinada antecipadamente e não pode ser alterada ou modi�cada. Os requisitos do software devem ser estabelecidos na fase inicial e não podem ser alterados depois que o desenvolvimento começa. Por exemplo, no início do projeto, os requisitos iniciais para analisar os produtos em termos de vendas são fornecidos. Após o início do projeto, caso o usuário queira alterar o requisito e analisar os dados sobre o movimento regional de produtos, ele terá que esperar até a conclusão dos requisitos iniciais ou iniciar outro projeto. Na metodologia tradicional, não podem ser feitas avaliações intermediárias a �m de garantir que o desenvolvimento do software esteja alinhado e para que o produto atenda aos requisitos de negócios. O sistema que o cliente obtém está baseado no entendimento do desenvolvedor. Portanto, a documentação assume alta prioridade e pode consumir bastante tempo para ser criada. Além disso, de um modo geral, devido ao atendimento a requisitos especí�cos, as chances de reutilizar os componentes é menor. Comentário Por causa das desvantagens citadas, a entrega do software pode consumir mais dinheiro, esforço e tempo do que os pré- estabelecidos e, por consequência, representa um impacto negativo no relacionamento com os clientes. Devido à sequência rígida de como o projeto é desenvolvido, os testes só podem começar depois do término do processo de desenvolvimento. Nesta fase — estágio de teste — não é possível voltar e ajustar algo que possa prejudicar as datas de entrega e os custos do projeto. É possível, ainda, que os projetos sejam descartados, resultando, assim, na ine�ciência do tempo e orçamento consumidos. As metodologias tradicionais de desenvolvimento são: Adequadas apenas quando os requisitos são precisos, ou seja, quando o cliente sabe exatamente o que deseja e pode a�rmar com segurança que não haverá grandes alterações no escopo durante o desenvolvimento do projeto. Inadequadas para projetos de desenvolvimento de software, em que os requisitos não são bem de�nidos no início e há margem para modi�cações contínuas. Metodologia ágil de desenvolvimento de software Diferentemente das abordagens tradicionais de desenvolvimento de software, as metodologias de desenvolvimento ágil são amigáveis ao cliente. Nas metodologias ágeis, o processo de desenvolvimento de software é adaptado para que os clientes tenham a oportunidade de fazer modi�cações ao longo das fases de desenvolvimento do projeto. Entre as vantagens das metodologias ágeis em relação às metodologias de desenvolvimento tradicionais estão: 1 A declaração das necessidades e solução do negócio podem ser modi�cadas a qualquer momento do desenvolvimento do software. 2 Os requisitos e as histórias de usuário podem ser fornecidos ao longo das iterações do desenvolvimento, facilitando, assim, o entendimento mútuo entre desenvolvedor e usuário. 3 O projeto é dividido em diferentes módulos e pode ser entregue periodicamente. 4 As chances de atingir o resultado �nal com qualidade aumentam, pois são feitas entregas parciais para o usuário que, dessa forma, pode avaliar os módulos de solução para veri�car se a necessidade do negócio está sendo atendida. 5 Devido à natureza do desenvolvimento, é possível criar componentes reutilizáveis. 6 Há menos prioridade na documentação. Aqui cabe uma ressalva: As vantagens disso é que o tempo e despesas para produção de documentação são reduzidos; por outro lado, isso pode ser um problema ao longo do desenvolvimento, quando se faz necessário recuperar alguma etapa especí�ca do projeto. Na Tabela 1, há uma comparação entre algumas características das metodologias tradicionais e ágeis. Tabela 1: Comparações das Metodologias Tradicionais e Ágeis (adaptado de KESHTA e MORGAN, 2017). As metodologias ágeis são baseadas em uma abordagem incremental e iterativa do desenvolvimento. Um exemplo de como funcionam as metodologias ágeis é a metodologia Scrum. As equipes que formam os projetos da metodologia Scrum são compostas basicamente por três papéis: Product Owner (dono do produto) Scrum Master Time de Desenvolvimento Em especial, o Scrum Master interage diariamente com a equipe de desenvolvimento e com o Product Owner para garantir que o desenvolvimento do produto esteja sincronizado com as expectativas do cliente. Veja como funciona. 1 Logo no início do projeto, o conjunto inicial de requisitos é dividido em Histórias de Usuários. O Scrum Master, ou o Product Owner, organiza essas histórias de usuário e as separa em diferentes sprints. A quantidade de histórias de usuários que devem ser entregues ao �nal de cada Sprint é decidida de acordo com sua complexidade. 2 Após a conclusão do planejamento da Sprint, as Histórias de Usuário selecionadas são divididas em Tarefas para que o desenvolvedor possa ter um roteiro do que deve ser feito e obter resultados de qualidade. No �nal de cada Sprint, o resultado é apresentado para o cliente. Isto implica que ele pode fazer revisões sobre o desenvolvimento do software caso perceba pendências ou desvios. A�nal, qual a diferença entres a abordagem tradicional e a abordagem ágil? A principal diferença entre as abordagens tradicional e ágil é a implementação da sequência das fases do projeto: Nas metodologias tradicionais de desenvolvimento as fases do projeto são desenvolvidas linearmente; nas metodologias ágeis, de forma iterativa. As Figuras1 e 2 mostram a diferença entre as metodologias tradicionais e ágeis. Nos projetos de desenvolvimento de software,o escopo e os requisitos podem mudar ao longo do desenvolvimento, o que é uma importante diferença em relação aos projetos de construção civil, por exemplo. Comentário Portanto, a utilização da metodologia ágil é preferível em relação às metodologias tradicionais, pois aumenta a produtividade e acelera o processo de desenvolvimento. Conclusão As metodologias tradicionais são adequadas em projetos em que há rigidez dos requisitos, como, por exemplo, na construção civil. No desenvolvimento de software, as metodologias ágeis são mais adequadas, pois é normal que os requisitos evoluam ao longo do desenvolvimento do projeto. Ferramentas para desenvolvimento de software Somente título e texto Uma Ferramenta de Desenvolvimento de Software ou Ferramenta de Programação de Software é um programa de computador. Ela pode ser aplicada para criação, manutenção, suporte e depuração de outros programas. As ferramentas de desenvolvimento atendem a diversos propósitos, como compiladores, editores de código, projetar interfaces grá�cas, depuradores de código, ferramentas de análise de desempenho etc. Portanto, deve-se considerar alguns fatores ao selecionar a ferramenta de desenvolvimento com base no tipo do projeto. Entre esses fatores estão: 1 Atender às normas da empresa: Software com licença comercial, ou gratuita; critérios de segurança. 2 Aplicação da ferramenta para atender às demandas de negócio. 3 Integração entre ferramentas. 4 Ambiente em que a ferramenta será instalada: Sistema operacional e outros pré-requisitos necessários para seu uso. 5 Treinamento necessário para a equipe que vai utilizar a ferramenta. A seleção da ferramenta de desenvolvimento é uma etapa essencial para a e�ciência do projeto. As ferramentas para desenvolvimento de software são criadas e aperfeiçoadas para atender às demandas da sociedade, de um modo geral. Como exemplo, basta observar que o uso da internet e de aplicativos móveis tem se tornado cada vez mais popular. É por isso que existem muitas ferramentas disponíveis para essas áreas. Fonte: SHTTEFAN / Unsplash Classi�cação de ferramentas e técnicas de software As ferramentas de desenvolvimento são muito úteis para a codi�cação, testes e manutenção de software. É possível fazer a classi�cação das ferramentas de desenvolvimento de software em algumas categorias(ver Tools And Techniques For Software Development): Clique nos botões para ver as informações. Cada software possui um tipo de licença que pode depender do per�l do usuário, ou do período de uso do software. Exemplo: Freeware: Tipo de software disponível gratuitamente na internet e que pode ser baixado por qualquer pessoa; software de código aberto, qualquer pessoa pode contribuir com o código, como o sistema operacional Linux, por exemplo. Licença Linguagens de programação usadas para escrever o código fonte de um software. Por exemplo: C, C ++, Java, C#, Fortran, Cobol, Java Script, Python, Haskell. Idioma Ferramentas usadas para testar o software para veri�car se está sendo executado sem erros e se está executando as funções para as quais foi projetado. Exemplo: Ferramentas de teste de unidade, ferramentas de teste funcional, rastreamento de erros, gerenciamento de casos de teste. Teste Ferramentas usadas para gerenciar um projeto de software durante seu ciclo de vida. Exemplo: Ferramentas de planejamento e Ferramentas de rastreamento de projeto. Gerenciamento de projetos Uma plataforma consiste na arquitetura de hardware e na estrutura de software que permite a execução do software e compreende a arquitetura, o sistema operacional, as linguagens de programação do computador, as bibliotecas relacionadas e a interface grá�ca do usuário. Exemplo: Windows, Linux. Plataforma Essas ferramentas são usadas para armazenar grandes quantidades de dados, de forma que eles possam ser recuperados facilmente e no formato necessário. Exemplo: Oracle, MySQL, SQL Server, Postgresql. Gerenciamento de dados De�nida com base na funcionalidade da ferramenta. Exemplo: Editor, compilador, gerador de código. Função da ferramenta Conclusão As ferramentas de software são usadas para dar suporte no desenvolvimento dos processos de negócios, documentar seu processo de desenvolvimento e otimizar todos os outros. Uma escolha adequada das ferramentas aumenta a produtividade dos projetos e apoia o desenvolvedor na manutenção do �uxo de trabalho do projeto. Atividades 1. As metodologias tradicionais têm como principal característica a execução do projeto em processos lineares. Selecione a opção correta na qual as metodologias tradicionais são adequadas: a) Desenvolvimento de Software; b) Montagem de Automóveis; c) Manutenção de Equipamentos Eletrônicos; d) Manutenção de Software; e) Projetos complexos. 2. Uma das desvantagens das metodologias tradicionais é a necessidade de fazer o levantamento detalhado dos requisitos antes de começar o projeto. Selecione a opção correta sobre as metodologias tradicionais: a) Na verdade, isso é uma vantagem, pois, com a definição clara dos requisitos de software no início do projeto, seu desenvolvimento fica simplificado; b) É uma desvantagem, pois tem como consequência a geração de muita documentação; c) É uma desvantagem, pois o desenvolvimento de software é dinâmico e a compreensão dos requisitos é entendida ao longo do projeto; d) Na verdade, não se trata nem de uma desvantagem e nem de uma vantagem, pois é uma característica natural do processo de desenvolvimento; e)Trata-se de uma desvantagem, pois levanta muitas informações desnecessárias para a equipe de desenvolvimento. 3. As metodologias tradicionais e ágeis possuem muitas diferenças. Selecione a opção correta sobre essas diferenças: a) As metodologias tradicionais são adequadas para o desenvolvimento de softwares complexos, enquanto as ágeis são aplicadas para sistemas simples; b) Nas metodologias tradicionais os processos de teste e desenvolvimento são executados simultaneamente, enquanto nas ágeis os testes são executados no final do desenvolvimento; c) As metodologias tradicionais não fornecem todas as funcionalidades do software, enquanto nas ágeis todas as funcionalidades são fornecidas; d)As metodologias tradicionais são bastante utilizadas e recomendadas exatamente por serem tradicionais, enquanto as ágeis são pouco utilizadas, pois ainda estão se consolidando no mercado; e) As metodologias tradicionais e ágeis possuem mais semelhanças do que diferenças. 4. As ferramentas de desenvolvimento são programas de computador aplicadas para criação, manutenção, suporte e depuração de outros programas. Selecione a opção que não corresponde a um fator que deve ser levado em consideração para selecioná-las: a) Critérios relacionados ao tipo de licença; b) Ser capaz de desenvolver aplicações web e móveis; c) Ferramentas que se integram às outras da empresa; d) Sistema operacional; e) Curva de aprendizado da equipe que vai utilizar a ferramenta. 5) As ferramentas de desenvolvimento de software podem ser classi�cadas em algumas categorias. Selecione a opção correta que relaciona categoria e sua explicação: a) Licença: Como exemplo, podem ser freeware e software de código aberto; b) Idioma: Tratam da língua do país em que o software está sendo desenvolvido; c) Teste: Testa se toda a equipe está trabalhando na mesma versão do código; d) Gerenciamento de projetos: Devem ser usada apenas na fase de planejamento; e) Plataforma: Aplicada para definir se o desenvolvimento deve ser estruturado ou orientado a objetos. Notas CNE 1 Conselho Nacional de Educação. Título modal 1 Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Referências KESHTA, N.; MORGAN, Y. Comparison between traditional plan-basedand agile software processes according to team size & project domain (A systematic literature review),2017 8th IEEE Annual Information Technology, Electronics and Mobile Communication Conference (IEMCON), Vancouver, BC, 2017, p. 567-575, doi: 10.1109/IEMCON.2017.8117128. SPRING DIGITAL. Tools And Techniques For Software Development. Disponível em: https://www.springdigital.com.au/software- apps/tools-and-techniques-for-software-development/ <https://www.springdigital.com.au/<em>software</em>-apps/tools-and- techniques-for-<em>software</em>-development/> . Acesso em: 04 jun. 2020. Próxima aula Problemas relacionados à complexidade do código; Escolha da linguagem de programação. Explore mais Leia os textos: Leia o livro GIT--distributed-even-if-your-work�ow-isnt Leia o livro 15 top ferramentas para desenvolvedores https://www.springdigital.com.au/%3Cem%3Esoftware%3C/em%3E-apps/tools-and-techniques-for-%3Cem%3Esoftware%3C/em%3E-development/ javascript:void(0); javascript:void(0);
Compartilhar