Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 07 Engenharia de Software para Concursos - Curso Regular Professor: Diego Carvalho Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 1 de 118 AULA 07 SUMÁRIO PÁGINA Apresentação 01 - Métricas de Software 03 - Análise de Pontos de Função 23 Lista de Exercícios Comentados 90 Gabarito 117 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 2 de 118 Engenharia de Software. Conceitos Básicos ou Gerais. Ciclo de vida do software. Modelos, Metodologias ou Processos de Desenvolvimento de Software: Modelo em Cascata. Modelo Orientado a Reuso. Modelo em Prototipagem, Modelo Evolucionário, Modelo Espiral, Modelo Formal, RAD, Modelo Iterativo e Incremental. Processo Unificado: Conceitos Básicos, Dimensões Dinâmica, Estática e Prática, Gráfico das Baleias, Fases (Iniciação, Elaboração, Construção e Transição), Disciplinas ou Fluxo de Processos (Modelagem de Negócio, Requisitos, Análise e Projeto, Implementação, Teste, Implantação, Gestão de Configuração e Mudança, Gestão de Projetos, Ambiente), Artefatos, Atividades, Melhores Práticas, Principais Marcos, Princípios Chaves. Metodologias Ágeis de Desenvolvimento de Software: Scrum, eXtreme Programming (XP), Feature-driven Development (FDD), Test-driven Development (TDD), Acceptance Test-driven Development (ATDD), Kanban. Definição de Requisito, Classificação de Requisitos (Funcional, Não- Funcional, Domínio; Produto, Organizacional, Externo; Confiabilidade, Proteção, Desempenho, etc); Engenharia de Requisitos: Estudo de Viabilidade, Elicitação e Análise de Requisitos, Especificação de Requisitos, Validação de Requisitos, Gestão de Requisitos. Técnicas de Elicitação e Técnicas de Validação. Linguagem de Modelagem: Unified Modeling Language (UML) 2.x – Contexto Histórico, Conceitos Básicos, Tipos de Diagramas (Estruturais, Comportamentais, Interação). Diagramas de Classes, Componentes, Implantação, Perfil, Objetos, Estrutura Composta, Pacotes, Máquina de Estados, Casos de Uso, Atividades, Sequência, Comunicação, Interação Geral e Tempo. Conceitos Básicos do Paradigma Estruturado. Conceitos Básicos de Orientação a Objetos: Classes, Objetos, Atributos, Métodos, Mensagens, Abstração, Encapsulamento, Polimorfismo, Herança, Relacionamentos). Análise e Projeto: Conceitos Básicos, Diferenças, Modelos, Classes de Fronteira, Controle e Entidade. Análise de Pontos de Função: IFPUG – Definição e Contexto, Benefícios e Vantagens, Componentes de Dados (AIE, ALI) e Transação (EE, SE, CE), Etapas do Procedimento de Contagem: Determinar Tipo de Contagem, Determinar Escopo e Fronteira, Cálculo dos Pontos de Função Não-Ajustados, Cálculo do Fator de Ajuste, Cálculo dos Pontos de Função Ajustados. NESMA - Tipos de Contagem e Deflatores. Qualidade de Software: Garantia e Controle, Principais Características, Verificação & Validação, Erro, Falha, Falta e Defeito. Testes de Software: Conceitos Básicos, Processo de Testes, Técnicas de Testes (Teste Caixa Banca, Cinza e Preta), Níveis de Testes (Teste de Unidade, Módulo, Componente; Teste de Integração; Teste de Aceitação, Validação, Release; Teste de Sistema/Funcional). Tipos de Testes: Carga, Estresse, Volume, Desempenho, Usabilidade, Cenários, Regressão, Back-to-Back, Comparação, Recuperação, Alfa, Beta, Compatibilidade, Estático, Dinâmico). Arquitetura de Software. Arquitetura em Camadas (Cliente/Servidor). Arquitetura MVC. Arquitetura Distribuída. Arquitetura Hub. Arquitetura Microsserviços. Arquitetura Mainframe. Arquitetura Orientada a Serviços (SOA): Conceitos Básicos, SOAP, WSDL, UDDI. REST. WS-Security. Interoperabilidade de Sistemas. e- PING: Conceitos Básicos, Interoperabilidade, Escopo, Políticas Gerais, Segmentação, Gestão. Acessibilidade de Sistemas. e-MAG 3.1: Conceitos Básicos, Acessibilidade, Acesso, Passos para um Sítio Acessível, Segmentos, Recomendações. Engenharia de Usabilidade. Gerenciamento Eletrônico de Documentos (GED). Portais Corporativos e Colaborativos. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 3 de 118 MÉTRICAS DE SOFTWARE De acordo com Sommerville: “A medição de software se dedica a derivar um valor numérico para algum atributo de um produto de software ou de um processo de software. Comparando-se esses valores uns com os outros e aos padrões que se aplicam em uma organização, você pode ser capaz de tirar conclusões sobre a qualidade de software ou dos processos de software”. As medições de software podem ser usadas para realizar previsões gerais sobre um sistema, i.e., encontrar uma estimativa geral de algum atributo do sistema (ex: quantidade de defeitos) ou para identificar componentes anômalos, i.e., partes que possuem características que desviam de alguma regra específica. Uma métrica de software é uma medição que se refere a um software, processo ou documentação. Na maioria dos empreendimentos técnicos, as medidas e as métricas ajudam-nos a entender o processo técnico usado para desenvolver um produto. O processo é medido num esforço para melhorá-lo, e o produto é medido para aumentar sua qualidade, quantificar e administrar mais efetivamente. Vamos ver agora algumas métricas e grupos (observem que uma métrica pode pertencer a mais de um grupo). Métricas de Software podem ser de controle ou de predição: Métricas de Controle/Processo: estão relacionadas a processos de software; são utilizadas para tomada de decisões sobre alterações no processo de desenvolvimento de software, por exemplo: esforço médio e tempo necessário para reparar os defeitos reportados. Métricas de Predição/Produto: estão relacionadas a produtos de software; são utilizadas para estimar o esforço necessário para construção ou alteração de software e auxiliam a prever características dele, por exemplo: complexidade de um módulo ou a extensão média dos identificadores em um programa. Métricas de Predição/Produto podem ser internas/estáticas ou externas/dinâmicas: Métricas Estáticas ou Internas: são aquelas coletadas em representações do sistema como projeto, programa ou documentação – sem a necessidade da execução dos programas. Ajudam a mensurar a complexidade e a facilidade de 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 4 de 118 compreensão e manutenção de um sistema de software. Permitem medir a qualidade dos artefatos intermediários e prever a qualidade do produto final. Métricas Dinâmicas ou Externas: são aquelas coletadas durante a execução de um programa, a partir do comportamento do sistema ou do seu efeito no ambiente real de operação. Elas ajudam a avaliar a eficiência e a confiabilidade de um programa e quase sempre estão relacionadas com atributos da qualidade de software. Métricas de Software podem ser diretas ou indiretas: Métricas Diretas: também conhecidas como básicas, quantitativas ou primitivas, são aquelas que não dependem da medição de outros atributos, por exemplo: custo/esforço do desenvolvimento, linhas de código, velocidade de execução, quantidade de memória, número de erros, quantidade de defeitos. Métricas Indiretas: também conhecidas como qualitativas ou derivadas, são aquelasque dependem da medição de outros atributos. Por exemplo: produtividade, qualidade e técnicas (funcionalidade, complexidade, eficiência, confiabilidade, manutenibilidade, modularidade, portabilidade). Métricas de Software podem ser orientadas a tamanho, função ou pessoas: Métricas Orientadas a Tamanho são aquelas baseadas no número de linhas de código produzidas, também conhecidas como Lines Of Code (LOC).1 Métricas Orientadas à Função: são aquelas baseadas na funcionalidade do software, tais como Análise de Pontos de Função. Métricas Orientadas a Pessoas são aquelas que indicam a forma como as pessoas devem desenvolver programas de computador. Métricas de Software podem ser objetivas ou subjetivas: Métricas Objetivas são aquelas que independem do autor da medição ou julgamento humano, por exemplo: quantidade de defeitos. 1 Como medir Produtividade? KLOC/Pessoa-Mês. Como medir Qualidade? Erros/KLOC. Como medir Custo? $/KLOC. Como medir Documentação? Páginas/KLOC. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 5 de 118 Métricas Subjetivas: são aquelas que dependem do autor da medição ou julgamento humano, por exemplo: classificar criticidade de um defeito. Vejamos outras métricas diversas: Métricas de Produtividade: concentram-se na saída do processo de engenharia de software (Ex: KLOC/Pessoa-Mês). Métricas de Qualidade: indicam o quanto o software atende aos requisitos definidos pelo usuário. Métricas Técnicas concentram-se nas características do software (Ex: complexidade, modularidade, manutenibilidade, funcionalidade, etc). Geralmente, é impossível medir os atributos de qualidade de software diretamente. Os atributos de qualidade (como facilidade de manutenção, facilidade de compreensão e facilidade de uso) são atributos externos que se relacionam a como os desenvolvedores e os usuários veem o software. Eles são influenciados por muitos fatores e não existe uma maneira simples para medi-los. Em vez disso, você deve medir algum atributo interno do software (como seu tamanho) e presumir que há um relacionamento entre o que você pode medir e o que realmente quer conhecer. Professor, pode dar um exemplo? Para medir a confiabilidade de um sistema, eu posso medir o tamanho do programa em linhas de código; o número de mensagens de erro; e sua complexidade ciclomática. Outro exemplo? Para medir a facilidade de uso, eu posso medir o tamanho do manual do usuário do programa e a quantidade de mensagens de erro. Professor, isso serve para tudo? Não! Características de software como tamanho ou complexidade ciclomática não têm um relacionamento claro e consistente com atributos de qualidade, como facilidade de compreensão ou manutenção. O que fazer, então? Bem, uma alternativa seria coletar uma grande quantidade de dados de sistemas existentes e descobrir como os atributos de produto de software se relacionam com as qualidades externas. As métricas de produtos se dividem em duas classes: métricas dinâmicas, coletadas em um programa em execução; e métricas estáticas, coletadas em uma documentação, projeto, etc. Em geral, métricas dinâmicas ajudam a avaliar a eficiência e a confiabilidade de um programa. Já as métricas estáticas ajudam a avaliar a complexidade, facilidade de 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 6 de 118 compreensão e facilidade de manutenção de um sistema de software. As métricas dinâmicas geralmente possuem uma relação mais estreita com atributos de qualidade de software do que as métricas estáticas. Vamos ver algumas métricas? Fan-in/Fan-out: Fan-in é uma medida do número de funções ou métodos que chamam alguma outra função ou método (digamos X). Fan-out é o número de funções chamadas pela função X. Um valor alto para fan-in significa que X está firmemente acoplado com o resto do projeto, e mudanças em X terão grande impacto. Extensão de Código: É uma medida do tamanho de um programa. Geralmente, quanto maior for o tamanho do código de um componente, mais complexo e propenso a erros esse componente será. A extensão de código foi mostrada como uma das métricas mais confiáveis de previsão de propensão a erros em componentes. Complexidade Ciclomática: É uma medida da complexidade de controle de um programa. Essa complexidade de controle pode estar relacionada à facilidade de compreensão do programa. Utiliza a fórmula M = E – N + 2.P (M = Complexidade Ciclomática; E = Quantidade de Setas; N = Quantidade de Nós; P = Quantidade de Componentes Conectados). Extensão de Identificadores: É uma medida da extensão média de identificadores distintos em um programa. Em geral, quanto maiores forem os identificadores, mais eles serão significativos e, por isso, mais compreensível será o programa. Vocês entendem isso? Uma variável com 30 caracteres, em geral, possui mais significado. Profundidade de Aninhamento de Declarações Condicionais: É uma medida da profundidade de aninhamento de declarações IF em um programa. As declarações IF profundamente aninhadas são difíceis de compreender e são potencialmente propensas a erros. Basta imaginar um IF dentro de um IF dentro de um IF dentro de um IF – fica complicado! Índice de Fog 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 7 de 118 É uma medida da extensão média das palavras e das sentenças em documentos. Quanto maior for o valor para o índice de Fog, mais difícil será a compreensão de documentos. Galera, vocês devem saber como é chato ler documentação e o Índice de Fog ajuda a medir aqueles mais difíceis de entender. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 8 de 118 As métricas de qualidade de software são um subconjunto das métricas de software que se focam em aspectos de qualidade do produto, processo e projeto. As métricas do produto descrevem características do produto como tamanho, complexidade, design, performance e níveis de qualidade. Métricas de processo podem ser usadas para melhorar o desenvolvimento e manutenção do software. E as métricas de projeto descrevem as características do projeto em desenvolvimento como o número de desenvolvedores, utilização de padrões, custo, produtividade, entre outros. Nós iremos ver agora mais detalhadamente cada um desses tipos de métricas. Eles caem pouco em prova, bem menos que as métricas já citadas anteriormente. Comecemos pelas Métricas de Qualidade do Produto! A definição de qualidade de software consiste de dois níveis: qualidade intrínseca do produto e satisfação do cliente. Cobrindo ambos os níveis, temos: Tempo Médio entre Falhas e Densidade do Defeito. A qualidade intrínseca do produto é medida pelo número de bugs no software ou tempo que o software pode rodar sem falhar. Vamos detalhá-los melhor! O Mean Time To Failure (MTTF) é a métrica de robustez mais utilizada em sistemas críticos, como sistemas de controle de tráfego aéreo. Querem um exemplo? O Governo dos EUA exige que seu sistema de tráfego aéreo não fique indisponível por mais de três segundos por ano! Sinistro, não é?! Já a Densidade de Defeito, em contraste,é utilizada em muitos sistemas comerciais. Essas métricas são parecidas, mas a primeira mede o tempo entre falhas e a segunda mede os defeitos relativamente ao tamanho do software (linhas de código, pontos de função, etc) e o tempo. Professor, existe diferença entre falha e defeito? Sim, mas na prática – nesse contexto – são iguais. A Densidade de Defeitos, então, mede a quantidade de defeitos durante um período de tempo pelo tamanho do software. O número de defeitos pode ser relativo a um determinado período (mês, trimestre, ano, etc), ou a uma determinada fase do ciclo de vida do software, ou ao ciclo de vida de software como um todo. Sua utilização permite a identificação de MÉTRICAS DE QUALIDADE DE SOFTWARE 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 9 de 118 componentes de alto risco e permite a comparação de produtos pela medição da qualidade de cada um. Existe também uma métrica similar ao MTTF! Qual é, professor? É a Mean Time Between Failure (MTBF) – trata-se do tempo médio entre falhas, i.e., tempo entre duas falhas sucessivas no sistema, expressa na maioria das vezes em horas, e é uma métrica chave para sistemas que podem ser reparados ou restaurados. Assim, é possível prever quando será a próxima falha do sistema2. Quanto às Métricas de Qualidade de Processo, elas são utilizadas para melhorar o desenvolvimento de software e sua manutenção. Estas métricas tornam-se muito importantes em um processo de desenvolvimento, pois medem vários parâmetros nas várias fases do processo. Um exemplo seria a Efetividade de Remoção de Defeitos, como mostra a fórmula abaixo: Um fato importante é que a utilização desta métrica em todas as fases do processo de desenvolvimento faz com que seja possível medir a efetividade de remoção de defeitos e a injeção de erros, e com isso poder rastrear as fases que mais injetam erros na aplicação. Outras métricas são: Índice de Manutenção de Erros, Cobertura de Testes, Cobertura de Testes Modulares/Funcionais, etc. Por fim, as Métricas de Qualidade de Projeto são mais voltadas às características do projeto e de sua execução, e geralmente são montadas a partir da combinação das métricas de produto e processo (Ex: Número de Desenvolvedores, Ciclo de Vida, Custo, Cronograma, Produtividade, etc). Pessoal, existem muito mais métricas! No entanto, nosso estudo tem que ser objetivo e isso cobre 95% do que cai... 2 É mais utilizado com hardware, mas pode ser também utilizado com software. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 10 de 118 Vamos falar agora sobre Métricas de Qualidade de Código-Fonte! A crescente adoção de programas de código aberto e de métodos ágeis pela indústria de software promove o código-fonte a um dos artefatos mais importante para se medir a qualidade de software. Com isso, as métricas de qualidade de código-fonte são mecanismos fundamentais para avaliação desses sistemas. A utilização de métricas de qualidade de código-fonte como critério para a avaliação da qualidade de um software é motivada por estudos que indicam ser viável analisar algumas das principais características para a aceitação de um software, tais como: flexibilidade, complexidade e manutenibilidade a partir do código-fonte. Você para e pergunta: o que tem um código-fonte de qualidade? Ora, um código- fonte será muito mais lido do que escrito no decorrer de seu ciclo de vida (manutenção, reúso, etc). Dessa forma, nós podemos afirmar que um código-fonte de qualidade é Legibilidade, Testabilidade, Flexibilidade, Compatibilidade e Economicidade. Legibilidade: o código (comentário, não) deve claramente declarar sua intenção. Se o leitor não consegue ver sentido no código, todos os outros esforços para melhorar a qualidade do software estão fadados ao fracasso. Testabilidade: o código deve ser organizado de uma forma que facilite o teste de unidade. Isso apoia todos os esforços subsequentes (refatoração, correção de defeitos, revisão devido a alteração de especificações, etc). Flexibilidade: dependência em relação a outros códigos devem ser minimizadas. Construir implementações hard-coded (i.e., fixas) sobre tamanhos e estruturas de dados, classes concretas, etc tornam o código difícil de reusar e adaptar. Compatibilidade: o código deve cumprir com seus requisitos, funcionais ou não. Notem que uma discussão sobre se os requisitos implementados são os requisitos corretos não cabe aqui. Economicidade: o código deve fazer uso razoável dos recursos do sistema: memória, processamento, etc. Devemos pensar sobre o retorno sobre investimento e requer uma reflexão sobre todos os recursos investidos. MÉTRICAS DE QUALIDADE DE CÓDIGO 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 11 de 118 (FCC - 2012 - - - Analista Judiciário - Análise de Sistemas) Métricas de software são formas de quantificar o esforço necessário para a construção de um sistema de software. Sobre métricas de software é correto afirmar que: a) um indicador é parte de uma métrica. b) custo, funcionalidade e número de erros são métricas indiretas. c) a métrica de pontos de função só pode ser calculada com o código terminado. d) linhas de código, esforço e memória são métricas diretas. e) métricas de produtividade indicam o quanto o software atende aos requisitos. Comentários: a) Na verdade, métricas são parte de um indicador; b) Não, são métricas diretas; c) Não, podem ser calculadas antes, durante e depois; d) Sim, são métricas diretas; e) Não, essas são métricas de qualidade. Gabarito: D (FCC - 2011 - TCE-PR - Analista de Controle - Informática) Métricas de software podem ser divididas em medidas diretas e indiretas, sob o ponto de vista de medição, e em métricas de produtividade e de qualidade, sob o ponto de vista de aplicação. Nesse contexto, as métricas que se concentram na saída do processo de engenharia de software e as métricas que indicam o quanto o software atende aos requisitos definidos pelo usuário, podem ser classificadas, respectivamente, como métricas de: a) custo e de complexidade, em medidas indiretas. b) esforço e de confiabilidade, em medidas diretas. c) produtividade e de qualidade, em medidas indiretas. d) qualidade e de eficiência, em medidas diretas. e) velocidade de execução e técnica, em medidas diretas. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 12 de 118 Comentários: Tratam-se das Métricas de Produtividade e Qualidade – ambas são medidas indiretas. Gabarito: C (FCC - – TRF/5 - Analista de Controle - Informática) Medidas diretas e indiretas podem definir: a) qualidade e produtividade para o processo de engenharia de software, bem como para o próprio software. b) produtividade para o processo de engenharia de software e qualidade para o software. c) produtividade para o software e qualidade para o processo de engenharia de software, respectivamente. d) qualidade para o processo de engenharia de software e produtividade para o software. e) qualidade para o software e produtividade para o processo de engenharia de software, respectivamente. Comentários: MétricasDiretas: também conhecidas como métricas básicas ou quantitativas, são aquelas que não dependem da medição de outros atributos, por exemplo: custo/esforço do desenvolvimento, linhas de código, velocidade de execução, quantidade de memória, número de erros, quantidade de defeitos. Métricas Indiretas: também conhecidas como métricas derivadas ou qualitativas, são aquelas que dependem da medição de outros atributos. Por exemplo: produtividade, qualidade e técnicas (funcionalidade, complexidade, eficiência, confiabilidade, manutenibilidade, modularidade, portabilidade). Elas podem definir qualidade e produtividade para o processo de engenharia de software, bem como para o próprio software. Gabarito: A (FCC - 2010 – MPE/RN - Analista de Controle - Informática) Considere: 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 13 de 118 I. Métrica de confiabilidade. II. Atributo de usabilidade. Associe correta e respectivamente com as lacunas: 1 - Probabilidade de falha sob demanda × ...... . 2 - Velocidade de operação × ...... . 3 - Facilidade de aprendizado × ...... . 4 - Disponibilidade x ..... . a) 1 2 3 4 I I I II b) 1 2 3 4 I II II I c) 1 2 3 4 I I II II d) 1 2 3 4 II I I I e) 1 2 3 4 II I II I Comentários: Probabilidade de falha sob demanda é uma métrica de confiabilidade; velocidade de operação é um atributo de usabilidade; facilidade de aprendizado é um atributo de usabilidade; disponibilidade é uma métrica de confiabilidade. Gabarito: B (CESPE - 2013 - SERPRO - Analista - Desenvolvimento de Sistemas) As métricas externas fornecem aos usuários a possibilidade de medir a qualidade dos artefatos intermediários e de prever a qualidade do produto final. Comentários: Métricas Estáticas ou Internas: são aquelas coletadas em representações do sistema como projeto, programa ou documentação – sem a necessidade da execução dos programas. Ajudam a mensurar a complexidade e a facilidade de compreensão e manutenção de um sistema de software. Permitem medir a qualidade dos artefatos intermediários e prever a qualidade do produto final. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 14 de 118 Métricas Dinâmicas ou Externas: são aquelas coletadas durante a execução de um programa, a partir do comportamento do sistema ou do seu efeito no ambiente real de operação. Elas ajudam a avaliar a eficiência e a confiabilidade de um programa e quase sempre estão relacionadas com atributos da qualidade de software. Conforme vimos em aula, a questão está invertida. Para medir a qualidade dos artefatos intermediários, basta utilizar métricas internas e, não, externas. Gabarito: E (CESPE - 2013 - SERPRO - Analista - Desenvolvimento de Sistemas) Métricas internas devem ser usadas para avaliar o comportamento do software, quando usado em situações específicas; predizer a qualidade real no uso; e avaliar e indicar se o produto satisfaz às verdadeiras necessidades durante a operação real pelo usuário. Comentários: Métricas Estáticas ou Internas: são aquelas coletadas em representações do sistema como projeto, programa ou documentação – sem a necessidade da execução dos programas. Ajudam a mensurar a complexidade e a facilidade de compreensão e manutenção de um sistema de software. Permitem medir a qualidade dos artefatos intermediários e prever a qualidade do produto final. Métricas Dinâmicas ou Externas: são aquelas coletadas durante a execução de um programa, a partir do comportamento do sistema ou do seu efeito no ambiente real de operação. Elas ajudam a avaliar a eficiência e a confiabilidade de um programa e quase sempre estão relacionadas com atributos da qualidade de software. Conforme vimos em aula, essa é uma função das métricas externas. Gabarito: E (CESPE - 2013 – TRT/10ª - Analista Judiciário - Tecnologia da Informação) As métricas de software podem ser classificadas em medidas diretas ou quantitativas e medidas indiretas ou qualitativas. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 15 de 118 Comentários: Métricas Diretas: também conhecidas como métricas básicas ou quantitativas, são aquelas que não dependem da medição de outros atributos, por exemplo: custo/esforço do desenvolvimento, linhas de código, velocidade de execução, quantidade de memória, número de erros, quantidade de defeitos. Métricas Indiretas: também conhecidas como métricas derivadas ou qualitativas, são aquelas que dependem da medição de outros atributos. Por exemplo: produtividade, qualidade e técnicas (funcionalidade, complexidade, eficiência, confiabilidade, manutenibilidade, modularidade, portabilidade). Conforme vimos em aula, a questão está perfeita! Gabarito: C (CESPE - 2013 – TRT/10ª - Analista Judiciário - Tecnologia da Informação) Métricas quantitativas, normalmente, exigem análise e estão relacionadas com a funcionalidade, a qualidade, a complexidade e a manutenção do software. Comentários: Métricas Diretas também conhecidas como métricas básicas ou quantitativas, são aquelas que não dependem da medição de outros atributos, por exemplo: custo/esforço do desenvolvimento, linhas de código, velocidade de execução, quantidade de memória, número de erros, quantidade de defeitos. Métricas Indiretas: também conhecidas como métricas derivadas ou qualitativas, são aquelas que dependem da medição de outros atributos. Por exemplo: produtividade, qualidade e técnicas (funcionalidade, complexidade, eficiência, confiabilidade, manutenibilidade, modularidade, portabilidade). Conforme vimos em aula, a questão trata das métricas qualitativas. Gabarito: E (CESPE - 2011 – TER/ES - Programação de Sistemas) As métricas orientadas a tamanho medem a funcionalidade entregue pela aplicação ao usuário como valor de normalização. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 16 de 118 Comentários: Métricas Orientadas a Tamanho: são aquelas baseadas no número de linhas de código produzidas, também conhecidas como Lines Of Code (LOC).3 Métricas Orientadas à Função: são aquelas baseadas na funcionalidade do software, tais como Análise de Pontos de Função. Métricas Orientadas a Pessoas: são aquelas que indicam a forma como as pessoas devem desenvolver programas de computador. Conforme vimos em aula, a questão trata das métricas orientadas à função. Gabarito: E 10. (CESPE - 2009 - ANTAQ - Analista Administrativo - Informática) Métricas de produto dinâmicas são coletadas por meio de medições realizadas em representações do sistema, como projeto, programa ou documentação, ao passo que métricas de produto estáticas são coletadas em programas em execução. Comentários: Métricas Estáticas ou Internas: são aquelas coletadas em representações do sistema como projeto, programa ou documentação – sem a necessidade da execução dos programas. Ajudam a mensurar a complexidade e a facilidade de compreensão e manutenção de um sistema de software. Permitem medir a qualidade dos artefatos intermediários e prever a qualidade do produto final. Métricas Dinâmicas ouExternas: são aquelas coletadas durante a execução de um programa, a partir do comportamento do sistema ou do seu efeito no ambiente real de operação. Elas ajudam a avaliar a eficiência e a confiabilidade de um programa e quase sempre estão relacionadas com atributos da qualidade de software. Conforme vimos em aula, a questão inverteu os conceitos. Gabarito: E 3 Como medir Produtividade? KLOC/Pessoa-Mês. Como medir Qualidade? Erros/KLOC. Como medir Custo? $/KLOC. Como medir Documentação? Páginas/KLOC. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 17 de 118 11. (CESPE - - ANTAQ - Analista Administrativo - Informática) Dois tipos de métricas têm sido usados para estimativas de produtividade do desenvolvimento de software: as relacionadas a tamanho de algum resultado de uma atividade, como, por exemplo, linhas de código fonte entregues, número de instruções de código objeto, número de páginas de documentação, e as relacionadas a funções - funcionalidade geral do software entregue. A produtividade é expressa em termos de quantidade de funcionalidade útil produzida em um dado tempo, como, por exemplo, pontos por função, pontos por objeto. Comentários: Métricas Orientadas a Tamanho: são aquelas baseadas no número de linhas de código produzidas, também conhecidas como Lines Of Code (LOC). Métricas Orientadas à Função: são aquelas baseadas na funcionalidade do software, tais como Análise de Pontos de Função. Métricas Orientadas a Pessoas: são aquelas que indicam a forma como as pessoas devem desenvolver programas de computador. Conforme vimos em aula, a questão está perfeita! Gabarito: C 12. (CESPE - – TJDFT - Programação de Sistemas – D) As métricas de qualidade são, em geral, subjetivas, o que impossibilita a avaliação de um sistema por equipes diferentes. Comentários: Em geral, elas são objetivas (vimos várias fórmulas, inclusive). Gabarito: E 13. (IADES - 2013 - EBSERH - Analista de Tecnologia da Informação - Teste e Qualidade) As métricas de software são parâmetros utilizados, para mensurar ou medir algo que se queira estimar, do ponto de vista da produção de software. Em relação às métricas de qualidade de software, assinale a alternativa correta. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 18 de 118 a) É uma abordagem utilizada para definir o tempo gasto, em cada ponto de função. b) Oferece meios de mensurar o tempo gasto, para o desenvolvimento do software. c) Fornece informações sobre a quantidade de linhas de código. d) É uma abordagem utilizada, para reforçar os testes de aceitação. e) Oferece uma estimativa de quanto o software se adequa às exigências implícitas e explícitas do cliente. Comentários: a) Não, tempo gasto por ponto de função está mais para medição de produtividade do que de qualidade; b) Não, isso é para estimar o tempo gasto para desenvolver o software; c) Não, quantidade de linhas de código não servem para medir a qualidade de um software e vice-versa; d) Não existe essa relação; e) Perfeito, permite estimar a aderência aos requisitos do usuário. Gabarito: E 14. (IADES - 2013 - EBSERH - Analista de Tecnologia da Informação - Teste e Qualidade) À qual modalidade de métrica pertencem a funcionalidade, a modularidade e a manutenibilidade? a) De qualidade. b) Técnicas. c) Produtividade. d) De estabilidade e) De vulnerabilidade. Comentários: Existem muitas classificações para métricas. Uma delas organiza as classes em Métricas de Produtividade (resultado do processo de desenvolvimento), Qualidade (Nível de Exigência/Satisfação) ou Técnicas (Funcionalidade, Manutenibilidade, Modularidade, etc). 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 19 de 118 Gabarito: B 15. (FUNCAB - 2010 - SEJUS-RO - Analista de Sistemas) É um exemplo de métrica de controle de software: a) a complexidade ciclomática de um módulo. b) o comprimento médio de identificadores em um programa. c) o número de atributos e operações associadas com objetos em um projeto. d) o tempo médio requerido para reparar defeitos relatados. e) o número de mensagens de erro. Comentários: Complexidade Ciclomática, comprimento médio de identificadores, número de atributos e operações associadas com objetos e número de mensagens de erro são todas métricas de predição, porque estão todas diretamente relacionadas com o produto de software. Já o tempo médio requerido para reparar defeitos é métrica de controle, porque estão diretamente relacionados com o processo de software. Alguns podem se confundir com a Complexidade Ciclomática! Ela auxilia a estimar o esforço necessário para construir um software ou fazer alterações nele, certo? Ela mostra todos os caminhos independentes de um código-fonte como em um fluxo de controle (mas não confundam com Métrica de Controle). É puramente uma Métrica de Produto. Gabarito: D 16. (FEPESE - 2010 - UDESC - Analista de Sistemas) Considere as seguintes afirmativas relacionadas a métricas de software: 1. A contagem de linhas de código (LOC) constitui um exemplo de métrica direta. 2. A medida de qualidade expressa em erros/KLOC constitui um exemplo de métrica orientada a tamanho (KLOC = 1000.LOC). 3. A medida de qualidade expressa em erros/KLOC constitui um exemplo de métrica indireta (KLOC = 1000.LOC). Assinale a alternativa que indica todas as afirmativas corretas. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 20 de 118 a) É correta apenas a afirmativa 1. b) É correta apenas a afirmativa 3. c) São corretas apenas as afirmativas 1 e 2. d) São corretas apenas as afirmativas 2 e 3. e) São corretas as afirmativas 1, 2 e 3. Comentários: (1) Perfeito, é uma métrica direta; (2) Perfeito, deriva do tamanho (KLOC); (3) Perfeito, deriva de uma métrica de tamanho, logo é uma métrica indireta. Gabarito: E 17. (CESPE - – MPOG/ATI - Analista de Sistemas) A aplicação de métricas estáticas de produto é comumente usada para se avaliar a complexidade de um software. Comentários: Métricas de Predição/Produto podem ser internas/estáticas ou externas/dinâmicas: Métricas Estáticas ou Internas: são aquelas coletadas em representações do sistema como projeto, programa ou documentação – sem a necessidade da execução dos programas. Ajudam a mensurar a complexidade e a facilidade de compreensão e manutenção de um sistema de software. Permitem medir a qualidade dos artefatos intermediários e prever a qualidade do produto final. Métricas Dinâmicas ou Externas: são aquelas coletadas durante a execução de um programa, a partir do comportamento do sistema ou do seu efeito no ambiente real de operação. Elas ajudam a avaliar a eficiência e a confiabilidade de um programa e quase sempre estão relacionadas com atributos da qualidade de software. Conforme vimos em aula, as métricas dinâmicas são aquelas coletadas durante a execução de um programa; as métricas estáticas são aquelas coletadas de representações do sistema como projeto, programa ou documentação. De fato, é comum utilizar métricas estáticas para avaliar a complexidade e manutenção de um software, por meio –por exemplo – de um Modelo de Design. Gabarito: C 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 21 de 118 18. (CESPE - – MPOG/ATI - Analista de Sistemas) A métrica conhecida como resposta para uma classe relaciona o nível de complexidade de uma determinada classe com a quantidade de interações que ela faz com objetos de outras classes. Comentários: A banca foi muito, mas muito profunda nesse item! Eu confesso que nunca havia ouvido falar nessa métrica. Trata-se de uma métrica orientada a objetos, criada em 1994, chamada Response for a Class (Resposta para uma Classe) e mede a complexidade de uma classe por meio da quantidade de métodos diferentes que potencialmente podem ser executados em resposta a uma mensagem recebida por um objeto dessa classe. Dessa forma, não se trata da quantidade de interações que ela faz com objetos – é mais específico: é a quantidade de métodos que podem ser executados em uma classe, em resposta a uma solicitação (invocação de um método). Quanto maior, mais difícil será de manter e testar a classe. Logo, se o objeto de uma Classe X recebe uma mensagem e ele pode potencialmente executar cinco métodos dentro dessa classe, então RFC = 5. Gabarito: E 19. (CESPE - 2016 – ANAC - Analista de Sistemas) As métricas de software podem ser divididas em duas categorias: medidas diretas e indiretas. Podemos considerar como medidas diretas do processo de engenharia de software o esforço aplicado ao desenvolvimento e à manutenção do software, bem como a (o): a) eficiência. b) qualidade. c) confiabilidade. d) manutenibilidade. e) custo. Comentários: Métricas Diretas: também conhecidas como básicas, quantitativas ou primitivas, são aquelas que não dependem da medição de outros atributos, por exemplo: 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 22 de 118 custo/esforço do desenvolvimento, linhas de código, velocidade de execução, quantidade de memória, número de erros, quantidade de defeitos. Métricas Indiretas: também conhecidas como qualitativas ou derivadas, são aquelas que dependem da medição de outros atributos. Por exemplo: produtividade, qualidade e técnicas (funcionalidade, complexidade, eficiência, confiabilidade, manutenibilidade, modularidade, portabilidade). Conforme vimos em aula, a medida direta é o custo de desenvolvimento. Gabarito: E ACERTEI ERREI 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 23 de 118 ANÁLISE DE PONTOS DE FUNÇÃO Uma pequena introdução: no ano de 1979, Allan Albrecht – pesquisador da IBM – estudava a produtividade para projetos de software desenvolvidos por uma unidade de serviços da IBM. Como nem todos os projetos usavam a mesma linguagem de programação, ele buscou elaborar uma medida que observasse apenas aspectos externos do software, i.e., suas funcionalidades. A esta medida baseada na visão do usuário e independente da linguagem de programação ou de qualquer outro aspecto relacionado à implementação do software, ele chamou de Pontos de Função. Ao fim do ano, ele publicou o resultado desse estudo, despertando o interesse de outras empresas e o seu uso começou a se difundir nos anos seguintes por todo o mundo. Com a popularização da técnica, criou-se o International Function Point Users Group (IFPUG), com o objetivo de promover o uso da técnica de pontos de função mundialmente e manter o Counting Practices Manual (CPM), que é o manual que orienta como se faz a contagem de pontos de função e que serve como uma bibliografia recomendadíssima para vocês. Portanto, a Análise de Pontos de Função (APF) é uma técnica que permite medir as funcionalidades ou tamanho funcional de um software, independente de tecnologia e sob o ponto de vista dos requisitos funcionais do usuário. Pessoal, essa definição é importantíssima! Guardem-na, pois ela é a base de tudo que veremos daqui em diante e pode, eventualmente, ser útil na prova discursiva. Vamos analisar essa definição: ele diz que a APF mede as funcionalidades! Mas, professor, o que é uma funcionalidade? É qualquer coisa que o usuário deseja que seu aplicativo execute, por exemplo: dadas diversas medidas corporais, calcular a porcentagem de gordura. Ok, e como se mede o tamanho de uma funcionalidade como essa? Veremos! De fato, não é possível medir uma funcionalidade diretamente! Ou vocês conhecem alguma unidade de medida de funcionalidade? Portanto, ela deve ser derivada indiretamente de outras medidas diretas realizadas empiricamente. Ahn? Viajei agora, professor! Vamos supor que alguém diga que essa funcionalidade equivale a 15 pontos de função. O que isso significa, professor? 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 24 de 118 Diversos especialistas escolheram algumas características do aplicativo e quantificaram-nas a partir de suas experiências de vida com outros projetos de software. Portanto, a partir desses valores que foram dados às características, criou- se uma unidade de medida – chamada Ponto de Função (PF) – e pôde-se medir as funcionalidades. Vou dar mais um exemplo para deixar isso bem claro! Vamos supor que o Governo Federal deseje comprar um carro para um determinado órgão. Existe alguma medida de carro? Por exemplo: Pálio vale 50 ou Gol vale 100? Não! Portanto, o governo poderia criar uma unidade de medida chamada Pontos de Carros (PC) por meio de outras medidas indiretas: valor, quantidade de cavalos de potência, quantidade de válvulas, consumo médio, etc. Assim, através da experiência de pessoas qualificadas, poder-se-ia atribuir valores a essas outras medidas. Ex: se o carro custar mais de 50 mil reais, equivale a 10 PCs, caso contrário equivale a 7 PCs; se tiver mais de 200 cavalos-vapor, equivale a 10 PCs, caso contrário equivale a 5 PCs. Faz-se isso para cada característica escolhida, soma-se tudo e chega-se ao total de “pontos de carros”. Com software, acontece coisa parecida. Foram escolhidas cinco características (que veremos mais à frente) e diversos especialistas, baseados em suas vastas experiências com outros projetos, quantificaram-nas de acordo com sua complexidade (do software e, não, do desenvolvimento). Assim, hoje em dia, pode- se medir a funcionalidade de um aplicativo. Em seguida, a definição diz que a APF é independente de tecnologia, linguagem de programação, ambiente de desenvolvimento, entre outros. Portanto, ele busca medir o que software faz e, não, como ele foi construído. Por fim, a definição diz que ele mede as funcionalidades requisitadas pelo usuário. Não caiam em nenhuma pegadinha: é sempre sob o ponto de vista do usuário. Na Análise de Pontos de Função, a produtividade é expressa como o número de pontos de função implementados por pessoa-mês. Galera, entendam que um Ponto de Função não é uma característica única, tanto que ele pode ser calculado por meio da combinação de várias medições ou estimativas diferentes – não esquentem, nós veremos tudo isso mais à frente. Symons observa que a natureza subjetiva da estimativa de complexidade significa que a contagem de pontos de função de um programa depende do estimador. Pessoas diferentes podem ter noções diferentes decomplexidade. Existem, 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 25 de 118 portanto, grandes variações na contagem de pontos de função dependendo do julgamento do estimador e do tipo do sistema a ser desenvolvido. Além disso, os pontos de função são voltados aos sistemas de processamento de dados dominados por operações de entrada e saída. É mais difícil estimar a contagem de pontos de função para sistemas orientados a eventos. Por essa razão, algumas pessoas pensam que a contagem de pontos de função não é uma maneira útil para medir a produtividade de software. Contudo, os usuários de pontos de função argumentam que, apesar de suas imperfeições, eles são eficazes em situações práticas. Galera, esse é um assunto muito polêmico! Infelizmente, não há uma unanimidade... há quem diga que a estimativa do tamanho do software é subjetiva por conta do julgamento da complexidade, no entanto há quem diga que é uma estimativa objetiva! 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 26 de 118 As organizações usam pontos de função com diferentes propósitos. Podem-se destacar vários benefícios da aplicação da APF nas organizações: Funciona como uma ferramenta para determinar o tamanho de um pacote adquirido, através da contagem de todas as funções incluídas (pode auxiliar no momento da venda de um sistema de software) e suporta a análise de produtividade e qualidade, seja diretamente ou em conjunto com outras métricas como esforço, defeitos e custo. Provê auxílio aos usuários na determinação dos benefícios de um pacote para sua organização, através da contagem das funções que especificamente correspondem aos seus requisitos. Ao avaliar o custo do pacote, o tamanho das funções que serão utilizadas, a produtividade e o custo da própria equipe, possível analisar se vale a pena comprar ou fabricar. Apoia o gerenciamento de escopo de projetos. Um desafio de todo gerente de projetos é controlar o aumento do escopo. Ao realizar estimativas e medições em cada fase do seu ciclo de vida, é possível determinar se os requisitos funcionais cresceram ou diminuíram; e se esta variação corresponde a novos requisitos ou aos existentes e que foram apenas mais detalhados. Complementa o gerenciamento dos requisitos ao auxiliar na verificação da solidez e completeza dos requisitos especificados. O processo de contagem de pontos de função favorece uma análise sistemática e estruturada da especificação de requisitos e traz benefícios semelhantes ao de uma revisão em pares – basta lembrar que a contagem é baseada em requisitos do usuário. Um meio de estimar custo e recursos para o desenvolvimento e manutenção de software. Através da realização de uma contagem ou estimativa de pontos de função no início do ciclo de vida de um projeto, é possível determinar seu tamanho funcional. Esta medida pode ser então utilizada como entrada para diversos modelos de estimativa de esforço, prazo e custo. Uma ferramenta para fundamentar a negociação de contratos. Pode-se utilizar pontos de função para gerar diversos indicadores de níveis de serviço em contratos de desenvolvimento e manutenção de sistemas. Além disso, permite o estabelecimento de contratos a preço unitário, onde a unidade representa um bem tangível para o cliente – reduzindo riscos. BENEFÍCIOS DA ANÁLISE DE PONTOS DE FUNÇÃO 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 27 de 118 Um fator de normalização para comparação de software ou para a comparação da produtividade na utilização de diferentes técnicas. Diversas organizações, como o ISBSG, disponibilizam um imenso repositório de dados de projetos de software que permitem a realização de benchmarking com projetos similares do mercado e uma boa base de comparação. Pessoal, a APF pode ser aplicada em diversos domínios funcionais ou domínio de informação. O que é isso? É uma área de interesse (Ex: sistema de uma universidade, hospital, banco, etc). Ademais, a produtividade – diferente da funcionalidade – é dependente de tecnologia. Basta pensar que programar em Delphi é mais produtivo do que em Java que é mais produtivo do que em C. Professor, como uma organização consegue saber qual deve ser a produtividade esperada para um projeto que ainda irá se iniciar? Bem, isso pode ocorrer de duas maneiras: ela pode manter um repositório privado com dados sobre seus projetos anteriores ou ela pode utilizar um repositório público com dados de diversos projetos para realizar essas estimativas. O repositório público mais conhecido se chama International Software Benchmarking Standards Group (ISBSG). Ele contém mais de 6.000 projetos de diferentes tamanhos, complexidades, linguagens de programação, domínios de informação, entre outros. No entanto, deve-se considerar o contexto de como os números foram obtidos e compa -los com os da organização. IMPORTANTE A Análise de Pontos de Função não mede diretamente esforço, produtividade, custo, qualidade, escopo, etc. No entanto, ela pode ser usada em conjunto com outras grandezas e dados históricos da organização para medir essas variáveis. Por exemplo: determinado programador desenvolve uma funcionalidade específica em 10 Horas/PF. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 28 de 118 Pronto, vamos avançar nosso estudo! Anteriormente, eu disse que, para medir uma funcionalidade, era necessário quantificar algumas características do aplicativo de acordo com sua complexidade. Quais são essas características? Elas são: Arquivo Lógico Interno (ALI), Arquivo de Interface Externa (AIE), Entrada Externa (EE), Saída Externa (SE) e Consulta Externa (CE). Vamos detalhá-los: - Arquivo Lógico Interno (ALI): grupo de dados logicamente relacionados ou informações de controle cuja manutenção é feita pela própria aplicação. Sua função é armazenar dados mantidos dentro da fronteira da aplicação através dos processos da aplicação. Os ALI contribuem para o cálculo de pontos de função com base na quantidade e complexidade funcional relativa. Baseia-se em requisitos lógicos dos usuários e são independentes da implementação ou meios de armazenamento. Exemplos de ALI: dados da aplicação (arquivos mestres, como cadastro de clientes); arquivos de dados de segurança da aplicação; arquivos de dados de auditoria; arquivos de mensagem de auxílio; arquivos de mensagens de erro; arquivo de cópia de segurança (só se para atender requisitos da aplicação; arquivo que sofra manutenção por mais de uma aplicação. Não-Exemplos de ALI: arquivos temporários; Arquivos de trabalho; arquivos de classificação; arquivos de cópia de segurança requerido pelo CPD; arquivos introduzidos somente por causa da tecnologia usada (Ex: arquivos de parâmetro para um software WFL, JCL, entre outros); operações de junção e projeção; arquivos de índices alternativos. - Arquivo de Interface Externa (AIE): grupo de dados logicamente relacionados ou informações de controle, referenciados na aplicação para fins de recuperação de dados cuja manutenção é feita por outra aplicação. Os dados são armazenados fora da fronteira da aplicação. Um AIE de uma aplicação sempre serácontado como um ALI na aplicação de origem. Cada AIE é classificado por sua complexidade funcional relativa, que é baseada no número de registros lógicos e de itens de dados. Exemplos de AIE: arquivos de mensagens de auxílio; arquivos de mensagens de erro. Não-Exemplos de AIE: dados recebidos de outra aplicação usados para adicionar, alterar ou remover dados em um ALI; dados cuja manutenção é feita pela aplicação que está sendo avaliada, mas que são acessados e utilizados por outra aplicação; dados formatados e processados para uso por outra aplicação. COMPONENTES DOS PONTOS DE FUNÇÃO 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 29 de 118 - Entrada Externa (EE): processo elementar que processa dados ou informações de controle recebidos de fora da fronteira da aplicação e cujo objetivo é manter um ou mais ALIs e/ou alterar o comportamento do sistema. Assim, uma Entrada Externa provoca uma inclusão, exclusão e/ou alteração nos dados do ALI. Cada Entrada Externa se origina de um usuário ou é transmitida de outra aplicação e fornece dados distintos orientados à aplicação do software ou informação de controle. Exemplos de Entrada Externa: operações de inclusões e alterações de registros em arquivos da aplicação, janelas que permitem adicionar, excluir e alterar registros em arquivos de dados. Não-Exemplos de Entrada Externa: menus, telas de login, telas de filtro de relatórios e consultas, múltiplos métodos de se executar uma mesma lógica de entrada, entre outros. - Saída Externa (SE): processo elementar que envia dados ou informações de controle para fora da fronteira da aplicação. Seu objetivo é exibir informações recuperadas através de processamento lógico, i.e., que envolva cálculos ou criação de dados derivados e não apenas uma simples recuperação de dados. Uma Saída Externa pode manter um ALI ou alterar o comportamento do sistema. Representam atividades do sistema que transforma dados dos ALI e geram resultados ao usuário. Exemplos de Saída Externa: Dados transferidos para outra aplicação; relatórios; relatórios online; formatos gráficos; gerador de relatórios. Não-Exemplos de Saída Externa: telas de ajuda; literais; data, hora, controles de paginação, etc; relatórios múltiplos com a mesma lógica e formato; relatórios criados pelo usuário de forma dinâmica pelo usuário usando uma linguagem como SQL. - Consulta Externa (CE): representa a necessidade de processamento de consultas da aplicação sendo uma combinação de entrada/saída de dados onde uma entrada de dados causa uma recuperação e uma saída correspondente. A lógica de processamento não deve conter cálculo matemático ou criar dados derivados ou atualizar nenhum ALI. Pode ser definida como uma entrada online que resulta na geração de alguma resposta imediata do software sob a forma de uma saída online. Exemplos de Consulta Externa: telas de logon, telas de help, telas de alteração/remoção que mostram o que será alterado ou removido antes de sua efetivação; tela de menus que permitem informar parâmetros para a consulta na tela escolhida. Não-Exemplos de Consulta Externa: dados derivados; documentação online; sistema de teste; sistemas tutoriais; relatórios e consultas (c/ cálculo). 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 30 de 118 Eu gostaria de fazer algumas observações sobre o que vimos acima. Primeiro, gostaria de destacar mais uma vez que os Arquivos de Interface Externa (AIE) de uma aplicação são sempre contados como um Arquivo Lógico Interno (ALI) na aplicação de origem. Em outras palavras, se um ALI é um AIE de outra aplicação, cont - os Dados Elementares Referenciados apenas uma vez. Além disso, precisamos ver alguns conceitos importantes! Quando se fala acima em “informações de controle”, trata-se dos dados que influenciam um processo elementar da aplicação sendo contada. Especifica o que, quando ou como os dados devem ser processados, e são utilizados pela aplicação para garantir aderência com os requisitos funcionais especificados pelo usuário. Quando se fala em “identificável pelo usuário”, trata-se de requisitos definidos para processos e/ou grupos de dados que foram acordados e entendidos tanto pelos usuários quanto pelos desenvolvedores de software (Ex: Usuários e Desenvolvedores concordam que uma Aplicação de Recursos Humanos terá funcionalidade para manter e guardar informações do Funcionário na aplicação). Por fim, quando se fala em “mantido”, trata-se da habilidade de incluir, modificar ou excluir dados a partir de um processo elementar (Ex: Inclusão, Modificação, Exclusão, Carga Inicial, Revisão, Atualização, Atribuição, Criação, etc). Um processo elementar pode ser conceituado como a menor atividade capaz de produzir resultados significativos para o usuário. Ele deve ser completo em si mesmo, independente e deixar a aplicação em um estado consistente. Bem, podemos dividir essas cinco funções em dois grupos: IMPORTANTE Os exemplos citados foram retirados do próprio IFPUG. Evidentemente, eles dependem - antes de tudo - da visão do usuário. Além disso, eles estão sujeitos ao contexto em que estão inseridos. Não os encarem como uma certeza absoluta. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 31 de 118 Funções do Tipo Dado: representam requisitos de armazenamento do usuário. o ALI e AIE. Funções do Tipo Transação: representam requisitos de processamento do usuário. o EE, CE e SE. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 32 de 118 O procedimento de contagem de pontos de função segue cinco etapas, apresentadas a seguir: Determinar o Tipo de Contagem O procedimento de contagem de pontos de função de um aplicativo que ainda será desenvolvido é diferente do procedimento de contagem de um aplicativo pronto. Bem como o procedimento de contagem de um aplicativo pronto difere do procedimento de contagem de manutenção de outro aplicativo. Galera, existem três tipos de contagem: Projeto de Desenvolvimento: mede a funcionalidade fornecida aos usuários finais do software para a primeira instalação da aplicação. Inclui as funcionalidades da contagem inicial da aplicação e as funcionalidades requeridas para conversão de dados (além do fator de ajuste). Pessoal, isso é uma estimativa, na medida em que pode haver mudanças no decorrer do projeto. Projeto de Melhoria4: mede as modificações realizadas para aplicações existentes. É também referenciada como Projeto de Manutenção e inclui as funcionalidades fornecidas aos usuários através de adições, alterações, exclusões e conversões de funções na aplicação. As manutenções podem ser somente evolutivas e, não, corretivas e preventivas. Projeto de Aplicação: mede uma aplicação instalada e em pleno funcionamento. É também referenciada como contagem de baseline ou contagem instalada e avalia as funcionalidades correntes providas aos usuários finais da aplicação. Ela não é estimativa, é bastante precisa, na medida em que o aplicativo já está pronto e em funcionamento. Determinar o Escopo e Fronteira 4 Nem todas as manutenções em um softwaresão passíveis de serem medidas com a APF ʹ apenas as manutenções que alteram os requisitos funcionais de um software. Neste caso, o IFPUG usa o termo "melhoria" em vez de "manutenção", exatamente para deixar destacada que a melhoria não é qualquer manutenção. No conceito do IFPUG a melhoria mede todas as funções que serão adicionadas, alteradas ou excluídas da aplicação, bem como as eventuais funções de conversão de dados. Determinar o Tipo de Contagem Determinar Escopo e Fronteira Calcular Pontos de Função Não- ajustados Calcular Fator de Ajuste Calcular Pontos de Função Ajustados ETAPAS DO PROCEDIMENTO DE CONTAGEM 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 33 de 118 Após determinar o tipo de contagem, deve-se determinar a fronteira da aplicação. Ela indica a separação entre o projeto que está sendo medido e as aplicações externas ao domínio do usuário. É através dela que se torna possível definir quais funcionalidades serão incluídas no processo de contagem dos pontos de função, isto é, o escopo do sistema. Pessoal, quem decide o que incluir na contagem é o usuário, sempre o usuário, completamente baseada no usuário. Ele pode escolher todas as funcionalidades disponíveis ou apenas parte delas. Lembremos que a fronteira é independente de implementações tecnológicas e que só serão considerados no escopo os requisitos funcionais do usuário. Requisitos não-funcionais serão ignorados. Calcular Pontos de Função Não-ajustados No cálculo de pontos de função não-ajustados, medem-se as funções de dados e as funções de transação. O Arquivo Lógico Interno armazena dados mantidos pela IMPORTANTE Essa fase é bastante importante, tendo em vista que – caso haja um erro conceitual de fronteira da aplicação – pode-se confundir uma AIE/ALI e vice-versa. Portanto, cuidado! 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 34 de 118 aplicação que está sendo medida, já o Arquivo de Interface Externa armazena dados referenciados pela aplicação que está sendo medida. Lembrem-se de que um AIE de uma aplicação é sempre ALI de outra aplicação! No exemplo da imagem acima, tem-se um usuário (Preto) interagindo com um sistema (Verde) e esse sistema interagindo com outro sistema (Cinza). A Entrada Externa ocorre quando um usuário inclui uma nota fiscal e o sistema processa a informação – alterando o comportamento da aplicação ou atualizando, editando, modificando, excluindo dados de um Arquivo Lógico Interno. A Consulta Externa ocorre quando um usuário requisita uma lista de notas fiscais, o sistema apenas recupera os dados sem fazer qualquer tipo de processamento ou cálculos matemáticos. A Saída Externa ocorre quando um usuário requisita um relatório sumarizado de notas fiscais, o sistema processa uma informação – fazendo algum tipo de cálculo matemático – e retorna para o usuário. Agora eu preciso da atenção de vocês, porque essa parte é meio chatinha de entender! Vejam bem: Todos os ALI/AIE são igualmente complexos? Não. Então, como se mede sua complexidade? Pela quantidade de Dados Elementares Referenciados (DER) e Registros Lógicos Referenciados (RLR). O que diabos é isso, professor? Calma, porque eu vou explicar :-) DER é um atributo único, reconhecido pelo usuário e não repetido. Em outras palavras, são campos de uma tabela ou atributos de um objeto. Por exemplo: na modelagem orientada a objetos, pode-se modelar um objeto Pessoa com diversos atributos (Ex: Nome, Idade, Endereço, Telefone, e-mail). Cada atributo desses é um Dado Elementar Referenciado! Simples, não? E o que é o RLR? É um subgrupo de dados elementares referenciados, reconhecido pelos usuários dentro de um ALI/AIE. Pode traduzir, professor? Sim. Utilizando o exemplo anterior: nós consideramos o atributo Endereço como elementar, mas nós poderíamos ter considerado como um subgrupo de dados que pode ser dividido em Rua, Número, Cidade e CEP. Nesse caso, o atributo Endereço deixa de ser um DER para se tornar um RLR. E quem decide isso, professor? Ora, o usuário, é sempre o usuário! De todo modo, vocês percebem que há um subgrupo de dados bastante óbvio no exemplo? Quem é? Ora, o próprio objeto Pessoa é um subgrupo de dados. Portanto, toda função de dados tem pelo menos um RLR – ela mesma. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 35 de 118 As regras de contagem de um Arquivo Lógico Referenciado (RLR) são: (1) caso não haja subgrupo de informações (referentes a outro ALI), contar um RLR para cada ALI/AIE; (2) contar um RLR para cada subgrupo de dados de um ALI/AIE independentemente de ser o subgrupo opcional ou mandatório. Professor, o que seria um subgrupo opcional ou mandatório? Vamos ver... Mandatórios: são subgrupos de dados que o usuário deve usar pelo menos uma vez durante o processo elementar de criação de um item num AIE. Opcionais: são subgrupos de dados que o usuário tema opção de usar ou não durante o processo elementar de criação de um item em um AIE. Agora alguns sinônimos: há provas que chamam Registro Lógico Referenciado de Item de Registro. Há, também, provas que chamam Dados Elementares Referenciados de Item de Dados. Portanto, fiquem atentos! Eu disse para vocês que o ALI/AIE são medidos por meio do DER/RLR. A complexidade de cada função de dados é determinada de acordo com a tabela: DER 1 – 19 20 – 50 > 50 RLR 1 Baixa Baixa Média 2 – 5 Baixa Média Alta > 5 Média Alta Alta Como se interpreta essa tabela? Caso seu arquivo lógico tenha 3 RLRs e 80 DERs, ele terá complexidade alta. Ok, mas para que eu quero saber qual a complexidade dele, professor? Porque você usará esse resultado em outra tabela, que vai te dizer qual o tamanho funcional do seu ALI/AIE por meio dessa complexidade, como pode ser visto na tabela abaixo: TIPO DADOS ALI AIE Complexidade Funcional Baixa 7 5 Média 10 7 Alta 15 10 Pronto, expliquei para vocês como funciona com o cálculo de complexidade das funções de dados. Agora vamos entender como funciona o de funções de transação. Vocês acham que CE/EE/SE são igualmente complexos? Não. Então, como 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 36 de 118 se mede sua complexidade? Pela quantidade de Dados Elementares Referenciados (DER) e a novidade: Arquivos Lógicos Referenciados (ALR). Nós já vimos o DER! No entanto, aqui ele tem outro contexto: considera-se como o dado que atravessa a fronteira durante o processamento da transação. Já o ALR é um ALI/AIE que foi acessado por uma função de transação. Em outras palavras, quanto mais ALI/AIE acessados por uma função de transação, maior a complexidade do ALR. A complexidade da EE/SE/CE é determinada a seguir: EE DER 1 – 4 5 – 15 > 15 ALR 0 – 1 Baixa Baixa Média 2 Baixa Média Alta > 2 Média Alta Alta SE / CE DER 1 – 5 6 – 19 > 19 ALR 0 – 1 Baixa Baixa Média 2 – 3 Baixa Média Alta > 3 Média Alta Alta Como interpreta essa tabela? Caso seu arquivo lógico acesse 1 ALRs e tenha 4 DERs, ele terá complexidade baixa. Ok, mas para que eu quero saber qual a complexidade dele, professor? Porque você usará esse resultado em outra tabela, que vai dizer qual o tamanho funcional do seu CE/SE/EE por meio dessa complexidade, como podeser visto na tabela abaixo: TIPO TRANSAÇÃO EE SE CE Complexidade Funcional Baixa 3 4 3 Média 4 5 4 Alta 6 7 6 Pessoal, vamos juntar tudo isso em uma única tabela? Lá vai: Complexidade Funcional Simples Média Complexa CE 3 4 6 EE 3 4 6 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 37 de 118 Funções de Dados/Transação SE 4 5 7 AIE 5 7 10 ALI 7 10 15 Pessoal, nenhuma das outras tabelas precisa ser decorada, exceto essa última! Essa realmente não dá para fugir! Para facilitar, basta pensar que a Consulta Externa é, de fato, a mais simples! Por que? Porque ela é não realiza nenhum tipo de processamento, assim como a Entrada Externa! Já a Saída Externa faz cálculos matemáticos, portanto é mais complexa. Galeeeeeeeera, vocês têm que decorar isso! Ora, isso é realmente importante para o entendimento geral de vocês sobre esse assunto? Claro que não! Isso é apenas um detalhe – vocês têm que decorar isso pelo simples fato de que isso cai muito em prova! Eu sei, é ridículo cobrar um decoreba desse! Mas o que eu posso fazer? Infelizmente isso cai demais – principalmente na FCC, apesar de ter visto isso em diversas bancas. Por favor, não deixem isso passar! É apenas uma tabela, ok?! Vamos falar de alguns detalhes que eu nunca havia visto cair em provas até esse ano! Após todos esses cálculos, temos que considerar algumas coisas. Imaginem que o Governo Federal contratou uma empresa para fabricar um aplicativo e estimou que ele teria 1000 PFs. Porém, no momento de implantar o software, seria necessário fazer algumas conversões de dados. Como assim, professor? Bem, pode ser que tenha que se fazer alguma integração com sistemas existentes, sistemas legados ou outras adaptações. E isso tem um custo para a empresa fabricante do sistema, mesmo que não seja algo efetivamente para o software encomendado. Essas funções tem o nome de Funções de Conversão e são descartadas logo após a implantação. O que eu quero dizer com isso tudo? Bem, esse custo é repassado para o Governo Federal. Então, em Projetos de Desenvolvimento, há uma fórmula para calcular o total de pontos de função: P = ADD + CFP. DPF é o tamanho das funções de desenvolvimento; ADD é o tamanho das funções a serem entregues pelo projeto de desenvolvimento; e CFP é o tamanho das funções de conversão5. 5 Funções de conversão são aquelas funcionalidades providas apenas na instalação do sistema para converter dados ou proporcionar outros requisitos estabelecidos pelo usuário e necessários à conversão. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 38 de 118 Nos casos de Projeto de Aplicação, não há o que se discutir: AFP = ADD. Em outras palavras, o tamanho total das funções de aplicação é equivalente a quantidade existente no momento da contagem, sem nenhuma função de conversão, porque o aplicativo já está implantado. Por fim, em Projetos de Melhoria, a fórmula é um pouco mais complicada: EFP = ADD + CHGA + CFP + DEL. Pontos de Função de Melhoria é equivalente ao tamanho das funções adicionadas, mais o tamanho das funções alteradas, mais o tamanho das funções de conversão, mais o tamanho das funções excluídas. Bem pessoal... não é tão complicado, certo?! ;) Vamos agora para a penúltima fase do processo de contagem de pontos de função: Cálculo do Fator de Ajuste! SIGLAS SIGNIFICADO DFP Development Function Points CFP Convertion Function Points AFP Application Function Points EFP Enhancement Function Points ADD Additional (Function Point) DEL Deleted (Function Points) CHGA Changed (Function Points) After Enhancements Calcular Fator de Ajuste Nesta etapa, calculamos o fator de ajuste. O que é isso? Ora, há certas características em um software que devem ser consideradas para se obter maior precisão sobre o cálculo do tamanho funcional de um software. Essas características são quantificadas de modo a obter um número chamado Fator de Ajuste (FA), que tornará o tamanho funcional do sistema mais exato. Até a Etapa 3, nós calculamos o tamanho funcional do software sem considerar absolutamente nenhum aspecto tecnológico, gerando distorções graves. No entanto, sabe-se que eles influenciam bastante no cálculo do tamanho funcional de um aplicati . Ok, professor! Mas que características são essas que influenciam tanto? São 14 características gerais do sistema: 1. COMUNICAÇÃO DE DADOS 8. ATUALIZAÇÃO ONLINE 2. PROCESSAMENTO DISTRIBUÍDO 9. PROCESSAMENTO COMPLEXO 3. PERFORMANCE 10. REUSABILIDADE 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 39 de 118 4. CONFIGURAÇÃO DO EQUIPAMENTO 11. FACILIDADE DE IMPLANTAÇÃO 5. VOLUME DE TRANSAÇÕES 12. FACILIDADE OPERACIONAL 6. ENTRADA DE DADOS ONLINE 13. MÚLTIPLOS LOCAIS 7. INTERFACE COM O USUÁRIO 14. FACILIDADE DE MUDANÇAS Vamos ver agora o que significa cada uma dessas características: COMUNICAÇÃO DE DADOS Descreve o grau pelo qual a aplicação comunica-se diretamente com o processador. Os dados ou informações de controle utilizados pela aplicação são enviados ou recebidos por meio de recursos de comunicação. PROCESSAMENTO DISTRIBUÍDO Descreve o grau pelo qual a aplicação transfere dados entre seus componentes. PERFORMANCE Descreve o grau pelo qual considerações de tempo de resposta e performance de throughput influenciam o desenvolvimento da aplicação. Os objetivos estabelecidos ou aprovados pelo usuário, em termos de tempo de resposta ou taxa de transações, influenciam o projeto, desenvolvimento, instalação e suporte da aplicação. CONFIGURAÇÃO DO EQUIPAMENTO Descreve o grau pelo qual as restrições de recursos computacionais influenciam o desenvolvimento da aplicação. Uma configuração operacional altamente utilizada, necessitando de considerações especiais de projeto, é uma característica da aplicação. Exemplo: usuário deseja executar a aplicação em um equipamento já existente e que será altamente utilizado. VOLUME DE TRANSAÇÕES Descreve em que nível o alto volume de transações de negócio influencia o projeto, desenvolvimento, instalação e suporte da aplicação. ENTRADA DE DADOS ONLINE Descreve o grau pelo qual dados são informados pela execução de transações interativas. 16712855225 Curso Regular de Engenharia de Software Curso de Teoria e Exercícios - 2016 Prof. Diego Carvalho – Aula 07 Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 40 de 118 INTERFACE COM O USUÁRIO Descreve em que nível considerações sobre fatores humanos e facilidade de uso pelo usuário final influenciam o desenvolvimento da aplicação. As funções interativas fornecidas pela aplicação enfatizam um projeto para o aumento da eficiência do usuário final. ATUALIZAÇÃO ONLINE Descreve o grau pelo qual arquivos lógicos internos são atualizados de forma on-line. PROCESSAMENTO COMPLEXO Descreve em que nível o processamento lógico ou matemático influencia o desenvolvimento da aplicação. REUSABILIDADE Descreve em que nível a aplicação e seu código foram especificamente projetados, desenvolvidos e suportados para serem utilizados em outras aplicações. FACILIDADE DE IMPLANTAÇÃO Descreve em que nível a conversão de ambientes preexistentes influencia o desenvolvimento da aplicação. Um plano e/ou ferramentas
Compartilhar