Capítulo 1 Introdução - di.ubi.ptsebastiao/Ensino/UBI/2017-2018/ES/Teoricas... · do sistema de...
Transcript of Capítulo 1 Introdução - di.ubi.ptsebastiao/Ensino/UBI/2017-2018/ES/Teoricas... · do sistema de...
Assuntos abordados
Desenvolvimento de software profissional
Qual o significado de engenharia de software.
Ética em 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.
Capítulo 1 Introdução 22017/2018
Engenharia de software
As economias de TODAS as nações desenvolvidas são
dependentes de software.
Mais e mais sistemas são controlados por software
A engenharia de software preocupa-se com teorias,
métodos e ferramentas para o desenvolvimento de
software profissional.
As despesas de software representam uma fração
significativa do PIB em todos os países desenvolvidos.
Capítulo 1 Introdução 32017/2018
Custos de software
Os custos do software geralmente dominam os custos
do sistema de um computador. Os custos de software
num PC são geralmente maiores do que o custo do
hardware.
O software custa mais para manter do que para
desenvolver. Para sistemas com uma vida longa, os
custos de manutenção podem ser os custos de
desenvolvimento.
A engenharia de software preocupa-se com o
desenvolvimento de software a baixo custo.
Capítulo 1 Introdução 42017/2018
Falhas num projeto de software
O aumento da complexidade do sistema
Como novas técnicas de engenharia de software nos ajudam a
construir sistemas maiores e mais complexos, as exigências
mudam. Sistemas devem ser construídos e entregues mais
rapidamente.
Falha a utilização de métodos de engenharia de
software, ou a sua ausência
É bastante fácil escrever programas de computador sem o uso
de métodos e técnicas de engenharia de software. Muitas
empresas desenvolvem software ao mesmo tempo que os seus
produtos e serviços têm evoluído. Estas empresas não usam
métodos de engenharia de software. Consequentemente, o seu
software é muitas vezes mais caro e menos confiável do que
deveria ser.Capítulo 1 Introdução 52017/2018
Perguntas frequentes sobre engenharia de
software
Questão Responda
O que é um software? Programas de computador e documentação associada.
Produtos de software podem ser desenvolvidos para um
cliente particular ou podem ser desenvolvidos para um
mercado geral.
Quais são os atributos de um bom
software?
Bom software deve fornecer a funcionalidade e
desempenho necessários para o utilizador e deve ser
sustentável, confiável e utilizável.
O que é engenharia de software? Engenharia de software é uma disciplina da engenharia
que se preocupa com todos os aspectos da produção de
software.
Quais são as atividades fundamentais em
engenharia de software?
Especificação do software, Desenvolvimento do
software, Validação do software e Evolução do software.
Qual é a diferença entre engenharia de
software e informática?
A informática concentra-se em teorias e fundamentos;
Engenharia de software está preocupada com a
viabilidade do desenvolvimento e entrega do software.
Capítulo 1 Introdução2017/2018 7
Perguntas frequentes sobre engenharia de
software
Questão Responda
Qual é a diferença entre engenharia de
software e engenharia de sistemas?
Engenharia de sistema preocupa-se com todos os
aspectos do desenvolvimento de sistemas baseados em
computadores, incluindo hardware, software e engenharia
de processos. Engenharia de software é parte deste
processo mais geral.
Quais são os principais desafios
enfrentados pela engenharia de software?
Lidar com a diversidade crescente, prazos de entrega
reduzidos e desenvolvimento de software confiável.
Quais são os custos da engenharia de
software?
Cerca de 60% dos custos de software são os 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?
Todos os projetos de software têm que ser geridos 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 que os
sistemas críticos de controle de segurança exigem uma
especificação completa e analisável. Assim, não podemos
afirmar que um método é melhor do que outro.
Capítulo 1 Introdução2017/2018 8
Produtos de software
Produtos genéricos
sistemas que são comercializados e vendidos a qualquer cliente
que queira comprá-los stand-alone.
Exemplos - software de PC, como programas gráficos,
ferramentas de gestão de projetos; software CAD; software para
mercados específicos.
Produtos customizados
Software que é encomendado por um cliente específico para
satisfazer as suas próprias necessidades.
Exemplos - sistemas de controle, software de controle de tráfego
aéreo, sistemas de monitoramento de tráfego incorporados.
Capítulo 1 Introdução2017/2018 9
Especificação do produto
Produtos genéricos
A especificação do que o software deve fazer é da propriedade
do programador de software e decisões sobre a mudança de
software são feitos pelo programador.
Produtos customizados
A especificação do que o software deve fazer é propriedade do
cliente e eles tomam decisões sobre mudanças de software que
são necessarias.
Capítulo 1 Introdução 102017/2018
Atributos essenciais de um bom software
Característica do
produto
Descrição
Manutenção Software deve ser desenvolvido de forma que possa evoluir para
atender às necessidades dos clientes. Este é um atributo
fundamental, porque a mudança de software é uma exigência
inevitável num ambiente de negócios em constante mudança.
Confiabilidade e
segurança
Confiabilidade de software inclui uma série de características,
incluindo a segurança. Software confiável não deve causar danos
em caso de falha do sistema. Utilizadores mal-intencionados não
devem ser capazes de aceder ou danificar o sistema.
Eficiência Software não deve desperdiçar os recursos do sistema, como
memória e ciclos de processador. Eficiência inclui, por
conseguinte, a capacidade de resposta, o tempo de
processamento, a utilização da memória, etc.
Aceitabilidade Software deve ser aceitável para o tipo de utilizadores para o qual
foi concebido. Isso significa que ele deve ser compreensível,
usável e compatível com outros sistemas que os utilizadores
usam.
Capítulo 1 Introdução2017/2018 11
Engenharia de software
Engenharia de software é uma disciplina da engenharia
que se preocupa com todos os aspectos da produção de
software desde as primeiras fases de especificação do
sistema até a manutenção do sistema depois de ter
entrado em uso.
Disciplina de engenharia
Usando teorias e métodos adequados para resolver problemas
tendo em conta restrições organizacionais e financeiras.
Todos os aspectos da produção de software
Não apenas o processo técnico do desenvolvimento. Também a
gestão de projetos e desenvolvimento de ferramentas, métodos
etc., para apoiar a produção de software.
Capítulo 1 Introdução2017/2018 12
Importância da engenharia de software
Cada vez mais, os indivíduos e a sociedade dependem
de sistemas de software avançadas. Precisamos ser
capazes de produzir sistemas confiáveis e seguros
economicamente, rapidamente.
É geralmente mais barato, a longo prazo, a utilização de
métodos de engenharia de software e técnicas 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 mudar o software após ele
ter entrado em uso.
Capítulo 1 Introdução2017/2018 13
Atividades no processo de software
Especificação do software, onde os clientes e
engenheiros definem o software que vai ser produzido e
os constrangimentos ao seu funcionamento.
Desenvolvimento de software, onde o software é
concebido e programado.
Validação de software, onde o software é verificado para
garantir que ele é o que o cliente necessita.
Evolução do software, onde o software é modificado
para refletir as mudanças das necessidades dos clientes
e do mercado.
Capítulo 1 Introdução2017/2018 14
Questões gerais que afetam o software
Heterogeneidade
Cada vez mais, os sistemas são necessários para operar como
sistemas distribuídos através de redes que incluem diferentes
tipos de computador e dispositivos móveis.
Mudança económica e social
As empresas e a sociedade estão a mudar incrivelmente rápido.
Eles precisam ser capazes de mudar o seu software existente e
desenvolver rapidamente novos softwares.
Capítulo 1 Introdução2017/2018 15
Questões gerais que afetam o software
Segurança e confiança
Como o software está envolvidos com todos os aspectos das
nossas vidas, é essencial que podermos confiar no software.
Escala
Software tem de ser desenvolvido através de uma gama muito
ampla, desde muito pequenos sistemas embarcados em
dispositivos portáteis ou acedidos através da Internet, como os
sistemas baseados em cloud que servem uma comunidade
global.
Capítulo 1 Introdução2017/2018 16
Diversidade em engenharia de software
Há muitos tipos diferentes de sistema de software e não
existe um conjunto universal de técnicas de software
que é aplicável a todos estes.
Os métodos de engenharia de software e ferramentas
utilizadas dependem do tipo de aplicativo que está a ser
desenvolvido, os requisitos do cliente e a equipa de
desenvolvimento.
Capítulo 1 Introdução 172017/2018
Tipos de aplicativos
Aplicações stand-alone
São sistemas de aplicativos que são executados num
computador local. Eles incluem toda a funcionalidade necessária
e não precisam ser conectado a uma rede.
Aplicativos baseados em transações interativas
Aplicações que são executadas num computador remoto e são
acessados por utilizadores dos seus próprios PCs ou terminais.
Estes incluem aplicações de web.
Sistemas de controle embutidos
Estes são sistemas de controle de software que controlam
dispositivos de hardware. Há provavelmente mais sistemas
embutidos que qualquer outro tipo de sistema.
Capítulo 1 Introdução 182017/2018
tipos de aplicativos
Sistemas de processamento de batch
Estes são sistemas de negócios que são projetados para
processor grande quantidade de dados.
Sistemas de entretenimento
Estes são sistemas que são principalmente para uso pessoal e
que se destinam a entreter o utilizador.
Sistemas de 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 separadas.
Capítulo 1 Introdução 192017/2018
Tipos de aplicativos
Sistemas de recolha de dados
Estes são sistemas que recolhem dados do ambiente usando
um conjunto de sensores e enviam esses dados para outros
sistemas para processamento.
Sistemas de sistemas
Estes são sistemas que são compostos por uma série de outros
sistemas de software.
Capítulo 1 Introdução 202017/2018
Fundamentos de engenharia de software
Alguns princípios fundamentais aplicam-se 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 gerido e compreendido. Claro, processos
diferentes são usados para diferentes tipos de software.
Confiabilidade e desempenho são importantes para todos os
tipos de sistema.
Compreender e gerir a especificação de software e requisitos (o
que o software deve fazer) é importante.
Se for o caso, deve-se reutilizar software que já foi
desenvolvido, em vez de escrever um novo software.
Capítulo 1 Introdução 212017/2018
Engenharia de software e a Internet
A Web é agora uma plataforma para executar aplicações
e organizações estão a desenvolver cada vez mais
sistemas baseados na web, em vez de sistemas locais.
Serviços web permitem que a aplicação possa ser
acedida pela Web.
A computação em nuvem é uma abordagem para a
prestação de serviços de informática onde as aplicações
são executadas remotamente na 'nuvem'.
Capítulo 1 Introdução 222017/2018
Engenharia de software baseada na Web
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 como são para qualquer outro tipo de
sistema.
As idéias fundamentais da engenharia de software
aplicã-se a software baseado na web da mesma forma
que se aplicam a outros tipos de sistema de software.
Capítulo 1 Introdução 232017/2018
Engenharia de software e a Web
Reuso de software
reutilização de software é a abordagem dominante para a
construção de sistemas baseados na web. Ao construir esses
sistemas, pense sobre como você montá-los a partir de
componentes e sistemas de software pré-existentes.
Desenvolvimento incremental e ágil
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.
Capítulo 1 Introdução 242017/2018
Engenharia de software e a Web
Sistemas orientados a serviços
Programas podem ser implementado usando engenharia de
software orientada a serviços, onde os componentes de
software são os serviços da Web independente.
Capítulo 1 Introdução 252017/2018
Ética em engenharia de software
Engenharia de software envolve responsabilidades mais
amplas do que a simples aplicação de habilidades
técnicas.
Os engenheiros de software devem comportar-se de
uma maneira honesta e eticamente responsável se eles
querem 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 corretos.
Capítulo 1 Introdução 272017/2018
Questões de responsabilidade profissional
Confidencialidade
Engenheiros devem normalmente respeitar a confidencialidadedos seus empregadores ou clients, independente de ter ou nãoum acordo formal de confidencialidade assinado.
Competência
Engenheiros não devem falsear os seus níveis de competência.Eles não devem aceitar trabalhos que estejam fora da suacompetência.
Capítulo 1 Introdução 282017/2018
Questões de responsabilidade profissional
Direito de propriedade intelectual
Os engenheiros devem estar cientes das leis locais que regulam
o uso da propriedade intelectual, como patentes, direitos de
autor, etc. Eles devem ter o cuidado de assegurar que a
propriedade intelectual de empregadores e clientes está
protegida.
Uso indevido
Engenheiros de software não devem usar as suas habilidades
técnicas para prejudicar outras pessoas.
Capítulo 1 Introdução 292017/2018
ACM / IEEE Código de Ética
As sociedades profissionais têm cooperado paraproduzir um código de conduta ética.
Os membros dessas organizações assinam o código deética quando eles entram.
O Código contém oito princípios relacionados aocomportamento e decisões feitas por engenheiros desoftware profissionais, incluindo médicos, educadores,gerentes, supervisores e os decisores políticos, bemcomo estagiários e estudantes da profissão.
Capítulo 1 Introdução 302017/2018
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 através do ensino, com a
análise, especificação, projeto, desenvolvimento, certificação,
manutenção e testes de sistemas de software.
Por causa do seu papel no desenvolvimento de sistemas de
software, engenheiros de software têm significativa oportunidades
de fazer o bem ou causar danos, para permitir que os outros a
fazer o bem ou causar danos, ou para influenciar outros a fazer o
bem ou causar danos. Para garantir, tanto quanto possível, que os
seus esforços serão utilizados para o bem, engenheiros de
software devem se comprometer a fazer da engenharia de software
uma profissão benéfica e respeitada.
Capítulo 1 Introdução 312017/2018
O Código de Ética da ACM / IEEE
Código de Ética de Engenharia de Software e Prática Profissional
PREÂMBULO
Engenheiros de software devem-se comprometer a fazer a análise, especificação,
desenvolvimento, teste e manutenção de software uma profissão benéfica e respeitada. De
acordo com seu compromisso com a saúde, a segurança e o bem-estar do público, os
engenheiros de software devem aderir aos Oito Princípios seguintes:
Capítulo 1 Introdução 322017/2018
Princípios éticos
1. PÚBLICO - Engenheiros de software devem agir de forma coerente com o interesse
público.
2. CLIENTE E EMPREGADOR - Engenheiros de software devem agir de acordo com o
melhor interesse dos seus clientes e empregadores, consistente com o interesse público.
3. PRODUTO - Os engenheiros de software devem assegurar que os seus produtos e
modificações relacionadas, atendam aos mais altos padrões profissionais possíveis.
4. JULGAMENTO - Os engenheiros de software devem manter a integridade e
independência no 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 e manutenção de software.
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 - Os engenheiros de software devem ser justos e apoiar os 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 à prática da
profissão.
Capítulo 1 Introdução 332017/2018
Dilemas éticos
Desacordo com as políticas dos empregadores.
Empregador age de uma forma anti-ética e lança 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.
Capítulo 1 Introdução 352017/2018
Estudos de caso
Bomba de insulina pessoal
Um sistema incorporado numa bomba de insulina utilizada por
diabéticos para manter o controlo de glucose no sangue.
Um sistema de gestão para pacientes com problemas
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 de metereologia numa região selvagem
Um sistema de recolha de dados sobre as condições do tempo
em áreas remotas.
iLearn: Um ambiente digital de aprendizagem
Um sistema de apoio à aprendizagem nas escolasCapítulo 1 Introdução 362017/2018
Sistema de controle de bomba de insulina
Recolhe dados de um sensor de açúcar no sangue e
calcula a quantidade de insulina necessária a ser
injectada.
Cálculo baseado na taxa de variação de níveis de
açúcar no sangue.
Envia sinais a uma micro-bomba para administrar a
dose correcta de insulina.
Sistema critic, baixo nivel de açúcar no sangue pode
conduzir a mau funcionamento do cérebro, coma e
morte; altos níveis de açúcar no sangue têm
consequências a longo prazo, tais como danos aos
olhos e rins.Capítulo 1 Introdução 372017/2018
Requisitos de alto nível essenciais
O sistema deve estar disponível para fornecer insulina,
quando necessário.
O sistema deve realizar com fiabilidade e proporcionar a
quantidade correcta de insulina para neutralizar o nível
actual de açúcar no sangue.
O sistema deve ser concebido e implementado para
garantir que o sistema sempre atende a esses
requisitos.
Capítulo 1 Introdução 402017/2018
Mentcare: Um sistema de informação 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 receberam.
A maioria dos pacientes de saúde mental, não
necessitam de tratamento hospitalar dedicado, mas
precisam ir a clínicas especializadas regularmente, onde
podem encontrar um médico que tenha conhecimento
dos seus problemas.
Capítulo 1 Introdução 412017/2018
Mentcare
Mentcare é um sistema de informação que é destinado a
clínicas.
Ele faz uso de uma base de dados centralizada de
informações do paciente, mas também foi concebido
para ser executado num PC, de modo que possa ser
acedido e usado a partir de sitios 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 da base de
dados, também podem baixar e usar cópias locais de
registros dos pacientes quando eles estão
desconectados.Capítulo 1 Introdução 422017/2018
Objetivos Mentcare
Gerar informação de gestão que permite aos gerentes
de serviços de saúde avaliar o desempenho.
Fornecer ao pessoal medico informações oportunas
para apoiar o tratamento dos pacientes.
Capítulo 1 Introdução 432017/2018
As principais características do sistema de
Mentcare
gestão de atendimento individual
Os médicos podem criar registos dos pacientes, editar as informações no
sistema, ver o histórico dos pacientes, etc. O sistema suporta resumos de
dados para que os médicos possam aprender rapidamente sobre os
principais problemas e tratamentos que foram prescritos.
monitoramento de pacientes
O sistema monitoriza os registos dos pacientes que estão envolvidos no
tratamento e emite avisos se forem detectados possíveis problemas.
relatórios administrativos
O sistema gera relatórios mensais que mostram o número de pacientes
tratados em cada clínica, o número de pacientes que entravam e saíam
do sistema de assistência, número de pacientes seccionados, os
medicamentos prescritos e os seus custos, etc.
Capítulo 1 Introdução 452017/2018
Preocupações do sistema Mentcare
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 os próprios pacientes.
Segurança
Algumas doenças mentais podem levar o paciente a se tornar
suicida ou um perigo para outras pessoas. Sempre que
possível, o sistema deve alertar profissionais de saúde sobre
pacientes potencialmente suicidas ou perigosos.
O sistema deve estar disponível quando necessário.
Capítulo 1 Introdução 462017/2018
Estação meteorológica
O governo de um país com grandes áreas de região selvage decide
implantar várias centenas de estações meteorológicas em áreas
remotas.
Estações meteorológicas recolhem dados de um conjunto de
instrumentos que medem a temperatura e pressão, luz do sol,
chuva, velocidade do vento e direção do vento.
A estação de tempo inclui um número de instrumentos que medem os
parâmetros de tempo, tais como a velocidade e direcção do vento, as
temperaturas do solo e do ar, a pressão barométrica e a 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 gere os dados recolhidos a partir dos instrumentos.
Capítulo 1 Introdução 472017/2018
Sistema de informação meteorológica
O sistema estação meteorológica
Este é responsável pela recolha de dados meteorológicos, fazer um
processamento de dados inicial e transmiti-lo para o sistema de
gestão de dados.
Gestão dados e sistema de arquivamento
Este sistema recolhe os dados de todas as estações
meteorológicas da região selvagem, realiza o processamento e
análise de dados e guarda os dados.
O sistema de manutenção da estação
Este sistema pode comunicar por satélite com todas as estações
para monitorar a saúde desses sistemas e fornecer relatórios de
problemas.
Capítulo 1 Introdução 492017/2018
iLearn: Um ambiente digital de aprendizagem
Um ambiente de aprendizagem digital é um quadro em
que um conjunto de ferramentas especialmente
desenvolvidas para a aprendizagem pode ser
incorporado mais um conjunto de aplicações que são
voltadas para as necessidades dos alunos que utilizam
o sistema.
As ferramentas incluídas em cada versão do ambiente
são escolhidos por professores e alunos para atender às
suas necessidades específicas.
Capítulo 1 Introdução 512017/2018
Sistemas orientados a serviços
O sistema é um sistema orientado a serviço com todos
os componentes do sistema considerados um serviço
substituível.
Isso permite que o Sistema possa ser atualizado de
forma incremental à medida que novos serviços se
tornam disponíveis.
Ele também torna possível configurar rapidamente o
sistema para criar versões do ambiente para diferentes
grupos, como crianças muito jovens que não sabem ler,
estudantes seniores, etc.
Capítulo 1 Introdução 522017/2018
Pontos chave
Engenharia de software é uma disciplina da engenharia
que se preocupa com todos os aspectos da produção de
software.
Essenciais atributos do produto de software são a
manutenção, confiabilidade e segurança, eficiência e
aceitabilidade.
As atividades de alto nível: especificação,
desenvolvimento, validação e evolução são 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.Capítulo 1 Introdução 562017/2018
Pontos chave
Há muitos tipos diferentes de sistema e cada um requer
ferramentas de engenharia de software e técnicas
apropriadas para o seu desenvolvimento.
As idéias fundamentais de engenharia de software são
aplicáveis a todos os tipos de sistema de software.
Engenheiros de software têm responsabilidades para
com a profissão de engenharia e a sociedade. Eles não
devem se preocupar com questões técnicas.
Sociedades profissionais publicam códigos de conduta
que estabelecem os padrões de comportamento.
Capítulo 1 Introdução 572017/2018