Mostrando postagens com marcador Gestão de TI. Mostrar todas as postagens
Mostrando postagens com marcador Gestão de TI. Mostrar todas as postagens

terça-feira, 14 de agosto de 2012

Aplicação da Auditoria de Computador

Pontos de Controle:
Situação do Ambiente Computacional caracterizada pelo auditor como de interesse para a prática da validação e avaliação.
 
Aplicação da Auditoria de Computador:
A equipe de auditoria de computadores precisa conhecer de forma abrangente a tecnologia de informação com o intuito de aplicála ao ambiente computacional a favor da auditoria e com base no controle interno – pontos relevantes à auditoria dentro da auditoria em informática. Para ser mais específico, temos os seguintes controles:
• Obediência à legislação
• Obediência às normas empresariais
• Fidelidade da informação em relação ao dado
• Confidencialidade
• Segurança Física (Estado operacional)
• Segurança Lógica (Funcionamento, Alterações e erros tecnológicos)
• Segurança Ambiental (Condições de operacionalidade)
• Eficiência (Otimizar o uso dos recursos)
• Eficácia (Satisfação do usuário do sistema)
Ao aplicar os métodos de auditoria de computadores, a equipe devese atentar à:
• Parâmetro de controle interno a ser atendido
• Momento da aplicação da técnica
• Ambiente vivenciado
• Situação dinâmica (processos) e estática (resultados) do ambiente computacional
Técnicas de Auditoria de Computador
• Questionários
• Simulação de Dados (testdeck)
• Visita in loco
• Mapeamento estatístico (mapping)
• Rastreamento de programas (tracing)
• Entrevista
• Análise de Relatórios/Telas
• Simulação paralela
• Análise de Log/Accounting
• Análise do Programa Fonte
• Exibição parcial da memória snapshot
• Programa de computador
 
Obrigado pela leitura.
Guilherme Pontes

Políticas de Utilização da Rede


Em primeira instância, é importante observar que através de documentos de normalização, definição de políticas e, em determinados casos, policiamento das tarefas, a equipe de auditoria/suporte em informática estará resguardada para futuro posicionamento em relação aos problemas encontrados e possíveis soluções a serem tomadas.
Certamente um documento de adequação à utilização de recursos tecnológicos deve ser elaborado com base nas próprias políticas e necessidades da empresa, sendo que sua implementação é de responsabilidade da equipe de TI e auditoria.
Basicamente este documento deverá considerar a utilização dos meios tecnológicos pelos usuários do sistema (que no caso, são os próprios funcionários da empresa) e por isso, documentar todo o processo de uso/limitação dos recursos da rede, sistema, etc.
 
Enfoque do documento
Se tratando de uma auditoria em informática, voltamos a produção do documento de acordo com os recursos tecnológicos que, em grande maioria, podem ser descritos e apontados pelos seguintes tópicos:
 
Utilização da Rede:
Atende às questões de confiabilidade, autenticação e utilização dos recursos gerais disponíveis na rede. Em questões mais específicas (como impressoras, por exemplo) um novo tópico tratará das normas. Em geral devese atacar problemas como:
a) Acesso não autorizado
b) Interferir na utilização da rede
c) Finalização incorreta dos recursos utilizados (efetuar logoff)
d) Falta de manutenção nos recursos pessoais
e) Instalação/Modificação indevida de softwares e/ou hardwares
Utilização do Email:
Gerenciar o envio, recebimento e redirecionamento de mensagens eletrônicas.
a) Má utilização da linguagem de comunicação
b) Enviar ou receber mensagens não pertinentes à empresa
c) Utilização de programas ou protocolos não padronizados
d) Enviar mensagens que possam congestionar o tráfego na rede
Utilização de acesso a Internet:
Tratase das normas de acesso a Internet e recursos oferecidos pela mesma.
a) Acesso indevido a sites
b) Upload ou Download indevidos ou não autorizados
c) Divulgação de informações da empresa e clientes por ferramentas em listas de discussão ou bate papos.
d) Uso de softwares P2P, comunicação instantânea e serviços inapropriados
Utilização de Impressoras:
Normas e bom uso dos recursos de impressão disponibilizados pelo sistema.
a) Impressões para benefício próprio ou não pertinente a empresa
b) Utilização de impressões de boa qualidade apenas para última versão de projetos.
c) Reabastecimento dos cartuchos por pessoal não autorizado
d) Não reabastecimento de papel quando necessário
Punições necessárias
Todo o processo de padronização e normalização do uso dos recursos tecnológicos da empresa deve ser acompanhado e resguardado pela equipe responsável pelo setor ou gerência da empresa, assim como com o departamento de recursos humanos.
Problemas encontrados em relação a má utilização da rede deverão ser punidos de acordo com as regras definidas no documento, divulgadas ao usuário infrator e, quando necessário, divulgadas para toda a equipe de produção.
 
Ferramentas de apoio
O levantamento dos softwares e hardwares utilizados no gerenciamento das normas estabelecidas, se possível, deverá ser mostrado junto ao documento. Outra possibilidade – observado o fato de que a grande maioria dos usuários são leigos – é informar a maneira de rastreamento e fiscalização. Ambas situações são necessárias para intimidar alguns usuários no qual a empresa não tem autoridade – em casos de serviços prestados pela Internet a clientes, por exemplo – ou simplesmente para usuários sem responsabilidade com a empresa e equipe de apoio técnico.
 
Obrigado pela leitura.
Guilherme Pontes

Auditoria em Informática

Auditoria
 
O que é auditoria?
Conjunto de procedimentos empregados com o intuito de validar e avaliar as características que compõem todo o processo envolvido na aquisição do objetivo empresarial a partir da obtenção de informações atuais. Com essas informações é possível adaptar os procedimentos de acordo com o planejamento predefinido e/ou normais padronizadas.
 
Conceitos Importantes:
Validar é um conceito que exprime a ideia de teste.
Avaliar é um conceito que exprime julgamento e a emissão de opinião.
 
Quando se aplicar a auditoria?
Constantemente. O processo de auditoria deve caminhar em paralelo com o desenvolvimento empresarial, pois este, para acompanhar a atual concepção do mercado se porta com atitudes dinâmicas e arriscadas (de certo modo). Na verdade a auditoria servirá como avaliador constante do comportamento empresarial de acordo com suas próprias estimativas.
 
 
Auditoria em Informática
 
