Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade I ENGENHARIA DE SOFTWARE I Prof. André Luiz O papel evolutivo do software Passado: Programador solitário Atualmente, equipes de especialistas em software, cada um se concentrando em uma parte da tecnologia necessária para produzir um sistema. Globalização, Sociedade da Informação, Internet ... Fonte: Ilustrações do clip-art. Porém, muitas questões ainda não têm respostas Por que se leva tanto tempo para construir um software? Por que os custos de desenvolvimento são tão altos? Por que não podemos achar todos os erros antes de entregar o software para os clientes? Por que gastamos tanto tempo e esforço mantendo programas existentes? São estas perguntas que a engenharia de software tenta responder para minimizar impactos. Evolução do software 1950 1960 1970 1980 1990 2000 1 2 3 4 5 1. sistemas batch distribuição limitada software dedicado 2. sistemas multiusuário tempo real bancos de dados produto de software 3. sistemas distribuídos hardware de baixo custo inteligência local 4. tecnologia orientada a objetos Internet “onda” do desktop sistemas especialistas 5. sistemas portáteis TVs etc. Fonte: do autor. O que é software? Algumas definições básicas de software: São instruções (programas de computadores) que, quando executadas, fornecem as características, funções e desempenho desejados. Estruturas de dados que permitem aos programas manipular adequadamente a informação. Documentos que descrevem a operação e o uso dos programas. O que é software? Software não é somente o programa, mas também os conjuntos de dados, arquivos de configuração, diagramas e documentação necessários para que o software funcione corretamente. Características de um software Software é desenvolvido e não fabricado. Software não se desgasta, mas evolui. Apesar da tendência de utilização de pacotes, uma grande parte dos softwares continua a ser construída sob encomenda. Curva de falhas para o software Fonte: do autor. Cenário atual do desenvolvimento de software Segundo o Chaos Report, relatório do Standish Group: Pesquisa sobre desenvolvimento de software, iniciada em 1994: Fonte: www.standishgroup.com Fatores que levaram à melhoria dos projetos Maior utilização de práticas ágeis, que hoje representam 10% do total de projetos. Redução do número de implantações de pacotes de ERP e CRM. Redução da utilização do processo tradicional de desenvolvimento chamado de cascata, que já representou 50% do total. Problemas ainda persistem Estimativas imprecisas: Dificuldade de avaliar prazos e custos. Falta de produtividade: Produtividade das pessoas não acompanha a demanda. Qualidade inadequada: Dificuldade de manter software existente. Fatores de sucesso para o desenvolvimento de software Apoio executivo. Envolvimento do usuário. Equipe capacitada. Gerente de projeto experiente. Uso de técnicas ágeis. Objetivos claros de negócio. Maturidade. Ferramentas e infraestrutura. Interatividade Mesmo com o advento da engenharia de software, o desenvolvimento de sistemas continua apresentando diversos problemas durante sua execução. Assinale a alternativa que apresenta um desses problemas: a) Apoio executivo. b) Falhas nas estimativas de prazo e custo. c) Foco na qualidade. d) Equipes experientes. e) Falta de uso de métodos ágeis. A natureza mutável do software Diferenças básicas entre um software e um outro produto manufaturado: Complexidade. Não é visto e nem sentido (intangibilidade). Não existe produção em série – é sob medida. Não tem prazo de validade. Precisa acompanhar a evolução técnica e de negócio. Ilusão de que é fácil de ser alterado. Mitos de software Sob o ponto de vista do gerente: Aumentar o tamanho da equipe resolve o problema de um projeto atrasado. Fazer horas-extras e trabalhar fim de semana recupera atrasos de projeto. Terceirizar resolve os problemas da gerência. Mitos de software Sob o ponto de vista da equipe de desenvolvimento: Não há como avaliar a qualidade do software até que ele seja efetivamente colocado em produção. O único produto que realmente interessa é o código executável. Uma vez que o programa está pronto, acabou o trabalho do desenvolvedor. Mitos de software Sob o ponto de vista do usuário/cliente: Basta uma visão geral dos objetivos para se iniciar o desenvolvimento do software. É fácil acomodar as mudanças de requisitos durante o desenvolvimento do software. Só é necessário validar o software no final. Algumas definições de Engenharia de Software Segundo o IEEE, engenharia de software é a aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, operação e manutenção do software. Segundo Sommerville, “é uma disciplina de engenharia relacionada com todos os aspectos da produção de software, desde os estágios iniciais de especificação de sistemas até a manutenção desse sistema.” Algumas definições de Engenharia de Software Disciplina de engenharia: aplicação de técnicas, métodos e ferramentas para melhorar os resultados de uma atividade. Todos os aspectos da produção de software: a engenharia de software não esta relacionada apenas com o processo técnico de desenvolvimento de software, mas também com atividades de gestão do projeto, qualidade e métricas que suportem esse processo. Qual é a diferença entre Engenharia de Software e a Engenharia de Sistemas A engenharia de sistemas se ocupa de todos os aspectos relacionados ao desenvolvimento de sistemas com base em computadores, incluindo hardware, software e processos. A engenharia de software é parte desse processo. Engenharia de Software em camadas Fonte: Livro-texto Engenharia de Software em camadas Ferramentas: É a camada que proporciona apoio automatizado aos processos e métodos, como, por exemplo, as ferramentas CASE (Computer Aided Software Engineering). Métodos: É a camada que fornece a técnica de como fazer para construir software, ou seja, abordagens que incluem comunicação, análise de requisitos, modelagem, construção, testes e suporte. Engenharia de Software em camadas Processo: É a camada que constitui o elo de ligação que mantém juntos os métodos e as ferramentas. Define a sequência em que os métodos devem ser aplicados, controlando o projeto, a qualidade, definindo os produtos de trabalho e coordenando as mudanças de requisitos. Qualidade: É a camada que suporta a engenharia de software, tendo como foco o aperfeiçoamento contínuo dos processos. Conceito de processo de software É uma forma de se obter um produto de software. Envolve: Especificação. Desenvolvimento. Validação. Evolução. O produto de software é o resultado final produzido por meio do processo. Interatividade A engenharia de software está dividida em 4 camadas. Qual é a camada responsável por definir as técnicas e como elas devem ser utilizadas durante o desenvolvimento do sistema? a) Qualidade. b) Processo. c) Método. d) Ferramentas. e) Nenhuma das alternativas. Tipos de aplicações de software Para atender às necessidades das empresas, diversos tipos de aplicação surgiram, ao longo do tempo, para responder as constantes demandascomerciais, industriais e pessoais da sociedade atual. Esses tipos de aplicação são apresentados a seguir. Classificação de aplicações de software Sistemas de Processamento de Transações (SPT). Sistemas de Informações Gerenciais (SIG). Sistemas de Apoio à Decisão (SAD). Sistemas de Informação Executiva (SIE). Sistemas Especialistas (SE). Sistemas de Automação de Escritório (SAE). Sistemas de Processamento de Transações (SPT) São os sistemas tradicionais que coletam, guardam, modificam e recuperam as transações, gerenciando as informações das organizações. Uma transação é um evento que gera ou modifica dados. As transações podem ser de negócio (financeiras, imobiliárias) ou técnicas (banco de dados, transações operacionais). Exemplos: Site bancário, compras pela internet, sistema de biblioteca, sistema contábil etc. Características de Sistemas de Processamento de Transações (SPT) Tempo de resposta rápida: atender os usuários. Confiabilidade: dependência da organização. Inflexibilidade: processada da mesma maneira. Processamento controlado: suporte à organização. Armazenamento e recuperação de informação. Registro para auditoria: geração de log. Exemplo de estrutura de um SPT Fonte: do autor. Sistemas de Informações Gerenciais (SIG) São sistemas que fornecem informações integradas para o gerenciamento das organizações. Normalmente, são fornecidos como pacotes customizáveis. Apoiam o planejamento, o controle e a decisão das organizações, por meio de relatórios, processos correntes, acesso online e eventos internos. Exemplos: ERP (TOTVS, SAP) e CRM (relacionamento com o cliente). Exemplo de estrutura de um ERP Fonte: www.acii.com.br Sistemas de Apoio à Decisão (SAD) São sistemas que analisam um grande número de variáveis e dados para que seja possível o posicionamento quanto a uma questão. São interativos com os usuários, processam grande quantidade de informação para gerar análises precisas. Geram relatórios analíticos da situação. Envolve pesquisa de bancos de dados, inteligência artificial, simulações e estatísticas. Exemplos clássicos são: análise de crédito, sistemas de BI (Business Intelligence) em geral. Classificação dos Sistemas de Apoio à Decisão (SAD) Relacionamento com o cliente: Passivo, ativo e cooperativo. Modo de apoio: Base em modelos, dados ou conhecimento. Escopo da aplicação: Empresarial ou desktop. Arquitetura de um Sistema de Apoio a Decisão (SAD) Fonte: Livro-texto Interatividade Existem diversos tipos de aplicações de software, com finalidades específicas para todas as áreas de negócio de uma empresa. O tipo de aplicação que permite a integração de várias áreas, com a troca de informações em um mesmo ambiente é o: a) Sistema de Apoio à Decisão. b) Sistema de Especialistas. c) Sistema de Informações Transacionais. d) Sistema de Automação de Escritório. e) Sistema de Informações Gerenciais. Sistemas de Informação Executiva (SIE) Trata-se de um tipo de sistema de informações gerenciais, destinado a facilitar e apoiar a informação e a tomada de decisão dos altos executivos. É uma forma especializada de SAD, que apresenta os resultados em telas gráficas, fáceis de usar e de navegar, criando situações de detalhamento. Vem perdendo espaço para os sistemas de BI (business intelligence), com seus relatórios e painéis interativos. Características de Sistemas de Informação Executiva (SIE) Não exigem experiência com computador. Fáceis de usar. Fornecem informações resumidas da empresa. Possuem filtros de dados para a gestão. Os dados são obtidos das outras aplicações da organização. Essencialmente, são aplicações de consulta. Exemplo de estrutura de um SIE Fonte: www.wiki.thema.inf.br Sistemas Especialistas (SE) São programas inteligentes, que usam conhecimentos e procedimentos de inferência para resolver problemas que necessitam de especialistas para serem resolvidos. Utilizam inteligência artificial, com linguagens como LISP e PROLOG. São capazes de simular a capacidade de decisão humana. Exemplo: Fazer diagnóstico do sistema de injeção de um automóvel, análise de crédito de um cliente, entre outros. Vantagens de um Sistemas Especialista (SE) Disponível 24 horas por dia. Custo reduzido. Perigo reduzido. Múltiplos conhecimentos. Aumento do nível de confiança. Resposta rápida. Sistemas de Automação de Escritório (SAE) São aplicativos que facilitam a vida dos funcionários de uma empresa, realizando as atividades que outrora eram manuais. Aumentam a produtividade e a qualidade da informação apresentada. Principais são: editores de texto, planilhas eletrônicas, email, chats, correios de voz, videoconferência, entre outros. Problemas com planejamento, prazos e custos Para tratar desses problemas, a engenharia de software tem a disciplina de Gestão de Projetos. O conceito de gerenciamento de projetos é permitir à empresa criar um novo produto de software de acordo com o que foi solicitado (escopo), dentro do prazo e do orçamento e com a qualidade esperada. É a tríplice restrição. Fonte: do autor. Problemas com planejamento, prazos e custos Escopo: É necessário identificar com clareza e com detalhes quais são as necessidades (requisitos) dos envolvidos no projeto. Prazo: Uma vez definido o escopo, são realizadas as estimativas de tempo e recursos para atender ao prazo. Custo: Com a definição do prazo e dos recursos, chega-se à estimativa de valores para a realização do projeto. Qualidade de software Qualidade de um produto de software pode ser definido como o atendimento à necessidades do cliente. O processo de qualidade deve fazer parte do processo de desenvolvimento de software. A qualidade deve ser verificada durante todo o ciclo de construção (garantia da qualidade) e validada quando o produto está pronto (controle da qualidade). Qualidade é uma ação preventiva. Processo-base da qualidade Fonte: Livro-texto. Interatividade O gerenciamento de projetos, para atender às expectativas dos clientes, baseia-se na tríplice restrição. Assinale a alternativa que apresenta elementos que pertencem a esta tríplice restrição: a) Escopo, custos e riscos. b) Prazo, riscos e qualidade. c) Escopo, recursos e qualidade. d) Escopo, prazo e qualidade. e) Recursos, custo e qualidade. ATÉ A PRÓXIMA! Slide Number 1 O papel evolutivo do software Porém, muitas questões ainda não têm respostas Evolução do software O que é software? O que é software? Características de um software Curva de falhas para o software Cenário atual do desenvolvimento de software Fatores que levaram à melhoria dos projetos Problemas ainda persistem Fatores de sucesso para o desenvolvimento de software Interatividade Resposta A natureza mutável do software Mitos de software Mitos de software Mitos de software Algumas definições de Engenharia de Software Algumas definições de Engenharia de Software Qual é a diferença entre Engenharia de Software e a Engenharia de Sistemas Engenharia de Software em camadas Engenharia de Software em camadas Engenharia de Software em camadas Conceito de processo de software Interatividade Resposta Tipos de aplicações de software Classificação de aplicações de software Sistemas de Processamento de Transações (SPT) Características de Sistemas de Processamento�de Transações (SPT) Exemplo de estrutura de um SPT Sistemasde Informações Gerenciais (SIG) Exemplo de estrutura de um ERP Sistemas de Apoio à Decisão (SAD) Classificação dos Sistemas de Apoio à Decisão (SAD) Arquitetura de um Sistema de Apoio a Decisão (SAD) Interatividade Resposta Sistemas de Informação Executiva (SIE) Características de Sistemas de Informação Executiva (SIE) Exemplo de estrutura de um SIE Sistemas Especialistas (SE) Vantagens de um Sistemas Especialista (SE) Sistemas de Automação de Escritório (SAE) Problemas com planejamento, prazos e custos Problemas com planejamento, prazos e custos Qualidade de software Processo-base da qualidade Interatividade Resposta Slide Number 52
Compartilhar