quarta-feira, 30 de abril de 2014

Gerência – métricas de software



Gerência – métricas de software


Gerenciar Projetos

A gerência de projetos é a primeira etapa da engenharia de software. Um projeto para ser bem conduzido deve ter um escopo do trabalho, riscos, recursos exigidos, tarefas a serem executadas, marcos de referências que devem ser acompanhados pelo analista, custos e programação.

Um Projeto de Software

O primeiro passo antes de iniciar um projeto de software é verificar se os objetivos e o escopo foram estabelecidos. Caso isso não tenha acontecido o desenvolvedor de software deve se reunir com o cliente para que se possa definir o escopo.

Medições e Métricas

As medições são muito comuns, pois  tem dificuldades em concordar sobre o que se medir. é medido para que se possa indicar a qualidade do produto,  os benefícios, as estimativas e a justificar as novas ferramentas. são divididas em diretas e indiretas, as diretas são inclusas no custo e no esforço aplicado. as  indiretas do produto incluem a qualidade, funcionalidade, eficiência, complexidade, confiabilidade, manutenibilidade e muitas outras.

Métricas de software

• Métricas orientadas ao tamanho.
• Métricas orientadas à função.
• Métricas orientadas a seres humanos.
• Métricas técnicas.
• Métricas de qualidade.
• Métricas de produtividade.

Métricas Orientadas ao Tamanho

As métricas orientadas ao tamanho são as medidas do software e do processo por meio do qual ele é desenvolvido. as métricas orientadas ao tamanho provocam controvérsias e não são universais. Alguns estudiosos afirmam que as medidas em LOC (linhas de códigos).
Métricas orientadas à Função