Todo corpo empresarial moderno tem grande participação de tecnologias de processamento eletrônico de dados (PED) em suas atividades organizacionais. Cada vez mais temse
consciência de que o verdadeiro patrimônio das empresas consiste nos elementos tecnológicos, que formam seus sistemas, processos e informações. Portanto para a segurança de que os processos e resultados alcançados esteja satisfeita a auditoria atuase como ponto chave na validação e avaliação dos mesmos. Este tipo particular de auditoria é conhecido como auditoria em informática.
Devese também observar, de forma superficial, que a auditoria em informática atende um foco de suma importância no andamento da empresa: sistemas de informação. Todos processos e elementos organizacionais estão direta ou indiretamente envolvidos no processamento de dados, que, na maioria das vezes, é realizado por computadores.
 
Tópicos abordados na Conceituação
  • Auditoria em Informática
  • Processamento Eletrônico de Dados
  • Sistemas de Informação
  • Auditoria
Processamento Eletrônico de Dados
Este ítem corresponde aos conceitos de hardware e software e sua interligação com elementos de telecomunicação. Para melhor explicar, pode se destacar os seguintes tópicos:
• Hardware
• Software Básico
• Software de Apoio
• Software Aplicativo
• Teleprocessamento
Sistemas de Informação
Sistemas de informação compreendem um conjunto de recursos humanos, materiais, tecnológicos e financeiros ordenados em uma seqüência lógica que trabalham com o objetivo de transformar dados em informações.
Por Recursos humanos podese entender todos os usuários dos sistemas e programadores e analistas envolvidos. Recursos materiais são compostos por equipamentos, utensílios, instalações e suprimentos. Recursos tecnológicos apontam para os elementos intangíveis – os programas – utilizados na obtenção dos resultados e por fim, recursos financeiros expressam todos esses itens sobre um denominador comum moeda. A idéia de seqüência lógica é empregada com o intuito de indicar a existência de procedimentos padronizados e etapas a serem seguidas para que a obtenção das informações seja possível.
Os dados são estáticos e compõem um corpo maciço e importantíssimo para a organização e as informações são os resultados processados, em certo instância temporal, que pode ser considerada o objetivo do sistema de informação.
 
Auditoria
A auditoria é necessária para que seja feita a validação e avaliação do controle interno do processamento eletrônico dos dados. O controle interno corresponde ao exercício de um ou
mais parâmetros mostrados a seguir:
• Fidelidade da informação com relação aos dados
    Validar e avaliar as informações.
• Confidencialidade
    Evitar o acesso não autorizado aos resultados dos sistemas.
• Obediência às normais empresariais
    Estar de acordo com a diretrizes e normas da empresa.
• Obediência à legislação
    Estar de acordo com a legislação atuante no governo, estado e município.
• Segurança Física
    Bom estado operacional para os recursos humanos e materiais.
• Segurança Lógica
    Funcionamento, alteração e erros envolvidos com os recursos tecnológicos.
• Segurança Ambiental
    Condições de operacionalidade dos r. humanos, materiais e tecnológicos.
• Eficiência
    Otimização dos recursos envolvidos nos sistemas.
• Eficácia
    Constatação da satisfação dos atuadores e usuários do sistema.
 
Obrigado pela leitura.
Guilherme Pontes

Rational Unified Process - RUP


Antes da leitura deste estudo, recomendo a leitura dos itens sobre Modelos de Processo de Software, cujo link está disponível na seção Referências.
O Rational Unified Process (RUP) é um modelo de processo de software mantido pela IBM que fornece à equipe de desenvolvimento e aos gerentes de projeto uma alternativa genérica para se construir um sistema de software. Por genérica, entende-se uma alternativa adaptável à grande maioria dos casos de softwares.
O RUP fornece boas práticas, templates, orientações e diretrizes para melhorar o desenvolvimento e para atender todas as atividades críticas no processo de desenvolvimento do software.
Espera-se atingir um resultado satisfatório quando é utilizado um processo de software coerente com a situação. A figura acima ilustra uma situação onde existe um cliente portador de uma necessidade de desenvolvimento de software. Após um processo complexo de elaboração do sistema de software, um produto é alcançado, atendendo questões importantes como prazos, requisitos, custos e qualidade. Qual é a finalidade do RUP? Fornecer uma maneira eficiente para se construir um sistema de acordo com as necessidades do cliente.
O RUP sugere que os projetos utilizem como ferramenta de modelagem o UML. Particularmente, com ou sem o RUP, as ferramentas da UML atendem a uma vasta gama de sistemas. Não hesite em utilizá-las.
 
Um pouco mais sobre o RUP
Basicamente, o RUP apresenta três perspectivas para detalhar o processo de software. São elas:
  1. Perspectiva dinâmica: abordagem que trata o projeto em função do tempo, considerando questões importantes como iteratividade – onde o projeto é direcionado a partir de versões menores chamadas incrementos – e divisão de fases.
  2. Perspectiva estática: direciona o entendimento do projeto a partir de uma série de disciplinas – ou workflows – associadas às fases dinâmicas, além de atividades de apoio – necessárias em todo o projeto.
  3. Perspectiva prática: onde são definidas boas práticas a serem executadas em todos os processos de software.
     
Geralmente as perspectivas dinâmicas e estáticas são apresentadas em conjunto. Observe a iteração das mesmas pela figura abaixo.
As fases e ciclos (iterações), associados à perspectiva dinâmica, estão dispostos horizontalmente, enquanto as atividades estão representadas verticalmente – perspectiva estática. Observe que não existe um critério fixo para a colocação de uma atividade em determinada fase. De espera que, a partir do contexto apresentado na figura, as atividades estejam mais associadas a determinados momentos no projeto, mas nada impede de serem utilizadas em outro instante – outra fase.
Segundo o texto disponibilizado em http://www.wthreex.com/rup/, de onde também foi retirada a figura, cada disciplina (atividade) está mais centrada em determinada fase. Veja o texto original:
O gráfico Modelo de Iteração mostra como a ênfase em cada Disciplina varia através do tempo. Nas Iterações iniciais, dedicamos mais tempo aos Requisitos. Já nas Iterações posteriores, gastamos mais tempo com Implementação, por exemplo.
Vamos agora ao entendimento aprofundado de cada perspectiva.
 
Perspectiva dinâmica (divisão do tempo em fases)
Conforme explicado, a divisão do projeto no RUP ao longo do tempo é constituída por fases. Cada fase precede um marco no projeto (representada pela linha tracejada na figura), ou seja, terminado uma fase, espera-se alcançar alguns objetivos principais – e conseqüentemente alcançar um importante marco. Além dos objetivos principais, uma série de artefatos é pré-estabelecida juntamente com alguns critérios de avaliação do sucesso da fase. Resumidamente, ao se utilizar o RUP, o processo de software é tratado em fases que, quando finalizadas, atingem marcos, que serão validados através de diretivas, e trarão uma série de produtos necessários para a próxima etapa.
Conforme mostrado na figura, as quatro fases são: Iniciação, Elaboração, Construção e Transição.
 
