Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal Rural do Semi-Árido – UFERSA Departamento de Ciências Exatas e Tecnologia – DCETI Campus Angicos PRINCÍPIOS DE ENGENHARIA DE SOFTWARE Professor: Ramiro de Vasconcelos dos Santos Júnior, MSc. Angicos/RN, 05 de julho de 2023. Capítulo 1 - Introdução 2 Assuntos abordados Ø Desenvolvimento de software profissional Ø O que se entende por engenharia de software. Ø Ética da engenharia de software Ø Uma breve introdução às questões éticas que afetam a engenharia de software. Ø Estudos de caso Ø Uma introdução a três exemplos que são usados em capítulos posteriores do livro: Ø (SOMMERVILLE, Ian. Engenharia de Software. 10ª ed. São Paulo: Pearson Education do Brasil, 2018.) 3 Engenharia de software Ø As economias de TODAS as nações desenvolvidas dependem de software. Ø Mais e mais sistemas são controlados por software Ø A engenharia de software está preocupada com teorias, métodos e ferramentas para o desenvolvimento profissional de software. Ø Os gastos com software representam uma fração significativa do PIB em todos os países desenvolvidos. 4 custos de software Ø Os custos de software geralmente dominam os custos do sistema de computador. Os custos do software em um PC geralmente são maiores do que o custo do hardware. Ø Software custa mais para manter do que para desenvolver. Para sistemas com vida útil longa, os custos de manutenção podem ser várias vezes os custos de desenvolvimento. Ø A engenharia de software está preocupada com o desenvolvimento de software econômico. 5 Falha no projeto de software Ø Aumentando a complexidade do sistema Ø À medida que novas técnicas de engenharia de software nos ajudam a construir sistemas maiores e mais complexos, as demandas mudam. Os sistemas precisam ser construídos e entregues mais rapidamente; sistemas maiores e ainda mais complexos são necessários; os sistemas precisam ter novos recursos que antes eram considerados impossíveis. Ø Falha ao usar métodos de engenharia de software Ø É bastante fácil escrever programas de computador sem usar métodos e técnicas de engenharia de software. Muitas empresas se dedicaram ao desenvolvimento de software à medida que seus produtos e serviços evoluíram. Eles não usam métodos de engenharia de software em seu trabalho diário. Consequentemente, seu software costuma ser mais caro e menos confiável do que deveria ser. 6 Desenvolvimento de software profissional 7 Perguntas frequentes sobre engenharia de software 8 Pergunta Responder O que é software? Programas de computador e documentação associada. Os produtos de software podem ser desenvolvidos para um cliente específico ou para um mercado geral. Quais são os atributos de um bom software? Um bom software deve entregar a funcionalidade e o desempenho necessários ao usuário e deve ser sustentável, confiável e utilizável. O que é engenharia de software? A engenharia de software é uma disciplina de engenharia que se preocupa com todos os aspectos da produção de software. Quais são as atividades fundamentais da engenharia de software? Especificação de software, desenvolvimento de software, validação de software e evolução de software. Qual é a diferença entre engenharia de software e ciência da computação? A ciência da computação se concentra na teoria e nos fundamentos; A engenharia de software preocupa-se com os aspectos práticos do desenvolvimento e entrega de software útil. Qual é a diferença entre engenharia de software e engenharia de sistemas? A engenharia de sistemas está preocupada com todos os aspectos do desenvolvimento de sistemas baseados em computador, incluindo hardware, software e engenharia de processos. A engenharia de software faz parte desse processo mais geral. Perguntas frequentes sobre engenharia de software Pergunta Responder Quais são os principais desafios enfrentados pela engenharia de software? Lidando com o aumento da diversidade, demandas por prazos de entrega reduzidos e desenvolvimento de software confiável. Quais são os custos da engenharia de software? Aproximadamente 60% dos custos de software são custos de desenvolvimento, 40% são custos de teste. Para software personalizado, os custos de evolução geralmente excedem os custos de desenvolvimento. Quais são as melhores técnicas e métodos de engenharia de software? Embora todos os projetos de software devam ser gerenciados e desenvolvidos profissionalmente, diferentes técnicas são apropriadas para diferentes tipos de sistema. Por exemplo, os jogos devem sempre ser desenvolvidos usando uma série de protótipos, enquanto os sistemas de controle críticos de segurança requerem uma especificação completa e analisável para serem desenvolvidos. Você não pode, portanto, dizer que um método é melhor que outro. Que diferenças a web trouxe para a engenharia de software? A web levou à disponibilidade de serviços de software e à possibilidade de desenvolver sistemas baseados em serviços altamente distribuídos. O desenvolvimento de sistemas baseados na Web levou a avanços importantes em linguagens de programação e reuso de software. 9 produtos de software Ø produtos genéricos Ø Sistemas autónomos que são comercializados e vendidos a qualquer cliente que os pretenda adquirir. Ø Exemplos – software para PC, como programas gráficos, ferramentas de gerenciamento de projetos; Software CAD; software para mercados específicos como sistemas de marcação de consultas para dentistas. Ø Produtos customizados Ø Software encomendado por um cliente específico para atender às suas próprias necessidades. Ø Exemplos – sistemas de controle embarcados, software de controle de tráfego aéreo, sistemas de monitoramento de tráfego. 10 Especificação do produto Ø produtos genéricos Ø A especificação do que o software deve fazer é de propriedade do desenvolvedor de software e as decisões sobre alterações de software são feitas pelo desenvolvedor. Ø Produtos customizados Ø A especificação do que o software deve fazer é de propriedade do cliente do software e ele toma as decisões sobre as alterações de software necessárias. 11 Atributos essenciais de um bom software 12 Característica do produto Descrição Manutenibilidade O software deve ser escrito de tal forma que possa evoluir para atender às necessidades em constante mudança dos clientes. Este é um atributo crítico porque a mudança de software é um requisito inevitável de um ambiente de negócios em mudança. Confiabilidade e segurança Confiabilidade de software inclui uma variedade de características, incluindo confiabilidade, segurança e proteção. 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 devem conseguir acessar ou danificar o sistema. Eficiência O software não deve desperdiçar recursos do sistema, como memória e ciclos do processador. Eficiência, portanto, inclui capacidade de resposta, tempo de processamento, utilização de memória, etc. Aceitabilidade O software deve ser aceitável para o tipo de usuário para o qual foi projetado. Isso significa que deve ser compreensível, utilizável e compatível com outros sistemas que eles usam. Engenharia de software Ø A engenharia de software é uma disciplina de engenharia que se preocupa com todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até a manutenção do sistema após sua entrada em uso. Ø Disciplina de engenharia Ø Utilizar teorias e métodos adequados para a resolução de problemas tendo em conta os condicionalismos organizacionais e financeiros. Ø Todos os aspectos da produção de software Ø Não apenas processo técnico de desenvolvimento. Também gerenciamento de projetos e desenvolvimento de ferramentas, métodos etc. para apoiar a produção de software. 13 Importância da engenharia de software Ø Cada vez mais, os indivíduos e a sociedade dependem de sistemas de software avançados. Precisamos ser capazes de produzir sistemas confiáveis e confiáveis de forma econômica e rápida. Ø Geralmente é mais barato,a longo prazo, usar 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 mudança do software depois que ele entra em uso. 14 Atividades de processo de software Ø Especificação de software, onde clientes e engenheiros definem o software a ser produzido e as restrições de operação. Ø Desenvolvimento de software, onde o software é projetado e programado. Ø Validação de software, onde o software é verificado para garantir que é o que o cliente exige. Ø Evolução do software, onde o software é modificado para refletir as mudanças nos requisitos do cliente e do mercado. 15 Problemas gerais que afetam o software Ø Heterogeneidade Ø Cada vez mais, os sistemas são obrigados a operar como sistemas distribuídos em redes que incluem diferentes tipos de computadores e dispositivos móveis. Ø Negócios e mudanças sociais Ø Os negócios e a sociedade estão mudando incrivelmente rápido à medida que as economias emergentes se desenvolvem e novas tecnologias se tornam disponíveis. Eles precisam ser capazes de mudar seu software existente e desenvolver rapidamente um novo software. 16 Problemas gerais que afetam o software Ø Segurança e confiança Ø Como o software está interligado com todos os aspectos de nossas vidas, é essencial que possamos confiar nesse software. Ø Escala Ø O software deve ser desenvolvido em uma ampla gama de escalas, desde sistemas incorporados muito pequenos em dispositivos portáteis ou vestíveis até sistemas baseados em nuvem em escala de Internet que atendem a uma comunidade global. 17 Diversidade de engenharia de software Ø Existem muitos tipos diferentes de sistemas de software e não existe um conjunto universal de técnicas de software que seja aplicável a todos eles. Ø Os métodos e ferramentas de engenharia de software usados dependem do tipo de aplicativo que está sendo desenvolvido, dos requisitos do cliente e do histórico da equipe de desenvolvimento. 18 Tipos de aplicativos Ø Aplicativos autônomos Ø São sistemas de aplicativos executados em um computador local, como um PC. Eles incluem todas as funcionalidades necessárias e não precisam estar conectados a uma rede. Ø Aplicativos interativos baseados em transações Ø Aplicativos executados em um computador remoto e acessados pelos usuários a partir de seus próprios PCs ou terminais. Isso inclui aplicativos da Web, como aplicativos de comércio eletrônico . Ø Sistemas de controle embutidos Ø Estes são sistemas de controle de software que controlam e gerenciam dispositivos de hardware. Numericamente, provavelmente existem mais sistemas embarcados do que qualquer outro tipo de sistema. 19 Tipos de aplicativos Ø Sistemas de processamento em lote Ø Esses são sistemas de negócios projetados para processar dados em grandes lotes. Eles processam 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 de modelagem e simulação Ø Esses são sistemas desenvolvidos por cientistas e engenheiros para modelar processos ou situações físicas, que incluem muitos objetos separados e interativos. 20 Tipos de aplicativos Ø Sistemas de coleta de dados Ø São sistemas que coletam dados de seu ambiente por meio de um conjunto de sensores e enviam esses dados para outros sistemas para processamento. Ø sistemas de sistemas Ø Estes são sistemas compostos por vários outros sistemas de software. 21 Fundamentos da engenharia de software Ø Alguns princípios fundamentais se aplicam a todos os tipos de sistema de software, independentemente das técnicas de desenvolvimento utilizadas: Ø Os sistemas devem ser desenvolvidos usando um processo de desenvolvimento gerenciado e compreendido. Claro, diferentes processos são usados para diferentes tipos de software. Ø Confiabilidade e desempenho são importantes para todos os tipos de sistema. Ø É importante entender e gerenciar a especificação e os requisitos do software (o que o software deve fazer). Ø Quando apropriado, você deve reutilizar o software que já foi desenvolvido em vez de escrever um novo software. 22 engenharia de software internet Ø A Web é agora uma plataforma para execução de aplicativos e as organizações estão cada vez mais desenvolvendo sistemas baseados na Web em vez de sistemas locais. Ø Os serviços da Web (discutidos no Capítulo 19) permitem que a funcionalidade do aplicativo seja acessada pela Web. Ø A computação em nuvem é uma abordagem para o fornecimento de serviços de computador onde os aplicativos são executados remotamente na 'nuvem'. Ø Os usuários não compram software, compram e pagam de acordo com o uso. 23 Engenharia de software baseada na web Ø Os sistemas baseados na Web são sistemas distribuídos complexos, mas os princípios fundamentais da engenharia de software discutidos anteriormente são tão aplicáveis a eles quanto a qualquer outro tipo de sistema. Ø As ideias fundamentais da engenharia de software aplicam-se a software baseado na web da mesma forma que se aplicam a outros tipos de sistema de software. 24 engenharia de software web Ø reutilização de software Ø A reutilização de software é a abordagem dominante para a construção de sistemas baseados na web. Ao construir esses sistemas, você pensa em como pode montá-los a partir de componentes e sistemas de software pré-existentes. Ø Desenvolvimento incremental e ágil Ø Os sistemas baseados na Web devem ser desenvolvidos e entregues de forma incremental. Agora é geralmente reconhecido que é impraticável especificar todos os requisitos para tais sistemas com antecedência. 25 engenharia de software web Ø Sistemas orientados a serviços Ø O software pode ser implementado usando engenharia de software orientada a serviços, em que os componentes de software são serviços da Web independentes. Ø Interfaces ricas Ø Surgiram tecnologias de desenvolvimento de interface , como AJAX e HTML5 , que suportam a criação de interfaces avançadas em um navegador da web. 26 Ética da engenharia de software 27 Ética da engenharia de software Ø A 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 maneira honesta e eticamente responsável se quiserem ser respeitados como profissionais. Ø O comportamento ético é mais do que simplesmente cumprir a lei, mas envolve seguir um conjunto de princípios que são moralmente corretos. 28 Questões de responsabilidade profissional Ø Confidencialidade Ø Os engenheiros normalmente devem respeitar a confidencialidade de seus empregadores ou clientes, independentemente de um acordo formal de confidencialidade ter sido assinado ou não. Ø Competência Ø Os engenheiros não devem deturpar seu nível de competência. Eles não devem aceitar conscientemente trabalho que esteja fora de sua competência. 29 Questões de responsabilidade profissional ØDireito de propriedade intelectual Ø Os engenheiros devem estar cientes das leis locais que regem o uso de propriedade intelectual, como patentes, direitos autorais, etc. Eles devem ter cuidado para garantir que a propriedade intelectual de empregadores e clientes seja protegida. Ø uso indevido do computador Ø Os engenheiros de software não devem usar suas habilidades técnicas para fazer mau uso dos computadores de outras pessoas. O uso indevido do computador varia de relativamente trivial (jogo na máquina de um empregador, digamos) a extremamente grave (disseminação de vírus). 30 Código de Ética ACM/IEEE Ø As sociedades profissionais nos Estados Unidos cooperaram para produzir um código de prática ética. Ø Os membros dessas organizações se inscrevem no código de prática quando se associam. Ø O Código contém oito Princípios relacionados ao comportamentoe às decisões tomadas por engenheiros de software profissionais, incluindo profissionais, educadores, gerentes, supervisores e formuladores de políticas, bem como estagiários e estudantes da profissão. 31 Justificativa do código de ética Ø Os computadores têm um papel central e crescente no comércio, na indústria, no governo, na medicina, na educação, no entretenimento e na 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 teste de sistemas de software. Ø Por causa de suas funções no desenvolvimento de sistemas de software, os engenheiros de software têm oportunidades de fazer o bem ou causar dano, permitir que outros façam o bem ou causem dano, ou influenciar outros a fazerem o bem ou causarem dano. Para garantir, tanto quanto possível, que seus esforços sejam usados para o bem, os engenheiros de software devem se comprometer a tornar a engenharia de software uma profissão benéfica e respeitada. 32 O Código de Ética da ACM/IEEE 33 Código de Ética e Prática Profissional da Engenharia de Software Força-Tarefa Conjunta ACM/IEEE-CS sobre Ética em Engenharia de Software e Práticas Profissionais PREÂMBULO A versão curta do código resume as aspirações em um alto nível de abstração; as cláusulas incluídas na versão completa dão exemplos e detalhes de como essas aspirações mudam a forma como agimos como profissionais de engenharia de software. Sem as aspirações, os detalhes podem se tornar legalistas e tediosos; sem os detalhes, as aspirações podem tornar-se sonoras mas vazias; juntos, as aspirações e os detalhes formam um código coeso. Os engenheiros de software devem se comprometer a fazer da análise, especificação, projeto, desenvolvimento, teste e manutenção de software uma profissão benéfica e respeitada. De acordo com seu compromisso com a saúde, segurança e bem-estar do público, os engenheiros de software devem aderir aos seguintes Oito Princípios: Princípios éticos 34 1. PÚBLICO - Os engenheiros de software devem agir de forma consistente com o interesse público. 2. CLIENTE E EMPREGADOR - Os engenheiros de software devem agir de maneira que atenda aos melhores interesses de seus clientes e empregadores, consistente com o interesse público. 3. PRODUTO - Os engenheiros de software devem garantir que seus produtos e modificações relacionadas atendam aos mais altos padrões profissionais possíveis. 4. JULGAMENTO - Os engenheiros de software devem manter integridade e independência em seu julgamento profissional. 5. GERENCIAMENTO - Os gerentes e líderes de engenharia de software devem subscrever e promover uma abordagem ética para o gerenciamento de desenvolvimento e manutenção de software. 6. PROFISSÃO - Os engenheiros de software devem promover a integridade e a reputação da profissão de forma consistente com o interesse público. 7. COLEGAS - Os engenheiros de software devem ser justos e solidários com seus colegas. 8. AUTO - Os engenheiros de software devem participar na aprendizagem ao longo da vida no exercício da sua profissão e devem promover uma abordagem ética no exercício da profissão. Estudos de caso 35 Dilemas éticos Ø Desacordo de princípio com as políticas da alta administração . Ø Seu empregador age de maneira antiética e libera um sistema crítico de segurança sem concluir o teste do sistema. Ø Participação no desenvolvimento de sistemas de armas militares ou sistemas nucleares. 36 Estudos de caso Ø Uma bomba de insulina pessoal Ø Um sistema embutido em uma bomba de insulina usada por diabéticos para manter o controle da glicemia. Ø Um sistema de gerenciamento de casos de saúde mental Ø Mentcare. Um sistema usado para manter registros de pessoas que recebem cuidados para problemas de saúde mental. Ø Uma estação meteorológica selvagem Ø Um sistema de coleta de dados que coleta dados sobre as condições climáticas em áreas remotas. Ø iLearn : um ambiente digital de aprendizagem Ø Um sistema para apoiar a aprendizagem nas escolas 37 Sistema de controle da bomba de insulina Ø Coleta dados de um sensor de açúcar no sangue e calcula a quantidade de insulina necessária para ser injetada. Ø Cálculo baseado na taxa de variação dos níveis de açúcar no sangue. Ø Envia sinais para uma microbomba para fornecer a dose correta de insulina. Ø Sistema crítico de segurança, pois o baixo nível de açúcar no sangue pode levar ao mau funcionamento do cérebro, coma e morte; níveis elevados de açúcar no sangue têm consequências a longo prazo, como danos nos olhos e nos rins. 38 Arquitetura de hardware da bomba de insulina 39 Needle assembly Sensor Display1 Display2 Alarm Pump Clock Controller Power supply Insulin reservoir Modelo de atividade da bomba de insulina 40 Analyse sensor reading Blood sensor Insulin pump Blood sugar Compute insulin Insulin dose Insulin log Log doseCompute pump commands Pump data Control insulin pump Requisitos essenciais de alto nível Ø O sistema deve estar disponível para fornecer insulina quando necessário. Ø O sistema deve funcionar de forma confiável e fornecer a quantidade correta de insulina para neutralizar o nível atual de açúcar no sangue. Ø O sistema deve, portanto, ser projetado e implementado para garantir que o sistema sempre atenda a esses requisitos. 41 Mentcare: um sistema de informação do paciente para cuidados de saúde mental Ø Um sistema de informação 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 receberam. Ø A maioria dos pacientes de saúde mental não requer tratamento hospitalar dedicado, mas precisa frequentar clínicas especializadas regularmente, onde podem encontrar um médico que tenha conhecimento detalhado de seus problemas. Ø Para facilitar o atendimento dos pacientes, essas clínicas não funcionam apenas em hospitais. Eles também podem ser realizados em práticas médicas locais ou centros comunitários. 42 Mentcare Ø Mentcare é um sistema de informação que se destina a ser utilizado 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, para que possa ser acessado e usado em sites que não possuem 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 podem baixar e usar cópias locais dos registros do paciente quando estão desconectados. 43 Objetivos de cuidado mental Ø Gerar informações gerenciais que permitam aos gestores dos serviços de saúde avaliar o desempenho em relação às metas locais e governamentais. Ø Fornecer à equipe médica informações oportunas para apoiar o tratamento dos pacientes. 44 A organização do sistema Mentcare 45 Mentcare client Mentcare server Patient database Mentcare client Mentcare client Network Principais características do sistema Mentcare Ø Gerenciamento de cuidados individuais Ø Os médicos podem criar registros para os pacientes, editar as informações no sistema, visualizar o histórico do paciente, etc. O sistema suporta resumos de dados para que os médicos possam aprender rapidamente sobre os principais problemas e tratamentos prescritos. Ø Monitoramento do paciente Ø O sistema monitora os registros dos pacientes envolvidos no tratamento e emite alertas caso sejam detectados possíveis problemas. Ø Relatórios administrativos Ø O sistema gera relatórios gerenciais mensais mostrando o número de pacientes atendidos em cada clínica, o número de pacientes que entraram e saíram do sistema de atendimento, o número de pacientes internados, os medicamentos prescritos e seus custos, etc. 46 Preocupações com o sistema Mentcare Ø Privacidade Ø É essencial que as informações do paciente sejam confidenciais e nunca sejam divulgadas a ninguém além da equipemédica autorizada e do próprio paciente. Ø Segurança Ø Algumas doenças mentais fazem com que os pacientes se tornem suicidas ou um perigo para outras pessoas. Sempre que possível, o sistema deve alertar a equipe médica sobre pacientes potencialmente suicidas ou perigosos. Ø O sistema deve estar disponível quando necessário, caso contrário, a segurança pode ser comprometida e pode ser impossível prescrever a medicação correta para os pacientes. 47 estação meteorológica selvagem Ø O governo de um país com grandes áreas selvagens decide implantar várias centenas de estações meteorológicas em áreas remotas. Ø As estações meteorológicas coletam dados de um conjunto de instrumentos que medem temperatura e pressão, sol, chuva, velocidade e direção do vento. Ø A estação meteorológica inclui vários instrumentos que medem parâmetros climáticos, como velocidade e direção do vento, temperatura do solo e do ar, pressão barométrica e precipitação pluviométrica durante um período de 24 horas. Cada um desses instrumentos é controlado por um sistema de software que faz leituras de parâmetros periodicamente e gerencia os dados coletados dos instrumentos. Ø 48 Ambiente da estação meteorológica 49 «system» Data management and archiving «system» Station maintenance «system» Weather station Sistema de informações meteorológicas Ø O sistema da estação meteorológica Ø Este é responsável por coletar dados meteorológicos, realizar algum processamento inicial de dados e transmiti-los ao sistema de gerenciamento de dados. Ø O sistema de gerenciamento e arquivamento de dados Ø Este sistema coleta os dados de todas as estações meteorológicas selvagens, realiza processamento e análise de dados e arquiva os dados. Ø O sistema de manutenção da estação Ø Este sistema pode se comunicar por satélite com todas as estações meteorológicas selvagens para monitorar a saúde desses sistemas e fornecer relatórios de problemas. 50 Funcionalidade de software adicional Ø Monitore os instrumentos, energia e hardware de comunicação e relate falhas ao sistema de gerenciamento. Ø Gerenciar a energia do sistema, garantindo que as baterias sejam carregadas sempre que as condições ambientais permitirem, mas também que os geradores sejam desligados em condições climáticas potencialmente prejudiciais, como vento forte. Ø Suporta reconfiguração dinâmica onde partes do software são substituídas por novas versões e onde os instrumentos de backup são trocados no sistema em caso de falha do sistema. 51 iLearn : um ambiente de aprendizagem digital Ø Um ambiente digital de aprendizagem é uma estrutura na qual um conjunto de ferramentas de uso geral e especialmente projetadas para o aprendizado pode ser incorporado, além de um conjunto de aplicativos voltados para as necessidades dos alunos que usam o sistema. Ø As ferramentas incluídas em cada versão do ambiente são escolhidas por professores e alunos para atender às suas necessidades específicas. Ø Podem ser aplicativos gerais, como planilhas , aplicativos de gerenciamento de aprendizado, como um Ambiente Virtual de Aprendizagem (AVA) para gerenciar o envio e avaliação de tarefas de casa, jogos e simulações. 52 Sistemas orientados a serviços Ø O sistema é um sistema orientado a serviços com todos os componentes do sistema considerados um serviço substituível . Ø Isso permite que o sistema seja atualizado gradualmente à medida que novos serviços se tornam disponíveis. Ø Também permite configurar rapidamente o sistema para criar versões do ambiente para diferentes grupos, como crianças muito pequenas que não sabem ler, alunos do último ano, etc. 53 serviços Ø Serviços utilitários que fornecem funcionalidade básica independente de aplicativo e que podem ser usados por outros serviços no sistema. Ø Serviços de aplicativos que fornecem aplicativos específicos, como e- mail, conferência, compartilhamento de fotos etc. e acesso a conteúdo educacional específico, como filmes científicos ou recursos históricos. Ø Serviços de configuração que são usados para adaptar o ambiente com um conjunto específico de serviços de aplicativos e definem como os serviços são compartilhados entre alunos, professores e seus pais. 54 arquitetura 55 Authentication Browser-based user interface Configuration services Group management Application management Identity management User storage Logging and monitoring Application storage Interfacing Search Utility services Application services iLearn app Email Messaging Video conferencing Newspaper archive Word processing Simulation Video storage Resource finder Spreadsheet Virtual learning environment History archive Integração do serviço Ø Serviços integrados são serviços que oferecem uma API (interface de programação de aplicativos) e que podem ser acessados por outros serviços por meio dessa API. A comunicação direta serviço a serviço é, portanto, possível. Ø Serviços independentes são serviços que são simplesmente acessados por meio de uma interface de navegador e que operam independentemente de outros serviços. As informações só podem ser compartilhadas com outros serviços por meio de ações explícitas do usuário, como copiar e colar; a reautenticação pode ser necessária para cada serviço independente. 56 Pontos chave Ø A engenharia de software é uma disciplina de engenharia que se preocupa com todos os aspectos da produção de software. Ø Os atributos essenciais do produto de software são manutenibilidade, confiabilidade e segurança, eficiência e aceitabilidade. Ø As 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 da engenharia de software são universalmente aplicáveis a todos os tipos de desenvolvimento de sistemas. 57 Pontos chave Ø Existem muitos tipos diferentes de sistema e cada um requer ferramentas e técnicas de engenharia de software apropriadas para seu desenvolvimento. Ø As ideias fundamentais da engenharia de software são aplicáveis a todos os tipos de sistemas de software. Ø Os engenheiros de software têm responsabilidades com a profissão de engenharia e com a sociedade. Eles não devem se preocupar apenas com questões técnicas. Ø As sociedades profissionais publicam códigos de conduta que estabelecem os padrões de comportamento esperados de seus membros. 58
Compartilhar