Processos Professora: Lucélia Oliveira Ao falar de processo, no contexto da Engenharia de Software, estamos nos referindo ao processo de desenvolvimento de software. O processo está presente nas etapas iniciais da construção de um software, até o treinamento do usuário final na nova ferramenta. Se refere à metodologia adotada. Professora: Lucélia Oliveira Existem vários processos que tem a pretenção de serem adequados à construção de software. Mesmo antes da UML, existia um processo não formal, de construção de software, que se resumia ao levantamento de requisitos (necessidades), definição de um modelo (MER) e, finalmente, iniciava-se a codificação. Professora: Lucélia Oliveira Todos os processos de construção de software que apareceram foram apresentando problema no resultado final. Ainda hoje, mesmo os mais decantados processos, apresentam falhas ainda não superadas. Professora: Lucélia Oliveira Ernani Medeiros, cita em seu livro, o exemplo de um amigo que aplicou integralmente os conceitos de Gerenciamento de Projetos que haviam sido utilizados anteriormente para a construção de uma usina hidrelétrica e teve diversas decepções. A construção de uma casa pode ser mais simples que a construção de um software. Professora: Lucélia Oliveira “Somos capazes de apontar os motivos, mas não somos tão felizes em apontar as soluções para esta problemática” Ernani Medeiros A fórmula secreta da boa construção de software ainda não foi desenvolvida, e isso ocorre em conseqüência da grande quantidade de tecnologia existente. Professora: Lucélia Oliveira O Grupo Hyunday, na Coréia consegue recordes nos prazos de entrega de grandes navios, não importando onde a encomenda tenha sido feita ou qual o seu tamanho. Nosso primeiro equívoco ocorre no formato da construção:”Nada se inicia em termos de construção, antes que a concepção do projeto seja terminada”. Professora: Lucélia Oliveira Na construção civil, tudo é pensado, antes mesmo de um tijolo ser assentado. Tudo é pensado, medido, checado, corrigido, até que os números sejam extemamente precisos. Durante anos tentamos construir software tendo como termo de comparação a construção civil. O problema é que os requisitos de software sofrem mudanças. Professora: Lucélia Oliveira Professora: Lucélia Oliveira A idéia inicial existe em formato nebuloso dentro da mente do interessado. O que ele tem como certo é a sua necessidade A forma de resolver ou atender a essa necessidade não tem um formato definido. Isso ocorre por diversas razões como falta de conhecimento tecnológico ou mesmo aversão inicial à tecnologia. Professora: Lucélia Oliveira Na construção civil, se o engenheiro civil informar que o que pode ser construído é um sobrado de dois andares, com a metragem de área útil de x metros, dificilmente se discutirá sua sentença. Professora: Lucélia Oliveira É a aprovação de uma idéia abstrata por parte do interessado. A visão que o interessado tem é de alto nível, porém nada palpável existe para a tomada segura de decisão nesse estágio. Além disso, a idéia inicial do interessado “muda” em relação ao primeiro estágio. Isso é inevitável, pois a idéia nebulosa do primeiro estágio foi, agora, melhorada, com a ajuda de outras pessoas. Professora: Lucélia Oliveira Na construção civil, quando a planta é mostrada ao interessado, este fala mais à vontade de sua aprovação ou recusa, pelo fato de tratar de assuntos mais concretos. Ele sabe o que é uma parede e um dormitório, então consegue abstrair, com maior fluidez, o resultado final. Muitos resultados indesejáveis, no fututro, são resolvidos nesse estágio (junção de dois dormitórios, por exemplo). Professora: Lucélia Oliveira O detalhamento completo do software desejado é escrito novamente buscando a aprovação do interessado. Nada é construído, apenas as funcionalidades desejadas são escritas. A idéia inicial do interessado se altera. Isso ocorre pelo fato de que o seu nível de abstração melhorou. Normalmente, a própria equipe de construção descobre inconsistências significativas. Professora: Lucélia Oliveira Na construção civil, como o segundo estágio foi baseado em fundamentos bem concretos, eses estágio quase não sofre alterações significativas. Professora: Lucélia Oliveira O início da construção do software se dá com base na aprovação das idéias surgidas no segundo e terceiro estágios. Nesse estágio o interessado vê algo mais concreto na construção de seu software. Professora: Lucélia Oliveira Na construção civil, a idéia inicial do interessado foi concebida e visualizada na planta em que a construção se baseia. Paredes levantadas, desejo alcançado. Alterações no projeto geralmente não são feitas nesse estágio. Professora: Lucélia Oliveira O interessado, nesse momento fica afastado do contato com o software de seu interesse. Tudo o que se necessitava foi conversado e “assinado”. Ele deverá fazer visita periódica, apenas para avaliar o andamento do projeto x cronograma. O banco de dados escolhido passa por testes com as interfaces gráficas construídas, e muitos códigos de linguagens e funções do banco de dados são escritos. Professora: Lucélia Oliveira No caso de demissão de um programador ou Web designer, ou administrador de dados, os problemas começam a aparecer. Programadores com o mesmo nível de conhecimento e experiência tem visões completamente diferentes sobre como se deve fazer um código. Professora: Lucélia Oliveira Na construção civil, a visita do interessado para avaliar o andamento x cronograma é feita com regularidade. No caso da demissão de um empregado, busca-se outro que tenha a mesma experiência. Professora: Lucélia Oliveira A entrega de um software ao seu interessado ocorre com raros estouros de champanha. Devido aos problemas de adaptação de pessoal, tecnologia e política, as datas de entrega foram negociadas com várias protelações. Não é muito raro se ouvir, do principal investidor, na cerimônia de entrega, a seguinte frase: “Mas não é nada disso que eu queria!” ou “Olha, está bom, mas eu gostaria de fazer algumas mudanças!”. Professora: Lucélia Oliveira Na construção civil, quando uma edificação é terminada, niguém ouve coisa semelhante ao que foi citado no slide anterior. Isso indicaria uma completa imcompetência por parte do engenheiro responsável. Se a planta foi obedecida e existe a intenção de se fazer alterações, é necessário que essa alteração esteja presente na planta, e que tenha novas aprovações no órgão responsável. Professora: Lucélia Oliveira NÃO existe uma forma de construção de software certa. Ao existir, provavelmente ocupará a primeira página dos principais jornais do mundo! Professora: Lucélia Oliveira Do conhecimento do negócio a ser modelado; Do conhecimento da tecnologia a ser utilizada; Da capacidade de abstração do principal interessado no software; Da capacidade de abstração de quem construirá o software; Do volume de dinheiro dedicado à aquisição de banco de dados, ferramentas de desenvolvimento, hardware e terceiros, como provedores de acesso. Professora: Lucélia Oliveira Alterando-se apenas uma das variáveis citadas no slide anterior, obtém-se um ganho enorme em termos de produtividade. Não podemos comparar a Engenharia de Software com as outras engenharias. Os trabalhos de engenharias naval, elétrica, civil e música existem há séculos, enquanto a Tecnologia da Informação, em especial a engenharia de software, existem há poucas dezenas de anos. Professora: Lucélia Oliveira A ciência naval tem séculos de tentativas, erros, acertos, e hoje se constroem verdadeiras cidades flutuantes. Existe um padrão e um censo comum de como fazer um barco! Professora: Lucélia Oliveira O software se refere à coisas intangíveis, às vezes, inimagináveis. O mesmo não ocorre com as outras ciências citadas. Esse fato aliase ao desconhecimento dos requerentes de um software, sobre as tecnologias à sua disposição. Assim, conforme o software vai se concretizando, a idéia do interessado se aprimora, ou seja, muda. Professora: Lucélia Oliveira Professora: Lucélia Oliveira É uma representação simplificada e abstrata de um processo de software, apresentada a partir de uma perspectiva específica. Professora: Lucélia Oliveira Modelo Em Cascata Separa as fases de especificação e desenvolvimento e estas são executadas em seqüência. Modelo Espiral Cada loop na espiral representa uma fase do pprocesso de software. Desenvolvimento Baseado em Reuso O sistema é construído com base em componentes existentes Professora: Lucélia Oliveira Definição e análise dos requisitos Projeto Implementação e teste de unidades Integração e Testes de Sistema Operação e Manutenção Professora: Lucélia Oliveira 1. Análise e definição dos requisitos: As funções, as restrições e os objetivos do sistema são estabelecidos por meio da consulta aos usuários do sistema. Em seguida, são definidos em detalhes e servem como a especificação do sistema. Professora: Lucélia Oliveira 2. Projeto de sistemas e de software O projeto de sistemas agrupa os requisitos de sistemas de hardware e software. Estabelece uma arquitetura do sistema geral. Professora: Lucélia Oliveira 3. Implementação e teste de unidades Esse estágio compreende um conjunto de programas ou unidades de programa. O teste de unidades envolve verificar que cada unidade atenda a sua especificação. Professora: Lucélia Oliveira 4. Integração e teste de sistemas. As unidades de programa ou programas individuais são integrados e testados como um sistema completo a fim de garantir que os requisitos de software foram atendidos. Após os testes, os sistema é entregue ao cliente. Professora: Lucélia Oliveira 5. Operação e manutenção Esta é a fase mais longa do ciclo de vida A manutenção envolve corrrigir erros que não foram descobertos em estágios anteriores do ciclo de vida, melhrando a implementação das unidades de sistema e aumentando as funções desse sistema. Professora: Lucélia Oliveira Divisão inflexível das fases do projeto Dificuldade em reagir às mudanças ao longo do processo Isto dificulta a resposta às alterações de requisitos É apropriado somente quando os requisitos estão bem entendidos. Professora: Lucélia Oliveira Proposto, originalmente por Boehm, em 1988. O processo é representado como uma espiral ao invés de uma seqüência de atividades com retrocesso. Cada loop da espiral, representa uma fase do processo Não há fases fixas como especificação ou projeto, os loops são escolhidos dependendo da necessidade Professora: Lucélia Oliveira Os riscos são explicitamente avaliados e resolvidos durante o processo Em vez de representar o processo de software como uma sequência de atividades com retorno de alguma atividade para outra, o processo é representado como um espiral. Cada loop na espiral representa uma fase do processo de software. Cada espiral é dividido em quatro setores: Professora: Lucélia Oliveira 1. Definição de objetivos, alternativas e restrições: São definidos os objetivos específicos, identificadas as restrições para o processo e o produto e preparado um plano de gerenciamento detalhado. Professora: Lucélia Oliveira 2. Avaliação e redução dos riscos: Para cada um dos riscos de projeto identificados, é realizada uma análise detalhada e são tomadas providências para reduzir os riscos. Professora: Lucélia Oliveira 3. Desenvolvimento e validação Depois da avaliação dos riscos, é escolhido um modelo de desenvolvimento para o sistema. Por exemplo, se forem dominantes os riscos relacionados à interface com o usuário, um modelo apropriado seria o modelo por prototipação evolucionária. O modelo cascata poderá ser o modelo de desenvolvimento mais apropriado se o risco principal identificado for a integração de sistemas. Professora: Lucélia Oliveira 4. Planejamento O projeto é revisto e é tomada uma decisão sobre continuar com o próximo loop da espiral. Se a decisão for continuar, serão traçados os planos para a próxima fase do projeto. Professora: Lucélia Oliveira