New Post

Rss

Showing posts with label Custo. Show all posts
Showing posts with label Custo. Show all posts
Wednesday, November 30, 2011
no image

Desenvolvimento de Software: Custo da Qualidade

Segundo a American Society for Quality a qualidade é o “grau até o qual um conjunto de características inerentes satisfaz as necessidades”. No contexto de qualidade temos duas visões:

Visão do Produtor: a qualidade do produto está totalmente relacionada com os requisitos estabelecidos.Visão do Cliente: a qualidade está relacionada a “adequação ao uso” ou as necessidades do usuário.

Os times destinados a trabalhar neste meio devem encurtar o gap existente nestas duas visões. Para tal objetivo trabalha-se na Garantia da Qualidade e o Controle da Qualidade.

A Garantia da Qualidade são todas as atividades com o intuito de prover uma confiança adequada para os produtos e serviços de acordo com os requisitos especificados. O time da Garantia da Qualidade deve definir políticas e seguir modelos para desenvolver de forma contínua melhorias no processo de desenvolvimento. Metodologias de desenvolvimento, estimativa do processo, processos de manutenção, processos de definição de requisitos, processos de teste, padrões de desenvolvimento, treinamentos, documentação são exemplos de ações que um time de garantia pode realizar. Lembre-se que a qualidade do produto está relacionada a qualidade do processo.

Todo o trabalho e/ou ações que são produzidos na Garantia da Qualidade devem ser controlados. Com este objetivo definimos atividades para o processo de Controle da Qualidade. O foco do Controle da Qualidade é identificar defeitos nos produtos ou artefatos produzidos. Teste de software é uma atividade do Controle da Qualidade. A atividade de teste pode ser incluída em todas as fases do desenvolvimento de software, através de inspeções, revisões e execução de casos de teste.

Todas estas atividades têm um custo associado, sendo que, para que possamos calcular o custo da qualidade devemos considerar três elementos: o custo da falha, o custo da prevenção e o custo da avaliação, sendo cada um deles apresentados abaixo:

Custo da falha: custos associados com produtos defeituosos entregues ao cliente. Podemos associar a este custo os reparos, a utilização da equipe de help desk, bem como, os danos causados por um defeito.Custos da prevenção: são todos os custos associados com atividades que objetivam evitar defeitos. Podemos citar treinamentos, definição de métodos e procedimentos e aquisição de ferramentas. Observe que praticamente todas as atividades do time de Garantia da Qualidade estão associadas a este custo.Custo da avaliação: por fim, são todos os custos associados com a detecção de defeitos. Neste elemento podemos citar as atividades de teste de software, tempo gasto na automação de scripts de teste, revisões e inspeções.

Obviamente que o custo irá variar de uma organização para outra considerando a atividade que cada uma delas está disposta a fazer. A equipe de Garantia da Qualidade deve ser a responsável por identificar os custos destes três elementos, bem como, prover ações para minimizar o custo da falha.

Normalmente as organizações focam no custo de avaliação, porém, se o investimento for maior na prevenção ao longo do tempo o custo da falha e da avaliação tende a diminuir.

André Tocchetto. Meste em Computação Aplicada, CSTE e ITIL v2 Foundation. Atualmente atua como Coodenador da TI, Professor e Coodenador de Curso Tecnólogo em Análise e Desenvolvimento de Sistemas. Twitter: @tocchetto

Veja perfil e 1 post(s)

Tuesday, July 5, 2011
no image

Custo de software, qual a melhor maneira de reduzí-lo?

Todos desejamos reduzir custos de qualquer tipo, tanto os pessoais como o de empresas. Na área de TI, podemos utilizar o TCO (Total Cost of Ownership) para nos ajudar a verificar custos e ações gerenciais para reduzi-los, relacionados a sistemas da empresa.

Utilizado pela primeira vez em 1987, o TCO  foi criado pelo Gartner Group, como medida e aproximação para gerenciamento e redução de custos, envolvendo pessoas, processos e tecnologia. Neste cenário, precisamos estar cientes que os custos relacionados a sistemas, não estão restritos apenas aos custos de aquisição ou desenvolvimento dos mesmos.