Iniciação (Concepção)
Também chamada de concepção, a fase de iniciação consiste em estabelecer um business case para o sistema. Você deve avaliar a contribuição do sistema para o negócio e a partir daí, determinar se o projeto deve ou não continuar.
Nesta fase são analisadas todas as entidades externas ao sistema, tão como suas associações, para se elaborar os objetivos, arquitetura e planejamento do projeto. Quem possui essas informações? As entidades externas (mais conhecidas como stakeholders). Como o próprio RUP sugere, esta fase poderá ser realizada em iterações até que se encontre um nível respeitável de informações para estabelecimento dos objetivos gerais.
No final da fase de iniciação (ou concepção) encontra-se o marco mais importante do projeto: marco dos Objetivos do Ciclo de Vida do projeto (LCO – Lifecycle Objetive). Onde será respondida a pergunta: é válido realizar o projeto?
Neste marco, espera-se possuir os seguintes artefatos:
  1. Visão: documentação dos requisitos, restrições e elementos chave do projeto. Este é o documento de maior importância nesta fase.
  2. Riscos: identificar os ricos do projeto. Como em todo gerenciamento, saber onde se está pisando é essencial, como também conhecer a amplitude e gravidade dos riscos.
  3. Caso de Negócio: documento que contém as informações e suposições sobre o retorno do investimento para responder a seguinte pergunta: é válido realizar o projeto?
  4. Plano de desenvolvimento de software: documentação que identifica as fases iniciais do projeto, tão como a duração e objetivo de cada uma. Devem também ser especificadas estimativas do tempo, RH e custos envolvidos. Inicialmente esses valores podem ser considerados brutos e poderão (deverão, talvez fosse o melhor termo) ser reconstituídos nas próximas iterações desta fase, onde teremos maiores informações sobre o projeto como um todo.
  5. Plano de iteração: Um conjunto de atividades e tarefas divididas por seqüências de tempo, com recursos atribuídos e dependência de tarefas, para a iteração.
  6. Caso de desenvolvimento: processo no qual o projeto seguirá, ou seja, é uma descrição do processo de desenvolvimento para servir de guia.
  7. Ferramentas: tudo que será necessário para o desenvolvimento do software, considerando também a instalação e aquisição das mesmas.
  8. Glossário: termos importantes no projeto (uma espécie de índice que será utilizado como referência).
     
Todos os elementos descritos são necessários. Existem também alguns itens opcionais, descritos adiante:
  1. Casos de Uso: define um template para modelagem dos casos de uso.
  2. Modelo de Domínio: um modelo de objetos de negócio utilizado como uma extensão do Glossário. Pode ser utilizado pelos interessados no negócio (stakeholders primários ou secundários).
  3. Templates dos Documentos: template para a geração dos documentos. A padronização favorece a continuidade e o gerenciamento do projeto.
  4. Protótipos: os protótipos podem ser utilizados para melhor se compreender do negócio a ser tratado pelo sistema, como também para compreender os clientes e usuários e validar os requisitos.
     
Observação: a literatura sugere que alguns artefatos sejam apresentados como baseline (linha de base). A linha de base do RUP é uma imagem da versão de um artefato. Ou seja, a linha de base é composta pela definição das versões dos artefatos que compõem o produto em dado momento. Essa não é a mesma baseline presente na atividade Desenvolvimento do Cronograma no Gerenciamento de Projetos (PMI) – mais especificamente situada na área de conhecimento Gerenciamento de Tempo do Projeto, sob o processo de Planejamento. Este baseline (PMI) é um cronograma que considera a alocação dos recursos disponíveis, além do caminho crítico. Pelo fato dos termos serem iguais, a confusão pode ocorrer. O baseline do PMI é similar ao artefato Plano de Iteração – identificado nos itens acima. Já o baseline do RUP é associado à situação da versão dos artefatos em determinado momento, quando é disponibilizada uma versão para o cliente.
Terminada a fase, resta-nos saber se ela foi proveitosa. Para isso utilizaremos os critérios abaixo – opcionalmente, coloquei-os em formato de perguntas (Martins, 2007), pois o cérebro, instintivamente, é mais estimulado quando se depara com uma pergunta do que com uma afirmação.
  1. Os stakeholders estão confiantes de que a equipe do projeto entendeu o problema a ser resolvido?
  2. Os stakeholders estão confiantes de que os riscos mais críticos foram identificados?
  3. As estimativas iniciais foram refinadas com base no conhecimento adquirido?
  4. As estimativas de curso e prazo são aceitáveis para os stakeholders?
     
É importante ressaltar que o projeto será construído através de incrementos (ou pequenos itens). Tais incrementos devem ser implementados pela ordem de prioridade estabelecida pelos clientes/usuários. Não atendê-las ou documentá-las equivocadamente pode causar insatisfação dos clientes em relação ao projeto (e à equipe do projeto).
Ao responder a essas perguntas, teremos maior confiança de que o trabalho realizado na fase de Iniciação é confiável ou suficiente.
 
