Prévia do material em texto
Engenharia de Software Osvaldo Viana Jr, Msc osvaldoviana@yahoo.com.br Aula 1 Software e Engenharia de Software 1- Natureza do Software Introdução Software é tanto um produto como um veículo que distribui um produto; Como produto: fornece o potencial computacional representado pelo hardware; Como veículo: atua como base para o controle do computador (Sist. Operacionais), a comunicação de informações (redes) e a criação e o controle de outros programas. 1- Natureza do Software Definição Software consiste em: - Instruções (programas de computador) que quando executadas, fornecem características, funções e desempenho desejados; - Estruturas de dados que possibilitam aos programas manipular informações adequadamente; - Informação descritiva, tanto na forma impressa como virtual, descrevendo a operação e o uso dos programas. 1- Natureza do Software Definição Software é desenvolvido ou passa por um processo de engenharia, ele não é fabricado no sentido clássico. Aumento da taxa de defeitos devido a efeitos colaterais. 1- Natureza do Software Definição Software não se desgasta mas se deteriora. Ele não é suscetível aos males ambientais que fazem com que o hardware se desgaste. Ele passa por alterações, a medida que estas ocorram, é provável que sejam introduzidos erros. 1- Natureza do Software Campos de aplicação de software Software de sistema - Conjunto de programas feito para atender a outros programas. - Exemplo: compiladores, editores, componentes do sistema operacional, drivers, software de rede etc. 1- Natureza do Software Campos de aplicação de software Software de aplicação - programas sob medida que solucionam uma necessidade específica de negócio. É usado para controlar funções de negócio em tempo real. - Exemplo: processamento de transações em pontos de venda, controle de processos de fabricação em tempo real. 1- Natureza do Software Campos de aplicação de software Software científico/de engenharia - Tem sido caracterizado por algoritmos “number crunching” (para processamento numérico pesado). - As aplicações vão da astronomia à vulcanologia, da análise de tensões na indústria automotiva à dinâmica orbital de ônibus espaciais etc. 1- Natureza do Software Campos de aplicação de software Software embutido - residente num produto ou sistema e utilizado para implementar e controlar características e funções para o usuário final e para o próprio sistema. - Exemplo: controle de painel de forno micro- ondas, funções digitais de automóveis etc. 1- Natureza do Software Campos de aplicação de software Software para linhas de produtos - projetado para prover capacidade específica de utilização por muitos clientes diferentes. - Exemplo: produtos para controle de estoque, processamento de texto, planilhas eletrônicas, computação gráfica etc. 1- Natureza do Software Campos de aplicação de software Aplicações para a Web - Chamadas de “WebApps” essa categoria de software centralizada em redes abarca uma vasta gama de aplicações. - Exemplo: conjunto de arquivos de hipertexto conectados ou sofisticados ambientes computacionais. 1- Natureza do Software Campos de aplicação de software Software de inteligência artificial - Faz uso de algoritmos não numéricos para solucionar problemas complexos que não são passíveis de computação ou de análise direta. - Exemplo: robótica, sistemas especialistas, redes neurais artificiais, prova de teoremas e jogos. 1- Natureza do Software Software Legado São softwares antigos que foram desenvolvidos décadas atrás e que tem sido continuamente modificados para se adequar a mudanças dos requisitos de negócios e a plataformas computacionais. 2- A Natureza Única das WebApps Atributos das WebApps Uso intensivo de redes: reside em uma rede e deve atender às necessidades de uma comunidade diversificada de clientes. Simultaneidade: um grande número de usuários pode acessar a webapp ao mesmo tempo. Carga não previsível: o número de usuários pode variar em ordem de grandeza de um dia para outro. 2- A Natureza Única das WebApps Atributos das WebApps Desempenho: não deve deixar o usuário esperar muito para acesso, processamento etc. Disponibilidade: usuários normalmente exigem acesso 24h por dia, 7 dias por semana. Orientada a dados: a função principal de muitas WebApps é usar hipermídias para apresentar texto, gráficos, áudio e vídeo para o usuário final. 2- A Natureza Única das WebApps Atributos das WebApps Sensibilidade no conteúdo: a qualidade e a natureza estética do conteúdo são fatores importantes que determinam a qualidade de uma WebApp. Evolução contínua: algumas são atualizadas de minuto a minuto ou seu conteúdo é computado independentemente para cada solicitação. 2- A Natureza Única das WebApps Atributos das WebApps Imediatismo: apresentam tempo de colocação no mercado que pode consistir de poucos dias ou semanas. Segurança: devido ao grande número de usuários, fortes medidas de segurança devem ser implementadas ao longo da infraestrutura. Estética: consiste na aparência e na impressão que desperta. 3- Engenharia de Software Introdução Ao desenvolver um software o mesmo deve estar preparado para enfrentar os desafios do século vinte e um. Projetar é uma atividade fundamental na engenharia de software. Qualidade e facilidade de manutenção são resultantes de um projeto bem feito. 3- Engenharia de Software Fatores a observar no desenvolvendo do Software Software tornou-se profundamente incorporado em praticamente todos os aspectos de nossas vidas; Os requisitos de tecnologia de informação demandados por indivíduos, empresas e órgãos governamentais estão se tornando cada vez mais complexos a cada ano. 3- Engenharia de Software Fatores a observar no desenvolvendo do Software Indivíduos, negócios e governos dependem, de forma crescente, de software para decisões estratégicas e táticas. À medida que o valor de uma aplicação específica aumente, a probabilidade é de que sua base de usuários e longevidade também cresçam. 3- Engenharia de Software Camadas da Engenharia de Software Foco na qualidade: A pedra fundamental que sustenta a engenharia de software é o foco na qualidade. 3- Engenharia de Software Camadas da Engenharia de Software Processo: A base para a engenharia de software é a camada de processos, pois é a liga que mantém as camadas de tecnologia coesas e possibilita o desenvolvimento de forma racional e dentro do prazo. Métodos: fornecem informações técnicas para desenvolver software. 3- Engenharia de Software Camadas da Engenharia de Software Ferramentas: fornecem suporte automatizado ou semiautomatizado para o processo e para os métodos. - As ferramentas podem ser integradas de modo que as informações criadas por uma podem ser usadas por outra. 4- O Processo de Software Definição O Processo de software é um conjunto de atividades, ações e tarefas realizadas na criação de algum produto de trabalho. Um processo define quem esta fazendo o quê, quando e como para atingir determinado objetivo. 4- O Processode Software Atividades Genéricas de Metodologia de Processo Comunicação: antes de iniciar qualquer trabalho técnico é de vital importância comunicar-se e colaborar com o cliente. Planejamento: o projeto de software é uma jornada complicada, e a atividade de planejamento cria um “mapa” que ajuda a guiar a equipe na sua jornada. 4- O Processo de Software Atividades Genéricas de Metodologia de Processo Modelagem: um engenheiro de software cria modelos para melhor entender as necessidades de software e o projeto que irá atender a essas necessidades. Construção: combina geração de código (manual ou automatizada) e testes necessários para revelar erros na codificação. 4- O Processo de Software Atividades Genéricas de Metodologia de Processo Emprego: O software é entregue ao cliente, que avalia o produto entregue e fornece feedback, baseado na avaliação. 5- A Prática da Engenharia de Software A Essência da Prática Compreender o problema(Comunicação e análise) Planejar uma solução (Modelagem e projeto de software) Executar o plano (geração de código) Examinar o resultado para ter precisão (testes e garantia da qualidade) 5- A Prática da Engenharia de Software Princípios gerais Primeiro princípio: a razão de existir - Um sistema de software existe por uma única razão: gerar valor a seus usuários; Segundo princípio: Faça de forma simples - Todo projeto deve ser o mais simples possível, mas não tão simples assim; - Simplificar exige muita análise e trabalho durante as iterações; 5- A Prática da Engenharia de Software Princípios gerais Terceiro princípio: mantenha a visão - Uma visão clara é essencial para o sucesso. Sem ela, um projeto se torna ambíguo; Quarto princípio: o que um produz outros consomem - Sempre especifique , projete e implemente ciente de que alguém mais terá de entender o que você está fazendo; 5- A Prática da Engenharia de Software Princípios gerais Quinto princípio: esteja aberto para o futuro - Jamais faça projetos limitados, sempre pergunte “e se” e prepare-se para todas as possíveis respostas; Sexto princípio: planeje com antecedência, visando a reutilização - Reuso reduz o custo e aumenta o valor tanto dos componentes reutilizáveis quanto dos sistemas; 5- A Prática da Engenharia de Software Princípios gerais Sétimo princípio: pense! - Pensar bem e de forma clara antes de agir quase sempre produz melhores resultados; - Ganha-se também conhecimento de como fazer correto novamente; 6- Mitos Relativos ao Software Mitos de Gerenciamento Mito - Já temos um livro que está cheio de padrões e procedimentos para desenvolver; Realidade - Ele é usado ? Os praticantes estão cientes de que ele existe ? Reflete a pratica da Engenharia de Software ? É adaptável ? 6- Mitos Relativos ao Software Mitos de Gerenciamento Mito - Se o cronograma atrasar, podemos acrescentar mais programadores e ficarmos em dia; Realidade - Acrescentar pessoas num projeto de software atrasado só o tornará mais atrasado ainda; 6- Mitos Relativos ao Software Mitos de Gerenciamento Mito - Se eu terceirizar o projeto, posso relaxar e deixar essa empresa realiza-lo; Realidade - Se uma organização não souber gerenciar, ela enfrentará dificuldades ao terceiriza-los; 6- Mitos Relativos ao Software Mitos de Clientes Mito - Uma definição geral dos objetivos é suficiente para começar a escrever os programas; Realidade - Uma definição de objetivos ambígua é receita para um desastre; 6- Mitos Relativos ao Software Mitos de Clientes Mito - Os requisitos de software mudam, mas as mudanças podem ser facilmente assimiladas; Realidade - Uma estrutura de projeto foi estabelecida e mudar pode causar uma revolução que exija recursos adicionais e modificações fundamentais no projeto; 6- Mitos Relativos ao Software Mitos de dos profissionais da área Mito - Uma vez feito um programa, nosso trabalho está terminado; Realidade - Levantamento indicam que entre 60% e 80% todo o esforço será despendido após a entrega do software ao cliente pela primeira vez; 6- Mitos Relativos ao Software Mitos de dos profissionais da área Mito - Até que o programa entre em funcionamento, não há maneira de avaliar sua qualidade; Realidade - Um dos mecanismos de garantia da qualidade de software mais eficaz pode ser aplicado desde a concepção de um projeto; 6- Mitos Relativos ao Software Mitos de dos profissionais da área Mito - O único produto passível de entrega é o programa em funcionamento; Realidade - Uma variedade de produtos derivados constitui uma base para uma engenharia bem-sucedida e, mais importante, uma orientação para suporte de sofware; 6- Mitos Relativos ao Software Mitos de dos profissionais da área Mito - A engenharia de software nos fará criar documentação volumosa e desnecessária; Realidade - A engenharia de software não trata de criação de documentos, trata da criação de um produto de qualidade; Pontos a ponderar ? Por que concluir um software leva tanto tempo ? Por que os custos de desenvolvimento são altos ? Por que não conseguimos encontrar todos os erros antes de entregarmos o software aos clientes ? Por que continuamos a ter dificuldade em medir o progresso enquanto o software está sendo desenvolvido e mantido ? Acrescente um novo mito a essa lista e declare a realidade que acompanha tal mito. Referencia Bibliografica PRESSMAN, Roger. Engenharia de Software: Uma Abordagem Profissional. Págs. 29-49. 7 ed. – Porto Alegre: AMGH, 2011.