Na verdade, o ciclo de vida de um sistema incorpora o ciclo de desenvolvimento do mesmo além do custo operacional que considera os envolvidos em manutenções, tanto corretivas quanto evolutivas.

Neste contexto, a ISO/IEC 12207 considera o desenvolvimento e manutenção do software como processos que compõem o ciclo de vida de software, desde sua criação até a descontinuação do mesmo, compondo o TCO relacionado ao produto de software.

Deste modo, o custo de manutenção torna-se um ponto de grande importância para as empresas. No dia a dia percebe-se que muitas pessoas não possuem um sentimento claro, do quanto pode custar a manter um sistema de baixa qualidade em operação após sua implantação.

Já presenciei empresas com legado composto por diversos sistemas sem documentação, baixa qualidade e que, frequentemente, apresentam problemas de funcionamento. Além das paradas no negócio da empresa, estes sistemas geram perdas imensuráveis, relacionadas à sua imagem perante o mercado e clientes. Isto quando os usuários previstos para o sistema acabam nunca utilizando o mesmo, devido a ele cair em descrédito. Neste caso, todo o investimento é perdido por desinteresse em sua utilização.

Você continuaria utilizando uma operadora de telefonia celular que vivesse fora do ar? Para quantas pessoas você falaria mal desta empresa e qual seria o impacto no negócio da mesma? Qual o prejuízo gerado para ela?

O que já vi algumas vezes e que infelizmente acabarei vendo novamente, são pessoas acreditando que desenvolver software utilizando processos e o paradigma Orientado a Objetos, não são necessários e até mesmo, bobagem. Simplesmente acham que não vale a pena gastar e esperar mais, para ter seus sistemas desenvolvidos utilizando as melhores práticas de Engenharia de Software de mercado.

A verdade é que tudo que deixa de se gastar desenvolvendo software AD HOC, se gasta muitas vezes mais nos processos de manutenção dos sistemas, além de eventuais impactos imensuráveis de imagem junto ao usuário e/ou cliente.

Mas pense bem, se fosse realmente bobagem utilizar metodologias e orientação a objetos, por exemplo, por que grandes empresas como a Sun Microsystems, atualmente adquirida pela Oracle, teria gasto tanto esforço de excelentes profissionais nesta área?

Estudos mostram que cerca de 50% do tempo gasto em manutenções é gasto no processo de entendimento do código a ser manutenido (Fjeldstad & Hamlen, 1983; Standish, 1984). Isto evidencia a importância de um código bem implementado e documentado.

Redução de custos, o que todos desejam

Com o propósito de reduzir custos, podemos mesclar uma série de opções, tais como, renegociar com fornecedores, trocar fornecedores, ajustar Acordos de Nível de Serviço, realizar (re)engenharia de processos de negócios, rastrear gastos, considerar alternativas de Outsourcing, trocar recursos para localização de custos mais baixos substituir tecnologias/sistemas ultrapassados, gerenciar portfólio TI e minimizar custos operacionais com TI.

Dos pontos apresentados acima, percebemos que substituir tecnologias/sistemas ultrapassados, através de outras mais alinhadas ao negócio da empresa e minimizar custos operacionais com TI, através da utilização de sistemas com custos de manutenção menor e maior qualidade, estão alinhados aos objetivos da Engenharia de Software.

A grosso modo, todas as empresas querem e precisam gastar o mínimo possível na aquisição e manutenção de sistemas.

Também as empresas que desenvolvem software querem produzi-los no menor custo e prazo.

Novamente, a Engenharia de Software pode ajudar muito para se atingir estas metas.

Mas como aumentar a qualidade do software?

Podemos citar algumas sugestões, tais como, utilização de uma Metodologia de Desenvolvimento de Sistemas faseada, que possua processo formal de testes/qualidade e documentação, esta para agilizar eventuais manutenções evolutivas e correção de bugs. Primordialmente devemos ter um eficaz levantamento e gerenciamento de requisitos, utilizar equipes de desenvolvimento e testes com pelo menos um profissional sênior, utilizar as melhores práticas de mercado, utilizar design patterns que são soluções de mercado testadas e utilizadas por centenas de profissionais e empresas há muito tempo.

Para saber mais, leia o livro Engenharia de Software na Prática: Editora Novatec, 2010. ISBN 978-85-7522-217-1