Técnicas e Projeto de Sistemas Técnico Subsequente INSTITUTO FEDERAL DE Técnicas e Projeto de Sistemas – EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Subsequente Técnico Campus Araguaína 1 Roteiro • Tema: Processo de Desenvolvimento de Software. Engenharia de Software; Processo de Desenvolvimento de Software; Ciclos de Desenvolvimento de Software; INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 2 Relembrando: • Software • Definição de Engenharia de Software: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Engenharia de Software Aplicação da disciplina de técnicas no desenvolvimento e manutenção de software. Contexto (Problema) INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína E.S. Técnicas e Projeto de Sistemas – Técnico Subsequente Produto de Software 4 Introdução à Engenharia de Software • A Engenharia de Software objetiva: Prover métodos ferramentas e (“como fazer”), procedimentos (sequência em que os métodos serão aplicados) para o desenvolvimento de software de maneira que ele atinja seus objetivos. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 5 Engenharia de Software • Um software deve, de forma geral, atender os seguintes objetivos: Funcionalidade; Custo; Tempo; Desempenho; Padrões; Leis; Atender as partes interessadas (stakeholders). INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 6 Engenharia de Software Mas como posso atingir todos esses objetivos??? INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 7 Engenharia de Software Seguindo um processo de desenvolvimento de software!! INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 8 Processo de Desenvolvimento de Software • Processo: É uma sequência de passos que devem ser seguidos para se atingir determinado objetivo. • Processo de desenvolvimento de software: Objetiva a construção de um software; Sub processos: • Requisitos, análise, desenho, implementação e teste. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína 9 ETAPAS DO PROCESSO DE DESENVOLVIMENTO DO SOFTWARE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Processo de Desenvolvimento de Software • O ponto de partida então é seguir um ciclo de vida: É uma interação entre os processos; descreve as fases que o software vai passar; Baseado em: • Complexidade; • Risco; • Tamanho da equipe; • Necessidade do cliente. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 11 • Principais modelos de ciclo de vida do software: Codifica-remenda; Cascata; Prototipagem evolutiva Incremental; Espiral; Entrega evolutiva; INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 12 Ciclos de Vida de Software • Codifica-remenda: Produto Especificação??? Partindo de uma especificação incompleta Alto risco; Impossível de gerenciar; Não permite assumir compromissos confiáveis INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 13 Codifica-remenda Partindo de uma especificação incompleta, ou mesmo ausente, inicia-se a codificação do software, que por sua vez tende a gerar “algo”. Esse “algo gerado”, na grande maioria das vezes não é o que o cliente deseja, mas vai sendo alterado e consertado até que o produto atinja um estágio que permita seu uso. Nenhum processo é seguido nessa iteração. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Produto Clássico ou Cascata: • Foi o primeiro modelo a ser conhecido em engenharia de software e está na base de muitos ciclos de vida utilizados nos dias de hoje. • Cada passo deve ser completado antes que o próximo passo possa ser iniciado. • Mais utilizados em situações nos quais os requisitos são fixos. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Ciclos de Vida de Software Clássico ou Cascata: início Requisitos Análise Desenho Implementação Teste INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente Final 16 Clássico ou Cascata (desvantagens): Sequencial; Rígido; Burocrático; Não prevê correções nas fases posteriores; O cliente só vê o resultado no final do projeto; Indicado para projetos pequenos. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 17 Espiral • O modelo espiral é mais adequado para sistemas complexos e que exijam um alto nível de interações com os usuários, a fim de possibilitar a abordagem de todos os problemas desse software. • Usado com mais frequência em grandes projetos. • Maior controle sobre os riscos do projeto, tornando o processo de construção de um produto complexo mais seguro. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Espiral: 1 2 3 4 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 19 Prototipagem evolutiva e incremental: Baseado no modelo espiral; Ao final de cada volta o usuário tem acesso a um protótipo; Útil para aprovações de ideias e coleta de novos requisitos; Desvantagem: • Cliente insiste que o protótipo seja, com ligeiras modificações, a versão final do produto. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 20 Prototipagem evolutiva: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 21 Entrega evolutiva: Tem como objetivo desenvolvimento promover um conjunto (desenvolvedor trabalhando junto com o usuário) a fim de descobrir os requisitos de maneira incremental. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 22 Entrega evolutiva: Diferente do desenvolvimento incremental, esse modelo volta sempre à fase de definição de requisitos, num movimento exploratório de conceitos do produto e necessidades do usuário. início Requisitos Análise Desenho de alto nível Desenho detalhado Implementação Teste Não Produto completo? Sim INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente Final 23 Ciclos de Vida de Software • Documentos gerados: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 24 Ciclos de Vida de Software • Documentos gerados: Requisitos: • Visão geral, conceitos de operações, requisitos funcionais, não funcionais... Análise: • Detalhamento dos requisitos, diagrama de casos de uso, casos de uso reais, divisão de módulos... Design: • Diagrama de BD, DFD (Diagrama de Fluxo de Dados), Classes, Sequencia... INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 25 Ciclos de Vida de Software • Documentos gerados: Implementação: • Código comentado, resultado de testes unitários... Teste: • Plano de teste, documento de execução de testes... Implantação: • Diagrama de implantação, tutoriais, treinamentos... INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 26 Atividade – Valor 2,0 pontos 1. Em sua opinião, como a engenharia de software pode ajudar no atendimento aos objetivos do software? 2. Descreva os ciclos de vida de software destacando os riscos associados a cada um deles: Codifica-remenda; Cascata; Espiral; Prototipagem evolutiva. 3. Você irá abrir uma empresa de desenvolvimento de software com outros 3 colegas. Qual dos ciclos de vida de software vistos até o momento você utilizaria? Por que? 4. Você consegue descrever um cenário onde seja interessante o uso de todos esses processos de ciclo de vida ou, em sua opinião, é uma “perda de tempo” criar tanta documentação para desenvolver um software? Justifique sua resposta. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 27 5. Pressman afirma que “Software de computador é a tecnologia mais importante atualmente no mundo”. Você concorda com essa afirmação? Justifique sua resposta. 6. Escreva, com suas palavras, quais são as características que diferenciam o software de outros produtos? 7. Na sua opinião, o que é engenharia de software (ES)? Por que é importante seguir um processo de no desenvolvimento de software? INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projeto de Sistemas – Técnico Subsequente 28