Elaboração
Na fase de Elaboração, o objetivo é capturar todos os requisitos ainda não identificados e definir uma arquitetura sólida que permita a evolução do sistema nas fases seguintes (Martins, 2007). Como principal objetivo, pode-se definir que a meta da fase de elaboração é criar um baseline (do RUP) para a arquitetura do sistema fornecendo uma base estável para a próxima fase, no caso, a fase de Construção.
Para se construir uma arquitetura confiável, protótipos da arquitetura podem ser elaborados com o objetivo de obter uma visão abrangente do sistema, em relação ao escopo, funcionalidades e requisitos não funcionais (chamados de atributos emergentes não funcionais – confiabilidade, disponibilidade, segurança e proteção).
Um plano de projeto geral e realista para execução do restante do projeto deve ser construído. Deve também ser estabelecido um ambiente de suporte para o projeto. A avaliação do risco também é importante. Tratar todos os riscos significativos do ponto de vista da arquitetura do projeto.
A fase de Elaboração termina com o marco Ciclo de Vida da Arquitetura (LCA – Lifecycle Architecture). Ao atingir esse marco, pode-se entender que a arquitetura está definida e os requisitos estão levantados e detalhados.
Os seguintes artefatos devem constar neste marco:
  1. Protótipos: Protótipos da arquitetura podem ser criados a fim de explorar a funcionalidade crítica e os cenários significativos. Inclusive, é plausível que a arquitetura em si tenha sido construída com uma série de protótipos evolucionários.
  2. Lista de Ricos: Os novos ricos estarão associados à arquitetura e conseqüentemente ao gerenciamento de requisitos não funcionais. Ela é uma atualização e revisão dos riscos identificados na fase anterior.
  3. Caso de Desenvolvimento: Atualização do artefato já elaborado, aqui considerando questões sobre o ambiente de desenvolvimento, ferramentas e processo.
  4. Ferramentas: As ferramentas pertinentes ao trabalho de Elaboração são instaladas.
  5. Documento de Arquitetura de Software: Fornece uma visão geral de arquitetura abrangente do sistema. Deve conter uma descrição detalhada para os casos de usos significativos para a arquitetura, e elementos de design (elementos lógicos a serem definidos como linguagem de programação e banco de dados).
  6. Modelo de Design: Descreve a realização dos casos de uso e de forma abstrata, serve como guia para o modelo de implementação. Realizações de caso de uso para cenários significativos do ponto de vista da arquitetura foram definidos.
  7. Modelo de Dados: O modelo de dados é um subconjunto do modelo de implementação que descreve a representação lógica e física dos dados persistentes no sistema. Também abrange qualquer comportamento definido no banco de dados, como procedimentos armazenados, triggers, restrições etc. Este artefato deve ter sido criado e com baseline.
  8. Modelo de Implementação: Conjunto de componentes (que incluem produtos liberados – executáveis – elementos dos quais os produtos foram criados – código fonte). A estrutura inicial deverá ser criada, com ou sem a adoção de protótipos.
  9. Visão: Atualização da visão elabora com foco na compreensão sólida dos casos de uso mais críticos que conduzem as decisões de arquitetura e planejamento.
  10. Plano de Desenvolvimento de Software: Atualizar o plano existente com objetivo de abranger as próximas fases.
  11. Modelo de Casos de Uso: um modelo de casos de uso praticamente concluído. Estima-se que neste ponto o modelo esteja 3/4 do modelo conclusivo.
  12. Especificações Suplementares: Os requisitos suplementares abrangendo os requisitos não funcionais são documentados e analisados. Conforme a literatura de Engenharia de Software, requisitos não funcionais (ou atributos não funcionais) dizem respeito a características pertinentes à confiança do software quando integrado (após a fase de integração de subsistemas). Pode-se definir a confiança de software com base em: disponibilidade (capacidade do sistema de estar disponível quando requisitado), confiabilidade (capacidade do sistema de operar de acordo com os requisitos), segurança (capacidade do sistema de operar sem falhas catastróficas) e proteção (capacidade do sistema de proteger-se de intrusões acidentais ou intencionais). Mais informações em Sommerville, 2007. Outras abordagens coerentes para requisitos não funcionais podem ser vistas nas Referências.
  13. Conjunto de Testes: Testes implementados e executados para validar a estabilidade do build para cada release executável criada nesta fase.
  14. Arquitetura para Automatização de Testes: É uma composição de diversos elementos de automatização de testes e suas especificações que representam as características fundamentais do sistema de software de automatização de testes (Wthreex, em Referências).
     
Além dos artefatos descritos anteriormente, existe aqueles opcionais:
  1. Caso de Negócio: Atualizado para os casos onde existam elementos descobertos que influenciem o caso de negócio estabelecido.
  2. Modelo de Análise: Pode ser desenvolvido como um artefato formal, que através da evolução, poderá servir como a versão inicial do Modelo de Design.
  3. Materiais de Treinamento: Manuais do Usuário e outros materiais de treinamento.
  4. Templates Específicos do Projeto: Padrão para a criação dos documentos do projeto.
     
Ao atingir o marco LCA, podemos avaliar sua consistência e confiabilidade através das seguintes perguntas:
  1. Os stakeholders têm confiança de que a equipe do projeto tem capacidade de implementar a solução proposta?
  2. A arquitetura reflete os requisitos funcionais (funções que o sistema deve fornecer)?
  3. Todos os riscos críticos foram eliminados ou mitigados?
  4. As variações de custo e prazo são aceitáveis para os stakeholders?
  5. A fase de Construção foi planejada de forma consistente e detalhada?
     
Conforme definido, a fase de Elaboração pode ser entendida como um processo de engenharia, onde o foco é especificar uma arquitetura robusta e confiável. Através dos critérios de avaliação (perguntas) acima, podemos esperar que um resultado satisfatório foi alcançado.
 
Construção
Na fase de construção, o sistema e a documentação destinada ao usuário são criados, junto com a versão beta do sistema (Martins, 2007). Nesta fase também serão esclarecidos os requisitos restantes. Toda a construção do sistema terá com base a arquitetura da baseline.
O controle de recursos, custos e qualidade fazem parte deste processo. As fases da concepção e elaboração foram auxiliadas por gerenciamento da propriedade intelectual. Na fase de Construção, o foco estará no desenvolvimento dos produtos que serão construídos.
Espera-se atingir versões úteis com eficiência. As atividades devem ser coordenadas de forma que o paralelismo esteja presente. Mesmo em projetos pequenos, é possível coordenar as equipes para que os componentes independentes sejam elaborados em paralelo.
Ao concluir esta fase, chegaremos ao marco Capacidade Operacional Inicial (IOC – Initial Operational Capability). Espera-se neste momento que o produto esteja pronto para ser passo a equipe de Transição e que os testes alfa estejam concluídos (teste alfa consiste em testes de aceitação informal, onde os procedimentos de execução do teste não são definidos).
Os seguintes artefatos são esperados:
  1. O Sistema: o sistema executável pronto para começar o teste beta (teste não formalizado geralmente realizado pela comunidade de usuários).
  2. Plano de Implantação: plano que coordena e lista as atividades envolvidas na transferência do sistema da comunidade de desenvolvimento para a comunidade de usuários. Deve-se criar um plano inicial com baseline.
  3. Conjunto de Testes: Testes implementados e executados de cada release construído durante esta fase.
  4. Materiais de Treinamento: Manuais do usuário e outros materiais de treinamento.
  5. Plano de Iteração: Plano de iteração para a próxima fase (Transição), concluído e analisado.
  6. Modelo de Design: Atualizado com novos elementos de design identificados durante a conclusão de todos os requisitos.
  7. Caso de Desenvolvimento: Trata-se do refinamento do ambiente de desenvolvimento – processo e ferramentas – com objetivo de auxiliar a equipe da próxima fase.
  8. Ferramentas: Ferramentas da fase de Construção.
  9. Modelo de Dados: Atualizado com a experiência adquirida no processo de Construção.
     
