quarta-feira, 24 de março de 2021

Software x Hardware

De acordo com Pressman (2011, p. 32-33), comparar o software com produtos de hardware auxilia na compreensão das diferenças existentes entre eles e enfatiza as características inerentes a um software. O processo de desenvolvimento do software apresenta diferenças fundamentais em relação ao hardware:

  • O processo criativo do hardware gera algo físico (por exemplo, placas de circuitos). O desenvolvimento de software resulta em um elemento pertencente a um sistema lógico, intangível;
  • O software geralmente é desenvolvido sob medida, ao contrário do hardware, no qual o projetista tem acesso a componentes existentes que executam tarefas definidas. O projetista do software nem sempre terá acesso a módulos prontos para utilização e quando o faz, pode elevar o risco do produto devido a questões de segurança;
  • Os custos do software estão concentrados no desenvolvimento e não no processo de manufatura, logo, não pode ser gerido como projeto de manufatura;
  • Ao longo do tempo, o produto de software não se desgasta, mas se deteriora em função da introdução de erros oriundos de atividades de manutenção ou evoluções implícitas no processo que devem ser reconsideradas no modelo original.

Desta forma, o software sofre deterioração ocasionada por diversos fatores sendo uma característica peculiar do produto. Ainda segundo Pressman (2011), no caso do hardware, temos um alto índice de falhas no início do seu ciclo de vida ocasionado por defeitos de fabricação e projeto. Posteriormente os defeitos são corrigidos, dando estabilidade nas falhas ou mantendo-a em um nível muito baixo e suportável para a estrutura. Já no final do ciclo de vida do produto podem surgir problemas relacionados ao envelhecimento, acúmulo de poeira, vibração, abuso, temperaturas extremas, entre outros. Este processo pode ser visto no gráfico apresentado na figura.

Diferentemente da curva teórica de falhas do hardware, a de software leva em conta que o software não sofre processos de envelhecimento como o hardware, pois o software não é algo físico. No início do ciclo de vida do software, teremos problemas (bugs) que serão ajustados no decorrer do desenvolvimento e se estabilizarão, gerando uma tendência de achatamento da curva, conforme pode ser visto na figura.

Notemos que esta é apenas uma teoria, já que a curva real do índice de falhas de um software considera o processo de manutenção e mudanças. Durante o processo de refinamento do produto ou mudanças a probabilidade de inserção de novos erros aumenta consideravelmente, gerando picos na curva de falhas. As sucessivas alterações do software tendem a introduzir mais erros antes da estabilização dos erros de alterações anteriores, ocasionando a tendência crescente do índice de falhas.

Isso nos remete a uma realidade bastante complicada em relação ao software: ele é um produto que quanto mais se conserta, pior fica. Um software em constante manutenção pode ser tornar uma espécie de “colcha de retalhos”, gerando pontos de falhas diversos, difíceis de se identificar e de se ajustar. O melhor modelo é o desenvolvimento de um novo produto após o tempo de vida útil do anterior, considerando-se as novas necessidades e tecnologias disponíveis.

Quando o hardware é projetado e construído, os componentes digitais são inseridos em catálogos. A cada circuito integrado ou componente é assinalado um código, uma função definida e validada, uma interface especificada e um conjunto padrão de integração. Uma vez escolhido no catálogo, o componente desejado pode ser adquirido e utilizado em diferentes projetos de hardware, com alta confiabilidade.

No mundo do software, isso é algo que está apenas começando a ser utilizado em uma escala mais ampla, apesar de existirem alguns casos antigos de reuso, como as bibliotecas de subrotinas científicas. Atualmente, a visão de reuso foi ampliada para abranger não apenas algoritmos consagrados, mas também estruturas de dados, interfaces gráficas e diferentes classes e componentes orientados a objetos.

terça-feira, 23 de março de 2021

Definições e Conceitos de Software e Engenharia de Software

Engenharia de Software é uma disciplina da Engenharia que cuida de diversos aspectos do trabalho de desenvolvimento de sistemas de software, envolvendo todas as etapas do ciclo do projeto, desde a definição de requisitos até a sua manutenção, que ocorre após a entrega do produto e o início de sua operação. Seu principal objetivo é fornecer uma estrutura metodológica para a construção de software com alta qualidade.

