Introdução à Engenharia de Software Página 1 de 13 Introdução à Engenharia de Software O QUE É SOFTWARE? SEGUNDO O DICIONÁRIO AURÉLIO: AQUILO QUE PODE SER EXECUTADO POR UM EQUIPAMENTO, NO CASO O HARDWARE; UM PRODUTO COMERCIALIZADO QUE CONSISTE EM UM SISTEMA DE ROTINAS E FUNÇÕES. UMA DEFINIÇÃO MAIS DIDÁTICA: INSTRUÇÕES (PROGRAMAS DE COMPUTADOR) QUE, QUANDO EXECUTADAS PRODUZEM A FUNÇÃO E O DESEMPENHO DESEJADOS; ESTRUTURAS DE DADOS QUE POSSIBILITAM QUE OS PROGRAMAS MANIPULEM ADEQUADAMENTE A INFORMAÇÃO; DOCUMENTOS QUE DESCREVEM A OPERAÇÃO E O USO DOS PROGRAMAS E TANTAS OUTRAS...! EVOLUÇÃO DO SOFTWARE
Introdução à Engenharia de Software Página 2 de 13 PARA QUÊ DESENVOLVER SOFTWARE? AUTOMATIZAR UM DETERMINADO PROCESSO; MELHORAR A QUALIDADE DAS INFORMAÇÕES; APOIAR DECISÕES ESTRATÉGICAS; SER UM INSTRUMENTO DE MELHORIA DA QUALIDADE DE VIDA DA SOCIEDADE; DAR MAIS CREDIBILIDADE AS INFORMAÇÕES; E POR AÍ VAI... APLICAÇÕES PARA O SOFTWARE SOFTWARE BÁSICO: COLEÇÃO DE PROGRAMAS ESCRITOS PARA APOIAR OUTROS PROGRAMAS. EX.: COMPILADORES, GERENCIADORES DE ARQUIVOS, DRIVERS, ETC... SOFTWARE DE TEMPO REAL: SOFTWARE QUE MONITORA, ANALISA E CONTROLA EVENTOS DO MUNDO REAL. SÃO SISTEMAS AONDE UM RESULTADO ATRASADO NÃO TEM VALOR. EX.: MONITORAÇÃO DE BATIDAS CARDÍACAS, SISTEMA DE CONTROLE DE TRÁFEGO AÉREO, FREIOS ABS (CARROS), ETC... SOFTWARE COMERCIAL: SISTEMAS DE OPERAÇÕES COMERCIAIS E TOMADAS DE DECISÕES ADMINISTRATIVAS. EX.: FOLHA DE PAGAMENTOS, CONTAS A PAGAR E A RECEBER, CONTROLE DE ESTOQUES, ETC...
Introdução à Engenharia de Software Página 3 de 13 Q, SOFTWARE CIENTÍFICO E DE ENGENHARIA: CARACTERIZADO POR ALGORITMOS DE PROCESSAMENTO NUMÉRICO. EX.: ASTRONOMIA, ANÁLISE DE FADIGA DA MECÂNICA DE AUTOMÓVEIS, MANUFATURA AUTOMATIZADA, ETC... SOFTWARE EMBUTIDO: USADO PARA CONTROLAR PRODUTOS E SISTEMAS PARA OS MERCADOS INDUSTRIAIS E DE CONSUMO. RESIDE EM MEMÓRIA SÓ DE LEITURA. EX.: CONTROLE DO TECLADO DE UM MICROONDAS, CONTROLE DE COMBUSTÍVEL, FUNÇÕES DIGITAIS DE AUTOMÓVEIS, ETC... SOFTWARE DE COMPUTADOR PESSOAL: ENVOLVE PROCESSAMENTO DE TEXTOS, PLANILHAS ELETRÔNICAS, COMPUTAÇÃO GRÁFICA, MULTIMEDIA, ETC. SOFTWARE BASEADO NA WEB: PÁGINAS WEB RECUPERADOS POR UM BROWSER QUE INCORPORAM INSTUÇÕES EXECUTÁVEIS (CGI, HTML, JAVA, PERL, XML, ETC...) E DADOS. EX.: HIPERTEXTOS, FORMATOS DE ÁUDIO, VÍDEO, IMAGENS, ETC... SOFTWARE DE INTELIGÊNCIA ARTIFICIAL: FAZ USO DE ALGORITMOS NÃO NUMÉRICOS PARA RESOLVER PROBLEMAS DE ALTA COMPLEXIDADE QUE NÃO SEJAM FAVORÁVEIS À COMPUTAÇÃO OU À ANÁLISE DIRETA. EX.: SISTEMAS ESPECIALISTAS, RECONHECIMENTO DE PADRÕES, REDES NEURAIS, JOGOS, ETC... DEVENVOLVER SOFTWARE. UMA AFLIÇÃO???!!! A PALAVRA AFLIÇÃO FREQUENTEMENTE ESTÁ
Introdução à Engenharia de Software Página 4 de 13 Ç Q ASSOCIADA AO DESENVOLVIMENTO DO SOFTWARE DEVIDO A UM CONJUNTO DE PROBLEMAS QUE TORNAM ESTA ATIVIDADE EM UMA ATIVIDADE ÁRDUA E SUBJETIVA. ENTRE ELES PODEMOS CITAR: AS ESTIMATIVAS DE CUSTO E PRAZO FREQUENTEMENTE SÃO IMPRECISAS; A PRODUTIVIDADE DAS PESSOAS DA ÁREA DE SOFTWARE NÃO TEM ACOMPANHADO A DEMANDA POR SEUS SERVIÇOS; A QUALIDADE DO SOFTWARE ÀS VEZES É MENOS ADEQUADA; NÃO DEDICAMOS TEMPO PARA COLETAR DADOS SOBRE O PROCESSO DE DESENVOLVIMENTO; POUCOS DADOS HISTÓRICOS PARA GUIAR ESTIMATIVAS; A COMUNICAÇÃO ENTRE ANALISTA E CLIENTE FREQUENTEMENTE É MUITO POBRE; FALTA OU DEFICIÊNCIA EM TÉCNICAS DE TESTE; A TAREFA DE MANUTENÇÃO DEVORA A MAIORIA DO ORÇAMENTO DESTINADO AO SOFTWARE.
Introdução à Engenharia de Software Página 5 de 13 MAIS QUAIS SÃO AS CAUSAS DESTES PROBLEMAS? O CARÁTER DO SOFTWARE; FALHAS HUMANAS; GERENTES SEM NENHUM BACKGROUND EM SOFTWARE; OS PROFISSIONAIS DA ÁREA DE SOFTWARE TÊM RECEBIDO POUCO TREINAMENTO FORMAL EM NOVAS TÉCNICAS PARA O DESENVOLVIMENTO DE SOFTWARE; RESISTÊNCIA À MUDANÇA. AONDE IREMOS CHEGAR? NÃO DESANIMEM!!! FELIZMENTE OS PROBLEMAS APRESENTADOS PODEM SER CORRIGIDOS. UMA SOLUÇÃO À VISTA!!! RECONHECER OS PROBLEMAS E SUAS CAUSAS É SEM
Introdução à Engenharia de Software Página 6 de 13 DÚVIDA UM PRIMEIRO PASSO EM DIREÇÃO ÀS SOLUÇÕES. NÃO EXISTE UMA ABORDAGEM PARTICULAR QUE SEJA MELHOR PARA A SOLUÇÃO DA AFLIÇÃO DO SOFTWARE. ENTRETANTO, AO COMBINARMOS: MÉTODOS ABRANGENTES PARA TODAS FASES DO DESENVOLVIMENTO; FERRAMENTAS PARA AUTOMATIZAR OS MÉTODOS; IMPLEMENTAÇÃO MAIS CONSISTENTE E ROBUSTA; TÉCNICAS PARA GARANTIA DA QUALIDADE; BOA COORDENAÇÃO E CONTROLE ADMINISTRATIVO, EIS QUE SURGE UMA DISCIPLINA PARA O DESENVOLVIMENTO DE SOFTWARE - A ENGENHARIA DE SOFTWARE. ENGENHARIA DE SOFTWARE FRITZ BAUER - 1969 O ESTABELECIMENTO E USO DE SÓLIDOS PRINCÍPIOS DE ENGENHARIA PARA QUE SE POSSA OBTER ECONOMICAMENTE UM SOFTWARE QUE SEJA CONFIÁVEL E QUE FUNCIONE EFICIENTEMENTE EM MÁQUINAS REAIS IEEE, STD 610-1990 A APLICAÇÃO DE UMA ABORDAGEM SISTEMÁTICA, DISCIPLINADA E QUANTIFICÁVEL PARA O DESENVOLVIMENTO, OPERAÇÃO E MANUTENÇÃO DO SOFTWARE. " SEI, REPORT ON UNDERGRADUATE SOFTWARE
Introdução à Engenharia de Software Página 7 de 13, ENGINEERING EDUCATION (CMU/SEI-90-TR-003)- 1990 ENGENHARIA É A APLICAÇÃO SISTEMÁTICA DE CONHECIMENTOS CIENTÍFICOS NA CRIAÇÃO E CONSTRUÇÃO DE SOLUÇÕES COM UM BOM CUSTO- BENEFÍCIO PARA RESOLUÇÃO DE PROBLEMAS PRÁTICOS DA SOCIEDADE. ENGENHARIA DE SOFTWARE É UMA FORMA DE ENGENHARIA QUE APLICA OS PRINCÍPIOS DA CIÊNCIA DA COMPUTAÇÃO E MATEMÁTICA PARA ALCANÇAR SOLUÇÕES COM UM BOM CUSTO- BENEFÍCIO PARA RESOLUÇÃO DE PROBLEMAS DO SOFTWARE. A ENGENHARIA DE SOFTWARE COMPREENDE DE UM CONJUNTO DE ETAPAS QUE ENVOLVE FERRAMENTAS, MÉTODOS, PROCESSOS E TEM COMO ALICERCE A TUDO ISTO O CONTROLE DA QUALIDADE. MÉTODOS: PROPORCIONAM OS DETALHES DE "COMO FAZER" PARA CONSTRUIR O SOFTWARE. FERRAMENTAS:FORNECEM SUPORTE AUTOMATIZADO OU SEMI-AUTOMATIZADOS AOS MÉTODOS. PROCESSOS: É A FUNDAÇÃO DA ENGENHARIA DE SOFTWARE, PROVENDO A SUSTENTAÇÃO E RELACIONAMENTOS ENTRE AS CAMADAS FOCO NA QUALIDADE: GARANTE TODA
Introdução à Engenharia de Software Página 8 de 13 Q QUALIDADE DO SOFTWARE GERADO. Modelos de Processo UMA LINGUAGEM DE MODELAGEM NÃO É SUFICIENTE PRECISAMOS TAMBÉM DE UM PROCESSO DE DESENVOLVIMENTO LINGUAGEM DE MODELAGEM + PROCESSO DE DESENVOLVIMENTO = MÉTODO (OU METODOLOGIA) DE DESENVOLVIMENTO UM PROCESSO DE DESENVOLVIMENTO, DEFINE QUEM FAZ O QUE, QUANDO E COMO, PARA ATINGIR UM CERTO ALVO VEREMOS OS DETALHES DE UM PROCESSO AO LONGO DA DISCIPLINA POR ENQUANTO, SÓ UMA INTRODUÇÃO AS GRANDES FASES DE QUALQUER PROCESSO DE DESENVOLVIMENTO PLANEJAMENTO PLANEJAMENTO DEFINIÇÃO DE REQUISITOS, CONSTRUÇÃO DE PROTÓTIPOS (OPCIONAL) ELABORAÇÃO CONSTRUÇÃO DOS MODELOS A PARTIR A DEFINIÇÃO DOS REQUISITOS CONSTRUÇÃO DO SISTEMA (INCLUI CODIFICAÇÃO E TESTES) IMPLANTAÇÃO (COLOCAR EM PRODUÇÃO, TREINAR
Introdução à Engenharia de Software Página 9 de 13 Ç ( Ç, USUÁRIOS,...) PROCURAREMOS UTILIZAR O RUP NA DISCIPLINA! MODELO CASCATA MODELO MAIS ANTIGO E AMPLAMENTE UITILIZADO; MODELADO EM FUNÇÃO DO CICLO DA ENGENHARIA CONVENCIONAL; REQUER UMA ABORDAGEM SISTEMÁTICA E SEQÜENCIAL PARA O DESENVOLVIMENTO DE SOFTWARE; CADA ATIVIDADE É UMA FASE EM SEPARADO; O PRODUTO DE UMA FASE ALIMENTA A OUTRA. PROTOTIPAÇÃO POSSIBILITA QUE O DESENVOLVEDOR CRIE UM MODELO DO SOFTWARE QUE DEVE SER CONSTRUÍDO IDEALMENTE, O MODELO (PROTÓTIPO) SERVE COMO
Introdução à Engenharia de Software Página 10 de 13, ( ) UM MECANISMO PARA IDENTIFICAR OS REQUISITOS DE SOFTWARE PROTÓTIPO EM PAPEL OU SISTEMA QUE RETRATA A INTERAÇÃO COM O USUÁRIO PROTÓTIPO QUE IMPLEMENTE ALGUMAS FUNÇÕES EXIGIDAS PROTÓTIPO SERVE COMO MECANISMO PARA IDENTIFICAR OS REQUISITOS DO SOFTWARE MODELO EM ESPIRAL DESENVOLVIDO PARA ABRANGER AS MELHORES CARACTERÍSTICAS DOS MODELOS EM CASCATA E ESPIRAL A CADA ITERAÇÃO AO REDOR DO ESPIRAL UMA VERSÃO MAIS COMPLETA DO SOFTWARE É
Introdução à Engenharia de Software Página 11 de 13 DESENVOLVIDA INTRODUÇÃO À ANÁLISE DE RISCOS REFLETE MAIS O MUNDO REAL MODELO ITERATIVO E INCREMENTAL HOJE, É CONSIDERADO ERRADO TER UM PROCESSO QUE GERE UM "BIG BANG!" NÃO SE DEVE TER O SOFTWARE INTEIRO FUNCIONANDO POR INTEIRO NO PRIMEIRO RELEASE O RISCO É GRANDE DEMAIS!
Introdução à Engenharia de Software Página 12 de 13 UM PROCESSO DE DESENVOLVIMENTO DEVE SER: ITERATIVO (TER VÁRIAS ITERAÇÕES NO TEMPO) INCREMENTAL (GERAR NOVAS VERSÕES INCREMENTADAS A CADA RELEASE) UMA ITERAÇÃO DURA ENTRE 2 SEMANAS E 2 MESES MOTIVOS: SEMPRE TEM ALGO PARA ENTREGAR PARA O CLIENTE APRESSADO (A ÚLTIMA ITERAÇÃO) OS REQUISITOS MUDAM COM TEMPO E UM PROCESSO ITERATIVO MANTÉM FREQUENTES CONTATOS COM O CLIENTE O QUE AJUDA A MANTER OS REQUISITOS SINCRONIZADOS ALTAMENTE MOTIVADOR PARA A EQUIPE DE DESENVOLVIMENTO (E O CLIENTE) VER O SOFTWARE FUNCIONANDO CEDO O QUE É FEITO A CADA ITERAÇÃO (LEMBRANDO DO FOCO DO NOSSO ESTUDO)? ANÁLISE (REFINAMENTO DE REQUISITOS, REFINAMENTO DO MODELO CONCEITUAL) PROJETO (REFINAMENTO DO PROJETO ARQUITETURAL, PROJETO DE BAIXO NÍVEL) IMPLEMENTAÇÃO (CODIFICAÇÃO E TESTES) GERÊNCIA (PROJETO, CONFIGURAÇÃO, MUDANÇA) TRANSIÇÃO PARA PRODUTO (DOCUMENTAÇÃO, INSTALAÇÃO,...)
Introdução à Engenharia de Software Página 13 de 13 Introdução à Engenharia de Software programa próxima