terça-feira, 14 de maio de 2013

Engenharia de Software - V



Começaremos a partir deste post a versar sobre a NBR ISO/IEC 9126 e seus benefícios quando aplicados de forma correta durante o ciclo de vida do sistema. 



Segundo a NBR ISO/IEC 9126 a especificação e avaliação da qualidade do produto de software são fatores chave para garantir qualidade adequada. Isto pode ser alcançado pela definição apropriada das características de qualidade, levando em consideração o uso pretendido do produto de software. É importante que cada característica relevante de qualidade do produto de software seja especificada e avaliada utilizando, quando possível, métricas validadas ou amplamente aceitas, como a APF.



A especificação e validação passaram a ter como base o domínio do negócio e o envolvimento do cliente. Nenhuma proposta comercial pode ser enviada para o cliente sem a observação deste pré-requisito, o que reforça o transcrito na NBR ISO/IEC 9126 “levando em consideração o uso pretendido do produto de software”, ou seja, o domínio do negócio do cliente.



A NBR ISO/IEC 9126 propõe o modelo de qualidade do produto de software, em duas partes:



a) qualidade interna e qualidade externa, e especifica 6 características.

b) qualidade em uso, e especifica quatro características.



A tabela abaixo mostra as seis características e suas variações em sub características quando manifestadas externamente, o software é utilizado como parte de um sistema computacional, e são resultantes de atributos internos do software.


Características
Sub características
Funcionalidade
     •       Adequação
     •       Acurácia
     •       Interoperabilidade
     •       Conformidade
     •       Segurança de Acesso
Confiabilidade
     •       Maturidade
     •       Tolerância a falhas
     •       Recuperabilidade
Usabilidade
     •       Intelegibilidade
     •       Apreensibilidade
     •       Operacionalidade
Eficiência
     •       Tempo
     •       Recursos
Manutenibilidade
     •       Analisabilidade
     •       Modificabilidade
     •       Estabilidade
     •       Testabilidade
Portabilidade
     •       Adaptabilidade
     •       Capacidade de Instalação
     •       Conformidade
     •       Capacidade de Substituição
                     Características e Sub características proposta pela NBR ISO/IEC 9126


Para tornar a norma eficiente e eficaz no seu uso e implantação, é preciso fazer valer o seu uso dentro do processo de gestão de desenvolvimento de sistemas, fazendo parte do conceito de “pronto” do produto. Para tornar o processo mais eficiente e o uso efetivo da norma de qualidade, estrategicamente, a lista de características e subcaracterísticas passaram a fazer parte, como ponto de atenção, aos riscos do projeto de software em conjunto com os testes de software. Passamos a encarar como riscos de projeto as funcionalidades quando não estavam de acordo com o domínio do negócio, a confiabilidade, a usabilidade, a eficiência, a manutenibilidade e a portabilidade.



Segundo a NBR ISO/IEC 9126 a qualidade do produto de software é especificada e avaliada em diferentes perspectivas pelos envolvidos com aquisição, requisitos, desenvolvimento, uso, avaliação, apoio, manutenção, garantia de qualidade e auditoria de software. Ela pode, por exemplo, ser utilizada por desenvolvedores, adquirentes, pessoal de garantia de qualidade e avaliadores independentes, particularmente os responsáveis por especificar e avaliar qualidade do produto de software. Exemplos de usos do modelo de qualidade definido nesta parte da NBR ISO/IEC 9126 são para:

Validar a completitude de uma definição de requisitos;
  • Identificar requisitos de software; 
  • Identificar objetivos de projeto de software;
  • Identificar objetivos para teste de software;
  • Identificar critérios para garantia de qualidade;
  • Identificar critérios de aceitação para produtos finais de software. 

Modelo de Qualidade para qualidade Externa e Interna, segunda NBR ISO/IEC 9126