Podemos definir Engenharia de Software como um processo que envolve a criação e a utilização de sólidos princípios de engenharia a fim de obter software com as características:

  • que possua alta qualidade;
  • que seja produzido de maneira econômica;
  • que seja confiável;
  • que trabalhe eficientemente em máquinas reais;
  • que seja entregue no prazo;
  • que satisfaça o cliente.

De acordo com Pressman (2011, p. 3), a Engenharia de Software é uma tecnologia em camadas, apoiada fundamentalmente em um compromisso organizacional com a qualidade, como mostra a figura. Nesta abordagem, podemos observar que o alicerce da Engenharia de Software é a camada de processo, que funciona como um adesivo que mantém unidas as camadas ligadas à tecnologia.

O processo forma uma base que mantém unidas as camadas de tecnologia, permitindo o desenvolvimento de software com qualidade. Define o arcabouço que garante a efetiva utilização das técnicas de Engenharia de Software.

Os métodos fornecem as técnicas de “como fazer” a construção de software. Abrangem um amplo conjunto de tarefas que incluem comunicação, análise de requisitos, modelagem de projeto, construção de programas, testes e manutenção.

As ferramentas fornecem apoio automatizado ou semi-automatizado para o processo e seus métodos.

Fonte: PRESSMAN (2011, p.40)

Em função de sua indiscutível importância, caro aluno, as técnicas e métodos da Engenharia de Software são atualmente muito usadas, mas ainda não são usadas por todos e nem usadas da maneira correta.

Não podemos prosseguir falando da Engenharia de Software sem antes entendermos o software e seus fundamentos. Assim, os conceitos de software são apresentados aqui como uma referência inicial para o estudo do software, propriamente dito e de seus processos de desenvolvimento.

Pressman (2006, p. 4) conceitua o software como:

(1) Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados;

(2) Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação;

(3) Documentos que descrevem a operação e o uso dos programas.

As normas de gestão de qualidade e garantia da qualidade apresentam definições de software e seus componentes e processos. De acordo com a norma NBR ISO 9000-3, que é uma interpretação da norma de garantia de qualidade ISO 9001 para aplicação aos produtos de software, há as seguintes definições:

  • Software: Criação intelectual compreendendo os programas, procedimentos, regras e qualquer documentação correlata à operação de um sistema de processamento de dados.
  • Produto de software: Conjunto completo de programas de computador, procedimentos e documentação correlata, assim como dados designados para entrega a um usuário.
  • Item de software: Qualquer parte identificável de um produto de software em etapa intermediária ou na etapa final de desenvolvimento.
  • Desenvolvimento: Todas as atividades a serem realizadas para a criação de um produto de software.
  • Fase: Segmento definido do trabalho.

Como podemos observar, o conjunto de conceitos apresentados deixa claro que o software é um produto complexo que exige cuidados constantes, não podendo o controle da qualidade ser uma atividade secundária, devendo estar presente desde o início de seu desenvolvimento até a análise final de entrega.

segunda-feira, 22 de março de 2021

O Chaos Report

Em 1995 a organização The Standish Group (1995) publicou um estudo analisando as estatísticas sobre sucesso e fracasso dos projetos de desenvolvimento de software: o Chaos Report. Neste estudo foi revelado que:

  • quase 84% dos projetos de software eram mal-sucedidos, sejam por serem cancelados ou apresentarem falhas críticas (dentre elas conclusão fora do tempo previsto, gastos fora do orçamento previsto ou produto com menos funcionalidades do que o planejado);
  • 31,1% dos projetos eram cancelados antes de serem concluídos;
  • 52,7% dos projetos apresentavam custo real 189% maior que o estimado e o tempo de conclusão 222% maior que o previsto;
  • 16,2% dos projetos eram concluídos dentro de prazo, custo e escopo estimados;
  • estimou-se que, naquele ano, as agências governamentais e companhias privadas americanas teriam gasto US$ 81 bilhões apenas em projetos cancelados, e mais US$ 59 bilhões em projetos concluídos fora do tempo previsto.