Além dos artefatos obrigatórios descritos anteriormente, a fase de Construção também possui alguns artefatos opcionais, que são:
  1. Templates Específicos do Projeto: Os templates de documentos usados para desenvolver os artefatos de documentos.
  2. Especificações Suplementares: Atualizar as especificações já existentes caso sejam descobertos novos requisitos não funcionais.
  3. Modelo de Casos de Uso: Atualizado com os possíveis novos casos de usos descobertos durante essa fase.
     
A maturação da fase de Construção pode ser mensurada pelos critérios de avaliação descritos abaixo. O formato em perguntas persiste:
  1. O produto está completo o suficiente e com a qualidade mínima aceitável para iniciar o teste de aceitação?
  2. O usuário e a organização estão preparados para o início da implementação (transição do sistema)?
  3. As variações de custo e prazo são aceitáveis para os stakeholders?
     
O processo de Construção pode ser compreendido como um processo de manufatura. Obviamente o gerenciamento será adaptado para tal situação, levando em questões elementos como prazos, custos e recursos. Esta fase, assim como todas as outras do RUP, deve abordar a iteratividade, apresentando incrementos (releases do sistema) ao final de cada repetição. É estimado um esforço de programação por volta de 1/2 em relação ao projeto como um todo. Geralmente esta fase consome mais recursos e tempo, mas seu sucesso estará associado às questões bem (ou mal) resolvidas nas etapas anteriores. Certamente, o impacto dos riscos não descobertos (ou não avaliados) serão maiores nesta etapa.
Ao terminar essa fase, o sistema poderá ser transferido para os usuários.
 
Transição
Em síntese, o foco da fase de Transição é assegurar que o software esteja disponível para seus usuários finais. Ele deverá ser distribuído, ou seja, instalado para os clientes e usuários finais. É comum a continuidade do desenvolvimento do software demandado por feedback dos usuários. Deverão ser fornecidos, a cada ciclo da Transição, novos releases do produto. Existe também a possibilidade de que o fim do ciclo de vida do produto do projeto coincida com o início de outro ciclo de vida para o mesmo produto – como uma nova versão do software, por exemplo.
A complexidade inerente nesta fase varia de acordo com o produto e cliente. Um software comercial para uma nova microempresa pode gerar poucos problemas nesta etapa, ao passo que a substituição de sistemas previdenciários de um país pode levar anos para ser concluída.
É interessante que nesta fase, sejam definidas metas de acordo com o andamento do processo. Por exemplo, a alteração de uma falha de sistema pode envolver retrabalho na programação e teste. Ao passo que a correção de um requisito possa levar a um processo similar ao de Construção.
Ao final desta fase, encontra-se o marco Release do Produto (PR – Product Release). O principal aspecto centra-se na avaliação dos objetivos, se foram ou não atendidos, e na decisão de iniciar um novo processo de Construção com base nesses objetivos.
Os artefatos envolvidos neste marco são:
  1. O Build do Produto: deve ser fornecido um sistema concluído de acordo com os requisitos do produto, onde o consumidor final utiliza o sistema.
  2. Notas de Release: As Notas de Release identificam mudanças e erros conhecidos em uma versão de um build ou em uma unidade de implantação que tenha sido disponibilizada para uso (texto retirado da Referência). As notas devem estar concluídas.
  3. Artefatos de Instalação: elementos de instalação do software, como também a documentação associada.
  4. Material de Treinamento: O material deve estar concluído. A partir dele o cliente poderá utilizar o sistema.
  5. Material de Suporte para o Usuário Final: Material que colabora com a aprendizagem, manutenção e utilização do sistema.
     
Existem também os artefatos opcionais:
  1. Conjunto de Testes: O conjunto de teste associado em cada build poderá ser fornecido ao cliente.
  2. Empacotamento Compacto do Produto: Elementos fornecidos ao cliente com intuito de auxiliar o processo de compactação do produto.
     
Através dos Critérios de Avaliação descritos a seguir, podemos avaliar o andamento da fase de Transição.
  1. Os objetivos do projeto foram atingidos de acordo com os critérios de medição?
  2. As variações de custo e prazo são aceitáveis pelos stakeholders?
  3. Os usuários estão satisfeitos?
     
Ao final da fase de transição, espera-se que um ciclo do projeto, ou o projeto em si, tenha chegado ao fim. Geralmente, conforme mostrado na figura abaixo – retirada das Referências, o comportamento típico para um processo de software evolui e consome recursos de forma distinta para cada fase.
Como se pode ver, o tempo e recurso da Iniciação (Concepção) são significativamente menores do que o da Elaboração e Construção. A Transição está diretamente associada às características do projeto, porém espera-se que consuma menos tempo que a Construção.
Podemos observar o seguinte: projetos mal estruturados e pouco documentados, onde a análise e o gerenciamento foram negligenciados por pressões dos clientes/gerentes do projeto tornam o processo de Transição extremamente doloroso, onde muitas alterações e inclusões de requisitos devem ser realizadas. Na fase de Transição, a correção de falhas de sistema ou adaptação de requisitos devido a mudanças no escopo do produto é aceitável, porém a inclusão de requisitos que não foram capturados ou não documentados pela falta de coordenação e confiança nas fases de Iniciação e Elaboração é altamente prejudicial ao projeto. Isso é muito comum no desenvolvimento de software atual, mesmo existindo ferramentas e modelos de processo altamente suficientes para contornar tais problemas. Em casos como esses, ciclos completos (com as quatro fases) no projeto talvez sejam necessários.
Vale relembrar que os ciclos são previstos no RUP. Cada fase do projeto poderá ser repetida várias vezes. Inclusive as quatro fases podem ser repetidas, fornecendo incrementos (ou versões) em cada ciclo. O processo de desenvolvimento em fases é comum nos projetos atuais, seja na forma de desenvolvimento iterativo ou por incremento. No primeiro caso, o desenvolvimento iterativo fornece inicialmente um esqueleto do sistema, que será aperfeiçoado em cada fase. O esqueleto, porém, não traz confiabilidade nos requisitos de forma satisfatória. Isso será conquistado ao longo do processo. A figura abaixo ilustra este tipo de desenvolvimento.
Neste gráfico, os itens em branco foram apresentados de forma genérica, ainda sem contemplar as reais necessidades do negócio. Os itens em amarelo já foram ajustados aos requisitos. Observe que na Fase 1, apenas o módulo 2 é apresentado com coerência nos requisitos, enquanto os módulos 1 e 3 ainda são soluções paliativas para o problema - mas já podem ser utilizadas. Este contexto é comum para sistemas ERP, onde um grande sistema coorporativo (e pode-se dizer, genérico) existe e aos poucos é adaptado a realidade das empresas. Um exemplo típico é o sistema SAP/R3.
No desenvolvimento por incrementos, cada módulo é entregue em separado, sem um esboço geral do sistema, porém atendendo a real necessidade dos requisitos analisados.
Neste caso, o projeto desenvolverá o módulo 2 na primeira fase – isso porque a empresa cliente justificou que este incremento é o de maior prioridade para o negócio. Ao longo dos próximos ciclos, os outros módulos, também em ordem de prioridade, serão apresentados. A vantagem deste paradigma centra-se na qualidade alcança nos incrementos de maior importância. Como o cliente estipulou que o módulo 2 é de maior prioridade, este foi desenvolvido na íntegra, primeiro e, conseqüentemente, sofrerá maior carga de testes e validações dos requisitos se comparado com o módulo 1, que foi o último a ser entregue. As figuras apresentadas acima, que define o desenvolvimento iterativo e incremental, foram criadas por Flávio Mello, professor da UFRJ. Em uma aula que pude presenciar sua explicação ele abordou tais temas por meio dessas figuras. Achei interessante abordá-las aqui também.
Veremos agora a perspectiva estática do RUP.
 
