Departamento de Informática Programa de Pós Graduação em Ciência da Computação Laboratório de Desenvolvimento Distribuído de Software Estágio de Docência
Cronograma e Método de Avaliação Datas Atividades Notas 31/08/11 1ª Aula expositiva, com lista de exercícios 1 14/09/11 2ª Aula expositiva, com lista de exercícios 1 21/09/11 Apresentação dos trabalhos em equipe (seminário sobre qualidade) 28/09/11 Avaliação 5 03/10/11 Auxílio 3
Roteiro de apresentação Conceito de confiabilidade Medidas de confiabilidade e disponibilidade Modelos de confiabilidade Dimensões da confiança do software Confiabilidade Desempenho e confiança Razões para a confiabilidade de software Disponibilidade Segurança Proteção Sistemas críticos Sistema crítico de segurança Sistema crítico de missão Sistema crítico de negócios
Confiabilidade de Software
Incerteza é um estado com o qual as pessoas se deparam no cotidiano. Se considerarmos um projeto de software, encontramos incerteza quando se verifica o prazo e/ou custo para concluir o projeto. Também há incerteza quanto ao número de faltas ou defeitos remanescentes no software.
Por exemplo, um produto resultante do projeto de um sistema de software pode ter uma confiabilidade de 0.999, que pode ser considerado como um nível satisfatório de confiabilidade (isto é, que um sistema estaria operacional e funcionando corretamente durante 99,9% do tempo). Entretanto, ainda assim, não há a certeza de que o produto não apresentará falhas.
E, caso o software não tenha sido exaustivamente testado, o que se pode obter é um indicador da confiabilidade do software, geralmente, definido em termos de uma medida estatística da operação de um software sem a ocorrência de falhas.
A confiabilidade de software é um dos atributos da qualidade de software. Além dela, outros atributos da qualidade são desempenho, portabilidade, reusabilidade, dentre outros. Desconsiderar a confiabilidade de software durante o desenvolvimento de um sistema de software implica na possível ocorrência de falhas durante a fase operacional do sistema. Este artigo trata da importância da confiabilidade de software para os sistemas.
Confiabilidade de Software em Sistemas Computacionais: O ciclo de vida de um sistema de software consiste de duas grandes fases: 1ª Desenvolvimento e 2ª Operação
A fase de desenvolvimento compreende: Engenharia de sistemas; Especificação de requisitos; Projeto; Codificação e testes. A fase operacional refere-se a fase na qual o sistema de software está em uso, oferecendo funcionalidades aos usuários.
Tradicionalmente a maioria dos esforços da engenharia de software em produzir software confiável tem sido concentrada na fase de desenvolvimento. A razão para isto recai no fato da natureza inerente do software de não sofrer qualquer desgaste, isto é, o software não é susceptível ( que pode receber certas modificações, impressões, qualidades) a este tipo de problema.
Confiabilidade de software pode ser medida e estimada usando dados históricos e de desenvolvimento
DEFINIÇÃO Em termos estatísticos, a confiabilidade de software é definida como: a probabilidade de operação livre de falhas de um programa de computador num ambiente específico durante determinado tempo (Musa et al, 1987 in Pressman [2006] aborrecimentos Falhas catastrofes Não conformidade aos requisitos de software!
Métricas de confiabilidade: Tempo médio de ocorrência de falhas Tempo médio até a ocorrência de falhas Tempo médio de reparo Classificação geral Métrica do número de falhas do sistema Taxa de ocorrência de falha. Probabilidade de falha sob demanda Métricas de tempo ou número de transações Disponibilidade Tempo gasto para reparar ou reiniciar o sistema
Modelos de confiabilidade de software Modelos que prevêm, a confiabilidade como função cronológica (entrega no prazo estipulado - calendário) Modelos que preveêm, a confiabilidade como uma função do tempo de processamento transcorrido (tempo de execução da CPU).
Dimensões da confiança do software confiança disponiblidade confiabilidade segurança proteção... disponibilizar Capacidade do sistema em disponibilizar serviços de serviços...operar sem...se proteger quando necessários!... Universidade Estadual conforme de Maringá falhas - 4º ano de Informática contra invasão especificado catastróficas acidental ou deliberada
Dimensões da confiança do software: confiabilidade Refletindo... altos níveis de confiança de software somente podem ser alcançados à custa do desempenho do sistema e da equipe
Razões pelas quais a confiança é um atributo importante: 1º Sistemas não confiáveis (não apresentam segurança ou são inseguros) não são utilizados; 2º Os custos de falhas em um sistema podem ser enormes; 3º É difícil readequar a confiança; Frequentemente é possivel compensar a falha de desempenho do sistema; 4º Sistemas não confiáveis podem causar a perda das informações.
A confiabilidade do produto de software é influenciada pelo processo de software utilizado para desenvolver o produto. Um processo orientado no sentido de evitar defeitos poderá desenvolver um sistema confiável.
Dimensões da confiança do software: disponibilidade Disponibilidade: é a probabilidade de um sistema, em determinado instante, ser operacional e fornecer os serviços requeridos. A confiabilidade implica a disponibilidade se um serviço especificado não for prestado, o sistema não estará se comportando de acordo com sua especificação.
A disponibilidade não depende do sistema em si, mas do tempo necessário para reparar os defeitos que tornam o sistema indisponível. Exemplo: Sistema A falha uma vez por ano e leva 3 dias para reiniciar. Sistema B falha uma vez por mês e leva 3 minutos para reiniciar. Qual a maior disponibilidade? Qual o preferido?
A confiabilidade é comprometida com a ocorrência de falhas no sistema. (desconfiança do cliente) 1º Abordagens complementares para melhorar a confiabilidade de um sistema: 2º Evitar defeitos; (técnicas de desenvolvimento) 3º Detecção e exclusão de defeitos; (técnicas de verificação e validação) 4º Tolerância a defeitos (técnicas de tolerância a falhas)
Termo Terminologia da confiabilidade Descrição Falha do sistema Um evento que ocorre em algum momento, quando o sistema não fornece o serviço como é esperado por seus usuários. Erro do sistema Comportamento errôneo do sistema, quando o comportamento do sistema não atende à sua especificação. Defeito do sistema Um estado incorreto do sistema, ou seja, Universidade Estadual um de estado Maringá do sistema - 4º ano que de Informática é inesperado para seus projetistas. Erro ou engano humano Comportamento humano que resulta na Universidade Estadual introdução de Maringá de defeitos - 4º ano no de sistema. Informática
Dimensões da confiança do software: segurança A segurança de um sistema é um atributo que reflete a capacidade do sistema de operar normal e anormalmente, sem ameaçar as pessoas ou o ambiente. qqqqqiququan Universidade Estadualdssdsd de Maringá - 4º ano de Informática
E quando um sistema (software) torna-se uma ameaça as pessoas ou ao meio ambiente? Exemplo de ameaça as pessoas: Sistemas Críticos. Sistema de Controle de Aeronaves; Exemplo de ameaça ao meio ambiente: Sistemas de Controle de Processos em Indústrias Químicas.
Classes de softwares críticos de segurança: Software crítico de segurança primária Esse é um software que é embutido como um controlador em um sistema. A disfunção desse software pode causar uma disfunção de hardware, o que resulta em ferimentos em pessoas ou dano ambiental. Software crítico de segurança secundária Esse é um software que pode indiretamente resultar em ferimentos. Universidade Exemplo: Estadual banco de Maringá de dados - 4º ano de de um Informática médico erro pode resultar em dose errada de medicamento.
Danos provocados por ataques externos: 1. Interrupção de serviço; afeta a disponibilidade do sistema. 2. Corrupção de programas ou dados; afeta a confiabilidade e a segurança. 3. Revelação de informações confidenciais; afeta a disponibilidade e a confiabilidade.
Para assegurar a proteção de um sistema: 1. Evitar a vulnerabilidade; (Vulnerabilidade é o grau de incapacidade de um sistema para lidar com os efeitos adversos da mudança do clima, inclusive a variabilidade climática e os eventos extremos de tempo. Nela está contido sua capacidade de adaptação). Não conexão a uma rede pública. 2. Detectar e neutralizar ataques; Verificador de vírus. 3. Limitar a exposição. Cópias regulares do sistema e política de gerenciamento de configuração.
Abordagens para assegurar a proteção de um sistema: Resistência a ataques; Reconhecimento de um ataque; Recuperação a partir dos danos provocados pelo ataque.
Gerenciamento de Qualidade de Software
A constante busca pela qualidade e pela satisfação, faz com que os gerentes de projetos se preocupem com a melhor maneira de gerenciar seus produtos.
Outro fator de grande relevância é o cliente Mais exigente Busca pela agilidade e qualidade
Segundo nos apresenta: CLELAND/IRELAND (2006); alguns fatores que evidenciam problemas nas etapas do projeto são: O projeto excedeu os custos e/ou a programação almejada? O projeto não é adequado à missão, aos objetivos e às metas da empresa? Permitiu-se que o projeto fosse além do ponto em que os resultados seriam necessários para cumprir as expectativas do cliente?
Foi feito um desenho errado dos padrões técnicos de desempenho do projeto? A alta administração não deu suporte ao projeto?
É de extrema importância que um projeto independente de sua área de atuação, ou linha de pesquisa, possua um planejamento inicial e um gerenciamento contínuo. CAVALIERI/CAMPBELL (2005)
PMBOK A primeira versão do PMBOK foi criada em 1986. Descreve a somatória de conhecimento e as melhores práticas dentro da profissão de gerência de projetos. A gerência de projetos é a aplicação de conhecimento, habilidades, ferramentas e técnicas para projetar atividades, de maneira a satisfazer as necessidades e expectativas dos stakeholders.
Para cobrir todas as áreas que fazem parte da gerência de projetos o PMBOK se subdividiu em processos, cada processo se refere a um aspecto a ser considerado dentro da gerência de projetos, e todos os processos devem estar presentes para que esse tenha sucesso. Esses processos são:
1.Gerência de Integração 2.Gerência de Escopo 3.Gerência de Tempo 4.Gerência de Custo 5.Gerência de Qualidade Envolve o desenvolvimento e a execução do plano do projeto Definir e controlar o que deve e o que não deve estar incluído no projeto Garantir o término do projeto no tempo certo Garantir que o projeto seja executado dentro dos orçamentos aprovados Garantir que o projeto satisfará as exigências para as quais foi contratado 6.Gerência de R.H. 7.Gerência de Comunicação 8.Gerência de Risco 9.Gerência de Aquisição Melhor aproveitamento das pessoas envolvidas no projeto Planejamento da comunicação, distribuição da informação, relatório de acompanhamento e encerramento administrativo Envolve a identificação, quantificação, tratamento e controle de tratamento de riscos Planejamento de aquisição, planejamento de solicitação, solicitação de propostas, seleção e administração de fornecedores e encerramento de contratos
Sistemas Críticos
Tipos de sistemas críticos: Sistema crítico de segurança Um sistema cuja falha pode resultar em ferimentos, na perda de uma vida ou em grande dano ambiental. Exemplo: sistema de controle de fábrica de produtos químicos. Sistema crítico de missão Um sistema cuja falha pode resultar na falha de alguma atividade orientada a metas. Exemplo: sistema de navegação de aeronaves. Sistema crítico de negócios Um sistema cuja fábrica pode resultar no fracasso dos negócios que Universidade utilizam o sistema. Estadual de Maringá - 4º ano de Informática Exemplo: sistema de contas de cliente de um banco.
Exercício Reunir-se me duplas e resolver o exercício a seguir: Observe os seguintes softwares, apresentando algumas falhas e um plano para tratá-los: 1. Software Administrativo (contabilidade, finanças, RH) 2. Software de serviços via web (comércio eletrônico) 3. Governo INSS 4. Software para Sistemas Críticos
André Dias Martins Bacharel em Ciências Contábeis Bacharel em Sistemas de Informação Especialista em Ciências Econômicas Especialista em Desenvolvimento de Sistemas para Web Especialista em Didática e Metodologia para o Ensino Superior Mestrando em Ciência da Computação (Engenharia Software) andredias.uem@gmail.com http://www.din.uem.br/~pg45640/