terça-feira, 19 de abril de 2011

CMM - Modelo de Maturidade da Capacidade

CMM (Capability Maturity Model)
Modelo de Maturidade da Capacidade


O Modelo de Qualidade de Software CMM é um modelo de avaliação e melhoria da maturidade de Processo de Software. O CMM, ou "Modelo de Maturidade da Capacidade" é uma iniciativa do SEI (Software Engineering Institute) para avaliar e melhorar a capacitação de empresas que desenvolvem e mantém software através de seus funcionários ou de contratados terceirizados.
O SW-CMM é um modelo que classifica o processo de desenvolvimento de software de uma organização segundo a sua maturidade, permitindo que a evolução deste processo seja medida e comparada com a de outras organizações.
Através da avaliação da maturidade é possível auxiliar o gerenciamento e mudança de processo, melhorar a qualidade do software.
O CMM é composto de cinco níveis de maturidade que indicam qual é a capacidade do processo. Cada nível é composto por áreas-chave do processo. Cada área-chave conduz ao alcance de metas de melhoria do processo e está organizada em Cinco Características Comuns que determinam práticas-chave referentes a implementações (atividades) ou institucionalizações (compromissos, habilitações, medições ou verificações).
O CMM classifica as organizações em cinco níveis de maturidade distintos, cada um com suas características. O nível 1 é o das organizações mais imaturas, nestas, não há nenhuma metodologia implementada e tudo ocorre de forma desorganizada. No nível 5, o das organizações mais maduras, cada detalhe do processo de desenvolvimento está definido, é quantificado, acompanhado e a organização consegue até absorver mudanças no processo sem prejudicar o desenvolvimento.

Os cinco níveis de maturidade oferecem uma forma incremental de amadurecimento do processo de software. Para atingir o nível 5, é preciso antes se obter a maturidade do nível 4, que por sua vez exige a do nível 3, e assim por diante.
·   Nível 1 – Inicial: o processo de desenvolvimento é desorganizado e caótico. Poucas atividades são definidas e o sucesso depende de esforços individuais.

·   Nível 2 – Repetível: os processos básicos de gerenciamento de projeto estão estabelecidos e permitem acompanhar custo, cronograma e escopo. É possível repetir e garantir o sucesso de um projeto utilizado anteriormente em outros similares.

·   Nível 3 – Definido: tanto as atividades de gerenciamento quanto as de engenharia do processo de desenvolvimento de software estão documentadas, padronizadas e integradas em um padrão de desenvolvimento da organização. Todos os projetos utilizam uma versão aprovada e adaptada do processo padrão de desenvolvimento de software da organização. 

·   Nível 4 – Gerenciado: a qualidade do produto e do processo de desenvolvimento de software é coletada através de métricas. Tanto o produto quanto o processo de desenvolvimento de software são entendidos e controlados quantitativamente.

·   Nível 5 – Otimizado: a melhoria contínua do processo é obtida através do controle, identificação, avaliação e desenvolvimento das técnicas de construção do software objetivando a melhoria das métricas de qualidade e produtividade.


Lista de empresas CMMI no Brasil:


Referencias:

terça-feira, 1 de março de 2011

Ciclo de Vida de Software

1. Pontos positivos e negativos do software na sociedade.

Atualmente os softwares possuem grande impacto na sociedade. Podemos perceber isso nos meios de comunicação, na área da saude, transportes, lazer, esportes, entre outros. Pontos positivos dessa presença impactante dos softwares na sociedade são, por exemplo, os meios de pesquisa que se tornam a cada dia mais eficientes. Anteriormente, uma pesquisa por meios de livros e revistas que demoraria muito tempo, hoje pode ser realizada em segundos. Seguindo a mesma linha de raciocinio, um dos pontos negativos seria a facilidade na qual o plágio é efetuado na internet.

2. Exemplos de softwares para cada modelo de ciclo de vida de desenvolvimento.

Espiral: Um sistema de aplicação em ambientes críticos como Bolsa de valores, ou controle aéreo.
Interativo: Aplicativos direcionados a diversão como Jogos.
Prototipação: O desenvolvimento de um site, onde se mostraria um protótipo ao cliente antes de finaliza para saber se atende ou não as suas necessidades e/ou definições.
Queda d’água: um bom exemplo de um sistema desenvolvido utilizado o modelo seria um sistema de uma locadora, onde se analiza desde o principio como será aplicado e a necessidade (em equipamentos) para se aplicar, por exemplo, uma locadora necessitaria de uma impressora fiscal, um controle de entrada e saída de vídeos, etc.

3. Desenvolvimento de um protótipo.

Sistema de gerenciamento de uma empresa que faz locação de veículos.

1. Tela de login.
2. Cadastro de clientes - adicionar, remover, alterar dados, consultar, listar todos.
3. Cadastro de veículos - adicionar, remover, alterar dados, consultar, listar todos, listar todos os disponíveis, listar todos os alugados.
4. Cadastro de locações - adicionar, remover, alterar dados, consultar, listar em andamento, listar finalizadas, listar todas.


4. Desvantagem do Modelo Iterativo.

Se houver uma falta de planejamento, a constante alteração que ocorre em sistemas gerados a partir desse modelo, pode tornar o sistema confuso, ou sobrecarregado. Um exemplo seria um sistema de uma empresa onde a cada momento é adicionado um novo menu, para determinada função. Com o tempo pode acarretar uma confusão se não for bem organizado.

5. Até onde vai o envolvimento do engenheiro de software.

Em casos onde durante a instalação de um sistema o cliente nega informações necessário e a responsabilidade em instalar o sistema é minha nesse caso deveria prosseguir, porém o prejuízo seria maior nesse caso é de suma importância que acompanhe e mostre os problemas ocorridos para a empresa a qual estou querendo prestar o serviço, indicando possíveis danos caso eu prossiga dessa forma, para então chegarmos a um consenso para resolução do problema.

6. Proposta de desenvolvimento de sistemas.


A melhor proposta de desenvolvimento, em minha opinião, é a de Meiler Jones
que tem os seguintes passos:
1. Reconhecimento do Problema
2. Estudo da viabilidade
3. Análise
4. Projeto
5. Implementação
6. Teste
7. Manutenção

7. Produto de forma "Gradativa"


Para disponibilizar um produto no mercado em versões que agreguem funcionalidades de forma gradativa, fazendo análise de risco para avaliar a viabilidade de desenvolvimento de uma nova versão, a melhor metodologia aplicada é a Espiral.


Por Anderson Luís Furlan e Claiton de Melo Marcílio.

CONCEITO

"A engenharia de software pode ser resumida no uso de procedimentos, regras 
e métodos computacionais baseado na elaboração de projetos de software, que 
visam o aperfeiçoamento das técnicas envolvidas no processo de desenvolvimento 
do mesmo, com o objetivo de se obter um produto final confiável,eficiente e 
com a máxima qualidade possível"
 
(Claiton M. Marcílio, Vunda Xavier)