Perspectiva Estática
A visão estática do RUP enfoca as atividades que ocorrem durante o processo de desenvolvimento. Elas são chamadas de workflows na descrição do RUP. Existem seis workflows de processo principais identificados e três workflows de apoio principais (Sommerville, 2007). Um workflow também é chamado de disciplina. Utilizaremos as duas formas para identificá-los, como prática comum em tais abordagens.
Ao longo do projeto você precisa construir artefatos (um nome elegante para documento, com alguma particularidade, do sistema). No RUP você constrói os artefatos por meio das atividades. Uma disciplina (workflow) mostra todas as atividades que você deve realizar para construir alguns artefatos.
As disciplinas não são temporais ou fixas nas fases. Isso significa que eu posso utilizar a disciplina de Requisitos na fase de Construção, mesmo que esta esteja naturalmente mais associada à fase de Concepção. Isso é válido para todas as disciplinas. Para enfatizar esse entendimento, por conveniência, repeti aqui o gráfico da disposição das disciplinas ao longo das fases do projeto.
Observe que elas são demandadas com maior ênfase em determinado momento, porém nada impede que sua utilização seja realizada em outras fases. As três disciplinas de apoio Gerenciamento de Configuração e Mudança, Gerencimanto de Projeto e Ambiente são mais distrubuídas por todas as fases, sem apresentar nenhum pico significativo. Isso é comum à tais disciplinas, pois como a própria descrição sugere, elas servem de apoio para todas as outras disciplinas e para o projeto como um todo.
Veremos agora uma abordagem sobre cada uma das disciplinas. Em primeiro plano, veremos os seis workflows principais.
 
Modelagem de Negócios
Os processos de negócios são modelados utilizando casos de uso de negócios (Sommerville, 2007). Em sintese, a modelagem de negócios se preocupa na descrição do negócio, identificação dos processos e no desenvolvimento do modelo de domínio, realizando refinamentos, projeções dos processos e levantamento dos papéis envolvidos. Essa disciplina é mais comum nas fases de Iniciação e Elaboração, porém é comum ser repetida nos projetos em que os requisitos sofrem alterações constantemente.
 
Requisitos
Trata principalmente da definição formal dos requisitos. Para novos sistemas, o problema é analisado com o objetivo de identificar os indivíduos, as fronteiras e restrições. Em casos onde já exista um sistema, os envolvidos são identificados com objetivo de conhecer melhor suas necessidades. Com base nos dados levantados, o sistema é definido, o escopo é elaborado e os requisitos mutáveis são gerenciados. Possui maior participação na fase de Iniciação e é normalmente utilizada durante toda a fase de Elaboração.
 
Análise e Design (ou Análise e Projeto)
Um modelo de projeto é criado e documentado usando modelos de arquitutura, modelos de componente, modelos de objeto e modelos de seqüência (Sommerville, 2007). Em primeiro momento uma sugestão de arquitetura é definida. Posterioremente, em paralelo com o refinamento da arquitetura, os comportamentos são analisados com o objetivo de projetar os componentes e o banco de dados do sistema. Está concentrada na fase de Elaboração e geralmente é refinada e ajustada na fase de Construção.
 
Implementação
Apesar de sua maior concetração na fase de Construção, a implementação está presente em todos os momentos. Na fase de Concepção os protótipos poderão facilitar o entendimento dos requisitos. Na fase de Elaboração, esboços da arquitutura poderão evoluir até que um nível satisfatório seja alcançado e que um protóripo para a arquitetura seja construído. Na fase de Transição, correções de falhas no sistema e ajustes são freqüentes. Na fase de Construção, em geral é definido um modelo de implementação e integração. Os subsistemas são construídos em forma de incrementos e integrados nos ciclos. A cada nova integração, os componentes individuais são testados, e existe um refinamento dos artefatos construídos, se necessário. A geração automatica, comum em ferramentas CASE, também pode ser utilizada neste momento.
 
Teste
Segundo Sommerville, o teste é um processo iterativo realizado em conjunto com a implementação. O teste do sistema segue o término da implementação. Os testes devem ser formalizados com o objetivo de identificar o foco adequado do esforço de teste para a iteração e estabelecer consenso com os envolvidos sobre as metas correspondentes que conduzirão o esforço de teste (Wthreex). Possui maior ênfase no final da fase de Construção.
 
Implantação
Nesta disciplina uma versão do produto é distribuída. Como previsto, sua maior utilização está centrada no marco PR (entre a fase de Construção e Transição). O teste de aceitação também precisa ser considerado. Artefatos como material de suporte precisão ser disponibilizados.
Veremos agora os três workflows de apoio.
 
Gerenciamento de Configuração e Mudanças
Gerencia as mudanças do sistema. Tarefas como Gerenciar Solicitações de Mudanças, Gerenciar Baselines e Releases e Planejamento de Controle do Projeto e Configuração de Mudanças são pertinentes e devem ser utilizadas. Apesar de suportar todo o projeto, possui mais demanda nas fases de Construção e Transição.
 