As métricas orientadas à função são as medidas indiretas do software. Acontece de maneira que ao invés de se contar as linhas de códigos, a métrica concentra-se na funcionalidade do programa. Os pontos por função são completados a partir de uma tabela onde os valores são colocados da seguinte maneira:
O número de entrada do usuário: onde cada entrada do usuário que proporciona dados distintos à aplicação;
O número de saída do usuário: onde cada saída do usuário que proporcione informações à aplicação é contada,
Número de consultas do usuário: a consulta é definida com uma entrada on-line que resulte em uma resposta imediata de software
Número de arquivos: o arquivo mestre é um agrupamento lógico de dados onde pode ser uma parte de um banco de dados
Número de interfaces externas: são as interfaces legíveis por máquinas que são utilizadas para transmitir uma informação a outro sistema, necessário usar a seguinte fórmula: FP=contagem total * [0,65 + 0,01 * soma(fi)
Onde a contagem total é a soma de todas as entradas de FP (ponto por função) e Fi =( i = 1 a 14) são os valores de ajuste de complexidade. A medida de ponto por função foi idealizada para ser usada em aplicações de sistemas de informação

MÉTRICA DE QUALIDADE DO SOFTWARE

A qualidade pode ser medida ao longo de seu processo e depois que for entregue aos clientes. As métricas de qualidade nesta fase incluem a complexidade do programa. dão aos gerentes de projetos uma direção postmortem da efetividade do processo de engenharia de software,
ESTIMATIVA

O planejamento é uma atividade fundamental no processo de gerenciamento. os esforços humanos são estimados, duração cronológica do projeto e custo deve ser derivada. As estimativas têm atributos semelhantes conforme abaixo:
1. A criação do escopo do projeto deve ser estabelecida anteriormente;
2. As métricas de software são utilizadas;
3. O projeto de fracionado em pequenos pedaços

RISCOS (ANÁLISE)

Quando construímos um software fica alguma incerteza, pois o mesmo poderá apresentar defeitos. A análise de risco em um projeto é crucial para seu bom gerenciamento,
PRAZOS

Em todos os projetos existem prazos, e isso não é diferente na construção de um projeto de software.
CONTROLE

Quando um programa de desenvolvimento é estabelecido, dá-se início à atividade de controle do software. Cada tarefa é rastreada e colocada em anotações Com isso, recursos podem ser direcionados e tarefas adicionadas para que se possa acomodar o prazo do projeto.

ABORDAGEM DE MÉTRICAS

Existe relação entre pontos de função e as linhas de código. Alguns estudos vêm tentando relacionar as medidas de linhas de códigos (LOC) e de Ponto de função (FP), com isso temos uma lista que oferece algumas estimativas exigidos para construção de um ponto por função em linguagem de programação.

COBOL => LOC/FP média = 100
PASCAL=> LOC/FP média = 90
LINGUAGENS ORIENT A OBJETO => LOC/FP média = 30
LINGUAGENS QUARTA GERAÇÃO => LOC/FP média = 20
ADA =>LOC/FP média = 70
FORTRAN =>LOC/FP média = 100
LINGUAGEM ASSEMBLY =>LOC/FP média = 300

Existem cinco fatores que influenciam a produtividade do software:

• Os fatores Humanos - Experiência da organização de desenvolvimento;
• Os fatores do problema - Os problemas a serem resolvidos e as restrições do projeto;
• Os fatores do processo – linguagem e ferramentas disponíveis;
• Os fatores do produto – confiabilidade e desempenho;
• Os fatores de recursos – Ferramentas, cases, hardware e software disponíveis.

SOFTWARE



SOFTWARE

Podemos definir software como instruções de comandos de computadores para uma função desejada. Podemos dizer que são programas e rotinas de funcionamento de hardware. é um elemento lógico e não físico, a diferença em relação aos hardwares. Sendo assim, o software de computador produz informações a primeira são componentes que não são executáveis em máquinas e a segunda os componentes executáveis em máquinas. Uma das características de um componente de software e a reusabilidade. várias sub-rotinas foram criadas possibilitando sua reutilização em programas científicos. A linguagem de máquina é uma representação em conjunto de instruções da unidade central de processamento cahamada CPU. a linguagem de alto nível permiti que o programa e o desenvolvedor sejam independentes da máquina. Exemplos de linguagem de máquina são a COBOL e a FORTRAN. Um software pode ser aplicado em qualquer situação desde que um conjunto de procedimentos seja especificado, pois as informações e as determinações de fatores são pontos importantes em um aplicativo. O software é o acompanhante indispensável do hardware, com característica principal interligando os dispositivos, bem como conectando os usuários ao hardware por meio de programas de interação. No início da era da informática a maior preocupação dos desenvolvedores era com o custo de processamento e de armazenamento de dados.. Um exemplo que nos mostra perfeitamente essa evolução, tanto dos softwares como dos hardwares, é a comparação do mainframe da década de 80 com os computadores atuais. Nesse contexto, quando falamos na evolução do software dizemos que temos seis décadas de evolução. Na primeira os sistemas utilizavam-se de orientação em lote, chamamos de BATCH. Na segunda, que compreendeu os anos de 1960 a 1970, a multiprogramação e os sistemas multiusuários trouxeram uma maior interação entre o homem e máquina. A terceira começou na década de 70 e seguiu até o ano de 1985, marcada pelos sistemas distribuídos, colocando computadores em execução concorrente e em comunicação uns com os outros. Á quarta fase da evolução tem início com as tecnologias orientadas a objetos, em que os softwares de inteligência artificial começam a sair do papel para as aplicações em problemas reais e os softwares de rede neural abrem um caminho de possibilidades para o conhecimento de padrões e da capacidade de armazenamento e de processamento de informações com semelhança ao cérebro humano.

OS SOFTWARES E SUAS APLICAÇÕES


SOFTWARES BÁSICOS são programas que apoiam outros programas, têm como características: interação com o hardware, utilização por múltiplos usuários, operações concorrentes, compartilhamento de recursos, estrutura de dados complexa e múltiplas interfaces.

SOFTWARES TR (Tempo Real) são aqueles que monitoram, analisam e controlam eventos do mundo real

SOFTWARES COMERCIAIS são os mais utilizados, como exemplo temos o contas a pagar e a receber, administrativos, estoque, etc. Esses softwares têm como características a estruturação de dados de uma forma que venha a facilitar as operações e as tomadas de decisões. Em sua maioria são softwares bem interativos com o usuário.

SOFTWARES CIENTÍFICOS são aqueles que têm como características o uso de algoritmos de processamento de números. utilizados em diversas análises metrológicas, no uso da mecânica de automóveis e em geo-referenciamento. Um exemplos são os CADs, programas utilizados por arquitetos e engenheiros
SOFTWARES EMBUTIDOS são aqueles que vêm dentro de máquinas e residem em memória ROM. em fornos de micro-ondas, painel de leitura de velocidade em carros.

SOFTWARE DE INTELIGÊNCIA ARTIFICIAL os que fazem uso de algoritmos não-númericos para resolver um determinado problema complexo.

ENGENHARIA DE SOFTWARE

é uma disciplina que trata sobre a fabricação de software, desde seu estágio inicial, com suas especificações de sistemas, até a fase de manutenção dos sistemas. abrange três elementos fundamentais: os métodos, as ferramentas e os procedimentos. Neste sentido, os métodos proporcionam um detalhamento de como se construir um software, de seus requisitos e de sistemas, sua estrutura de dados, sua arquitetura e seu algoritmo de processamento, a codificação, teste e sua manutenção. As ferramentas da engenharia de software, vêm proporcionar um apoio aos métodos de forma automática ou semi-automática. Já os procedimentos são os elos entre os métodos que proporciona o desenvolvimento do software de computador.

O CICLO DE VIDA CLÁSSICO

O modelo de vida clássico, conhecido como modelo em cascata, vem mostrar uma forma sequencial no desenvolvimento de um software, que se inicia no nível de sistema e vem avançando em análise, projeto, codificação, teste e sua manutenção. O projeto é documentado tornando-se parte da configuração do software que é parte do ciclo em que o projeto deve ser traduzido em um modo legível por máquina. a fase de teste é realizada assim que o código é gerado e se concentra nos aspectos lógicos internos do software.

GERÊNCIA – PLANEJAMENTO



GERÊNCIA – PLANEJAMENTO

Planejamento e Gerência de Projeto de Software

Programação de projeto 
·         Dividir o projeto em tarefas e estimar tempo e recursos exigidos para completar cada tarefa.
·         Organizar as tarefas de forma concorrente para otimizar o uso da força de trabalho.
·         Minimizar dependências entre as tarefas para evitar atrasos causados por uma tarefa esperando para que outra seja completada.
·         Dependente da intuição e da experiência dos gerentes de projeto. 
Problemas de programação 
- É difícil estimar a dificuldade dos problemas e, como conseqüência, o custo de desenvolver uma solução.
- A produtividade não é proporcional ao número de pessoas trabalhando em uma tarefa.
- Adicionar pessoas a um projeto atrasado o torna mais atrasado ainda, em função da sobrecarga de comunicação.
- O inesperado sempre acontece. Deve-se ter sempre um plano de contingência.   
Diagramas de barra e redes de atividades 
·         Notações gráficas utilizadas para ilustrar a programação de projeto
·         Mostram a divisão do projeto em tarefas. As tarefas não devem ser muito pequenas. Elas devem tomar uma semana ou duas.
·         Diagramas de Atividade mostram as dependências entre as tarefas e o caminho crítico.
·         Diagramas de Barra mostram a programação contra o tempo do calendário.  
Gerenciamento de riscos 
- O gerenciamento de riscos preocupa-se em identificar os riscos e traçar planos para minimizar seus efeitos em um projeto.
- Um risco é uma probabilidade de alguma circunstância adversa acontecer
1. Os riscos de projeto afetam o planejamento e os recursos
2. Os riscos de produto afetam a qualidade ou desempenho do software em desenvolvimento
3. Os riscos de negócio afetam a organização que está desenvolvendo ou adquirindo o software.  
O processo de gerência de riscos 
·         Identificação de riscos
Identificar riscos de projetos, de produto e de negócios  
·         Análise de riscos
Avaliar as possibilidades e as conseqüências desses riscos  
·         Planejamento de riscos
Traçar planos para evitar ou minimizar os efeitos dos riscos
·         Monitoração de riscos
Monitorar os riscos durante todo o projeto.   
Identificação dos riscos 
·         Riscos tecnológicos
·         Riscos com pessoal
·         Riscos organizacionais
·         Riscos de requisitos
·         Riscos de estimativas  
Análise de riscos 
·         Verificar a probabilidade e seriedade de cada risco
·         A probabilidade pode ser muito baixa, baixa, moderada, alta ou muito alta.
·         Os efeitos dos riscos podem ser catastróficos, sérios, toleráveis ou insignificantes.   
Planejamento de riscos 
·         Considerar cada risco e desenvolver uma estratégia para gerenciar aquele risco
·         Estratégias preventivas
A probabilidade de que o risco irá surgir será reduzida
·         Estratégias de minimização
O impacto do risco no projeto ou produto será reduzido
·         Planos de contingência
Se o risco surgir, os planos de contingência serão utilizados para lidar com aquele risco.   
Monitoramento de risco 
·         Avaliar cada risco identificado regularmente para decidir se ele está se tornando menos ou mais provável
·         Avaliar também se os efeitos do risco têm sido alterados.
·         Cada um dos riscos principais deve ser discutido em reuniões de progresso de gerenciamento.  
Pontos principais 
·         Uma boa gerência de projetos é essencial para o sucesso de um projeto
·         A natureza intangível do software causa problemas para o gerenciamento
·         Os gerentes tem papéis diferentes, mas suas atividades mais significativas são o planejamento, a estimativa e a programação
·         O planejamento e a estimativa são processos iterativos, que continuam durante o curso de um projeto.
·         Um marco de projeto é o resultado previsto de uma atividade em que algum relatório formal de progresso deve ser entregue à gerência.
·         Os riscos podem ser riscos de projeto, riscos de produto ou riscos de negócios
·         O gerenciamento de riscos preocupa-se em identificar riscos que podem agetar o projeto ou o planejamento para garantir que esses riscos não se constituam em ameaças maiores.
Autoria: Elisson Oliveira Lima
http://www.coladaweb.com/informatica/planejamento-e-gerencia-de-projeto-de-software