O Standish Group continuou publicando regularmente seu relatório nos anos seguintes e, apesar de 29% dos projetos de software iniciados em 2015 terem obtido sucesso (successful), ainda é preocupante saber que 19% de todos eles fracassaram, não foram finalizados ou nunca foram usados (failed) e 52% sofrem com algum problema de atraso, extrapolam o orçamento e/ou não atendem aos requisitos, conforme indicam os dados da figura.

Resultados do Chaos Report até 2015
  2011 2012 2013 2014 2015
Successful 29% 27% 31% 28% 29%
Chalenged 49% 56% 50% 55% 52%
Failed 22% 17 19% 17% 19%

Observando estes números, fica claro que, de 1960 até hoje, mais de 50 anos de experiência no desenvolvimento de software não bastaram para melhorar efetivamente a qualidade do software, a despeito da evolução ocorrida na área de Engenharia de Software e do ferramental disponível.

Grady Booch, um dos criadores da UML (Unified Modeling Language), resumiu a história dizendo que uma “doença” que dure tanto tempo quanto esta deveria ser chamada de “anormalidade” (BOOCH; RUMBAUGH; JACOBSON, 2006).

Grady Booch
Tradução: “A função de um bom software é fazer o complexo parecer ser simples.” Grady Booch. Fonte:www.azquotes.com

domingo, 21 de março de 2021

Fundamentos da Engenharia de Software

Para entendermos melhor os conceitos fundamentais que envolvem a área de Engenharia de Software, vamos fazer um breve histórico dos principais fatos que ocorreram no mundo da tecnologia que justificaram a criação deste ramo da computação. É interessante vocês notarem que algumas décadas atrás não se tinha ideia da importância que os computadores e, em especial, o software, iriam ter e como iriam afetar profundamente a vida de todos nós. 

A Crise do Software e a Engenharia de Software

O termo “Engenharia de Software” foi criado no início da década de 1960, tendo sido utilizado oficialmente em 1968 na NATO Conference on Software Engineering (Conferência da OTAN sobre Engenharia de Software), que aconteceu na cidade de Garmisch, Alemanha. Nesta ocasião, todos estavam preocupados em contornar os efeitos da crise do software e buscar maneiras de dar um tratamento de engenharia, ou seja, mais sistemático e controlado, ao desenvolvimento de sistemas de software complexos.

NATO Software Engineering Conference, 1968

Sistemas de software complexos apresentam, de forma geral, componentes heterogêneos e em grande número, com alto grau de interconexões, relações e dependência entre si. Esta heterogeneidade pode surgir, em parte, como resultado da evolução do sistema e sua adaptação a novas condições de contorno. Os sistemas também podem se tornar complexos na medida em que novas versões são criadas.

Como o principal objetivo dessa conferência foi estabelecer práticas mais maduras para o processo de desenvolvimento de software, esta conferência é considerada como o evento que deu origem à disciplina de Engenharia de Software.

Spector e Gifford (1986, p. 268-273) realizaram um famoso estudo no qual comparavam a construção de pontes ao desenvolvimento de software. Os autores partiam da premissa que as pontes normalmente eram construídas no tempo planejado, com gastos dentro do orçamento, e nunca caíam. Já os softwares nunca ficavam prontos dentro do prazo e do orçamento planejados, e, além disso, quase sempre apresentavam problemas.

Aconteceu

A Crise do Software

A crise do software foi um termo criado para descrever as dificuldades enfrentadas no desenvolvimento de software no final da década de 1960. O aumento da complexidade dos problemas, aliado à inexistência de técnicas bem estabelecidas e à crescente demanda por novas aplicações, indicavam que medidas sérias deveriam ser tomadas. Essa crise teve como origem a introdução de computadores “mais poderosos”. O advento deste hardware com mais recursos tornava viáveis softwares bem maiores e mais complexos que os sistemas existentes. A experiência inicial de construção desses sistemas mostrou que uma abordagem informal de desenvolvimentode software não era suficiente. Projetos importantes sofriam atrasos (às vezes, de alguns anos). Os custos eram muito maiores do que os inicialmente projetados. As soluções de software não eram confiáveis. Os programas eram de difícil manutenção. Novas técnicas e novos métodos eram necessários para controlar a complexidade inerente aos grandes sistemas de software.