“Esta seção define o modelo de qualidade externa e interna. Ele categoriza os atributos de qualidade de software em seis características (funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade) as quais são, por sua vez, subdivididas em subcaracterísticas. As subcaracterísticas podem ser medidas por meio de métricas externas e internas”. (NBR ISO/IEC 9126)



Uma definição é atribuída para cada característica e para cada subcaracterísticas do software que influencia a característica de qualidade. A capacidade do software é determinada por um conjunto de atributos internos que podem ser medidos, para cada característica e subcaracterísticas. Exemplos de métricas internas são dados na ISO/IEC 9126-3.

As características e subcaracterísticas podem ser medidas externamente pelo grau da capacidade do sistema contendo o software. Exemplos de métricas externas são dados na ISO/IEC 9126-2.

Grande Abraço,
Gilberto Ribeiro.

Métrica de Software - V

APF - Análise de Ponto de Função


Tipo de contagem, identificação da fronteira da aplicação, função de dados e funções de transação:



Calculo do Ponto de Fução não ajustado, cálculo do fator de ajuste e cálculo do Ponto de Função ajustado.


Fatores que influenciam a métrica da aplicação.



Fábrica de Sofware - V

Resumo do Código de Ética de Engenharia de Software

Como as demais profissões reconhecidas, a Engenharia de Software também já possui a definição de um Código de Ética, resultante dos esforços de uma equipe de trabalho multinacional liderada pela IEEE/ACM.
Está-se buscando a identificação da Engenharia de Software, e este código confere identidade à profissão.
Não se pretende que os profissionais apenas o conheçam, mas sim que o utilizem no sentido de desenvolver a cultura da responsabilidade dos engenheiros de software em relação à sociedade. A sociedade, por sua vez, está empenhada em obter qualidade nos produtos e nos serviços, o que se cristaliza na adoção de leis como o código do consumidor, criando uma cultura favorável a ética nos negócios.

A cultura ética impõe alto grau de responsabilidade, mas facilita a tomada de decisões, contribuindo para o desenvolvimento de uma sociedade mais humana.
1. A Ética na Engenharia de Software

[GOT99] divide a ética pode em três níveis, onde:
  • No Primeiro Nível se encontram todas as obrigações compartilhadas pela humanidade, como integridade, justiça, lealdade, moral;
  • No Segundo Nível estariam as preocupações gerais de todas as profissões, como maiores cuidados com o bem-estar social, e
  • No Terceiro Nível os padrões inerentes a cada profissão, constantes no seu código de ética.

O Código de Ética e de Práticas Profissionais de Engenharia de Software, proposto como um padrão para ensino e prática de engenharia de software, documenta as obrigações éticas e profissionais para engenheiros de software.

O código deve ensinar sobre que padrões a sociedade espera deles, o que seus pares se esforçam para obter, e sobre o que esperar uns dos outros. Ainda, o código deve informar ao público sobre as responsabilidades que são importantes para a profissão de engenheiro de software.

O Código de Ética para Engenharia de Software se propõe a ser um guia para membros da profissão emergente de engenharia de software. O código foi desenvolvido por uma equipe de trabalho multinacional com apoio de outros profissionais da indústria, governo, milícia e educação.

No código foram tratados todos os aspectos inerentes a área de engenharia de software, considerando a importância do ambiente ético não só durante a fase de desenvolvimento, mas também, com igual responsabilidade, na manutenção do software. A qualidade da manutenção depende do profissionalismo do engenheiro de software, porque a manutenção é normalmente examinada sob um aspecto somente, enquanto um novo desenvolvimento é revisto de modo geral e em um nível corporativo. [ROG99]
2. Razões para adotar o Código de Ética de Engenharia de Software
  • Serve de inspiração para o ideal da profissão
  • Normaliza os procedimentos, facilitando a tomada de decisões
  • Serve para educar engenheiros formados e aspirantes a assumir padrões de qualidade no seu trabalho
  • Serve para educar administradores sobre como devam ser as leis e qual o nível de responsabilidade sobre os efeitos e impactos dos produtos desenvolvidos
  • Serve para educar o público sobre quais são as práticas aceitáveis na profissão
  • Deve suportar profissionais quando precisem se opor contra quem esteja agindo de forma inconsistente com o código
  • Incentiva a disciplina e determinação em relação aos quesitos mínimos a serem observados na profissão
  • São usados para elevar a imagem da profissão junto ao público.

