Engenharia de Software Prof. Jos Wilson j.wilson.df@gmail.com 2 O Que voc quer ser quando crescer? 3 Objetivo da aula Depois desta aula voc ter uma viso sobre o que a engenharia de software, os seus objetivos e conceitos bsicos.
4 O que a Engenharia de Software? Estudo ou aplicao de abordagens sistemticas, econmicas e quantificveis para o desenvolvimento, operao e manuteno de software de qualidade.
Engenheiros de software devem adotar uma abordagem sistemtica e organizada para seu trabalho e usar ferramentas e tcnicas/mtodos apropriados dependendo do problema a ser solucionado, das restries de desenvolvimento e dos recursos disponveis
5 O que software? Programas de computador e documentao associada
Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral 6 Objetivos da Engenharia de Software Controle sobre o desenvolvimento de software dentro de custos, prazos e nveis de qualidade desejados Produtividade no desenvolvimento, operao e manuteno de software Qualidade versus Produtividade Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e nveis de qualidade desejados 7 A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invs de indivduos
usa princpios de engenharia ao invs de arte, e
inclui tanto aspectos tcnicos quanto no tcnicos Caractersticas da Engenharia de Software 8 O que um software de qualidade?
O software que satisfaz os requisitos solicitados pelo usurio. Deve ser fcil de manter, ter boa performance, ser confivel e fcil de usar Alguns atributos de qualidade Manutenibilidade O software deve evoluir para atender os requisitos que mudam Eficincia O software no deve desperdiar os recursos do sistema Usabilidade O software deve ser fcil de usar pelos usurios para os quais ele foi projetado 9 Qualidade de Software (um exemplo para o Varejo) Correto A loja no pode deixar de cobrar por produtos comprados pelo consumidor Robusto e altamente disponvel A loja no pode parar de vender Eficiente O consumidor no pode esperar A empresa quer investir pouco em recursos computacionais (CPU, memria, rede) 10 Qualidade de Software (um exemplo para o Varejo) Amigvel e fcil de usar A empresa quer investir pouco em treinamento Altamente extensvel e adaptvel A empresa tem sempre novos requisitos (para ontem!) A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.) Reusvel Vrias empresas precisam usar partes de um mesmo sistema 11 Qualidade de Software (um exemplo para o Varejo) Aberto, compatvel, de fcil integrao com outros sistemas A empresa j tem controle de estoque, fidelizao, etc. Portvel e independente de plataforma (hw e sw) A empresa opta por uma determinada plataforma Baixo custo de instalao e atualizao A empresa tem um grande nmero de PDVs
12 Produtividade Custo de desenvolvimento reduzido A empresa consumidora quer investir pouco em software A empresa produtora tem que oferecer software barato Tempo de desenvolvimento reduzido Suporte rpido s necessidades do mercado
13 Software Barato Nem tanto resultado de baixos custos de desenvolvimento, mas principalmente da distribuio dos custos entre vrios clientes.
Reuso, extensibilidade e adaptabilidade so essenciais para viabilizar tal distribuio.
14 Importncia da Engenharia de Software Qualidade de software e produtividade garantem: Disponibilidade de servios essenciais Segurana de pessoas Competitividade das empresas Produtores Consumidores 15 Mas, na realidade, temos a Crise de Software... 25% dos projetos so cancelados o tempo de desenvolvimento bem maior do que o estimado 75% dos sistemas no funcionam como planejado a manuteno e reutilizao so difceis e custosas os problemas so proporcionais a complexidade dos sistemas 16 Causas da Crise de Software Essncias Complexidade dos sistemas Dificuldade de formalizao Acidentes M qualidade dos mtodos, linguagens, ferramentas, processos, e modelos de ciclo de vida Falta de qualificao tcnica 17 Elementos e Atividades da Engenharia de Software Elementos Modelos do ciclo de vida do software Linguagens Mtodos Ferramentas Processos
Atividades Modelagem do negcio Elicitao de requisitos Anlise e Projeto Implementao Testes Distribuio Planejamento Gerenciamento Gerncia de Configurao e Mudanas Manuteno 18 O que um modelo de ciclo de vida de processo de software? Uma representao abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produo e manuteno de software 19 Modelos do Ciclo de Vida de Software Cascata Modelos Iterativos Espiral Incremental (ex: do RUP, do XP) ... 20 Modelo Cascata 21 Modelo Cascata na Prtica 22 Modelos Iterativos Requisitos de sistema SEMPRE evoluem durante curso de um projeto. Assim a iterao do processo sempre faz parte do desenvolvimento de grandes sistemas Iteraes podem ser aplicadas a quaisquer dos modelos de de ciclo de vida Duas abordagens (relacionadas) Desenvolvimento espiral Desenvolvimento incremental 23 Desenvolvimento Espiral Acrescenta aspectos gerenciais ao processo de desenvolvimento de software. anlise de riscos em intervalos regulares do processo de desenvolvimento de software planejamento controle tomada de deciso O processo representado como uma espiral em vez de uma seqncia de atividades Cada volta na espiral representa uma fase no processo No h fases fixas como especificao ou projeto - voltas na espiral so escolhidas dependendo do que requerido Riscos so avaliados explicitamente e resolvidos ao longo do processo 24 Desenvolvimento Espiral 25 Desenvolvimento Incremental Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega so divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida Requisitos dos usurios so priorizados e os requisitos de mais alta prioridade so includos nas iteraes iniciais Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores 26 Desenvolvimento Iterativo e Incremental (do RUP) 27 Linguagem Notao com sintaxe e semntica bem definidas com representao grfica ou textual Usada para descrever os artefatos gerados durante o desenvolvimento de software Exemplos: UML, Java 28 Mtodo Descrio sistemtica de como deve-se realizar uma determinada atividade ou tarefa A descrio normalmente feita atravs de padres e guias Exemplos: Mtodo para descoberta das classes de anlise no RUP.
29 Ferramenta CASE Prov suporte computacional a um determinado mtodo ou linguagem Ambiente de desenvolvimento: conjunto de ferramentas integradas (CASE) Exemplos: Rational Rose, JBuilder 30 Processo Conjunto de atividades bem definidas com responsveis com artefatos de entrada e sada com dependncias entre as mesmas e ordem de execuo com modelo de ciclo de vida 31 Processo de software Um conjunto de atividades cujo objetivo o desenvolvimento ou a evoluo do software Conjunto coerente de atividades para especificao, projeto, implementao e teste de sistemas de software 32 Metodologia Conjunto de mtodos + processo 33 Pontos principais Engenharia de software uma disciplina de engenharia que est envolvida com todos os aspectos da produo de software Produtos de software consistem de programas desenvolvidos e documentao associada. Alguns atributos de qualidade do produto so manutenibilidade, eficincia e usabilidade O processo de software consiste nas atividades que so envolvidas no desenvolvimento de produtos de software 34 Pontos principais Mtodos so formas organizadas de produzir software. Eles incluem sugestes para o processo a ser seguido, as notaes a serem usadas, regras que governam as descries do sistema que so produzidas e diretrizes de projeto Ferramentas CASE so sistemas de software que so projetados para suportar as atividades rotineiras no processo de software, como edio de diagramas de projeto e verificao de consistncia dos diagramas 35 "Somos o que fazemos, mas somos, principalmente, o que fazemos para mudar o que somos." Eduardo Galeano 36 Perguntas