sábado, 20 de março de 2021

Vantagens e desvantagens do uso do BSC

Como vantagens da implantação do BSC, as organizações podem:

  • esclarecer e traduzir a missão e a visão, iniciando com um trabalho de equipe que traduza a estratégia da organização em objetivos estratégicos específicos;
  • comunicar e associar objetivos e mensurações estratégicas, que são transmitidos aos colaboradores por meio de boletins informativos, quadros de avisos e e-mails;
  • planejar, estabelecer metas e alinhar iniciativas estratégicas, já que são traçadas conjuntamente metas para atingir os objetivos com três a cinco anos de antecedência, as quais, uma vez alcançadas, permitem a evolução da organização.

No entanto, existem algumas críticas à metodologia do BSC, fundamentadas no fato de que alguns usuários confundem os fins com os meios. O BSC é um meio de promover a estratégia, não uma estratégia em si.

Outro problema muito comum é a falta de coordenação entre áreas fins e meio ou mesmo entre as diversas áreas de uma organização. Uma situação negativa que exemplificaria esse problema seria um cenário em que a área de recursos humanos, por exemplo, obedecesse ao “seu plano” ou àquilo que considerasse prioritário, enquanto a área de logística atuasse também em função de seus interesses, e a mesma atitude fosse seguida por outros setores da empresa, como marketing, TI etc.

Cada um agir de acordo com suas próprias orientações, mesmo que com base nas quatro perspectivas do BSC, mas sem integração em prol do direcionamento comum à organização, configura-se como uma situação indesejada. Na verdade, a metodologia age no sentido de evitar tal fragmentação de gestão.

Podemos citar como principais pontos fracos do BSC:

  • relações de causa e efeito unidirecionais e muito simplistas;
  • não separa causa e efeito no tempo;
  • ausência de mecanismos para validação;
  • vínculo entre estratégia e a operação insuficiente;
  • muito internamente focado;
  • ausência de uma base histórica suficiente para análise de um indicador pode levar a conclusões imprecisas.

É importante lembrar que o BSC se encontra hoje incorporado à gestão de organizações públicas ou privadas, de pequeno ou grande porte, de natureza comercial, industrial ou de serviços e de diferentes setores da economia (financeiro, saúde, varejo, eletromecânico etc.). Os profissionais da organização, principalmente aqueles voltados para planejamento e controle, precisam avaliar a viabilidade e os possíveis ganhos decorrentes da implementação do BSC em suas organizações.

sexta-feira, 19 de março de 2021

Gerenciamento com BSC

Existe um grande desafio nas organizações para definir objetivos e metas visando alcançar os resultados esperados. Mas como mensurar esses objetivos e saber se uma empresa está no caminho certo?

Além de definir objetivos que traduzam a estratégia, é importante incluir outros elementos na gestão capazes de orientar a organização quanto ao alcance dos resultados e os possíveis riscos decorrentes de diversos fatores internos e externos.

De acordo com Pereira (2009), o BSC possui uma estrutura lógica que inter-relaciona objetivos estratégicos por meio de perspectivas da organização, lançando mão desses elementos gerenciáveis para serem analisados e controlados no decorrer do ciclo de gestão estratégica. 

O BSC diferencia-se de outros modelos de gestão porque pode agregar todos os modelos de controle financeiro e não financeiro que existem, desde que propiciem à organização uma forma de indicador de desempenho.

De acordo com Silva Netto e Oliveira (2012), para as organizações utilizarem o BSC em sua gestão, propõem-se as seguintes etapas de modelagem:

  • Arquitetura do programa de medição: o objetivo dessa etapa é promover uma compreensão e uma análise crítica dos direcionadores de negócio e da visão de futuro. Um objetivo secundário é resgatar as diretrizes estratégicas, analisando sua coerência com os direcionadores de negócio e visão de futuro.
  • Inter-relacionamento de objetivos estratégicos: as atividades dessa etapa implicam alocar os objetivos estratégicos nas quatro dimensões do BSC, correlacionando-as entre si. Nesse processo, poderão ou não surgir lacunas no inter-relacionamento, que deverão ser eliminadas ou preenchidas a partir de novas discussões e análises do planejamento estratégico da organização.
  • Escolha e elaboração dos indicadores: o objetivo essencial da seleção de indicadores específicos para o BSC é a identificação daqueles que melhor comuniquem o significado da estratégia que foi estabelecida.
  • Elaboração do plano de implementação: uma vez definidos os indicadores associados aos diferentes objetivos estratégicos, definem-se metas, planos de ação e responsáveis a fim de direcionar a implementação da estratégia.