Os produtos de software estão presentes em toda a sociedade moderna, também no Brasil, e avaliamos que é importante fazer reconhecida a profissão de Engenharia de Software. Podemos adotar também no Brasil este código, desenvolvido por uma equipe de profissionais de diversos ramos e países, aprovado pela IEEE/ACM, com conteúdo universal e bem adaptado às necessidades brasileiras.
3. Código de Ética e Práticas Profissionais de Engenharia de Software

O Código contém oito Princípios relativos ao ambiente e a decisões feitas por profissionais de engenharia de software, incluindo praticantes, educadores, administradores, supervisores e elaboradores e políticas, bem como estagiários e estudantes da profissão. Os Princípios identificam os relacionamentos eticamente responsáveis dos quais os indivíduos, grupos e organizações participam e as obrigações primárias referentes a estes  relacionamentos. As Cláusulas de cada Princípio são ilustrações de algumas das obrigações incluídas nestes relacionamentos. Estas obrigações estão fundamentadas na humanidade dos engenheiros de software, especialmente aos cuidados dedicados às pessoas afetadas pelo trabalho de engenheiros de software, e nos únicos elementos da prática de engenharia de software. O Código prescreve estas obrigações de qualquer um que deseja ou aspira ser um engenheiro de software.

Não é sua intenção que as partes individuais do Código sejam usadas isoladamente para justificar erros de omissão ou delegação. A lista de Princípios e cláusulas não é exaustiva. As Cláusulas não devem ser lidas como divisoras do aceitável e inaceitável na conduta profissional em todas as situações práticas. O Código não é um simples algoritmo ético que gera decisões éticas. Em algumas situações, padrões podem gerar tensão entre si ou em relação a outras fontes de padrões. Estas situações requerem que o engenheiro de software use julgamento ético para agir de um modo que seja mais consistente com o espírito do Código de Ética e Práticas Profissionais, dadas as circunstâncias.

Tensões éticas podem ser mais bem dimensionadas pelo uso inteligente de princípios fundamentais, em vez de cegas dependências em regulamentações detalhadas. Estes Princípios devem influenciar engenheiros de software a considerar amplamente que é afetado por seu trabalho; para examinar se os mesmos e seus colegas estão tratando outros seres humanos com respeito; para considerar como o público, se razoavelmente bem informado, pode ver suas decisões; para analisar como o menos favorecido será afetado pelas suas decisões; e para considerar quando seus atos seriam julgados importantes para o ideal profissional trabalhando como um engenheiro de software. Em todos estes julgamentos, é primário levar-se em consideração a saúde, segurança e bem-estar do público; ou seja, o “Interesse Público” é o centro deste Código.

O contexto dinâmico e de demanda de engenharia de software requer um código que seja adaptável e relevante para novas situações na medida em que ocorrem. Entretanto, mesmo nesta generalização, o Código provê suporte para engenheiros de software e administradores de engenheiros de software que necessitem tomar ações positivas num caso específico documentando um caso ético da profissão. O Código auxilia a definir as ações que são eticamente impróprias para serem solicitadas para um engenheiro de software ou um time de engenheiros de software.

O Código não é simplesmente para julgar a natureza de atos questionáveis, também tem uma função educativa muito importante. Como este Código expressa o consenso da profissão em questões éticas, é um meio para educar tanto o público, quanto aspirantes à profissão, sobre as obrigações éticas de todos os engenheiros de software.”
3.1. Resumo dos Princípios

Segundo [ROG99]:

