Desafios do desenvolvimento de software Características: •Muito difícil. •Alto risco. •Grande desafio. Desafios: •Combinação de fatores. •Dinâmica da mudanças. •Detalhes. •Pressão do tempo. Oportunidades: •Criação. •Satisfação das necessidades sociais e individuais. •Diversidade da equipe. •Espírito de equipe. Engenharia de Software em Camadas Ferramentas Métodos Processos Qualidade Desenvolvimento de software É um conjunto de atividades que começa pela percepção de uma oportunidade de mercado (idéia) e termina na produção (implementação), venda e entrega (instalação) de um programa. Are we building the product right? (Estamos desenvolvendo corretamente o programa?) Are we building the right product? (Estamos desenvolvendo o programa correto?) Processo • Pode ser definido por suas entradas e saídas, função a ser desempenhada e regras de operação. – A função representa a transformação da entrada numa saída. – As funções são associadas através de relações de precedência. – Antes de uma função ser executada devem ocorrer uma dada pré-condição e após a função ter sido executada uma dada pós-condição deve também ser satisfeita. – O início e o fim da função são marcados por eventos. Modelo de Referência de Processo Processo de negócio: Sequência de etapas para transformar uma dada entrada em uma saída desejada. Modelo de referência de processo: Integração de conceitos bem conhecidos de reengenharia dos processos de negócio, benchmarking e controle de processos em uma estrutura transfuncional. Modelo de Referência de Processo • Descrições padronizadas dos processos de gestão. • Estrutura de relacionamento entre os processos padronizados. • Métricas padronizadas para avaliar o desempenho de processo. • Práticas de gestão que proporcionam desempenho similar aos das empresas melhor avaliadas. • Alinhamento padronizado com as facilidades e funcionalidades proporcionadas por software. Modelo de Referência de Processo • Uma vez identificado um processo de software através do modelo de referência poder-se-á: – Implementar o processo de maneira objetivo visando alcançar vantagem competitiva. – Descrever e difundir sem ambiguidade. – Medir, administrar e controlar. – Adequar para objetivos específicos. Da Idéia ao Conceito • A idéia precisa ser transformada num conceito para poder ser avaliada e comunicada de forma a que todos na organização possam entendê-lo, operacionalizá-lo e vendê-lo. • Forma A forma global do produto ou serviço. • Função A maneira como o produto ou serviço opera. • Propósito Necessidades que o produto ou serviço deve satisfazer. • Benefícios Vantagens que o produto ou serviço trará aos consumidores ou usuários. Fases do Processo de Resolução de Problema Definição do problema Diagnóstico da situação atual Desenvolvimento técnico Integração da solução Fases da Engenharia de Software • Definição – Análise e especificação de requisitos – Planejamento • Desenvolvimento – Projeto funcional – Projeto detalhado e codificação – Testes • Suporte – – – – Correção Adaptação Prevenção Evolução Fases da Engenharia de Software • Definição Fases do Processo de Resolução de um Problema – Análise e especificação de requisitos – Planejamento Definição do problema • Desenvolvimento – Projeto funcional – Projeto detalhado e codificação – Testes • Suporte – – – – Correção Adaptação Prevenção Evolução Diagnóstico da situação atual Desenvolvimento técnico Integração da solução O que foi identificado como uma necessidade do cliente O que foi especificado O que foi projetado O que foi entregue para o cliente O que o cliente acabou comprando O que o cliente queria Modelos de Processos de Software (Paradigmas de Ciclo de Vida) • • • • • • • • • Resolução de problemas Processo genérico Sequencial Prototipagem Incremental Espiral Desenvolvimento rápido de aplicações – RAD Métodos ágeis RUP Modelos de Processos de Software Ciclo de Resolução de Problemas Definição do problema Desenvolvi mento técnico Diagnóstico Integração da solução Modelos de Processos de Software Fases genéricas da engenharia de software Definição Desenvol vimento Suporte Modelos de Processos de Software Sequencial Análise Design Codificação Análise de sistema Engenharia de informação Teste Modelos de Processos de Software Prototipagem Início Captura dos requisitos Desenvolvimento rápido Conclusão Engenharia de produto Construção Melhorias Avaliação do protótipo pelo cliente Modelos de Processos de Software Incremental Análise Análise Análise Design Design Design Codificação Codificação Codificação Incremento 1 Teste Teste Teste Incremento 2 Incremento 3 ... Modelos de Processos de Software Espiral Planejamento Interação com cliente Início Avaliação pelo cliente Análise de risco Engenharia Construção Modelos de Processos de Software Desenvolvimento Rápido de Aplicações Modelagem do negócio Time 1 Modelagem dos dados Modelagem do processo Modelagem do negócio Geração da aplicação Modelagem dos dados Time 2 Testes e atualização Modelagem do processo Modelagem do negócio Geração da aplicação Modelagem dos dados Time 3 Testes e atualização Modelagem do processo Geração da aplicação ... Testes e atualização Modelos de Processos de Software (Paradigmas de Ciclo de Vida) • Métodos ágeis – Scrum – XP, Extreme Programming • RUP • Exercício: – Comparar os processos RUP com Scrum