De acordo com Melo (2012), a abstração mais simples para entender o BSC é enxergá-lo como uma biblioteca de melhores práticas para elaboração de um painel de medição de desempenho da estratégia empresarial (dashboard): sua principal função é comunicar a estratégia de forma clara e objetiva e gerenciar sua implantação. A figura xx ilustra um dashboard criado com base nas perspectivas do BSC.

Parte-se da premissa de que o funcionamento do mercado na era da informação exige necessidade de inovação, globalização dos negócios e conhecimento tácito substituindo a força braçal como contribuição principal da força de trabalho para direcionar uma atitude mais moderna na gestão estratégica.

Reunir as pessoas da organização em torno dos objetivos e alcançar as metas estabelecidas necessita de recursos simples e de fácil leitura para a tomada de decisão. O BSC é um modelo sistematizado e testado experimentalmente para:

  • simplificar a estratégia corporativa;
  • ligar a estratégia ao orçamento anual da empresa;
  • comunicar a estratégia em toda a organização;
  • alinhar a organização com a estratégia;
  • medir a eficácia da estratégia.

As linhas estratégicas definidas pela empresa são orientadoras do seu percurso e de sua atividade para o curto-médio prazo, devendo deter a possibilidade prática do ajustamento às diferentes realidades pelas quais vai passando a organização.

Outra característica importante do BSC é o seu foco numa estratégia amarrada desde o objetivo puramente financeiro até o indicador relacionado ao desenvolvimento do funcionário.

Kaplan e Norton (1997) dizem que a estratégia é um conjunto de hipóteses que contam uma história de sucesso a realizar. As relações causais fortalecem a história como um todo e promovem uma sinergia virtuosa entre os objetivos estratégicos. A perseguição e a realização de um contribui automaticamente para os demais, otimizando esforço e resultado.

Segundo Kraemer (2005), um projeto típico de formulação e implantação de um BSC pode durar 16 semanas, porém nem todo esse tempo é ocupado com as atividades do scorecard: grande parte do tempo é determinada pela disponibilidade dos executivos para entrevistas, workshops e reuniões.

A figura ilustra um projeto de implantação baseado no BSC. 

Evolução da construção de um projeto baseado no BSC
Fonte: Baseado em Kraemer (2005).

Aconteceu

O BSC é uma ferramenta útil para dirigir empresas de forma proativa no curto e no longo prazo. Sua eficácia está na correta compreensão dos seus fundamentos, na sua aplicação completa que implique na mudança da gestão da empresa. Medir a estratégia permite que a organização confirme ou rejeite as ações de causa e efeitos assumidos quando aquela foi estabelecida (MELO, 2012).

A ideia do gerenciamento com base no BSC é que a organização parta dos objetivos traçados para dar um salto de competitividade na organização para os próximos dois, cinco ou dez anos e derive indicadores para medir se empresa está caminhando corretamente para a realização dos objetivos e, finalmente, se eles foram alcançados.

quinta-feira, 18 de março de 2021

Perspectiva dos processos internos

Na perspectiva relativa aos processos internos, são identificados os processos críticos no qual a empresa deve buscar a excelência, no sentido de atender aos objetivos dos clientes e dos acionistas.

Como as medidas dos processos internos estão voltadas para os processos que terão maior importância na satisfação do cliente e na conquista dos objetivos financeiros da empresa, geralmente os objetivos e as medidas para essa perspectiva só são desenvolvidos depois de claramente formulados.