Gerenciamento de Projetos
Possui a característica de gerenciar o desenvolvimento do sistema. É uma disciplina ampla e deve ser considerada com atenção. A gerência de projetos é comum em diversos ambientes e possui referências importantes de mercado como o PMI. Recomendo leituras associadas ao Gerenciamento de Projetos para sua aplicação e utilização especializada neste workflow. O próprio RUP, um modelo genérico de processo de software, espera que exista uma abordagem empresarial do gerenciamento do projeto em sua estrutura. Deve ser utilizado em todas as fases.
 
Ambiente
Este workflow está relacionado à disponibilização de ferramentas de software apropriadas para a equipe de desenvolvimento (Sommerville, 2007).
Cada projeto possui sua particularidade. Em determinados casos, existirão maiores demandas de certos workflows para as fases iniciais, em quanto em outros, a maior atenção ocorrerá nas fases finais. Os dados mostrados neste documento e sugeridos na literatura sobre o assunto mostram aplicações corriqueiras para associar as disciplinas às fases. Mas o fato de serem tratadas como perspectivas dinâmicas e estáticas propõem justamente que não existam restrições nas suas combinações durante o projeto.
 
Perspectiva Prática
A adoção de boas práticas no desenvolvimento de software favorece o andamento do projeto e contribuí para o sucesso e aceitação do produto final. A perspectiva prática mostra justamente algumas práticas recomendadas no processo de software. São elas:
  1. Desenvolvimento Iterativo: característica já abordada neste estudo que indica que o software deve ser desenvolvido em incrementos, entregues em ordem de prioridade definida pelo cliente.
  2. Gerenciar Requisitos: Documentação formal dos requisitos e acompanhamento das mudanças. Sempre que houver solicitações de mudanças, avaliar o impacto no projeto antes da aceitação formal.
  3. Arquiteturas Baseadas em Componentes: o uso de arquiteturas baseadas em componentes, externos ou produzidos no projeto, facilita a produção do sistema. Deve ser considerada tal característica.
  4. Modelagem Visual: Utilizar modelos da UML para representar o software de forma estática e dinâmica. Conforme indicado, o RUP sugere a utilização da UML em seus projetos. Este item reforça isso.
  5. Verificar a Qualidade do Software: A qualidade do software deve ser monitorada e conduzida de forma a atender os padrões de aceitação do cliente. Isso influenciará o sucesso do projeto.
  6. Controlar as mudanças do software: As mudanças deverão ser gerenciadas durante todo o processo. Isso contribuirá para um projeto melhor estruturado, documentado e para sua continuidade e aceitação.

Conclusões
Neste documento, mostrei uma simplória abordagem sobre o modelo de processo de software RUP e sua importância num projeto. Minha intenção principal é apresentar o paradigma de desenvolvimento de forma conceitual. O RUP completo apresenta templates, entendimento dos papeis e suas importâncias, ferramentas, entre outros. Abordagens mais coerentes e completas deverão ser consultadas para fins de utilização específica. Recomendo que seja acessado o site Wthreex, cujo link encontra-se nas Referências, pois tal material é apresentado de forma completa e bem estruturada. A partir dos elementos deste site você poderá realizar seu processo de software utilizando todos os elementos presentes no RUP e, possivelmente, alcançar o sucesso do projeto.
Termino esse texto com uma reflexão simples, mas que serve de exemplo para aqueles que ainda resistem à utilização de processos que possam auxiliar o desenvolvimento do software.
Compare o desenvolvimento de software com o preparo de macarrão. Podemos preparar o macarrão de duas formas: a forma recomendada diz que devemos ferver a água, colocar o macarrão para cozinhar, verificar ao longo do processo se o mesmo já está pronto e por fim, colocar o molho. Existe também a forma fácil, onde se coloca a água, o macarrão e o molho tudo ao mesmo tempo e vai assistir televisão até que ele fique pronto. O primeiro método trará um excelente macarrão, mas muitas pessoas não gostam de utilizá-lo, pois acham uma perda de tempo (este é o meu caso, por exemplo). O segundo método tem como resultado uma gororoba braba, porém é mais fácil de atingi um resultado (ruim, porém mais rapidamente). Minha pergunta é: se seu trabalho fosse o de produzir macarrão para clientes e seu dinheiro dependesse da satisfação dos mesmos, qual dos dois métodos você utilizaria?
Então porque você insiste em produzir softwares negligenciando os processos de requisitos, documentação, análise e gerenciamento de projeto, se o resultado será, em geral, uma porcaria!

Referências
http://www.algosobre.com.br/portugues/usos-do-porque.html (afinal, errar é humano, mas corrigir o erro no Google também)
Ian Sommerville, 2007. Engenharia de Software, 8ª edição. Pearson Addison-Wesley.
José Carlos Cordeiro Martins, 2007. Técnicas para Gerenciamento de Projetos de Software. Brasport.


“São as nossas escolhas que revelam o que realmente somos, muito mais do que as nossas qualidades.” Alvo Dumbledore
Espero ter colaborado com algo!
Guilherme Pontes

sexta-feira, 3 de agosto de 2012

Métricas de Software

Neste material nós vamos abordar elementos conceituais associados com métricas de software utilizadas para mensuração de aplicações corporativas.

Introdução
Vamos entender o que são as métricas de software. Imagine o seguinte cenário: uma equipe de cinco pessoas precisa desenvolver um aplicativo para sua empresa. Essa necessidade concreta por si só não é suficiente para que os gerentes (de projeto e funcionais) da empresa realizem o estudo de viabilidade e orçamentário envolvido no projeto. O simples fato da necessidade não é capaz de responder a perguntas como: em quanto tempo o software poderá ser desenvolvido? Quanto custa o desenvolvimento deste software? Como estimar o desenvolvimento do projeto? Como vamos controlar e monitorar o desenvolvimento a partir de uma estimativa? Existem casos em que a medição do software é realizada por especialistas no desenvolvimento ou especificamente na aplicação a ser desenvolvida, como também por gerentes de projetos da área que conhecem bem a experiência e o potencial de sua equipe. Porém, este método é incapaz de estabelecer segurança nas estimativas e sustentabilidade nas mensurações futuras. Segundo Fábio Martinho Campos, em seu artigo disponibilizado no site Linha de Código,

Mas por maior que seja a experiência do profissional atuando como Gerente de Projetos de Software, ele fatalmente irá deparar-se com projetos de software que ainda não trabalhou, mesmo com algo similar, e pior ainda, iniciar trabalhos com uma equipe, onde ele não conhece os seus membros e nem suas capacidades.

Enfim, o desenvolvimento de software envolve métricas, muitas vezes subjetivas, que precisam ser estabelecidas e controladas para o bom andamento do projeto. Segundo o artigo disponibilizado na Wikipédia,