“A versão resumida do código sintetiza aspirações em um nível de abstração muito alto. As cláusulas que estão incluídas na versão completa dão exemplo e detalhes de como estas aspirações mudam o modo como agimos como profissionais de engenharia de software. Se as aspirações, os detalhes podem se tornar legalistas e tediosos; sem os detalhes, as aspirações podem parecer de alta importância, mas vazias de significado real; juntas, as aspirações e os detalhes, forma um código coeso.

Os engenheiros de software devem estar convictos a fazer do conjunto da análise, da especificação, do projeto, do desenvolvimento, do teste e da manutenção de software, uma profissão benéfica e respeitada. De acordo com o seu comprometimento com a saúde, segurança, e bem-estar do público, os engenheiros de software devem adotar os oito princípios.
  1. Público. Engenheiros de Software devem atuar consistentemente com os interesses públicos.
  2. Clientes e empregados. Engenheiros de Software devem atuar de modo a atender os melhores interesses dos seus clientes e empregados, consistentemente com os interesses públicos.
  3. Produto. Engenheiros de Software devem assegurar que seus produtos e modificações relacionadas atendam os melhores padrões profissionais possíveis.
  4. Julgamento. Engenheiros de Software devem manter a integridade e independência nos seus julgamentos profissionais.
  5. Administração. Administradores e líderes de Engenharia de Software devem aderir e promover uma abordagem ética ao gerenciamento do desenvolvimento e manutenção de software.
  6. Profissão. Engenheiros de Software devem desenvolver a integridade e reputação da profissão consistentemente com os interesses do público.
  7. Companherismo. Engenheiros de Software devem ser justos e dispostos a auxiliar seus colegas.
  8. Identidade. Engenheiros de Software devem participar do aprendizado de suas vidas valorizando a prática da sua profissão e devem promover uma abordagem ética à prática da profissão.”

Analisando os princípios, observa-se que logo o primeiro, do público, está de acordo com a aspiração maior do profissional, que não se limita a executar com perfeição o seu trabalho, mas sim, que o seu trabalho sirva para o bem público, de acordo com o pensamento ético universal. Assim também são universais os princípios sexto (profissão), sétimo (coleguismo) e oitavo (identidade).

O segundo princípio, relativo a clientes e empregados, está de acordo com as leis brasileiras de defesa do consumidor e também com os primeiros princípios elaborados para a empresa e seus empregados desde o início do século XX.

Com o terceiro, podemos associar também a lei brasileira de defesa do consumidor, no que se refere à qualidade dos produtos. É muito importante também constar do código de ética o aspecto das modificações, característica própria dos produtos de software, que estão em constante evolução e devem garantir não somente o atendimento de solicitações do cliente, mas a sua satisfação com a qualidade da manutenção.

Buscando os itens do quarto princípio no Anexo I, onde se encontra o código de ética completo, compreende-se melhor o princípio do julgamento, que previne o profissional para assinar somente documentos para os quais esteja habilitado, não participar de práticas financeiras impróprias, subornos, duplo faturamento, manter objetividade profissional com respeito a qualquer software ou documento relacionado que seja chamado a avaliar.

Observamos, porém que o profissional pode ser prejudicado pelas intenções do próprio cliente, que por sua vez pratica irregularidades. Cabe ao profissional de Engenharia de Software manter-se íntegro, e evitar tais práticas. Precisamos de um público melhor informado, precisamos divulgar as experiências em que os princípios éticos se mostrem eficazes para a expansão de negócios que geram retorno de investimentos enquanto proporcionam bem-estar, para o desenvolvimento desta cultura da ética.

Muito importante também o quinto princípio, sobre a administração. O profissional que assume responsabilidades como administrador deve ter em mente que as suas decisões afetam seus subordinados e o destino das empresas. Se o exemplo de administração não observa a ética profissional, o nível de comprometimento dos subordinados decresce, e a credibilidade é afetada no seu todo.

Grande Abraço,
Gilberto Ribeiro.