Alguns aspectos dessas medidas serão incluídos como medidas indispensáveis de desempenho na perspectiva dos processos internos da grande maioria das organizações, principalmente na área de TI. Nessa perspectiva, a TI pode contribuir automatizando os processos internos, tornando-os mais eficientes e de menor custo e ampliando-os para toda a organização.

Perspectiva do aprendizado e do crescimento

Perspectiva do aprendizado e do crescimento
Fonte:

Os objetivos estabelecidos nas demais perspectivas revelam onde a empresa deve se destacar para obter um desempenho excepcional. Os objetivos da perspectiva do aprendizado e do crescimento, por sua vez, oferecem a infraestrutura que tornará possível que se atinjam objetivos ambiciosos nas outras três. Portanto, a capacidade de alcançar metas superiores depende das capacidades organizacionais para o aprendizado e o crescimento.

A perspectiva do aprendizado e crescimento está dividida em três categorias principais:

  • Capacidade do pessoal: Fazer o mesmo trabalho de forma sistemática e repetitiva, com a mesma qualidade e eficiência, não é considerado mais uma prática suficiente para o sucesso organizacional. Apenas para manter a posição relativa atual, as empresas veem-se obrigadas a melhorar continuamente. E, se quiserem se destacar além dos níveis atuais de desempenho financeiro e para os clientes, não é suficiente apenas obedecer a procedimentos operacionais padronizados estabelecidos pelo nível gerencial. Melhorar os procedimentos e o desempenho deve partir, cada vez mais, dos colaboradores que se encontram mais próximos dos processos internos e dos clientes da empresa. Padrões que determinam como os procedimentos internos e a resposta aos clientes devem ser realizados podem servir de ponto inicial, a partir do qual devem ser feitas melhorias contínuas. Como medidas essenciais para os colaboradores da empresa, temos: melhorar a satisfação, reter (turnover) e aumentar a sua produtividade.
  • Capacidade dos sistemas de informação: Esse indicador avalia a disponibilidade atual das informações relativamente às necessidades previstas e como elas estão sendo disseminadas e compartilhadas. Medidas coerentes de disponibilidade de informações estratégicas poderiam ser o percentual de processos que oferecem feedback em tempo real sobre qualidade, tempo e custo e o percentual de funcionários que lidam diretamente com o cliente e têm acesso online e em tempo real às informações referentes a eles.
  • Motivação, empowerment e alinhamento: Mesmo funcionários habilitados, que dispõem de excelente aptidão e acesso às informações, não contribuirão para o sucesso organizacional se não estiverem motivados a agir dentro dos interesses da empresa ou se não tiverem liberdade para decidir ou agir. Sendo assim, o terceiro vetor dos objetivos de aprendizado e crescimento direciona o clima organizacional para motivação e iniciativa dos colaboradores. Como medidas básicas, destacam-se: coleta de sugestões e sua implementação; melhoria das condições de trabalho; alinhamento individual e organizacional às estratégias do negócio; e medição do desempenho de equipe, dentre outras que também podem ser adotadas pela área de TI.

Diferentemente do que ocorre com as perspectivas financeira, dos clientes e dos processos internos, há um número muito menor de exemplos concretos de medidas para a perspectiva do aprendizado e crescimento. Essa carência de unidades de medidas e experiências empíricas nessa quarta perspectiva do Balanced Scorecard é uma indicação de que não se está vinculando os objetivos estratégicos de reciclagem dos empregados, fornecimento de informações e alinhamento de pessoas, equipes e unidades organizacionais à estratégia e aos objetivos de longo prazo.

Três exemplos de Balanced Scorecards e sua aplicação na empresa

“BSC é uma ferramenta destinada ao acompanhamento das decisões estratégicas tomadas pela empresa com base em indicadores previamente estabelecidos e que devem permear ao menos 4 aspectos: financeiros, clientes, processos internos e aprendizagem & crescimento.

Assim, a empresa tem sua capacidade de medição e acompanhamento muito ampliada, permitindo que todos os pontos relevantes da cadeia produtiva passem a ser medidos. Isso traz importantes melhorias também no entendimento por parte de toda empresa de como a estratégia definida pela alta gestão será avaliada até o ponto em que cada colaborador se envolve no processo. Isso se faz por meio da elaboração dos chamados mapas estratégicos.”