UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Processo de Desenvolvimento de Software
Engenharia de Software Auxiliar no processo de produção de software, de forma que o processo dê origem a produtos de alta qualidade, produzidos mais rapidamente e a um custo reduzido. Uma disciplina que reúne metodologias, métodos e ferramentas a ser utilizados, desde a percepção do problema até o momento em que o sistema desenvolvido deixa de ser operacional, visando resolver problemas inerentes ao processo e ao produto de software
Princípios da Engenharia de Software Referem-se tanto ao processo como ao produto final, descrevendo algumas propriedades gerais dos processos e produtos. Guiam a escolha das metodologias, métodos e ferramentas apropriados para o desenvolvimento de software Princípios + metodologias, métodos e ferramentas = propriedades desejadas com relação aos processos e produtos.
Princípios da Engenharia de Software Formalidade O processo de desenvolvimento deve acontecer como uma seqüência de passos definidos com precisão. Cada passo deve ser guiado por alguma metodologia que segue algum método. Através de um enfoque formal, pode-se produzir produtos mais confiáveis, controlar seu custo e ter mais confiança no seu desempenho
Princípios da Engenharia de Software Abstração É o processo de identificação dos aspectos importantes de um determinado fenômeno, ignorando-se os detalhes. Pode-se existir diferentes visões da mesma realidade, cada uma com enfoques diferentes. A abstração permite que o desenvolvedor se concentre no problema a ser resolvido, sem se perder em detalhes existentes no mundo real.
Princípios da Engenharia de Software Decomposição Subdivisão do trabalho em atividades específicas, com o objetivo de gerenciar a complexidade. Pode se aplicar a decomposição tanto ao processo de desenvolvimento como ao produto que está sendo construído. Decomposição do processo Permite o planejamento das atividades e diminui o tempo extra que seria gasto mudando de uma atividade para outra Permite a atribuição de tarefas a pessoas diferentes. Decomposição do produto Permite que atividades de desenvolvimento sejam feitas em paralelo Permite a criação de componentes independentes, portanto reutilizáveis.
Princípios da Engenharia de Software Generalização Uma solução mais geral para um problema tem maior potencial para ser reutilizada. Através da generalização, o desenvolvedor tem o potencial de desenvolver um componente que pode ser utilizado em mais de um ponto do sistema de software desenvolvido Solução generalizada pode ser mais custosa, por isso deve avaliar os problemas de custo e eficiência em desenvolver uma solução generalizada.
Princípios da Engenharia de Software Flexibilização O princípio da flexibilização é necessário no processo de desenvolvimento para permitir que o produto possa ser modificado com facilidade. O processo deve ter flexibilidade suficiente para permitir que partes do produto possam ser utilizados em outros sistemas. Para alcançar esse princípio, a engenharia de software necessita de mecanismos para controlar o processo de desenvolvimento.
Processo de Software Conjunto de atividades pré-definidas que levam a um resultado de boa qualidade, nas condições desejadas do projeto (tempo e custo).
Camadas da Engenharia de Software Ferramentas Métodos Processo Qualidade
Atividades Fundamentais de um Processo DEFINIÇÃO DESENVOLVIMENTO VV&T MANUTENÇÃO
Modelos de Processo de Software Ajudam no controle e na coordenação de um projeto de software Definem as atividades que devem ser realizadas
Diferentes Modelos de Processo de Software Seqüencial Linear desenvolvimento retilíneo, onde o sistema completo está pronto após conclusão da seqüência. Prototipagem ajuda o cliente ou desenvolvedor no entendimento das necessidades Evolucionário combina natureza iterativa da prototipagem com os aspectos controlados e sistemáticos do seqüencial
Iteração de Processo Para a maioria dos grandes sistemas, existe a necessidade de repetir partes do processo, à medida que os requisitos do sistema evoluem. O projeto do sistema e o trabalho de implementação devem ser refeitos, a fim de implementar os requisitos modificados.
Processo Iterativo Fases Concepção Elaboração Construção Transição Requisitos Análise Projeto Implementação Teste Iter # 1 Iter # 2............ Iterações Iter # n-1 Iter # n
Qualidade de processo de software usuário requisitos de software produto desenvolvedor requisitos atendidos organização PROCESSO DE SOFTWARE Processo de Desenvolvimen to SOFTWARE PRODUTO SOFTWARE COM QUALIDADE
Por que focalizar o Processo de Software? Dirigindo o foco somente no produto, deixa-se de lado: - conhecimento de como fazer isso melhor Dirigindo o foco no processo prevê-se: - repetição de resultados - tendências futuras do projeto - características do produto
Qualidade de Processo de Software X Maturidade de Processo de Software A maturidade dos processos de software de uma organização influencia na sua capacidade de atingir metas de custo, qualidade e cronograma A qualidade do processo de software pode ser analisada através do nível de maturidade do processo.
Processo de Software Imaturo CARACTERÍSTICAS Processo de Desenvolvimento de Software ad hoc; improvisado Processo de Desenvolvimento de Software fortemente dependente dos profissionais Processo de Desenvolvimento de Software indisciplinado
Processo de Software Imaturo CONSEQÜÊNCIAS Produtividade geralmente menor Prazo e qualidade de difícil previsão Custos de manutenção geralmente altos Baixa visão do progresso e da qualidade Mais riscos na adoção de nova tecnologia Incêndios freqüentes
Processo de Software Maduro CARACTERÍSTICAS (a) Processo de Desenvolvimento de Software conhecido por todos Processo de Desenvolvimento de Software com apoio visível da alta administração Auditagem da fidelidade ao Processo de Desenvolvimento de Software Medidas do Produto e do Processo de Desenvolvimento de Software
Processo de Software Maduro CARACTERÍSTICAS (b) Adoção disciplinada de tecnologia Uso de teste-piloto Papéis e responsabilidades clara e inequivocamente definidos Acompanhamento da qualidade do produto e da satisfação do cliente
Processo de Software Maduro CONSEQÜÊNCIAS Expectativas para custos, cronograma, funcionalidades e qualidade de produto de um modo geral, usualmente, alcançadas Melhoria constante do processo de desenvolvimento de software porque: - ele é definido e documentado - compreendido, vivo e ativo
Melhoria de Processo de Software O crescente reconhecimento da importância de se garantir a Qualidade de um Produto de Software tem levado muita organizações a melhorar o controle sobre todos os elementos envolvidos no desenvolvimento desse produto. Melhoria de Qualidade de Processo de Software
Melhoria de Processo de Software Aonde estamos Auto Avaliação Aonde o mundo está... Normas para Comparação Aonde queremos chegar Necessidades dos Negócios
Melhoria do Processo de Software Processo é examinado pela conduz à Avaliação do Processo Melhoria do Processo identifica mudanças no
Melhoria de Processo de Software Um programa efetivo de mudança requer compreensão do status atual. Provérbio Chinês - Se você não sabe para onde está indo, nenhuma estrada tampouco saberá. Provérbio de Humphrey - Se você não sabe onde está, um mapa não o ajudará.
Como melhorar o processo de software? Realizando um grupo de atividades correlatas que, quando efetuadas coletivamente, alcançam um conjunto de metas consideradas importantes no controle do Processo de Software Uma das maiores dificuldades encontradas pelas empresas de software é o gerenciamento e controle de seus processos de software modelos