A métrica de software é a relação estabelecida entre medias de alguma propriedade do software ou da sua especificação.

Ou seja, são os elementos pelos quais podemos (teoricamente) mensurar o desenvolvimento de softwares.

Objetivos da medição de software
A medição do software pode ser aplicada em Processo de Software, que permite o melhoramento contínuo do mesmo, ou em Projeto de Software, que visa favorecer a estimativa do desenvolvimento, no controle da qualidade, na qualidade e no gerenciamento do projeto. Tendo em vista estes preceitos, a medição de software tem como os principais objetivos:

  1. Entender: Permite entender o funcionamento do software, tornando tangível seu comportamento para estabelecer marcos e critérios para o mesmo.
  2. Avaliar: Estabelecer critérios de aceitação ou metas a serem conquistadas. Também é possível monitorar o escopo e andamento do projeto.
  3. Controlar: Orientar o andamento do projeto do software para o caminho estabelecido no planejamento. Controlar seus processos e serviços.
  4. Prever: Permite o planejamento sustentável de acordo com as tendências mensuradas e previstas do software.
Certamente estes itens devem assegurar fatores essenciais como qualidade, avaliar a produtividade, aperfeiçoamento e escolha de ferramentas e métodos, compor base para estimativas, entre outros.

Tipos de medidas de software
Existem dois grupos de métricas de software:

Medidas diretas:
Com intuito de avaliar o esforço da manutenção e desenvolvimento do software, as medidas diretas são itens de fácil contabilização e devem trabalhar de acordo com padrões pré-estabelecidos. Têm-se como exemplo destas medidas: Velocidade de Execução, Quantidade de Memória utilizada, total de linhas de código geradas, número de erros por hora (ou outro período pré-definido). De certo, essas medidas são plausíveis e úteis, mas devem ser estudas com cautela, devido ao forte acoplamento (dependência) das ferramentas de programação e linguagem utilizada. Como exemplo, do item “linhas de código geradas”, é considerado inviável realizar uma comparação com códigos de COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
*
PROCEDURE DIVISION.
PARA-1.
DISPLAY "mundo, alo.".
*
STOP RUN.

que aliás, é extensamente utilizado no mundo, com códigos de Ruby on Rails

class FilmesController < ApplicationController
def index
render_text "Alô Mundo!"
end
end

também muito utilizada e intitulada como “código bonito”. Não poderíamos medir a eficiência/eficácia de dois programados apenas com as linhas que produzem “Alô mundo” de duas linguagens distintas.

Outro critério, como o “número de erros” seria completamente influenciado pelo tipo da linguagem e ferramenta utilizada. Ao programar em Eclipse ou Netbeans, o Java-mam teria, na grande maioria, erros de execução – devido à influência na qual tais aplicativos de desenvolvimento têm sobre a codificação. Já o programador de C/C++, desenvolvedor de Drivers para o Linux, teria diversos erros de sintaxe (além dos possíveis erros de execução) no seu aperfeiçoado editor de códigos “Vi”. Não seria justo comparar o desempenho destes dois elementos apenas pelos erros. Estas são apenas situações de reflexão, não necessariamente aplicáveis no mundo real.

Medidas indiretas:
Mais subjetivas, as medidas indiretas tentam estabelecer aspectos de muita importância no desenvolvimento, porém de difícil mensuração. Através destas medidas tenta-se encontrar pontos para Eficiência, Complexidade do software, Manutenibilidade, Funcionalidade, Qualidade e Confiabilidade.
Como exemplo de mensuração de métricas indiretas, temos a medição da qualidade. De acordo com o texto exposto no Devmedia, que faz referência à PRESSMAN (2001), qualidade de software é a conformidade a:

  1. Requisitos funcionais e não funcionais que têm sido explicitamente declarados
  2. Padrões de desenvolvimento que tenham sido claramente documentados
  3. Características implicitamente esperadas de todo software a ser desenvolvido.

De forma resumida, qualidade consiste de um conjunto de requisitos e de um produto ou serviço que esteja em conformidade com estes requisitos e, por esta razão, atenda completamente às necessidades dos clientes.
Pode-se entender que o controle deste item é subjetivo, além de trazer certa dificuldade de padronização e confiabilidade. A literatura sugere algumas atividades que podem ser utilizadas para analisar a qualidade do software. Veja uma relação a seguir:

  1. Manutenibilidade: grau de facilidade no qual o software pode ser corrigido, alterado e aperfeiçoado
  2. Correção: grau em que o programa opera de acordo com a especificação, ou seja, nível em que o software desempenha sua função necessária
  3. Integridade: capacidade de manter os dados e processos de forma íntegra, mesmo quando a utilização do mesmo for realizada de forma incorreta, propositalmente ou não, ou seja, grau em que o programa é capaz de se proteger de ataques externos
  4. Utilização: facilidade e praticidade na utilização do sistema, como também nível necessário para o uso e tempo necessário para adquirir eficiência no processo automatizado pelo software

Como se pôde perceber, critérios indiretos são subjetivos e necessitam de ferramentas e programas de gerência especializados para sua mensuração. Uma técnica utilizada para a qualidade, por exemplo, é a eficiência na remoção dos defeitos (DRE), que é obtida através do cálculo DRE = E / (E + D), onde E indica a quantidade de erros encontrados antes da entrega e a letra D, indica a quantidade de defeitos encontrados depois da entrega. Este tipo de estratégia oferece benefícios diretos tanto para o projeto quanto para o processo. Deve ser aplicado ao longo do projeto de engenharia do software.

Conclusões
Como conclusão desta básica referência ao estudo das métricas de software, tomei como base um texto disponibilizado no site scribd, que mostra uma reflexão breve sobre a importância e o impacto associado à mensuração dos softwares desenvolvidos para a equipe de desenvolvimento e para os gerentes de projeto – e conseqüentemente para a empresa.
A maioria dos desenvolvedores de software ainda não mede seu trabalho. Se isto ocorrer, não há forma real de determinar e verificar se existem melhoramentos no processo. O melhoramento deve existir sempre, caso contrário, o processo estará comprometido. Através da solicitação e avaliação de medidas de produtividade e qualidade, os gerentes devem estabelecer metas significativas para o aperfeiçoamento do processo de engenharia de software.

Referências:
PRESSMAN, R.S., 2001, Software Engineering: A Practitioner´s Approach, Fifth Edition, McGraw Hill.


"A Medição é uma atividade que faz parte de qualquer disciplina de engenharia", Roger Pressman
Obrigado pela leitura!
Guilherme Pontes