Aula Info (4)

71
Software e Engenharia de Software e Engenharia de Software Software ENGENHARIA DE SOFTWARE - PRESSMAN Renata Pontin de Mattos Fortes – ICMC/USP

Transcript of Aula Info (4)

  • Software e Engenharia de SoftwareENGENHARIA DE SOFTWARE - PRESSMANRenata Pontin de Mattos Fortes ICMC/USP

  • Software1- INSTRUES que quando executadas produzem a funo e o desempenho desejados2 - ESTRUTURAS DE DADOS que possibilitam que os programas manipulem adequadamente a informao3 - DOCUMENTOS que descrevem a operao e o uso dos programas

  • Caractersticas do Software1- desenvolvido ou projetado por engenharia, no manufaturado no sentido clssico2- no se desgasta mas se deteriora3- a maioria feita sob medida em vez de ser montada a partir de componentes existentes

  • Curva de falhas para o hardware

  • Curva de falhas do software

  • Aplicaes do softwareBSICO coleo de programas escritos para dar apoio a outros programasDE TEMPO REAL software que monitora, analisa e controla eventos do mundo realCOMERCIAL sistemas de operaes comerciais e tomadas de decises administrativasCIENTFICO E DE ENGENHARIA caracterizado por algoritmos de processamento de nmeros

  • Aplicaes do softwareEMBUTIDO usado para controlar produtos e sistemas para os mercados industriais e de consumo DE COMPUTADOR PESSOAL envolve processamento de textos, planilhas eletrnicas, diverses, etc.DE INTELIGNCIA ARTIFICIAL faz uso de algoritmos no numricos para resolver problemas que no sejam favorveis computao ou anlise direta

  • Evoluo do software(1950 - 1965) O hardware sofreu contnuas mudanas O software era uma arte "secundria" para a qual havia poucos mtodos sistemticos O hardware era de propsito geral O software era especfico para cada aplicao No havia documentao

  • Evoluo do software(1965 - 1975) Multiprogramao e sistemas multiusurios Tcnicas interativas Sistemas de tempo real 1a. gerao de SGBDs Produto de sofwtare - software houses Bibliotecas de Software Cresce nro. de sistemas baseado em computador Manuteno quase impossvel ..... CRISE DE SOFTWARE

  • Evoluo do software(1975 - hoje)Sistemas distribudosRedes locais e globaisUso generalizado de microprocessadores - produtos inteligentesHardware de baixo custoImpacto de consumo

  • Evoluo do software(Quarta era do software de computador)Tecnologias orientadas o objetosSistemas especialistas e software de inteligncia artificial usados na prticaSoftware de rede neural artificialComputao Paralela

  • crise de softwareRefere-se a um conjunto de problemas encontrados no desenvolvimento de software:1- As estimativas de prazo e de custo freqentemente so imprecisasNo dedicamos tempo para coletar dados sobre o processo de desenvolvimento de softwareSem nenhuma indicao slida de produtividade, no podemos avaliar com preciso a eficcia de novas ferramentas, mtodos ou padres

  • crise de software2- A produtividade das pessoas da rea de software no tem acompanhado a demanda por seus serviosOs projetos de desenvolvimento de software normalmente so efetuados apenas com um vago indcio das exigncias do cliente

  • crise de software3- A qualidade de software s vezes menos que adequadaS recentemente comeam a surgir conceitos quantitativos slidos de garantia de qualidade de software4- O software existente muito difcil de manter A tarefa de manuteno devora o oramento destinado ao softwareA facilidade de manuteno no foi enfatizada como um critrio importante

  • crise de softwareestimativas de prazo e de custo produtividade das pessoas qualidade de software software difcil de manter

  • Causas dos problemas associados crise de software1- PRPRIO CARTER DO SOFTWAREO software um elemento de sistema lgico e no fsico. Conseqentemente o sucesso medido pela qualidade de uma nica entidade e no pela qualidade de muitas entidades manufaturadasO software no se desgasta, mas se deteriora

  • Causas dos problemas associados crise de software2- FALHAS DAS PESSOAS RESPONSVEIS PELO DESENVOLVIMENTO DE SOFTWAREGerentes sem nenhum background em softwareOs profissionais da rea de software tm recebido pouco treinamento formal em novas tcnicas para o desenvolvimento de softwareResistncia a mudanas.

  • Causas dos problemas associados crise de software3- M ITOS DO SOFTWARE Propagaram desinformao e confusoadministrativosclienteprofissional

  • Mitos do software (ADMINISTRATIVOS)Mito: J temos um manual repleto de padres e procedimentos para a construo de software. Isso no oferecer ao meu pessoal tudo o que eles precisam saber?Realidade: Ser que o manual usado? Os profissionais sabem que ele existe? Ele reflete a prtica moderna de desenvolvimento de software? Ele completo?

  • Mitos do software (ADMINISTRATIVOS)Mito: Meu pessoal tem ferramentas de desenvolvimento de software de ltima gerao; afinal lhes compramos os mais novos computadores.Realidade: preciso muito mais do que os mais recentes computadores para se fazer um desenvolvimento de software de alta qualidade.

  • Mitos do software (ADMINISTRATIVOS) Mito: Se ns estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso.Realidade: O desenvolvimento de software no um processo mecnico igual manufatura. Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas, mas somente de uma forma planejada.

  • Mitos do software (CLIENTE)Mito: Uma declarao geral dos objetivos suficiente para se comear a escrever programas - podemos preencher os detalhes mais tarde.Realidade: Uma definio inicial ruim a principal causa de fracassos dos esforos de desenvolvimento de software. fundamental uma descrio formal e detalhada do domnio da informao, funo, desempenho, interfaces, restries de projeto e critrios de validao.

  • Mitos do software (CLIENTE)Mito: Os requisitos de projeto modificam-se continuamente, mas as mudanas podem ser facilmente acomodadas, porque o software flexvel.Realidade: Uma mudana, quando solicitada tardiamente num projeto, pode ser maior do que a ordem de magnitude mais dispendiosa da mesma mudana solicitada nas fases iniciais.

  • magnitude das mudanas

    FASES

    CUSTO DE MANUTENO

    Definio

    1 x

    Desenvolvimento

    1.5 - 6x

    Manuteno

    60 - 100x

  • Mitos do software (PROFISSIONAL)Mito: Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estar completo.Realidade: Os dados da indstria indicam que entre 50 e 70% de todo esforo gasto num programa sero despendidos depois que ele for entregue pela primeira vez ao cliente.

  • Mitos do software (PROFISSIONAL)Mito: Enquanto no tiver o programa "funcionando", eu no terei realmente nenhuma maneira de avaliar sua qualidade.Realidade: Um programa funcionando somente uma parte de uma Configurao de Software que inclui todos os itens de informao produzidos durante a construo e manuteno do software.

  • abrange um conjunto de trs elementos fundamentais: Mtodos, Ferramentas e Procedimentos

    MTODOS: proporcionam os detalhes de como fazer para construir o software

  • Engenharia de Software Planejamento e estimativa de projeto Anlise de requisitos de software e de sistemas Projeto da estrutura de dados Algoritmo de processamento Codificao Teste Manuteno

  • Engenharia de SoftwareFERRAMENTAS: do suporte automatizado aos mtodos.Existem atualmente ferramentas para sustentar cada um dos mtodosQuando as ferramentas so integradas estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering

  • Engenharia de SoftwarePROCEDIMENTOS: constituem o elo de ligao entre os mtodos e ferramentasSeqncia em que os mtodos sero aplicadosProdutos que se exige que sejam entreguesControles que ajudam assegurar a qualidade e coordenar as alteraesMarcos de referncia que possibilitam administrar o progresso do software.

  • ENGENHARIA DE SOFTWARE

    Conjunto de etapas que envolve MTODOS, FERRAMENTAS e PROCEDIMENTOS.Essas etapas so conhecidas como componentes de CICLOS DE VIDA DE SOFTWAREAlguns ciclos de vida mais conhecidos so: Ciclo de Vida Clssico, Prototipao, Modelo Espiral e Tcnicas de 4a Gerao

  • Para escolha de um Ciclo de Vida de software:

    natureza do projeto e da aplicaomtodos e ferramentas a serem usadoscontroles e produtos que precisam ser entregues

  • Ciclo de Vida Clssico (Cascata)modelo mais antigo e o mais amplamente usado da engenharia de software modelado em funo do ciclo da engenharia convencionalrequer uma abordagem sistemtica, seqencial ao desenvolvimento de software

  • Cascata

  • Atividades do Ciclo de Vida Clssico1- ANLISE E ENGENHARIA DE SISTEMAS envolve a coleta de requisitos em nvel do sistema, com uma pequena quantidade de projeto e anlise de alto nvel esta viso essencial quando o software deve fazer interface com outros elementos (hardware, pessoas e banco de dados)

  • Atividades do Ciclo de Vida Clssico2- ANLISE DE REQUISITOS DE SOFTWARE o processo de coleta dos requisitos intensificado e concentrado especificamente no software deve-se compreender o domnio da informao, a funo, desempenho e interfaces exigidos os requisitos (para o sistema e para o software) so documentados e revistos com o cliente

  • Atividades do Ciclo de Vida Clssico3- PROJETO traduo dos requisitos do software para um conjunto de representaes que podem ser avaliadas quanto qualidade, antes que a codificao se inicie se concentra em 4 atributos do programa: Estrutura de Dados, Arquitetura de Software, Detalhes Procedimentais e Caracterizao de Interfaces

  • Atividades do Ciclo de Vida Clssico4- CODIFICAO traduo das representaes do projeto para uma linguagem artificial resultando em instrues executveis pelo computador

  • Atividades do Ciclo de Vida Clssico5- TESTESConcentra-se: nos aspectos lgicos internos do software, garantindo que todas as instrues tenham sido testadas nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados.

  • Atividades do Ciclo de Vida Clssico6- MANUTENO provavelmente o software dever sofrer mudanas depois que for entregue ao cliente causas das mudanas: erros, adaptao do software para acomodar mudanas em seu ambiente externo e exigncia do cliente para acrscimos funcionais e de desempenho

  • Problemas com o Ciclo de Vida Clssico projetos reais raramente seguem o fluxo seqencial que o modelo prope logo no incio difcil estabelecer explicitamente todos os requisitos. No comeo dos projetos sempre existe uma incerteza naturalo cliente deve ter pacincia. Uma verso executvel do software s fica disponvel numa etapa avanada do desenvolvimento

  • Embora o Ciclo de Vida Clssico tenha fragilidades, ele significativamente melhor do que uma abordagem casual ao desenvolvimento de software

  • Prototipaoprocesso que possibilita que o desenvolvedor crie um modelo do software que deve ser construdo. idealmente, o modelo (prottipo) serve como um mecanismo para identificar os requisitos de software.apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas no identificou requisitos de entrada, processamento e sada com detalhes.

  • Prototipao

  • Atividades da Prototipao1- OBTENO DOS REQUISITOS: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos so conhecidos e as reas que necessitam de definies adicionais.2- PROJETO RPIDO: representao dos aspectos do software que so visveis ao usurio (abordagens de entrada e formatos de sada)

  • Atividades da Prototipao3- CONSTRUO PROTTIPO: implementao do projeto rpido4- AVALIAO DO PROTTIPO: cliente e desenvolvedor avaliam o prottipo

  • Atividades da Prototipao5- REFINAMENTO DOS REQUISITOS: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido. Ocorre neste ponto um processo de iterao que pode conduzir a atividade 1 at que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito.6- CONSTRUO PRODUTO: identificados os requisitos, o prottipo deve ser descartado e a verso de produo deve ser construda considerando os critrios de qualidade.

  • Problemas com a Prototipaocliente no sabe que o software que ele v no considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. No aceita bem a idia que a verso final do software vai ser construda e "fora" a utilizao do prottipo como produto finaldesenvolvedor freqentemente faz uma implementao comprometida (utilizando o que est disponvel) com o objetivo de produzir rapidamente um prottipo. Depois de um tempo ele familiariza com essas escolhas, e esquece que elas no so apropriadas para o produto final.

  • ainda que possam ocorrer problemas, a prototipao um ciclo de vida eficiente. a chave definir-se as regras do jogo logo no comeo.o cliente e o desenvolvedor devem ambos concordar que o prottipo seja construdo para servir como um mecanismo a fim de definir os requisitos.

  • Ciclo de Vida em Espiral engloba as melhores caractersticas do ciclo de vida Clssico e da Prototipao, adicionando um novo elemento: a Anlise de Risco segue a abordagem de passos sistemticos do Ciclo de Vida Clssico incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real usa a Prototipao, em qualquer etapa da evoluo do produto, como mecanismo de reduo de riscos

  • Espiral

  • Atividades do Ciclo de Vida em Espiral1- PLANEJAMENTO: determinao dos objetivos, alternativas e restries2- ANLISE DE RISCO: anlise das alternativas e identificao / resoluo dos riscos3- CONSTRUO: desenvolvimento do produto no nvel seguinte4- AVALIAO DO CLIENTE: avaliao do produto e planejamento das novas fases

  • Comentrios sobre o Ciclo de Vida em Espiral, atualmente, a abordagem mais realstica para o desenvolvimento de software em grande escala.usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva. pode ser difcil convencer os clientes que uma abordagem "evolutiva" controlvelexige considervel experincia na determinao de riscos e depende dessa experincia para ter sucesso

  • Comentrios sobre o Ciclo de Vida em Espiral o modelo relativamente novo e no tem sido amplamente usado. Demorar muitos anos at que a eficcia desse modelo possa ser determinada com certeza absoluta.

  • Tcnicas de 4a GeraoConcentra-se na capacidade de se especificar o software a uma mquina em um nvel que esteja prximo linguagem natural.Engloba um conjunto de ferramentas de software que possibilitam que: o sistema seja especificado em uma linguagem de alto nvel e o cdigo fonte seja gerado automaticamente a partir dessas especificaes

  • 4a Gerao

  • Ferramentas do ambiente de desenvolvimento de software de 4a GeraoO ambiente de desenvolvimento de software que sustenta o ciclo de vida de 4a gerao inclui as ferramentas:linguagens no procedimentais para consulta de banco de dadosgerao de relatriosmanipulao de dadosinterao e definio de telasgerao de cdigoscapacidade grfica de alto nvelcapacidade de planilhas eletrnicas

  • Atividades das Tcnicas de 4a Gerao1- OBTENO DOS REQUISITOS: o cliente descreve os requisitos os quais so traduzidos para um prottipo operacionalo cliente pode estar inseguro quanto aos requisitoso cliente pode ser incapaz de especificar as informaes de um modo que uma ferramenta 4GL possa consumiras 4GLs atuais no so sofisticadas suficientemente para acomodar a verdadeira "linguagem natural"

  • Atividades das Tcnicas de 4a Gerao2- ESTRATGIA DE "PROJETO": para pequenas aplicaes possvel mover-se do passo de Obteno dos Requisitos para o passo de Implementao usando uma linguagem de quarta geraoPara grandes projetos necessrio desenvolver uma estratgia de projeto. De outro modo ocorrero os mesmos problemas encontrados quando se usa abordagem convencional (baixa qualidade)

  • Atividades das Tcnicas de 4a Gerao3- IMPLEMENTAO USANDO 4GL: os resultados desejados so representados de modo que haja gerao automtica de cdigo . Deve existir uma estrutura de dados com informaes relevantes e que seja acessvel pela 4GL4- TESTE: o desenvolvedor deve efetuar testes e desenvolver uma documentao significativa. O software desenvolvido deve ser construdo de maneira que a manuteno possa ser efetuada prontamente.

  • Comentrios sobre as Tcnicas de 4a GeraoPROPONENTES: reduo dramtica no tempo de desenvolvimento do software (aumento de produtividade)OPONENTES: as 4GL atuais no so mais fceis de usar do que as linguagens de programao o cdigo fonte produzido ineficiente a manutenibilidade de sistemas usando tcnicas 4G ainda questionvel

  • Mudana na natureza de desenvolvimento de software

  • Combinao dos Mtodos de Ciclo de Vida

  • Engenharia de Software uma viso genricaO processo de desenvolvimento de software contm 3 fases genricas, independentes do modelo de engenharia de software escolhido: DEFINIO, DESENVOLVIMENTO e MANUTENO.

  • Engenharia de Software uma viso genrica FASE DE DEFINIO: o que ser desenvolvido. Anlise do Sistema: define o papel de cada elemento num sistema baseado em computador, atribuindo em ltima anlise, o papel que o software desempenhar.Planejamento do Projeto de Software: assim que o escopo do software estabelecido, os riscos so analisados, os recursos so alocados, os custos so estimados e, tarefas e programao de trabalho definidas.Anlise de Requisitos: o escopo definido para o software proporciona uma direo, mas uma definio detalhada do domnio da informao e da funo do software necessria antes que o trabalho inicie.

  • Engenharia de Software uma viso genricaDESENVOLVIMENTO: como o software vai ser desenvolvido. Projeto de Software: traduz os requisitos do software num conjunto de representaes (algumas grficas, outras tabulares ou baseadas em linguagem) que descrevem a estrutura de dados, a arquitetura do software, os procedimentos algoritmicos e as caractersticas de interface. Codificao: as representaes do projeto devem ser convertidas numa linguagem artificial (a linguagem pode ser uma linguagem de programao convencional ou uma linguagem no procedimental) que resulte em instrues que possam ser executadas pelo computador. Realizao de Testes do Software: logo que o software implementado numa forma executvel por mquina, ele deve ser testado para que se possa descobrir defeitos de funo, lgica e implementao.

  • Engenharia de Software uma viso genricaFASE DE MANUTENO: concentra-se nas mudanas que ocorrero depois que o software for liberado para uso operacionalCorreo Adaptao Melhoramento Funcional

  • Engenharia de Software uma viso genricaCorreo: mesmo com as melhores atividades de garantia de qualidade de software, provvel que o cliente descubra defeitos no software. A manuteno corretiva muda o software para corrigir defeitos.Adaptao: com o passar do tempo, o ambiente original (por exemplo a CPU, o sistema operacional e perifricos) para o qual o software foi desenvolvido provavelmente mudar. A manuteno adaptativa muda o software para acomodar mudanas em seu ambiente.

  • Engenharia de Software uma viso genricaMelhoramento Funcional: a medida que o software usado, o cliente/usurio reconhecer funes adicionais que oferecero benefcios. A manuteno perfectiva estende o software para alm de suas exigncias funcionais originais.

  • Engenharia de Software uma viso genricaATIVIDADES DE PROTEO as fases e etapas correlatas descritas so complementadas por uma srie de atividades de proteo.Revises: efetuadas para garantir que a qualidade seja mantida medida que cada etapa concluda.Documentao: desenvolvida e controlada para garantir que informaes completas sobre o software estejam disponveis para uso posterior.Controle das Mudanas: institudo de forma que as mudanas possam ser aprovadas e acompanhadas.

  • ConclusoENGENHARIA DE SOFTWAREpode ser vista como uma abordagem de desenvolvimento de software elaborada com disciplina e mtodos bem definidos. .....a construo por mltiplas pessoas de um software de mltiplas verses [Parnas 1987]