Baixe o app para aproveitar ainda mais
Prévia do material em texto
. . . . . . . . . . Engenharia de Software 1. Engenharia de Software: conceitos básicos 1.1 Computador: problema ou solução? · Por que os sistemas informatizados: · não fazem o que deveriam fazer? · são entregues com atraso? · custam mais caro do que o previsto? · são de baixa qualidade? · são pouco confiáveis? · são lentos? · são difíceis de usar? · etc ... ???? Respostas: · Problemas são resolvidos por pessoas, processos e tecnologia. • Sistemas são usados dentro de processos… • portanto, os processos têm que ser definidos. • Sistemas são usados por pessoas… • … portanto, as pessoas têm que ser: • levadas em conta; Renato Cardoso Mesquita Departamento de Eng. Elétrica da UFMG renato@cpdee.ufmg.br Engenharia de Software: conceitos básicos Pg. 2 • treinadas; • ajudadas. · Problemas são resolvidos por sistemas, não apenas por software. · Fazer software é mais do que desenvolver programas. • O ciclo de vida do software: · Ativação · Especificação · Desenvolvimento · Implantação · Operação · Desenvolver programas é mais do que codificar. · O ciclo de desenvolvimento de software: · Desenho alto nível · Desenho detalhado · Codificação · Testes Por que os sistemas informatizados... · …não fazem o que deveriam fazer? · Porque os problemas têm que ser bem enunciados, antes de serem resolvidos Sistema Software Hardware Bancos de dados Redes de comunicação Procedimentos manuais Engenharia de Software: conceitos básicos Pg. 3 . · O que é necessário fazer é uma coisa. · O que os usuários querem é outra coisa · O que os usuários pedem é outra coisa · O que os analistas entendem é outra coisa · O que acaba sendo feito ... · especificar os requisitos custa tempo e dinheiro… · não especificar custa mais tempo e dinheiro! · Modificações dos requisitos no meio do desenvolvimento (instabilidade dos requisitos): · perda de tempo e dinheiro; · às vezes são inevitáveis ... · O que fazer? · As mudanças de requisitos podem ser minimizadas: · graças a uma boa especificação. · As mudanças de requisitos têm que ser administradas (gestão de requisitos): · através de regras; · através do desenho; · através de ferramentas. Por que os sistemas informatizados... · são entregues com atraso? · custam mais caro do que o previsto? · Porque os projetos têm que ser bem planejados e controlados, para serem realizados è Planejamento e Controle de Projetos. Engenharia de Software: conceitos básicos Pg. 4 · Executar projetos é mais do que escrever propostas. · Fazer orçamentos e cronogramas é fácil. · Cumpri-los é muito mais difícil. · Sem controle, compromissos não se cumprem. · É necessário gerir os projetos! · A cultura do prazo ... · os sistemas só são propostos quando a necessidade deles é para ontem. · os prazos são fixados de forma comercial ou política, e não técnica: · o sistema já foi vendido… · o ministro vem inaugurar… · Não me interessa como você vai fazer, desde que entregue no prazo! · Pressionados o suficiente, programadores prometem qualquer prazo. · Não só a etapa de desenvolvimento conta nos prazos. · Ativação · Especificação · Desenvolvimento · Implantação · Operação · Só o desenvolvimento depende mais dos programadores que dos usuários! · Conseqüências da cultura do prazo: · produtos de má qualidade… · que não resolvem os problemas que deveriam resolver… · e são entregues fora do prazo! · Dado um prazo, sempre se consegue fazer alguma coisa. · Resta ver se é a coisa que deveria ser feita. Engenharia de Software: conceitos básicos Pg. 5 · Os processos de desenvolvimento de software são intensivos em mão de obra. · Métodos resolvem apenas uma parte dos problemas. · Ferramentas resolvem uma parte ainda menor dos problemas. · Ferramentas e métodos avançados só têm utilidade nas mãos de pessoas capacitadas. · Receitas para reduzir custos. · Fazer uma boa especificação, para não ter que muda-la durante o desenvolvimento. · Nada é mais caro que resolver os problemas errados. · Identificar e resolver problemas o mais cedo possível. · custo de correção dos defeitos cresce muito ao longo do tempo. · Não usar tecnologia tosca demais. · tempo dos programadores geralmente é mais caro que plataformas e ferramentas. · Não usar tecnologia sofisticada demais. · tempo de aprendizado de plataformas e ferramentas sofisticadas pode ser maior que o benefício. Engenharia de Software: conceitos básicos Pg. 6 Por que os sistemas informatizados... · ... são de baixa qualidade? · Porque a qualidade não é planejada... · portanto, não é controlada! · Mas o que é qualidade de software? é o grau de conformidade de um produto com os seus requisitos · A qualidade dos produtos depende da qualidade dos processos. · que é mal especificado, é mal projetado. · que é mal projetado, é mal construído. · que é mal construído, é muito difícil consertar. · Todos os produtos intermediários devem ser conferidos. · O que não passar na checagem não está pronto. · Conferir custa tempo e dinheiro. · Não conferir custa muito mais. · O controle da qualidade é inútil se não for obsessivo. · Todos conferem melhor o trabalho alheio. · Quem confere não pode ser quem desenvolve. · Qualidade é produzida por técnicas corretas nas mãos de pessoas capacitadas. · Conferir não cria qualidade, apenas descobre problemas. · Qualidade não é luxo, é a necessidade mais básica. · Prazos e custos só podem ser definidos a partir de objetivos de qualidade. · Com qualidade zero, pode- se fazer qualquer coisa dentro do prazo. Engenharia de Software: conceitos básicos Pg. 7 Onde atuar? · Investir em tecnologia? · Tecnologia tem seu próprio ritmo de evolução. · Tecnologia demais é problema e não solução. · Capacitação de pessoas? · Formar pessoas é difícil, caro e demorado. · Recrutar pessoas capacitadas também. · Mudanças no processo de produção de software? · Mudanças de processo podem trazer melhorias a prazo mais curto. · Problema: não existe bala de prata! · Ferramentas não fazem milagres. · Metodologias não fazem milagres. · Métodos gerenciais não fazem milagres. · Os processos também não fazem milagres! · A capacitação em processos é, ela própria, um processo. · objetivo do processo de capacitação é o amadurecimento de uma cultura da qualidade. · Requer tempo, recursos, motivação. · O amadurecimento dos processos se faz passo a passo. · Existem níveis de maturidade. · Níveis de maturidade de software: · nível artesanal: · processo informal (só existe na cabeça dos desenvolvedores), de alto risco. · freqüentes surpresas: · geralmente desagradáveis; · projetos andam de crise em crise; · quando funciona, é por causa de talentos individuais; · sucessos em geral não se repetem. Engenharia de Software: conceitos básicos Pg. 8 · O nível de gestão básica: · gestão de requisitos, dos projetos e da qualidade; · capacidade para repetir tipos de projetos bem sucedidos. · Níveis superiores de maturidade: · nível de engenharia básica; · nível de engenharia avançada; · nível de melhoria contínua dos processos. · Modelos de capacitação: · servem para avaliar a maturidade dos processos de uma organização; · modelo CMM (Capability Maturity Model) : focaliza os processos Número do nível Nome do nível Característica da organização Característica dos processos Nível 1 Inicial Não segue rotinasProcessos caóticos Nível 2 RepetitivoSegue rotinas Processos disciplinados Nível 3 Definido Escolhe rotinas Processos padronizados Nível 4 Gerido Cria e aperfeiçoa rotinas Processos previsíveis Nível 5 OtimizanteOtimiza rotinas Processos em melhoria contínua Engenharia de Software: conceitos básicos Pg. 9 E esta disciplina??? Esta disciplina visa tornar o aluno apto a: · utilizar um processo típico de produção de software; · utilizar padrões e técnicas para: · engenhariade requisitos; · análise orientada a objetos; · projeto orientado a objetos; · projeto detalhado e codificação; · realização de testes; · aplicar os padrões e técnicas acima em projetos de software de pequeno e médio porte; · participar de revisões técnicas, relatá-las e conduzi-las.
Compartilhar