Aspectos histricos da Engenharia de Software A Engenharia de Software comeou a ser utilizada desde 1960, mas o termo Engenharia de Software s comeou a ser utilizado a partir de 1968, pela NATO. NATO Congresso mundial organizado pela OTAN para discutir a crise do software. Teve como principal objetivo estabelecer prticas mais maduras para o processo de desenvolvimento de software. Frase marcante da poca da crise de software: As pontes normalmente eram construdas no tempo planejado, no oramento e nunca caam. Por outro lado, os softwares nunca ficavam pronto dentro do prazo e do oramento, e, alm disso, quase sempre apresentavam problemas. Os softwares tm problemas desde a dcada de 60, a disciplina de fundamentos de software visa entender por que desde a dcada de 60 os softwares tinham problemas, como no passar do tempo foram se desenvolvendo mecanismos para solucionar esses problemas e mostrar formas de melhorar a qualidade dos projetos de desenvolvimento de softwares. Conceitos fundamentais da Engenharia de Software A engenharia de software surgiu para tentar melhorar os processos, a metodologia, os mtodos de desenvolvimento de software. Com o passar do tempo, definiu-se que a E.S. seria uma tecnologia dividida em camadas, dispostas da forma abaixo. 1. Ferramentas Apoio automatizado ou semi-automatizado para os processos e seus mtodos; 2. Mtodos Tcnicas de como fazer a construo de software; 3. Processos Controle gerencial de projetos de softwares; 4. Foco na Qualidade Podemos definir a engenharia de software como um processo que envolve a criao e a utilizao de slidos princpios de engenharia, a fim de obter softwares que sejam:
De alta qualidade; Produzidos de maneira econmica; Confiveis; De trabalho eficiente em mquinas reais; Entregues no prazo; Feitos gerando satisfao ao cliente.
Conceito de Falhas
Segundo a curva idealizada de Pressman, esperado que no comeo
de um projeto de software, comum se ter muitas falhas, porm no seu fim, as falhas so pouqussimas. Objetivos: Mostrar como evitar as mudanas no projeto do software, fazendo planejamentos bem realizados, prever e diminuir as falhas futuras. Pressman-Roger S. Pressman em engenheiro de software, escritor e consultor, norte-americano, presidente da R.S. Pressman & Associates. 2-Processos de Software Fundamentos do Processo de Software Todo software surge atravs de uma necessidade. Processo e engenharia de software so a mesma coisa? A resposta sim e no. O processo de software define a abordagem que adotada quando o software elaborado. A engenharia de software engloba tambm as tecnologias que constituem um processo, como mtodos, tcnicas e ferramentas de desenvolvimento. Assim, a engenharia de software engloba os processos de software. Os grandes estudiosos dividem o software em 3 fases:
Definio QUE - O que o software? O que voc vai desenvolver?
Quais os requisitos chave do software que voc ir fazer? Se estiver bem definido, diminui o risco de falhas. Desenvolvimento COMO Como voc vai fazer o projeto? Como voc vai codificar, desenvolver? Manuteno PS o Corretiva Modifica o software para corrigir defeitos; o Adaptativa Modifica o software para acomodar mudanas em seu ambiente externo; o Aperfeioamento Aprimora o software alm dos requisitos funcionais originais; o Preventiva Faz modificaes nos programas de modo que eles possam ser Mais facilmente corrigidos, adaptados e melhorados.
Tempo de resposta: O tempo de iterao que o usurio tem com
software. Para que a engenharia de software possa ser aplicada como uma abordagem disciplinada para o desenvolvimento, operao e manuteno de um software, um processo deve ser definido. De uma forma geral, um processo caracterizado por fases: 1) Fase de definio: esta fase se concentra no que o sistema de software ir realizar, isto , identifica: Que informao deve ser processada; Que funo e desempenho so desejados; Que comportamento deve ser esperado do sistema;
Que interfaces devem ser estabelecidas;
Que restries de projeto existem; Que critrios de validao so necessrios.
Nesta fase, os requisitos-chave do sistema e do software so identificados. Ela
engloba trs etapas importantes: 1) Engenharia de sistemas ou de informao; 2) Planejamento do projeto; 3) Anlise de requisitos.
2) Fase de desenvolvimento: esta fase foca em como o desenvolvimento
ser realizado, definindo: Como os dados devem ser estruturados; Como as funes devem ser implementadas; Como os detalhes procedimentais devem ser implementados; Como as interfaces devem ser caracterizadas; Como o projeto deve ser traduzido em uma linguagem de programao; Como o teste vai ser realizado. Nesta fase, trs etapas tcnicas especficas ocorrero: 1) Projeto do software; 2) Gerao de cdigo; 3) Teste de software.
3) Fase de manuteno: esta fase tem como alvo as modificaes e
manutenes que o software sofrer. Durante ela, quatro tipos de modificaes so encontradas: Manuteno corretiva: modifica o software para corrigir defeitos; Manuteno adaptativa: modifica o software para acomodar mudanas em seu ambiente externo (processador, sistema operacional, etc.); Manuteno de aperfeioamento: aprimora o software alm dos requisitos funcionais originais (cliente/usurio reconhece e solicita funcionalidades adicionais que traro benefcios, medida que o software usado). Manuteno preventiva: faz modificaes nos programas de modo que eles possam ser mais facilmente corrigidos, adaptados e melhorados. Essas trs fases so complementadas por atividades guarda-chuva, que so aplicadas ao longo do processo de software:
Controle e rastreamento do projeto;
Gesto de riscos; Revises tcnicas formais; Garantia de qualidade;
Gesto de configurao de software;
Produo e preparao de produtos do trabalho (documentos); Gesto de reusabilidade; Medio.
Modelos prescritivos de processo Parte 1
Os processos prescritivos so uma categoria que engloba os processos que possuem pontos observveis, ou seja, aqueles que a cada passo podem ser verificados e classificados como vlidos ou sujeitos a ajustes. Enquanto um modelo descritivo retrata como um processo executado, um modelo prescritivo retrata como um processo deveria ser executado. Assim, um modelo prescritivo uma recomendao que pode ser adaptada ou melhorada pela empresa/equipe de software que for adot-la. H vrios modelos que so classificados nesta categoria: Modelo em cascata Modelos evolucionrios Modelo de prototipagem Modelo espiral Modelo concorrente Modelos incrementais Modelo RAD Modelo incremental Modelo baseado em componentes Modelo de mtodos formais Processo unificado