Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia de Requisitos Introdução Parte 1 Prof. Ricardo Guzzon Domingues Os tópicos abordados •Desenvolvimento profissional de software •Qual o significado de engenharia de software. •Software de engenharia ética •Uma breve introdução às questões éticas que afetam a engenharia de software. •Os estudos de caso •Uma introdução aos três exemplos que são utilizados em capítulos posteriores do livro. Introdução 2 Engenharia de software •As economias de todas as nações desenvolvidas são dependente de software. •Mais e mais sistemas são controlados por software •A engenharia de software se preocupa com teorias, métodos e ferramentas para desenvolvimento de software profissional. •Despesas de software representa um fração significativa do PIB em todos os países desenvolvidos. Custos de software •Os custos do software geralmente dominam os custos do sistema de computador. Os custos de software em um PC são muitas vezes maior que o custo do hardware. •Software custa mais para manter do que para se desenvolver. Para sistemas com uma longa vida, os custos de manutenção podem ser os custos de desenvolvimento. •A engenharia de software se preocupa com o desenvolvimento de software de baixo custo. Os produtos de software •Produtos genéricos: •Sistemas autônomos que são comercializados e vendidos a qualquer cliente que queira comprá-los. •Exemplos - software de PC, como programas gráficos, ferramentas de gestão de projetos, software de CAD, software para mercados específicos, tais como sistemas de nomeações para dentistas. •Os produtos personalizados: •Software que é contratado por um cliente específico para atender às suas próprias necessidades. •Exemplos - Sistemas de controle embarcado, software de controle de tráfego aéreo, sistemas de monitoramento de tráfego. Introdução 5 Especificação do produto •Produtos genéricos: •A especificação de que o programa deve fazer é de propriedade do desenvolvedor de software e as decisões sobre a mudança de software são feitos pelo desenvolvedor. •Os produtos personalizados: •A especificação de que o programa deve fazer é de propriedade do cliente para o software e tomam decisões sobre as mudanças de software que são necessários. Introdução 6 Perguntas mais frequentes sobre engenharia de software Introdução 7 Pergunta Responder O que é software? Os programas de computador e documentação associada. Produtos de software podem ser desenvolvidos para um cliente específico ou podem ser desenvolvidos para um mercado geral. Quais são os atributos de um bom software? Um bom software deve fornecer a funcionalidade eo desempenho necessário para o usuário e deve ser sustentável, confiável e utilizável. O que é engenharia de software? A engenharia de software é uma disciplina da engenharia que se preocupa com todos os aspectos da produção de software. Quais são as atividades de engenharia de software fundamentais? Especificação de software, desenvolvimento de software, validação e evolução de software software. Qual é a diferença entre engenharia de software e ciência da computação? Ciência da computação concentra-se em teorias e fundamentos, engenharia de software se preocupa com os aspectos práticos do desenvolvimento e entrega de software útil. Qual é a diferença entre engenharia de software e engenharia de sistemas? Engenharia de sistemas preocupa-se com todos os aspectos do desenvolvimento de sistemas baseados em computadores, incluindo hardware, software e engenharia de processos. A engenharia de software é parte desse processo mais geral. Perguntas mais frequentes sobre engenharia de software Pergunta Responder Quais são os principais desafios enfrentados pela engenharia de software? Lidar com a diversidade crescente, as exigências para os tempos de entrega reduzidos e desenvolvimento de software confiável. Quais são os custos da engenharia de software? Cerca de 60% dos custos são os custos de desenvolvimento de software, 40% são custos de testes. Para software sob encomenda, os custos de evolução muitas vezes excedem os custos de desenvolvimento. Quais são as melhores técnicas de engenharia de software e métodos? Enquanto todos os projectos de software tem de ser gerida profissionalmente e desenvolvido, diferentes técnicas são adequadas para os diferentes tipos de sistemas. Por exemplo, os jogos devem sempre ser desenvolvido utilizando uma série de protótipos, visto que os sistemas de controlo críticos de segurança exigem uma especificação completa e analisável a ser desenvolvido. Você não pode, portanto, dizer que um método é melhor que outro. Que diferenças tem a web feito para engenharia de software? A web tem levado à disponibilidade de serviços de software ea possibilidade de desenvolver altamente distribuída sistemas baseados em serviço. Desenvolvimento de sistemas web-based tem levado a avanços importantes nas linguagens de programação e reutilização de software. Introdução 8 Atributos essenciais de um bom software Introdução 9 Característica de produto Descrição Manutenibilidade Software deve ser escrito de tal forma para que ele possa evoluir para atender às novas necessidades dos clientes. Este é um atributo importante porque a mudança de software é uma exigência inevitável de um ambiente de negócios em constante mudança. Confiabilidade e segurança Confiabilidade de software inclui uma série de características, incluindo a confiabilidade, segurança e segurança. Software confiável não deve causar danos físicos ou econômicos em caso de falha do sistema. Usuários mal-intencionados não deve ser capaz de acessar ou danificar o sistema. Eficiência O software não deve desperdiçar os recursos do sistema, como memória e ciclos do processador. Portanto, a eficiência inclui a capacidade de resposta, tempo de processamento, utilização de memória, etc Aceitabilidade Software deve ser aceitável para o tipo de usuários para o qual foi projetado. Isso significa que ele deve ser compreensível, usável e compatível com outros sistemas que eles usam. Engenharia de software •A engenharia de software é uma disciplina da engenharia que se preocupa com todos os aspectos da produção de software desde os primeiros estágios de especificação do sistema até a manutenção do sistema depois de ter ido para o uso. •Disciplina de engenharia: •Usando teorias e métodos adequados para resolver os problemas, tendo em restrições organizacionais e financeiras da mente. •Todos os aspectos da produção de software: •Não apenas o processo técnico de desenvolvimento. Também gerenciamento de projetos e desenvolvimento de ferramentas, métodos etc., para apoiar a produção de software. Introdução 10 Importância da engenharia de software •Cada vez mais, os indivíduos ea sociedade dependem de sistemas de software avançadas. Precisamos ser capazes de produzir sistemas confiáveis e seguras economicamente e rapidamente. •Ele é geralmente mais barato, a longo prazo, a utilização de métodos e técnicas de engenharia de software para sistemas de software, em vez de apenas escrever os programas como se fosse um projeto de programação pessoal. Para a maioria dos tipos de sistema, a maioria dos custos são os custos de alteração do software, depois de ter passado em uso. Introdução 11 Atividades do processo de software •Especificação de software, onde os clientes e engenheiros definir o software que é para ser produzido e as limitações ao seu funcionamento. •Software desenvolvimento, onde o software é projetado e programado. •Software validação, onde o software é verificado para garantir que ele é o que o cliente necessita. •Software evolução, onde o softwareé modificado para refletir novas exigências do mercado e dos clientes. Introdução 12 Questões gerais que afetam a maioria dos softwares •Heterogeneidade: •Cada vez mais, Os sistemas são necessários para operar como sistemas distribuídos em redes que incluem diferentes tipos de computadores e dispositivos móveis. •Empresas e mudança social: •Negócios e a sociedade estão mudando com uma rapidez incrível como as economias emergentes e desenvolver novas tecnologias se tornam disponíveis. Eles precisam ser capazes de mudar o seu software existente e desenvolver rapidamente novos softwares. •Segurança e confiança: •Como software está entrelaçada com todos os aspectos de nossas vidas, é essencial que podemos confiar que software. Introdução 13 Software de engenharia diversidade •Existem muitos tipos diferentes de sistemas de software, e não há um conjunto universal de técnicas de software, que é aplicável a todas estas. •Os métodos de engenharia de software e ferramentas utilizadas dependem do tipo de aplicativo que está sendo desenvolvido, os requisitos do cliente eo plano de fundo da equipe de desenvolvimento. Introdução 14 Tipos de aplicativos •Aplicações stand-alone: •Estes são sistemas aplicativos que são executados em um computador local, como um PC. Elas incluem toda a funcionalidade necessária e não precisa de ser ligado a uma rede. •Aplicativos interativos baseados em transações: •Aplicações que executar em um computador remoto e são acessados por usuários de seus próprios computadores ou terminais. Estes incluem aplicações web, tais como e-Commerce aplicações. •Sistemas de controle embutidos: •Estes são os sistemas de controle de software que controlam e gerenciar dispositivos de hardware. Numericamente, há provavelmente mais sistemas embarcados que qualquer outro tipo de sistema. Introdução 15 Tipos de aplicativos •Sistemas de processamento em lote: •Estes são os sistemas de negócios que são projetados para processar dados em grandes lotes. Eles processar um grande número de entradas individuais para criar saídas correspondentes. •Sistemas de entretenimento: •Estes são sistemas que são principalmente para uso pessoal e que se destinam a entreter o usuário. •Sistemas para modelagem e simulação: •Estes são sistemas que são desenvolvidos por cientistas e engenheiros para modelar processos ou situações físicas, que incluem muitos, objetos, interagindo separados. Introdução 16 Tipos de aplicativos •Sistemas de coleta de dados: •Estes são sistemas que recolhem os dados de seu ambiente, utilizando um conjunto de sensores e enviar os dados para outros sistemas de processamento. •Sistemas de sistemas: •Estes são os sistemas que são compostas de um número de outros sistemas de software. Introdução 17 Fundamentos de engenharia de software •Alguns princípios fundamentais aplicam-se a todos os tipos de sistemas de software, independentemente das técnicas de desenvolvimento utilizadas: •Os sistemas devem ser desenvolvido usando um processo de desenvolvimento de gestão e compreendido. De claro, diferentes processos são usados para diferentes tipos de software. •Confiança e desempenho são importantes para todos os tipos de sistema. •Entendimento e gestão da especificação do software e os requisitos (o que o software deve fazer) são importantes. •Sempre que necessário, Você deve reutilizar software que já foi desenvolvido, em vez de escrever um novo software. Introdução 18 Engenharia de software e web •A Web é hoje uma plataforma para a execução da aplicação e as organizações estão cada vez mais o desenvolvimento de sistemas baseados em web, em vez de sistemas locais. •Serviços da Web permitem a funcionalidade do aplicativo para ser acessado pela web. •A computação em nuvem é uma abordagem para a prestação de serviços de informática, onde os aplicativos são executados remotamente na 'nuvem'. •Os usuários não comprar comprar software pagar de acordo com o uso. Introdução 19 Engenharia de software Web •Software reutilizar é o abordagem dominante para a construção de sistemas baseados em web. •Quando construção destes sistemas, você pense em como você pode montá-los a partir de componentes de software e sistemas pré-existentes. •Sistemas baseados na Web deve ser desenvolvido e entregue de forma incremental. •Ele É agora geralmente reconhecido que é impraticável para especificar todos os requisitos para tais sistemas de antecedência. •Usuário interfaces são limitados pelas capacidades de navegadores web. •Tecnologias como como AJAX permitir rico interfaces de ser criado dentro de um web navegador, mas são ainda difícil de usar. Formulários da Web com scripting local são mais comumente usados. Introdução 20 Engenharia de software baseado na Web •Sistemas baseados na Web são sistemas distribuídos complexos, mas os princípios fundamentais da engenharia de software discutido anteriormente são tão aplicáveis a eles como eles estão para quaisquer outros tipos de sistema. •As ideias fundamentais da engenharia de software, aplicam-se ao software baseado na Web, da mesma forma que se aplica a outros tipos de sistemas de software. Introdução 21 Pontos-chave •A engenharia de software é uma disciplina da engenharia que se preocupa com todos os aspectos da produção de software. •Essencial atributos do produto de software são de manutenção, confiabilidade e segurança, eficiência e aceitabilidade. •O atividades de alto nível de especificação, desenvolvimento, validação e evolução fazem parte de todos os processos de software. •As noções fundamentais de engenharia de software são universalmente aplicáveis a todos os tipos de desenvolvimento do sistema. Introdução 22 Pontos-chave •Existem muitos tipos diferentes de cada sistema e requer ferramentas de engenharia de software e técnicas apropriadas para o seu desenvolvimento. •As ideias fundamentais da engenharia de software são aplicáveis a todos os tipos de sistema de software. Introdução 23 Introdução Parte 2 Prof. Ricardo Guzzon Domingues Software de engenharia ética •Engenharia de software envolve responsabilidades mais amplas do que simplesmente a aplicação de habilidades técnicas. •Os engenheiros de software devem se comportar de uma maneira honesta e eticamente responsável se eles devem ser respeitados como profissionais. •O comportamento ético é mais do que simplesmente defender a lei, mas envolve seguir um conjunto de princípios que são moralmente correto. Questões de responsabilidade profissional •Confidencialidade: •Os engenheiros devem normalmente respeitar a confidencialidade dos seus empregadores ou clientes, independentemente de haver ou não um acordo formal de confidencialidade foi assinado. •Competência: •Engenheiros não devem deturpar o seu nível de competência. Eles não devem conscientemente aceitar o trabalho que é aparte sua competência. Questões de responsabilidade profissional •Direitos de propriedade intelectual: •Engenheiros devem estar cientes das leis locais que regulam o uso da propriedade intelectual, como patentes, direitos autorais, etc Eles devem ter cuidado para assegurar que a propriedade intelectual dos empregadores e clientes está protegida. •Mau uso do computador: •Os engenheiros de software não devem usar suas habilidades técnicas ao mau uso de computadores de outras pessoas. Gamas de mau uso do computador a partir de relativamente trivial (que joga o jogo na máquina de um empregador, por exemplo) a gravíssima (disseminação de vírus). ACM / IEEE Código de Ética •As sociedades profissionais em os EUA têm cooperado para produzirum código de conduta ética. •Os membros dessas organizações assinam o código de prática quando eles se juntam. •O Código contém oito princípios relacionados com o comportamento e decisões feitas por engenheiros de software, incluindo médicos, educadores, gerentes, supervisores e decisores políticos, bem como estagiários e estudantes da profissão. Justificativa para o código de ética •Os computadores têm um papel central e crescente no comércio, indústria, governo, medicina, educação, entretenimento e sociedade em geral. Os engenheiros de software são aqueles que contribuem por participação direta ou por ensino, para a análise, especificação, projeto, desenvolvimento, certificação, manutenção e testes de sistemas de software. •Porque de seus papéis no desenvolvimento de sistemas de software, engenheiros de software têm significativa oportunidades para fazer mal o bem ou causa, para permitir que outros a fazer o bem ou causar danos, ou de influenciar os outros para fazer mal o bem ou causa. Para garantir, tanto quanto possível, que os seus esforços serão usadas para o bem, os engenheiros de software devem se comprometer a fazer a engenharia de software uma profissão benéfica e respeitada. Introdução 29 O Código de Ética da ACM / IEEE Introdução 30 Engenharia de Software Código de Ética e Prática Profissional ACM / IEEE-CS Joint Task Force on Software Engineering Ética e Profissional Práticas PREÂMBULO A versão curta do código resume as aspirações em um alto nível de abstração, as cláusulas que estão incluídas na versão completa dão exemplos e detalhes de como essas aspirações mudar a nossa forma de atuar como profissionais de engenharia de software. Sem as aspirações, os detalhes podem se tornar legalistas e tedioso, sem os detalhes, as aspirações podem se tornar sonoridade, mas vazio, juntos, as aspirações e os detalhes formam um coeso código. Software Os engenheiros devem se comprometer a fazer a análise, especificação, projeto, desenvolvimento, teste e manutenção de software uma profissão benéfica e respeitada. De acordo com o seu compromisso com a saúde, a segurança eo bem-estar do público, os engenheiros de software devem aderir aos oito seguintes princípios: Princípios éticos Introdução 31 1. PÚBLICO - Engenheiros de software devem agir de forma consistente com o interesse público. 2. CLIENTE E EMPREGADOR - Os engenheiros de software devem agir de uma maneira que é no melhor interesse de seu cliente e empregador consistente com o interesse público. 3. PRODUTO - Os engenheiros de software devem assegurar que seus produtos e modificações relacionadas atendam aos mais altos padrões profissionais possíveis. 4. ACÓRDÃO - Engenheiros de software devem manter integridade e independência em seu julgamento profissional. 5. GESTÃO - gerentes de engenharia de software e líderes devem subscrever e promover uma abordagem ética para a gestão do desenvolvimento de software e manutenção. 6. PROFISSÃO - Os engenheiros de software devem promover a integridade e reputação da profissão consistente com o interesse público. 7. COLEGAS - engenheiros de software devem ser justos e apoio de seus colegas. 8. Auto - Engenheiros de software devem participar na aprendizagem ao longo da vida em relação à prática de sua profissão e devem promover uma abordagem ética para o exercício da profissão. Dilemas éticos •Discordância, em princípio, com as políticas da gerência sênior. •Seu empregador age de forma antiética e libera um sistema de segurança crítica sem terminar os testes do sistema. •Participação no desenvolvimento de sistemas de armas militares ou sistemas nucleares. Os estudos de caso •Uma bomba de insulina pessoal: •Um sistema embarcado em uma bomba de insulina usado por diabéticos para manter o controle de glicose no sangue. •Um caso de sistema de gerenciamento de pacientes de saúde mental: •Um sistema utilizado para manter registros de pessoas que recebem cuidados para problemas de saúde mental. •A estação meteorológica deserto: •Um sistema de coleta de dados que coleta dados sobre as condições meteorológicas em áreas remotas. Introdução 33 Sistema de controle de bomba de insulina •Reúne dados de um sensor de açúcar no sangue e calcula a quantidade de insulina necessária para ser injectado. •Calculado com base na taxa de variação dos níveis de açúcar no sangue. •Envia sinais para um micro-bomba para administrar a dose correcta de insulina. •Sistema de segurança crítica como baixo açúcar no sangue pode levar ao mau funcionamento do cérebro, coma e morte, os níveis de açúcar alto no sangue ter consequências a longo prazo, tais como olhos e danos nos rins. Introdução 34 Arquitetura de hardware bomba de insulina Introdução 35 Modelo de atividade da bomba de insulina Introdução 36 Requisitos de alto nível essenciais •O sistema deve estar disponível para fornecer insulina, quando necessário. •O sistema deve executar de forma confiável e entregar a quantidade correta de insulina para neutralizar o atual nível de açúcar no sangue. •O sistema deve ser concebido e implementado para assegurar que o sistema sempre satisfaz estes requisitos. Introdução 37 Um sistema de informações do paciente para os cuidados de saúde mental •Um sistema de informações do paciente para apoiar os cuidados de saúde mental é um sistema de informação médica que mantém informações sobre pacientes que sofrem de problemas de saúde mental e os tratamentos que eles têm recebido. •A maioria pacientes de saúde mental não requerem tratamento hospitalar dedicada, mas precisa atender clínicas especializadas regularmente, onde podem encontrar um médico que tenha conhecimento detalhado dos seus problemas. •A tornar mais fácil para os pacientes a participar, essas clínicas não sejam executados apenas em hospitais. Eles também podem ser realizadas em consultórios médicos locais ou centros comunitários. Introdução 38 MHC-PMS •O MHC-PMS (Health Management System Care-Paciente Mental) é um sistema de informação que se destina para uso em clínicas. •Ele faz uso de um banco de dados centralizado de informações do paciente, mas também foi projetado para ser executado em um PC, de modo que possa ser acessado e usado a partir de sites que não têm conectividade de rede segura. •Quando os sistemas locais têm acesso seguro à rede, eles usam as informações do paciente no banco de dados, mas eles podem baixar e usar cópias locais de registros de pacientes quando eles estão desconectados. Introdução 39 Objetivos MHC-PMS •Para gerar informação de gestão que permite que os gerentes de serviços de saúde para avaliar o desempenho em relação às metas locais e governo. •A fornecer pessoal médico com informações oportunas para apoiar o tratamento dos pacientes. Introdução 40 A organização do MHC-PMS Introdução 41 Principais características MHC-PMS • Gestão de atendimento individual: •Os médicos pode criar registros de pacientes, edite as informações no sistema, ver o histórico do paciente, etc O sistema suporta resumos de dados de modo que os médicos lata aprender rapidamente sobre os principais problemas e tratamentos que tenham sido receitados. • Paciente monitoramento: •O sistema monitores os prontuários de pacientes que estão envolvidos no tratamento e questões alertas se forem detectados possíveis problemas. • Administrativo relatando: •O sistema gera relatórios gerenciais mensais mostrando o número de pacientes tratados em cada clínica, o número de pacientes que entraram e deixaram o sistema de assistência, número de pacientes seccionados, os medicamentos prescritos e os seus custos, etc.. Introdução 42 MHC-PMS preocupações•Privacidade: •É essencial que as informações do paciente sejam confidenciais e não sejam divulgadas a ninguém além da equipe médica autorizada e que o paciente desejar. •Segurança: •Algumas doenças mentais levam o paciente a se tornar suicida ou um perigo para outras pessoas. Sempre que possível, o sistema deve avisar a equipe médica sobre os pacientes potencialmente suicidas ou perigosos. •O sistema deve estar disponível quando necessário caso contrário a segurança pode ser comprometida e que pode ser impossível prescrever a medicação correta ao paciente. Introdução 43 Estação meteorológica Selvagem •O governo de um país com grandes áreas de deserto decide implantar várias centenas de estações meteorológicas em áreas remotas. •Estações meteorológicas coletar dados a partir de um conjunto de instrumentos que a temperatura ea pressão medida, sol, chuva, velocidade do vento e direção do vento. •A estação meteorológica inclui uma série de instrumentos que medem parâmetros meteorológicos, como a velocidade e direção do vento, a terra e as temperaturas do ar, a pressão atmosférica ea precipitação ao longo de um período de 24 horas. Cada um destes instrumentos é controlado por um sistema de software que faz leituras de parâmetros periodicamente e gerencia os dados coletados a partir dos instrumentos. Introdução 44 O ambiente da estação meteorológica Introdução 45 Sistema de informações sobre o tempo •O sistema de estação meteorológica: •Este é responsável pela coleta de dados meteorológicos, processar alguns dados iniciais e transmiti-lo para o sistema de gerenciamento de dados. •O gestão de dados e sistema de arquivamento: •Este sistema coleta os dados de todas as estações meteorológicas da região selvagem, realiza o processamento e análise de dados e arquivos da dados. •O sistema de manutenção da estação: •Este sistema pode se comunicar por satélite com todas as estações meteorológicas deserto para monitorar a saúde destes sistemas e fornecer relatórios de problemas. Introdução 46 Funcionalidade de software adicional •Monitorar o instrumentos, energia e comunicação de hardware e relatar falhas no sistema de gestão. •Gerenciar o alimentação do sistema, garantindo que as baterias são carregadas sempre que as condições ambientais permitirem, mas também que os geradores são desligados em condições meteorológicas potencialmente prejudiciais, tais como vento forte. •Suporte Dinâmico reconfiguração onde partes do software serão substituídas por novas versões e em que os instrumentos de backup são comutados para o sistema em caso de falha do sistema. Introdução 47 Pontos-chave •Software engenheiros têm responsabilidades para com a profissão de engenharia ea sociedade. Eles não devem ser simplesmente preocupado com questões técnicas. •Sociedades profissionais publicam códigos de conduta que estabelecem os padrões de comportamento esperados de seus membros. •Três estudos de caso são usados no livro: •Um sistema de controlo da bomba de insulina incorporada; •Um sistema de gerenciamento de pacientes cuidados de saúde mental; •A estação meteorológica deserto;
Compartilhar