Engenharia de Software Qualidade de Software O termo qualidade assumiu diferentes significados, em engenharia de software, tem o significado de está em conformidade com os requisitos explícitos e implícitos do cliente/usuário. 1. Critérios de Qualidade de um Software A qualidade de um sistema computacional pode ser determinada pela análise dos seguintes parâmetros : completeza performance manutenibilidade segurança interatividade confiabilidade interoperabilidade portabilidade 1.1 Completeza-Corretude Para ser completo-correto o projeto deve incorporar todos os requisitos essenciais detectados na fase de análise. 1.2 Performance Diz respeito ao desempenho da atividade, como um todo, a ser executada em meio computacional. Uma boa performance é caracterizada pelo uso adequado de recursos humanos, de hardware e de software disponíveis no mercado. Parâmetros que podem ser utilizados para avaliação da performance: Tempo de processamento Tempo de resposta Alguns fatores que afetam a performance de um sistema: Teclas de atalho Re-indexação de arquivos Tamanho da memória RAM Limpeza de arquivos e eliminação de arquivos temporários limpeza de tabelas de banco de dados indexação de campos com muitas pesquisas em banco de dados 1.3 Manutenibilidade Diz respeito a facilidade de se alterar o sistema físico em função de: - Erros do sistema 1
- Novas Necessidades do usuário - Alteração do Ambiente Os sistemas de maior grau de manutenibilidade são os construídos através de módulos pequenos, de fáceis compreensão e que implementem funções bem definidas. Tais funções devem trabalhar com o maior grau de independente possível. Para obtenção de uma maior grau de manutenibilidade devemos: - Reduzir o tamanho dos módulos - Melhorar a reusabilidade dos códigos - Separar trabalho de gerenciamento Tipos de manutenção: Corretiva relativa a erros de implementação diagnosticados no final da fase de testes ou quando o software já se encontra em uso. Adaptativa relativa a rápida mudança da tecnologia computacional (hardware e software básico) Perfectiva relativa a novas necessidades de usuários Preventiva Relativa a melhoria da confiabilidade e futuras manutenções do software. 1.4 Segurança Os sistemas devem ser dotados de dispositivos que permitam garantir a integridade do sistema (programas e dados). Tipos de ameaça a segurança de um sistema: Infiltração Ex: Acesso Indevido a programas e arquivos de dados Linhas cruzadas nas transmissões de dados Grampeamento nas transmissões de dados Erro do usuário Falha de Hardware e/ou Software básico Segurança contra acesso indevido Para minimizar o acesso indevido podemos utilizar: Criar classes de usuários limitando o acesso a dados e funcionalidades do sistema. Identificação do usuário através do uso de cartão ou codificação do usuário que possibilite a identificação deste ao sistema Autenticação do usuário através do uso de senha, Identificação /senha, reconhecimento de voz ou impressão digital 1.5 Interatividade Diz respeito a facilidade percebida pelo usuário para desempenhar sua função através da máquina(computador) 1.6 Confiabilidade Conjunto de atributos que evidenciam a capacidade do software de manter seu nível de desempenho sob condições estabelecidas durante um período de tempo 2
determinado. Isto diz respeito ao fato do sistema desempenhar a função pretendida com precisão durante um tempo determinado. 1.7 Interoperabilidade Diz respeito ao esforço exigido para se acoplar um sistema a outro(s), sendo desejável uma alta interoperabilidade nos sistemas. 1.8 Portabilidade Diz respeito ao esforço exigido para que o produto de software seja executado em outra plataforma de hardware e/ou software. 2. Processo de Software Um processo é definido como Qualidade, produtividade e competitividade. A qualidade é a característica inerente ao produto de software, enquanto a produtividade é a medida da eficácia do uso dos recursos para produzir este produto. A competitividade é a característica ou capacidade de cumprir a sua missão, na produção do produto de software com mais êxito que outras organizações competidoras o O Processo desenvolvimento de software pode ser implementado empregando-se técnicas e ferramentas de gestão de processo, tais como: ciclo PDCA Programa 5S CMM PSP SPICE COBIT UTIL RUP PMBOK SCRUM 2.1 ciclo PDCA O ciclo PDCA ( Plan, Do, Check, Act ) Planejar, executar, verificar e agir surgiu na década de 30 é tem como base o controle dos processos baseado nestas 4 atividades. No Plan se define o que fazer, estabelecendo metas e métodos para atingir a meta. No Do se toma a iniciativa, ou seja implementa-se o que se planejou. No check verifica-se que resultados estão sendo obtidos, isto é feito de forma contínua. Por fim, no Action se faz as correções, se necessário, de modo a melhorar o processo. 2.2 Programa 5S O Programa 5S é uma técnica japonesa e ocidentalizada como HOUSE KEEPING. Ele é uma filosofia de trabalho que busca promover a disciplina na empresa através de consciência e 3
responsabilidade de todos, de forma a tornar o ambiente de trabalho agradável, seguro e produtivo Suas 5 etapas são: Seuru que significa organizar e descartar onde deve-se classificar Seiton que significa arrumar Seiso que significa limpeza Seiketsu que significa padronização Shitsuke que significa disciplina 2.3 CMM O Modelo CMM(Capability Maturity Model), Modelo de Maturidade de Processos surgiu do esforço do Instituto de Engenharia de Software (SEI), que se dedicou a mapear as práticas de engenharia de software adotadas pelas empresas de software, de forma a criar uma estrutura onde, dependendo das práticas utilizadas, seria possível obter uma idéia do nível de qualidade em que se encontra a empresa. O seu o objetivo principal é servir como uma metodologia de avaliação (diagnóstico) e um sistema de gestão (para implementar as ações de melhoria). Modelo de Maturidade de Processos de Software (CMM/SEI). O modelo possui uma escala de 1 a 5 assim definidos: nível 1 - inicial, nível 2 - repetível, o processo é disciplinado nível 3 - definido, o processo é padronizado nível 4 - gerenciado, o processo é previsível nível 5 - em otimização, o processo está em melhoria contínua. No nível inicial o processo de desenvolvimento é caótico, desorganizado e pessoal. Poucos processos são definidos e o sucesso depende dos esforços individuais No nível repetitivo o processo de gerenciamento é definido permitindo-se acompanhar custos, cronogramas e funcionalidade é caracterizado como processo disciplinado, sendo possível repetir o sucesso de um projeto em outro similares. No nível definido tanto as atividades de gerenciamento quanto de engenharia de processo de desenvolvimento estão documentadas, padronizadas e integradas. Caracterizando assim um processo padronizado e consistente. No nível gerenciado são coletadas medidas detalhadas de qualidade do produto e do processo de desenvolvimento. Tanto o produto quanto o processo de desenvolvimento são constantemente controlados quantitativamente. Caracterizando assim um processo previsível. No nível Otimizado o melhoramento continuo do processo é conseguido por meio do Feedback quantitativo dos processo e pelo uso de ideias e tecnologias inovadores no processo de melhoria contínua. 2.4 PSP O PSP Personal Software Process é baseado no princípio da melhoria contínua. Sendo usado por empresas pequenas ou por engenheiros de software individuais. Seu objetivo é orientar como planejar e desenvolver módulos de software ou pequenos programas. 2.5 SPICE 4
O Spice (Software Process Improvement and Capability Determination ) é uma evolução da ISO/TEC 12207 mas possui níveis de capacidade para cada processo assim como CMM. Seus níveis são: Nível 0 - Incompleto Há uma falha geral em realizar o objetivo do processo. Não existem produtos de trabalho nem saídas do processo facilmente identificáveis. Nível 1 Realizado O objetivo do processo em geral é atingido, embora não necessariamente de forma planejada e controlada. Há um consenso na organização de que as ações devem ser realizadas e quando são necessárias. Nível 2 Gerenciado O processo produz os produtos de trabalho com qualidade aceitável e dentro do prazo. Isto é feito de forma planejada e controlada. Os produtos de trabalho estão de acordo com padrões e requisitos. Nível 3 Estabelecido O processo é realizado e gerenciado usando um processo definido, baseado em princípios de Engenharia de Software. As pessoas que implementam o processo usam processos aprovados, que são versões adaptadas do processo padrão documentado. Nível 4 Predizível O processo é realizado de forma consistente, dentro dos limites de controle, para atingir os objetivos. Medidas da realização do processo são coletadas e analisadas. Isto leva a um entendimento quantitativo da capacitação do processo a uma habilidade de predizer a realização. Nível 5 Otimizado A realização do processo é otimizada para atender às necessidade atuais e futuras do negócio. O processo atinge seus objetivos de negócio e consegue ser repetido. São estabelecidos objetivos quantitativos de eficácia e eficiência para o processo, segundo os objetivos da organização. A monitoração constante do processo segundo estes objetivos é conseguida obtendo feedback quantitativo e o melhoramento é conseguido pela análise dos resultados. A otimização do processo envolve o uso piloto de idéias e tecnologias inovadoras, além da mudança de processos ineficientes para atingir os objetivos definidos. 2.6 COBIT O COBIT ( Control Objectives for Information and related Technology) é um guia de boas práticas de projeto de desenvolvimento. Seu foco é a gestão de tecnologia de informação (TI), sendo apoiado pelo ISACA (Information Systems Audit and Control Association ). Este guia tem o objetivo de apoiar os gestores e os profissionais no controle e gerenciamento dos processos de TI de forma lógica e estruturada, tendo como foco: o relacionamento entre os objetivos de negócio com os objetivos de TI. O Cobit é um modelo utilizado internacionalmente como um instrumento (de fomento) da Governança de TI. Seus principais recursos são framework; mapas de auditoria; sumário executivo; Objetivos de Controle (propósito a ser alcançado ou o resultado a ser atingido); guia técnicas de gerenciamento ferramentas quanto à implementação do modelo. 5
2.7 ITIL O ITIL (Information Technology Infrastructure Library) ou Biblioteca de Infra-Estrutura de TI é um conjunto de melhores práticas para a gestão de serviços em TI e para o alinhamento desta área com os negócios da empresa. Estas práticas estão especificadas em sete livros (daí o termo biblioteca ), dentre os quais os dois primeiros são mais conhecidos: Suporte a Serviços e Entrega de Serviços. O ITIL não é metodologia nem um manual de instruções. Ele deve ser considerado uma estrutura flexível que pode ser adaptada às necessidades de cada companhia. Modelos como ITIL e COBIT habilitam integração entre atividades e estruturas organizacionais típicas das áreas de desenvolvimento de software e de operação de sistemas de TI 2.8 PMBOK O PMBOK é um conjunto de práticas em gerencia de projetos publicado e mantido pelo PMI (Project Manangement Institute). Ele é organizado em 44 processos distribuído em 5 grupos com 9 áreas de conhecimento Os grupos dos processos são: Iniciação, Planejamento, Monitoramento, Execução, Encerramento. As nove áreas são são: integração, Escopo, Tempo, Custo, Qualidade, Recursos. Humanos, Comunicação, Riscos e Aquisição 2.9 SCRUM É uma metodologia Japonesa desenvolvimento de software desenvolvida para o gerenciamento de projetos de 3 Normas que visam a qualidade Hoje existem normas e órgãos que visão a qualidade do produto de software. Dentre eles podemos citar: ISO 9000-3 ISO/IEC 12207 ISO/IEC 14598 ISO/IEC 9126 ISO/IEC 12119 ABES SOFTEX ISACA 6