segunda-feira, 27 de maio de 2013

Fábrica de Software - X

Fundamentando o Conhecimento

Como estabelecer uma operação de software mais efetiva em termos de custo, agregação de valor ao negócio, qualidade, previsibilidade do atendimento aos serviços de desenvolvimentos e manutenção? Por onde começar o processo de implantação de gestão e de operação na área de TI? (Em especial na área de desenvolvimento de sistemas)

Gestão de Operações


Garante que os processos ocorram de acordo com padrões estabelecido, garantindo aos clientes os produtos e serviços previstos na contratação. Isso envolve planejamento prevendo estratégias para o entendimento dos diferentes domínios de negócio, sua transformação em sistema e aplicação produzindo os resultados esperados.

Operação de Software


Toda operação de software envolve custo, é preciso agregar valor ao negócio do cliente, os requisitos deve atender as necessidade do cliente e adequá-lo ao negócio, envolve também previsibilidade no atendimento aos serviços de desenvolvimentos e manutenção, garantido a continuidade da prestação de serviço.

Uma série de atividades como as listadas abaixo compõe a operação de software:


  • Análise da OS (Ordem de Serviço)
  • Especificação dos Requisitos
  • Desenvolvimento do Projeto
  • Construção do Sistema
  • Planejamento de Testes
  • Teste Unitário
  • Teste de Integração
  • Teste de Sistema
  • Instalação
  • Teste de Aceitação
  • Implantação
  • Ajustes


No modelo fabril as operações acima pertencem a disciplina Construção de Produto de Software, que fazem parte do Sistema de Gestão, podemos citar:
  • Gestão Estratégica
  • Gestão da Operação
  • Gestão do Projeto
  • Construção de Produto de Software


Aprendemos que o maior desafio neste novo cenário é manter a Fábrica de Software de forma regular e consistente ao longo do tempo, gerindo operações de software em larga escala e todas as suas variáveis e elementos que as  fundamentam, e isso só será possível com um processo bem definido.

Uma empresa que pretende trabalhar com o conceito de Fábrica de Software, precisa ter fundamentado as fases clássicas do processo de engenharia de software, como:
  • Planejamento
  • Especificação de Requisitos
  • Projeto de especificação
  • Especificação física
  • Construção (que abrange a programação)
  • Implantação
  • Transição (passagem para produção)


Pontos de atenção na evolução contínua do modelo Fabril:


  • Estabelecer objetivos da manufatura de software.
  • Focar no produto e nos processos - Software de Prateleira e Software Customizados.
  • Coletar os dados sobre o processo existente - Mapeamento dos processos existentes.
  • Estabelecer Sistemas de controle - Modelos de gestão PMI, SCRUM e etc.
  • Ferramentas para apoiar o controle dos projetos. 
  • Estabelecer controle de qualidade e círculos da qualidade.
  • Revisar dos padrões.  


  • Padronizar os métodos para o desenvolvimento - Conceito de "Pronto".
  • Desenvolver em ambiente on-line - ex. GSD - Global Software Development.
  • Implantação de Plano de Capacitação para os recursos, padronizando suas habilidades.
  • Criação de Base do conhecimento - Bibliotecas de código-fonte.
  • Metodologias integradas e ferramentas de desenvolvimento.
  • Ferramentas para geração de código, teste e documentação.
  • Intregrar ferramentas com banco de dados e plataformas de desenvolvimento.
  • Introduzir ferramentas de apoio à reutilização.
  • Introduzir ferramentas de automação e design.
  • Introduzir ferramentas de apoio à análise de requisitos.
  • Integrar ferramentas em plataforma de desenvolvimento.
  • Aumento da capacidade das ferramentas existentes.
  • Transferências de métodos e ferramentas para as subsidiárias.
  • Evolução dos métodos e ferramentas.

Quality Assurance

Importantes recomendações visando a qualidade na codificação, focar na qualidade dos processos de desenvolvimento e programação, ao invés de remover defeito em software através de teste, ou seja, antes de enviar o resultado do desenvolvimento para a equipe de Q.A., certificar se a equipe de desenvolvimento seguiu o prescrito nos processos delineado para a área.


Alguns princípios


  • Eliminar qualquer especificação ou porção de código que não adiciona valores efetivos às funções do software.
  • Eliminar, simplificar e automatizar os processos que possam causar problemas na fase de teste.
  • Testar e aperfeiçoar o processo, em vez do produto.
  • Enfatizar o treinamento e a aplicação disciplinada e consistente de padrões.
  • Promover autonomia às equipes para construir e implantar a arquitetura da Fábrica de Software.
  • Fazer grande uso de componentes reutilizáveis.
Referências


  • CMMI – Capability Maturity Model Integration - principal referência em gestão de processos de software em nível mundial. 
  • RUP – Rational Unified Process
  • Série ISO 
  • PMI – Project Management Institute.
  • SCRUM
  • XP - Extreme Programming

Resumo Código de Ética dos Engenheiros de Software



Os engenheiros de software devem estar convictos a fazer do conjunto da análise, da especificação, do projeto, do desenvolvimento, do teste e da manutenção de software, uma profissão benéfica e respeitada. De acordo com o seu comprometimento com a saúde, segurança, e bem-estar do público, os engenheiros de software devem adotar os oito princípios.

  • Público. Engenheiros de Software devem atuar consistentemente com os interesses públicos.
  • Clientes e empregados. Engenheiros de Software devem atuar de modo a atender os melhores interesses dos seus clientes e empregados, consistentemente com os interesses públicos.
  • Produto. Engenheiros de Software devem assegurar que seus produtos e modificações relacionadas atendam os melhores padrões profissionais possíveis.
  • Julgamento. Engenheiros de Software devem manter a integridade e independência nos seus julgamentos profissionais.
  • Administração. Administradores e líderes de Engenharia de Software devem aderir e promover uma abordagem ética ao gerenciamento do desenvolvimento e manutenção de software.
  • Profissão. Engenheiros de Software devem desenvolver a integridade e reputação da profissão consistentemente com os interesses do público.
  • Companherismo. Engenheiros de Software devem ser justos e dispostos a auxiliar seus colegas.
  • Identidade. Engenheiros de Software devem participar do aprendizado de suas vidas valorizando a prática da sua profissão e devem promover uma abordagem ética à prática da profissão.”

Grande Abraço,
Gilberto Ribeiro.

Nenhum comentário :

Postar um comentário