27
Engenharia de Software

Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

  • Upload
    dinhanh

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

Engenharia de Software

Ferramentas CASE e qualidade de software

Material Teoacuterico

Responsaacutevel pelo ConteuacutedoProfa Dra Ana Paula do Carmo Marcheti Ferraz

Revisatildeo TextualProfa Ms Luciene Oliveira da Costa Santos

5

bullIntroduccedilatildeo

bullQualidade de software

Este guia de estudo sobre a forma de organizar suas atividades para cumprir os propoacutesitos da disciplina online objetiva salientar algumas informaccedilotildees importantes sobre esta unidade bem como sobre o estudo online em si

Organize-se tambeacutem de forma a natildeo deixar para o uacuteltimo dia a realizaccedilatildeo das atividades (AS e AP) pois podem ocorrer imprevistos Encerrada a unidade encerra-se a possibilidade de obter a nota relativa a cada atividade

Para ampliar seu conhecimento bem como aprofundar os assuntos discutidos pesquise leia e consulte os livros indicados nas Referecircncias

A Bibliografia Fundamental para esta Disciplina eacute SOMMERVILLE Ian Engenharia de Software 9ed Satildeo Paulo Pearson 2011 A Bibliografia Complementar estaacute indicada em item especiacutefico em cada unidade

bullCompreender as caracteriacutesticas relacionadas agraves ferramentas CASE

bullRefletir a importacircncia da qualidade de software

bullPerceber a existecircncia e as peculiaridades das teacutecnicas e estrateacutegias que focam a qualidade do software

bullCompreender que a qualidade do produto eacute dependente da qualidade do processo

bullConhecer modelos para a melhoria da qualidade do software

Ferramentas CASE e qualidadede software

bullFerramentas CASE

6

Unidade Ferramentas CASE e qualidade de software

Contextualizaccedilatildeo

Discutirmos as questotildees relacionadas agrave produccedilatildeo de software assim como meacutetricas para garantir as qualidades de software natildeo satildeo tarefas faacuteceis entretanto satildeo fundamentais para satisfaccedilatildeo do cliente ou dos usuaacuterios

Nesta unidade abordaremos as ferramentas que automatizam o trabalho do desenvolvedor de software durante as diversas fases do processo produtivo e ateacute que ponto estas ferramentas interferem na produtividade da induacutestria do software aleacutem das caracteriacutesticas de qualidade do produto e do processo de software mostrando caracteriacutesticas e fatores que afetam a qualidade do software Aleacutem disso vocecirc conheceraacute as principais normas que visam agrave melhoria da qualidade de software

Entender esses conceitos ajudaraacute a compreender melhor os aspectos relacionados agrave Engenharia de Software apresentados nesta disciplina

7

Introduccedilatildeo

Todos os assuntos relacionados agrave Engenharia de Software estatildeo integrados a meacutetodos ferramentas e procedimentos para o desenvolvimento de produtos de software com qualidade

As ferramentas proporcionam um apoio automatizado ou semiautomatizado aos meacutetodos Quando as ferramentas satildeo integradas de forma que a informaccedilatildeo criada por uma ferramenta possa ser usada por outra eacute estabelecido um sistema de suporte ao desenvolvimento de software chamado ndash Engenharia de Software Auxiliada por Computador ou CASE do inglecircs Computer-Aided Software Engineering (PRESSMAN 1995)

As ferramentas proporcionam um apoio automatizado aos meacutetodos Hoje em dia jaacute existem ferramentas capazes de sustentar todas as etapas e meacutetodos relacionados agraves vaacuterias fases do processo de desenvolvimento de software de forma automatizada

Uma delas eacute a Ferramenta CASE Nesta unidade natildeo apenas apresentaremos as questotildees histoacutericas como funcionais da ferramenta como tambeacutem daremos iniacutecio a conceitos relacionados agrave qualidade de produto de software

Qualidade pode ser um conceito subjetivo ndash o que eacute qualidade para mim pode natildeo ser para vocecirc Entretanto para medirmos a qualidade de um software conceitos subjetivos natildeo podem ser considerados

Para que possamos excluir ou definir a falta parcial ou total da qualidade num produto de software eacute necessaacuterio que haja uma definiccedilatildeo precisa do que eacute qualidade ou pelo menos quais satildeo as propriedades relacionadas a partir dos princiacutepios da Engenharia de Software

Nessa linha de raciociacutenio eacute que discutiremos os pontos de qualidade inclusive apresentando alguns conceitos e padrotildees definidos pelo Instituto de Engenharia de Software (SEI - Software Engineering Institute) que dentre tantos modelos definiu o modelo de certificaccedilatildeo de qualidade de software - CMMI (Capability and Maturity Model Integrator) que veremos em linhas gerais mais adiante nesta unidade

8

Unidade Ferramentas CASE e qualidade de software

Ferramentas CASE

Antes de apresentarmos as caracteriacutesticas das ferramentas CASE vamos ler algumas definiccedilotildees de diferentes autores para essas ferramentas

bullCASE refere-se a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades do processo de software como anaacutelise de requisitos modelagem de sistema depuraccedilatildeo e testes (SOMMERVILLE 2011)

bullCASE eacute uma ferramenta ou conjunto de teacutecnicas facilitadoras de desenvolvimento de software moderno que utiliza teacutecnicas para ajudar no trabalho dos engenheiros de software (REZENDE 2005)

bullUma ferramenta CASE eacute um instrumento ou sistema automatizado utilizado para realizar uma tarefa da melhor maneira possiacutevel Essa melhor maneira pode significar que a ferramenta nos torna mais precisos eficientes e produtivos ou que exista melhora na qualidade do produto resultante (PFLEEGER 2004)

De acordo com Sommerville (2011) os engenheiros fazem os produtos funcionarem aplicando teorias meacutetodos e ferramentas nas situaccedilotildees apropriadas de modo seletivo O software natildeo eacute apenas um programa de computador eacute tambeacutem toda a documentaccedilatildeo associada e os dados necessaacuterios para fazer com que esses programas funcionem corretamente

A Engenharia de Software natildeo cuida apenas do desenvolvimento de um software mas tambeacutem do desenvolvimento de novas ferramentas ou da melhoria das ferramentas que jaacute existem para suporte e apoio ao software

Entatildeo chegamos agrave seguinte pergunta ferramentas CASE satildeo softwares que auxiliam a desenvolver novos softwares

Sugerimos que vocecirc pare alguns minutos e tente formular sua proacutepria resposta sobre isso

Vocecirc pode perceber que o objetivo de qualquer induacutestria eacute satisfazer agraves necessidades de seus clientes entregando produtos com qualidade e aumentando assim a produtividade de seus processos de produccedilatildeo Na induacutestria de software esses objetivos natildeo satildeo diferentes

A Engenharia de Software tem como objetivo o aperfeiccediloamento da qualidade dos softwares desenvolvidos e o aumento da produtividade dos engenheiros que os desenvolvem visando sistematizar sua manutenccedilatildeo de modo que aconteccedila dentro de prazos estimados com progresso controlado e usando meacutetodos tecnologias e processos em contiacutenuo aprimoramento (REZENDE 2005)

Passamos no iniacutecio da deacutecada de 1970 pela Crise do Software Crise do Software eacute o termo que resume todos os problemas que permearam o desenvolvimento de software e que de alguma forma a Engenharia de Software com seus processos e procedimentos estruturados tentou minimizar e como muitos autores afirmam colocou ordem numa atividade que aparentemente era caoacutetica (atividade de desenvolver um software)

9

Um dos sintomas da crise ndash alguns dos quais permeiam ateacute os dias atuais ndash eacute a dificuldade de suprir a demanda por novos softwares As ferramentas CASE satildeo promessas da Engenharia de Software para automatizar tarefas diminuir o tempo de desenvolvimento e assim atender melhor agrave crescente demanda por novos softwares sem contudo esquecer da qualidade necessaacuteria ao produto

Em outras palavras a preocupaccedilatildeo em desenvolver ferramentas que automatizam o trabalho de engenheiros de software eacute uma das tentativas de aumentar a produtividade e a qualidade da induacutestria de software

Contexto histoacutericoPressman (1995) lembra-nos do velho ditado sobre os filhos do sapateiro ele passa a maioria

do tempo fazendo sapatos para os outros e seus proacuteprios filhos natildeo tecircm sapatos feitos por ele

Esse ditado eacute anaacutelogo ao ditado popular ldquoem casa de ferreiro o espeto eacute de paurdquo

Segundo Pressman (1995) nos uacuteltimos 20 anos a grande maioria dos engenheiros de softwares tem sido como os filhos do sapateiro constroem softwares sistemas complexos que automatizam o trabalho para os outros mas para si mesmos natildeo tecircm usado quase nada para automatizar o ambiente de trabalho Recentemente a engenharia de software era fundamentalmente uma atividade manual em que ferramentas eram usadas somente em uacuteltimos estaacutegios do processo

Por volta da deacutecada de 1950 engenheiros utilizavam reacuteguas de caacutelculo e calculadoras mecacircnicas livros e tabelas que continham as foacutermulas e algoritmos que precisavam para efetuar a anaacutelise de um problema de engenharia Tudo era feito manualmente com qualidade mas manualmente

Passou uma deacutecada e esses engenheiros comeccedilaram a experimentar os benefiacutecios da informaacutetica principalmente do computador na realizaccedilatildeo destas tarefas

Jaacute na deacutecada de 1970 todas as foacutermulas que os engenheiros necessitavam estavam embutidas em um conjunto de programas de computador usados para analisar uma ampla variedade de problemas o que tornou inevitaacutevel o uso de tal ferramenta no dia a dia da profissatildeo Foi nesse contexto que a tecnologia comeccedilou a estreitar seus laccedilos com o processo de manufatura tendo os computadores como ferramenta oportunizadora do processo Assim surgiu o primeiro elo entre o Projeto Auxiliado por Computador (Computer-Aided Design ndash CAD) e a Manufatura Auxiliada por Computador (Computer-Aided Manufacturing ndash CAM) (PRESSMAN 1995)

Com o passar dos anos e a institucionalizaccedilatildeo da produccedilatildeo de software como induacutestria essas necessidades se intensificaram e finalmente os engenheiros de software ganharam sua primeira ferramenta auxiliada por computador a Engenharia de Software Auxiliada por Computador (ComputerndashAided Software Engineering ndash CASE)

Atualmente as ferramentas CASE fazem parte do dia a dia de trabalho do engenheiro de software Por meio dela foi possiacutevel automatizar as atividades e melhorar a produtividade no desenvolvimento do produto de software (PRESSMAN 2011)

A definiccedilatildeo do que eacute produtividade na induacutestria de software ainda eacute controversa pois a produtividade em software natildeo eacute uma medida direta Assim como nas outras engenharias a

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 2: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

Ferramentas CASE e qualidade de software

Material Teoacuterico

Responsaacutevel pelo ConteuacutedoProfa Dra Ana Paula do Carmo Marcheti Ferraz

Revisatildeo TextualProfa Ms Luciene Oliveira da Costa Santos

5

bullIntroduccedilatildeo

bullQualidade de software

Este guia de estudo sobre a forma de organizar suas atividades para cumprir os propoacutesitos da disciplina online objetiva salientar algumas informaccedilotildees importantes sobre esta unidade bem como sobre o estudo online em si

Organize-se tambeacutem de forma a natildeo deixar para o uacuteltimo dia a realizaccedilatildeo das atividades (AS e AP) pois podem ocorrer imprevistos Encerrada a unidade encerra-se a possibilidade de obter a nota relativa a cada atividade

Para ampliar seu conhecimento bem como aprofundar os assuntos discutidos pesquise leia e consulte os livros indicados nas Referecircncias

A Bibliografia Fundamental para esta Disciplina eacute SOMMERVILLE Ian Engenharia de Software 9ed Satildeo Paulo Pearson 2011 A Bibliografia Complementar estaacute indicada em item especiacutefico em cada unidade

bullCompreender as caracteriacutesticas relacionadas agraves ferramentas CASE

bullRefletir a importacircncia da qualidade de software

bullPerceber a existecircncia e as peculiaridades das teacutecnicas e estrateacutegias que focam a qualidade do software

bullCompreender que a qualidade do produto eacute dependente da qualidade do processo

bullConhecer modelos para a melhoria da qualidade do software

Ferramentas CASE e qualidadede software

bullFerramentas CASE

6

Unidade Ferramentas CASE e qualidade de software

Contextualizaccedilatildeo

Discutirmos as questotildees relacionadas agrave produccedilatildeo de software assim como meacutetricas para garantir as qualidades de software natildeo satildeo tarefas faacuteceis entretanto satildeo fundamentais para satisfaccedilatildeo do cliente ou dos usuaacuterios

Nesta unidade abordaremos as ferramentas que automatizam o trabalho do desenvolvedor de software durante as diversas fases do processo produtivo e ateacute que ponto estas ferramentas interferem na produtividade da induacutestria do software aleacutem das caracteriacutesticas de qualidade do produto e do processo de software mostrando caracteriacutesticas e fatores que afetam a qualidade do software Aleacutem disso vocecirc conheceraacute as principais normas que visam agrave melhoria da qualidade de software

Entender esses conceitos ajudaraacute a compreender melhor os aspectos relacionados agrave Engenharia de Software apresentados nesta disciplina

7

Introduccedilatildeo

Todos os assuntos relacionados agrave Engenharia de Software estatildeo integrados a meacutetodos ferramentas e procedimentos para o desenvolvimento de produtos de software com qualidade

As ferramentas proporcionam um apoio automatizado ou semiautomatizado aos meacutetodos Quando as ferramentas satildeo integradas de forma que a informaccedilatildeo criada por uma ferramenta possa ser usada por outra eacute estabelecido um sistema de suporte ao desenvolvimento de software chamado ndash Engenharia de Software Auxiliada por Computador ou CASE do inglecircs Computer-Aided Software Engineering (PRESSMAN 1995)

As ferramentas proporcionam um apoio automatizado aos meacutetodos Hoje em dia jaacute existem ferramentas capazes de sustentar todas as etapas e meacutetodos relacionados agraves vaacuterias fases do processo de desenvolvimento de software de forma automatizada

Uma delas eacute a Ferramenta CASE Nesta unidade natildeo apenas apresentaremos as questotildees histoacutericas como funcionais da ferramenta como tambeacutem daremos iniacutecio a conceitos relacionados agrave qualidade de produto de software

Qualidade pode ser um conceito subjetivo ndash o que eacute qualidade para mim pode natildeo ser para vocecirc Entretanto para medirmos a qualidade de um software conceitos subjetivos natildeo podem ser considerados

Para que possamos excluir ou definir a falta parcial ou total da qualidade num produto de software eacute necessaacuterio que haja uma definiccedilatildeo precisa do que eacute qualidade ou pelo menos quais satildeo as propriedades relacionadas a partir dos princiacutepios da Engenharia de Software

Nessa linha de raciociacutenio eacute que discutiremos os pontos de qualidade inclusive apresentando alguns conceitos e padrotildees definidos pelo Instituto de Engenharia de Software (SEI - Software Engineering Institute) que dentre tantos modelos definiu o modelo de certificaccedilatildeo de qualidade de software - CMMI (Capability and Maturity Model Integrator) que veremos em linhas gerais mais adiante nesta unidade

8

Unidade Ferramentas CASE e qualidade de software

Ferramentas CASE

Antes de apresentarmos as caracteriacutesticas das ferramentas CASE vamos ler algumas definiccedilotildees de diferentes autores para essas ferramentas

bullCASE refere-se a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades do processo de software como anaacutelise de requisitos modelagem de sistema depuraccedilatildeo e testes (SOMMERVILLE 2011)

bullCASE eacute uma ferramenta ou conjunto de teacutecnicas facilitadoras de desenvolvimento de software moderno que utiliza teacutecnicas para ajudar no trabalho dos engenheiros de software (REZENDE 2005)

bullUma ferramenta CASE eacute um instrumento ou sistema automatizado utilizado para realizar uma tarefa da melhor maneira possiacutevel Essa melhor maneira pode significar que a ferramenta nos torna mais precisos eficientes e produtivos ou que exista melhora na qualidade do produto resultante (PFLEEGER 2004)

De acordo com Sommerville (2011) os engenheiros fazem os produtos funcionarem aplicando teorias meacutetodos e ferramentas nas situaccedilotildees apropriadas de modo seletivo O software natildeo eacute apenas um programa de computador eacute tambeacutem toda a documentaccedilatildeo associada e os dados necessaacuterios para fazer com que esses programas funcionem corretamente

A Engenharia de Software natildeo cuida apenas do desenvolvimento de um software mas tambeacutem do desenvolvimento de novas ferramentas ou da melhoria das ferramentas que jaacute existem para suporte e apoio ao software

Entatildeo chegamos agrave seguinte pergunta ferramentas CASE satildeo softwares que auxiliam a desenvolver novos softwares

Sugerimos que vocecirc pare alguns minutos e tente formular sua proacutepria resposta sobre isso

Vocecirc pode perceber que o objetivo de qualquer induacutestria eacute satisfazer agraves necessidades de seus clientes entregando produtos com qualidade e aumentando assim a produtividade de seus processos de produccedilatildeo Na induacutestria de software esses objetivos natildeo satildeo diferentes

A Engenharia de Software tem como objetivo o aperfeiccediloamento da qualidade dos softwares desenvolvidos e o aumento da produtividade dos engenheiros que os desenvolvem visando sistematizar sua manutenccedilatildeo de modo que aconteccedila dentro de prazos estimados com progresso controlado e usando meacutetodos tecnologias e processos em contiacutenuo aprimoramento (REZENDE 2005)

Passamos no iniacutecio da deacutecada de 1970 pela Crise do Software Crise do Software eacute o termo que resume todos os problemas que permearam o desenvolvimento de software e que de alguma forma a Engenharia de Software com seus processos e procedimentos estruturados tentou minimizar e como muitos autores afirmam colocou ordem numa atividade que aparentemente era caoacutetica (atividade de desenvolver um software)

9

Um dos sintomas da crise ndash alguns dos quais permeiam ateacute os dias atuais ndash eacute a dificuldade de suprir a demanda por novos softwares As ferramentas CASE satildeo promessas da Engenharia de Software para automatizar tarefas diminuir o tempo de desenvolvimento e assim atender melhor agrave crescente demanda por novos softwares sem contudo esquecer da qualidade necessaacuteria ao produto

Em outras palavras a preocupaccedilatildeo em desenvolver ferramentas que automatizam o trabalho de engenheiros de software eacute uma das tentativas de aumentar a produtividade e a qualidade da induacutestria de software

Contexto histoacutericoPressman (1995) lembra-nos do velho ditado sobre os filhos do sapateiro ele passa a maioria

do tempo fazendo sapatos para os outros e seus proacuteprios filhos natildeo tecircm sapatos feitos por ele

Esse ditado eacute anaacutelogo ao ditado popular ldquoem casa de ferreiro o espeto eacute de paurdquo

Segundo Pressman (1995) nos uacuteltimos 20 anos a grande maioria dos engenheiros de softwares tem sido como os filhos do sapateiro constroem softwares sistemas complexos que automatizam o trabalho para os outros mas para si mesmos natildeo tecircm usado quase nada para automatizar o ambiente de trabalho Recentemente a engenharia de software era fundamentalmente uma atividade manual em que ferramentas eram usadas somente em uacuteltimos estaacutegios do processo

Por volta da deacutecada de 1950 engenheiros utilizavam reacuteguas de caacutelculo e calculadoras mecacircnicas livros e tabelas que continham as foacutermulas e algoritmos que precisavam para efetuar a anaacutelise de um problema de engenharia Tudo era feito manualmente com qualidade mas manualmente

Passou uma deacutecada e esses engenheiros comeccedilaram a experimentar os benefiacutecios da informaacutetica principalmente do computador na realizaccedilatildeo destas tarefas

Jaacute na deacutecada de 1970 todas as foacutermulas que os engenheiros necessitavam estavam embutidas em um conjunto de programas de computador usados para analisar uma ampla variedade de problemas o que tornou inevitaacutevel o uso de tal ferramenta no dia a dia da profissatildeo Foi nesse contexto que a tecnologia comeccedilou a estreitar seus laccedilos com o processo de manufatura tendo os computadores como ferramenta oportunizadora do processo Assim surgiu o primeiro elo entre o Projeto Auxiliado por Computador (Computer-Aided Design ndash CAD) e a Manufatura Auxiliada por Computador (Computer-Aided Manufacturing ndash CAM) (PRESSMAN 1995)

Com o passar dos anos e a institucionalizaccedilatildeo da produccedilatildeo de software como induacutestria essas necessidades se intensificaram e finalmente os engenheiros de software ganharam sua primeira ferramenta auxiliada por computador a Engenharia de Software Auxiliada por Computador (ComputerndashAided Software Engineering ndash CASE)

Atualmente as ferramentas CASE fazem parte do dia a dia de trabalho do engenheiro de software Por meio dela foi possiacutevel automatizar as atividades e melhorar a produtividade no desenvolvimento do produto de software (PRESSMAN 2011)

A definiccedilatildeo do que eacute produtividade na induacutestria de software ainda eacute controversa pois a produtividade em software natildeo eacute uma medida direta Assim como nas outras engenharias a

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 3: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

5

bullIntroduccedilatildeo

bullQualidade de software

Este guia de estudo sobre a forma de organizar suas atividades para cumprir os propoacutesitos da disciplina online objetiva salientar algumas informaccedilotildees importantes sobre esta unidade bem como sobre o estudo online em si

Organize-se tambeacutem de forma a natildeo deixar para o uacuteltimo dia a realizaccedilatildeo das atividades (AS e AP) pois podem ocorrer imprevistos Encerrada a unidade encerra-se a possibilidade de obter a nota relativa a cada atividade

Para ampliar seu conhecimento bem como aprofundar os assuntos discutidos pesquise leia e consulte os livros indicados nas Referecircncias

A Bibliografia Fundamental para esta Disciplina eacute SOMMERVILLE Ian Engenharia de Software 9ed Satildeo Paulo Pearson 2011 A Bibliografia Complementar estaacute indicada em item especiacutefico em cada unidade

bullCompreender as caracteriacutesticas relacionadas agraves ferramentas CASE

bullRefletir a importacircncia da qualidade de software

bullPerceber a existecircncia e as peculiaridades das teacutecnicas e estrateacutegias que focam a qualidade do software

bullCompreender que a qualidade do produto eacute dependente da qualidade do processo

bullConhecer modelos para a melhoria da qualidade do software

Ferramentas CASE e qualidadede software

bullFerramentas CASE

6

Unidade Ferramentas CASE e qualidade de software

Contextualizaccedilatildeo

Discutirmos as questotildees relacionadas agrave produccedilatildeo de software assim como meacutetricas para garantir as qualidades de software natildeo satildeo tarefas faacuteceis entretanto satildeo fundamentais para satisfaccedilatildeo do cliente ou dos usuaacuterios

Nesta unidade abordaremos as ferramentas que automatizam o trabalho do desenvolvedor de software durante as diversas fases do processo produtivo e ateacute que ponto estas ferramentas interferem na produtividade da induacutestria do software aleacutem das caracteriacutesticas de qualidade do produto e do processo de software mostrando caracteriacutesticas e fatores que afetam a qualidade do software Aleacutem disso vocecirc conheceraacute as principais normas que visam agrave melhoria da qualidade de software

Entender esses conceitos ajudaraacute a compreender melhor os aspectos relacionados agrave Engenharia de Software apresentados nesta disciplina

7

Introduccedilatildeo

Todos os assuntos relacionados agrave Engenharia de Software estatildeo integrados a meacutetodos ferramentas e procedimentos para o desenvolvimento de produtos de software com qualidade

As ferramentas proporcionam um apoio automatizado ou semiautomatizado aos meacutetodos Quando as ferramentas satildeo integradas de forma que a informaccedilatildeo criada por uma ferramenta possa ser usada por outra eacute estabelecido um sistema de suporte ao desenvolvimento de software chamado ndash Engenharia de Software Auxiliada por Computador ou CASE do inglecircs Computer-Aided Software Engineering (PRESSMAN 1995)

As ferramentas proporcionam um apoio automatizado aos meacutetodos Hoje em dia jaacute existem ferramentas capazes de sustentar todas as etapas e meacutetodos relacionados agraves vaacuterias fases do processo de desenvolvimento de software de forma automatizada

Uma delas eacute a Ferramenta CASE Nesta unidade natildeo apenas apresentaremos as questotildees histoacutericas como funcionais da ferramenta como tambeacutem daremos iniacutecio a conceitos relacionados agrave qualidade de produto de software

Qualidade pode ser um conceito subjetivo ndash o que eacute qualidade para mim pode natildeo ser para vocecirc Entretanto para medirmos a qualidade de um software conceitos subjetivos natildeo podem ser considerados

Para que possamos excluir ou definir a falta parcial ou total da qualidade num produto de software eacute necessaacuterio que haja uma definiccedilatildeo precisa do que eacute qualidade ou pelo menos quais satildeo as propriedades relacionadas a partir dos princiacutepios da Engenharia de Software

Nessa linha de raciociacutenio eacute que discutiremos os pontos de qualidade inclusive apresentando alguns conceitos e padrotildees definidos pelo Instituto de Engenharia de Software (SEI - Software Engineering Institute) que dentre tantos modelos definiu o modelo de certificaccedilatildeo de qualidade de software - CMMI (Capability and Maturity Model Integrator) que veremos em linhas gerais mais adiante nesta unidade

8

Unidade Ferramentas CASE e qualidade de software

Ferramentas CASE

Antes de apresentarmos as caracteriacutesticas das ferramentas CASE vamos ler algumas definiccedilotildees de diferentes autores para essas ferramentas

bullCASE refere-se a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades do processo de software como anaacutelise de requisitos modelagem de sistema depuraccedilatildeo e testes (SOMMERVILLE 2011)

bullCASE eacute uma ferramenta ou conjunto de teacutecnicas facilitadoras de desenvolvimento de software moderno que utiliza teacutecnicas para ajudar no trabalho dos engenheiros de software (REZENDE 2005)

bullUma ferramenta CASE eacute um instrumento ou sistema automatizado utilizado para realizar uma tarefa da melhor maneira possiacutevel Essa melhor maneira pode significar que a ferramenta nos torna mais precisos eficientes e produtivos ou que exista melhora na qualidade do produto resultante (PFLEEGER 2004)

De acordo com Sommerville (2011) os engenheiros fazem os produtos funcionarem aplicando teorias meacutetodos e ferramentas nas situaccedilotildees apropriadas de modo seletivo O software natildeo eacute apenas um programa de computador eacute tambeacutem toda a documentaccedilatildeo associada e os dados necessaacuterios para fazer com que esses programas funcionem corretamente

A Engenharia de Software natildeo cuida apenas do desenvolvimento de um software mas tambeacutem do desenvolvimento de novas ferramentas ou da melhoria das ferramentas que jaacute existem para suporte e apoio ao software

Entatildeo chegamos agrave seguinte pergunta ferramentas CASE satildeo softwares que auxiliam a desenvolver novos softwares

Sugerimos que vocecirc pare alguns minutos e tente formular sua proacutepria resposta sobre isso

Vocecirc pode perceber que o objetivo de qualquer induacutestria eacute satisfazer agraves necessidades de seus clientes entregando produtos com qualidade e aumentando assim a produtividade de seus processos de produccedilatildeo Na induacutestria de software esses objetivos natildeo satildeo diferentes

A Engenharia de Software tem como objetivo o aperfeiccediloamento da qualidade dos softwares desenvolvidos e o aumento da produtividade dos engenheiros que os desenvolvem visando sistematizar sua manutenccedilatildeo de modo que aconteccedila dentro de prazos estimados com progresso controlado e usando meacutetodos tecnologias e processos em contiacutenuo aprimoramento (REZENDE 2005)

Passamos no iniacutecio da deacutecada de 1970 pela Crise do Software Crise do Software eacute o termo que resume todos os problemas que permearam o desenvolvimento de software e que de alguma forma a Engenharia de Software com seus processos e procedimentos estruturados tentou minimizar e como muitos autores afirmam colocou ordem numa atividade que aparentemente era caoacutetica (atividade de desenvolver um software)

9

Um dos sintomas da crise ndash alguns dos quais permeiam ateacute os dias atuais ndash eacute a dificuldade de suprir a demanda por novos softwares As ferramentas CASE satildeo promessas da Engenharia de Software para automatizar tarefas diminuir o tempo de desenvolvimento e assim atender melhor agrave crescente demanda por novos softwares sem contudo esquecer da qualidade necessaacuteria ao produto

Em outras palavras a preocupaccedilatildeo em desenvolver ferramentas que automatizam o trabalho de engenheiros de software eacute uma das tentativas de aumentar a produtividade e a qualidade da induacutestria de software

Contexto histoacutericoPressman (1995) lembra-nos do velho ditado sobre os filhos do sapateiro ele passa a maioria

do tempo fazendo sapatos para os outros e seus proacuteprios filhos natildeo tecircm sapatos feitos por ele

Esse ditado eacute anaacutelogo ao ditado popular ldquoem casa de ferreiro o espeto eacute de paurdquo

Segundo Pressman (1995) nos uacuteltimos 20 anos a grande maioria dos engenheiros de softwares tem sido como os filhos do sapateiro constroem softwares sistemas complexos que automatizam o trabalho para os outros mas para si mesmos natildeo tecircm usado quase nada para automatizar o ambiente de trabalho Recentemente a engenharia de software era fundamentalmente uma atividade manual em que ferramentas eram usadas somente em uacuteltimos estaacutegios do processo

Por volta da deacutecada de 1950 engenheiros utilizavam reacuteguas de caacutelculo e calculadoras mecacircnicas livros e tabelas que continham as foacutermulas e algoritmos que precisavam para efetuar a anaacutelise de um problema de engenharia Tudo era feito manualmente com qualidade mas manualmente

Passou uma deacutecada e esses engenheiros comeccedilaram a experimentar os benefiacutecios da informaacutetica principalmente do computador na realizaccedilatildeo destas tarefas

Jaacute na deacutecada de 1970 todas as foacutermulas que os engenheiros necessitavam estavam embutidas em um conjunto de programas de computador usados para analisar uma ampla variedade de problemas o que tornou inevitaacutevel o uso de tal ferramenta no dia a dia da profissatildeo Foi nesse contexto que a tecnologia comeccedilou a estreitar seus laccedilos com o processo de manufatura tendo os computadores como ferramenta oportunizadora do processo Assim surgiu o primeiro elo entre o Projeto Auxiliado por Computador (Computer-Aided Design ndash CAD) e a Manufatura Auxiliada por Computador (Computer-Aided Manufacturing ndash CAM) (PRESSMAN 1995)

Com o passar dos anos e a institucionalizaccedilatildeo da produccedilatildeo de software como induacutestria essas necessidades se intensificaram e finalmente os engenheiros de software ganharam sua primeira ferramenta auxiliada por computador a Engenharia de Software Auxiliada por Computador (ComputerndashAided Software Engineering ndash CASE)

Atualmente as ferramentas CASE fazem parte do dia a dia de trabalho do engenheiro de software Por meio dela foi possiacutevel automatizar as atividades e melhorar a produtividade no desenvolvimento do produto de software (PRESSMAN 2011)

A definiccedilatildeo do que eacute produtividade na induacutestria de software ainda eacute controversa pois a produtividade em software natildeo eacute uma medida direta Assim como nas outras engenharias a

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 4: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

6

Unidade Ferramentas CASE e qualidade de software

Contextualizaccedilatildeo

Discutirmos as questotildees relacionadas agrave produccedilatildeo de software assim como meacutetricas para garantir as qualidades de software natildeo satildeo tarefas faacuteceis entretanto satildeo fundamentais para satisfaccedilatildeo do cliente ou dos usuaacuterios

Nesta unidade abordaremos as ferramentas que automatizam o trabalho do desenvolvedor de software durante as diversas fases do processo produtivo e ateacute que ponto estas ferramentas interferem na produtividade da induacutestria do software aleacutem das caracteriacutesticas de qualidade do produto e do processo de software mostrando caracteriacutesticas e fatores que afetam a qualidade do software Aleacutem disso vocecirc conheceraacute as principais normas que visam agrave melhoria da qualidade de software

Entender esses conceitos ajudaraacute a compreender melhor os aspectos relacionados agrave Engenharia de Software apresentados nesta disciplina

7

Introduccedilatildeo

Todos os assuntos relacionados agrave Engenharia de Software estatildeo integrados a meacutetodos ferramentas e procedimentos para o desenvolvimento de produtos de software com qualidade

As ferramentas proporcionam um apoio automatizado ou semiautomatizado aos meacutetodos Quando as ferramentas satildeo integradas de forma que a informaccedilatildeo criada por uma ferramenta possa ser usada por outra eacute estabelecido um sistema de suporte ao desenvolvimento de software chamado ndash Engenharia de Software Auxiliada por Computador ou CASE do inglecircs Computer-Aided Software Engineering (PRESSMAN 1995)

As ferramentas proporcionam um apoio automatizado aos meacutetodos Hoje em dia jaacute existem ferramentas capazes de sustentar todas as etapas e meacutetodos relacionados agraves vaacuterias fases do processo de desenvolvimento de software de forma automatizada

Uma delas eacute a Ferramenta CASE Nesta unidade natildeo apenas apresentaremos as questotildees histoacutericas como funcionais da ferramenta como tambeacutem daremos iniacutecio a conceitos relacionados agrave qualidade de produto de software

Qualidade pode ser um conceito subjetivo ndash o que eacute qualidade para mim pode natildeo ser para vocecirc Entretanto para medirmos a qualidade de um software conceitos subjetivos natildeo podem ser considerados

Para que possamos excluir ou definir a falta parcial ou total da qualidade num produto de software eacute necessaacuterio que haja uma definiccedilatildeo precisa do que eacute qualidade ou pelo menos quais satildeo as propriedades relacionadas a partir dos princiacutepios da Engenharia de Software

Nessa linha de raciociacutenio eacute que discutiremos os pontos de qualidade inclusive apresentando alguns conceitos e padrotildees definidos pelo Instituto de Engenharia de Software (SEI - Software Engineering Institute) que dentre tantos modelos definiu o modelo de certificaccedilatildeo de qualidade de software - CMMI (Capability and Maturity Model Integrator) que veremos em linhas gerais mais adiante nesta unidade

8

Unidade Ferramentas CASE e qualidade de software

Ferramentas CASE

Antes de apresentarmos as caracteriacutesticas das ferramentas CASE vamos ler algumas definiccedilotildees de diferentes autores para essas ferramentas

bullCASE refere-se a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades do processo de software como anaacutelise de requisitos modelagem de sistema depuraccedilatildeo e testes (SOMMERVILLE 2011)

bullCASE eacute uma ferramenta ou conjunto de teacutecnicas facilitadoras de desenvolvimento de software moderno que utiliza teacutecnicas para ajudar no trabalho dos engenheiros de software (REZENDE 2005)

bullUma ferramenta CASE eacute um instrumento ou sistema automatizado utilizado para realizar uma tarefa da melhor maneira possiacutevel Essa melhor maneira pode significar que a ferramenta nos torna mais precisos eficientes e produtivos ou que exista melhora na qualidade do produto resultante (PFLEEGER 2004)

De acordo com Sommerville (2011) os engenheiros fazem os produtos funcionarem aplicando teorias meacutetodos e ferramentas nas situaccedilotildees apropriadas de modo seletivo O software natildeo eacute apenas um programa de computador eacute tambeacutem toda a documentaccedilatildeo associada e os dados necessaacuterios para fazer com que esses programas funcionem corretamente

A Engenharia de Software natildeo cuida apenas do desenvolvimento de um software mas tambeacutem do desenvolvimento de novas ferramentas ou da melhoria das ferramentas que jaacute existem para suporte e apoio ao software

Entatildeo chegamos agrave seguinte pergunta ferramentas CASE satildeo softwares que auxiliam a desenvolver novos softwares

Sugerimos que vocecirc pare alguns minutos e tente formular sua proacutepria resposta sobre isso

Vocecirc pode perceber que o objetivo de qualquer induacutestria eacute satisfazer agraves necessidades de seus clientes entregando produtos com qualidade e aumentando assim a produtividade de seus processos de produccedilatildeo Na induacutestria de software esses objetivos natildeo satildeo diferentes

A Engenharia de Software tem como objetivo o aperfeiccediloamento da qualidade dos softwares desenvolvidos e o aumento da produtividade dos engenheiros que os desenvolvem visando sistematizar sua manutenccedilatildeo de modo que aconteccedila dentro de prazos estimados com progresso controlado e usando meacutetodos tecnologias e processos em contiacutenuo aprimoramento (REZENDE 2005)

Passamos no iniacutecio da deacutecada de 1970 pela Crise do Software Crise do Software eacute o termo que resume todos os problemas que permearam o desenvolvimento de software e que de alguma forma a Engenharia de Software com seus processos e procedimentos estruturados tentou minimizar e como muitos autores afirmam colocou ordem numa atividade que aparentemente era caoacutetica (atividade de desenvolver um software)

9

Um dos sintomas da crise ndash alguns dos quais permeiam ateacute os dias atuais ndash eacute a dificuldade de suprir a demanda por novos softwares As ferramentas CASE satildeo promessas da Engenharia de Software para automatizar tarefas diminuir o tempo de desenvolvimento e assim atender melhor agrave crescente demanda por novos softwares sem contudo esquecer da qualidade necessaacuteria ao produto

Em outras palavras a preocupaccedilatildeo em desenvolver ferramentas que automatizam o trabalho de engenheiros de software eacute uma das tentativas de aumentar a produtividade e a qualidade da induacutestria de software

Contexto histoacutericoPressman (1995) lembra-nos do velho ditado sobre os filhos do sapateiro ele passa a maioria

do tempo fazendo sapatos para os outros e seus proacuteprios filhos natildeo tecircm sapatos feitos por ele

Esse ditado eacute anaacutelogo ao ditado popular ldquoem casa de ferreiro o espeto eacute de paurdquo

Segundo Pressman (1995) nos uacuteltimos 20 anos a grande maioria dos engenheiros de softwares tem sido como os filhos do sapateiro constroem softwares sistemas complexos que automatizam o trabalho para os outros mas para si mesmos natildeo tecircm usado quase nada para automatizar o ambiente de trabalho Recentemente a engenharia de software era fundamentalmente uma atividade manual em que ferramentas eram usadas somente em uacuteltimos estaacutegios do processo

Por volta da deacutecada de 1950 engenheiros utilizavam reacuteguas de caacutelculo e calculadoras mecacircnicas livros e tabelas que continham as foacutermulas e algoritmos que precisavam para efetuar a anaacutelise de um problema de engenharia Tudo era feito manualmente com qualidade mas manualmente

Passou uma deacutecada e esses engenheiros comeccedilaram a experimentar os benefiacutecios da informaacutetica principalmente do computador na realizaccedilatildeo destas tarefas

Jaacute na deacutecada de 1970 todas as foacutermulas que os engenheiros necessitavam estavam embutidas em um conjunto de programas de computador usados para analisar uma ampla variedade de problemas o que tornou inevitaacutevel o uso de tal ferramenta no dia a dia da profissatildeo Foi nesse contexto que a tecnologia comeccedilou a estreitar seus laccedilos com o processo de manufatura tendo os computadores como ferramenta oportunizadora do processo Assim surgiu o primeiro elo entre o Projeto Auxiliado por Computador (Computer-Aided Design ndash CAD) e a Manufatura Auxiliada por Computador (Computer-Aided Manufacturing ndash CAM) (PRESSMAN 1995)

Com o passar dos anos e a institucionalizaccedilatildeo da produccedilatildeo de software como induacutestria essas necessidades se intensificaram e finalmente os engenheiros de software ganharam sua primeira ferramenta auxiliada por computador a Engenharia de Software Auxiliada por Computador (ComputerndashAided Software Engineering ndash CASE)

Atualmente as ferramentas CASE fazem parte do dia a dia de trabalho do engenheiro de software Por meio dela foi possiacutevel automatizar as atividades e melhorar a produtividade no desenvolvimento do produto de software (PRESSMAN 2011)

A definiccedilatildeo do que eacute produtividade na induacutestria de software ainda eacute controversa pois a produtividade em software natildeo eacute uma medida direta Assim como nas outras engenharias a

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 5: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

7

Introduccedilatildeo

Todos os assuntos relacionados agrave Engenharia de Software estatildeo integrados a meacutetodos ferramentas e procedimentos para o desenvolvimento de produtos de software com qualidade

As ferramentas proporcionam um apoio automatizado ou semiautomatizado aos meacutetodos Quando as ferramentas satildeo integradas de forma que a informaccedilatildeo criada por uma ferramenta possa ser usada por outra eacute estabelecido um sistema de suporte ao desenvolvimento de software chamado ndash Engenharia de Software Auxiliada por Computador ou CASE do inglecircs Computer-Aided Software Engineering (PRESSMAN 1995)

As ferramentas proporcionam um apoio automatizado aos meacutetodos Hoje em dia jaacute existem ferramentas capazes de sustentar todas as etapas e meacutetodos relacionados agraves vaacuterias fases do processo de desenvolvimento de software de forma automatizada

Uma delas eacute a Ferramenta CASE Nesta unidade natildeo apenas apresentaremos as questotildees histoacutericas como funcionais da ferramenta como tambeacutem daremos iniacutecio a conceitos relacionados agrave qualidade de produto de software

Qualidade pode ser um conceito subjetivo ndash o que eacute qualidade para mim pode natildeo ser para vocecirc Entretanto para medirmos a qualidade de um software conceitos subjetivos natildeo podem ser considerados

Para que possamos excluir ou definir a falta parcial ou total da qualidade num produto de software eacute necessaacuterio que haja uma definiccedilatildeo precisa do que eacute qualidade ou pelo menos quais satildeo as propriedades relacionadas a partir dos princiacutepios da Engenharia de Software

Nessa linha de raciociacutenio eacute que discutiremos os pontos de qualidade inclusive apresentando alguns conceitos e padrotildees definidos pelo Instituto de Engenharia de Software (SEI - Software Engineering Institute) que dentre tantos modelos definiu o modelo de certificaccedilatildeo de qualidade de software - CMMI (Capability and Maturity Model Integrator) que veremos em linhas gerais mais adiante nesta unidade

8

Unidade Ferramentas CASE e qualidade de software

Ferramentas CASE

Antes de apresentarmos as caracteriacutesticas das ferramentas CASE vamos ler algumas definiccedilotildees de diferentes autores para essas ferramentas

bullCASE refere-se a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades do processo de software como anaacutelise de requisitos modelagem de sistema depuraccedilatildeo e testes (SOMMERVILLE 2011)

bullCASE eacute uma ferramenta ou conjunto de teacutecnicas facilitadoras de desenvolvimento de software moderno que utiliza teacutecnicas para ajudar no trabalho dos engenheiros de software (REZENDE 2005)

bullUma ferramenta CASE eacute um instrumento ou sistema automatizado utilizado para realizar uma tarefa da melhor maneira possiacutevel Essa melhor maneira pode significar que a ferramenta nos torna mais precisos eficientes e produtivos ou que exista melhora na qualidade do produto resultante (PFLEEGER 2004)

De acordo com Sommerville (2011) os engenheiros fazem os produtos funcionarem aplicando teorias meacutetodos e ferramentas nas situaccedilotildees apropriadas de modo seletivo O software natildeo eacute apenas um programa de computador eacute tambeacutem toda a documentaccedilatildeo associada e os dados necessaacuterios para fazer com que esses programas funcionem corretamente

A Engenharia de Software natildeo cuida apenas do desenvolvimento de um software mas tambeacutem do desenvolvimento de novas ferramentas ou da melhoria das ferramentas que jaacute existem para suporte e apoio ao software

Entatildeo chegamos agrave seguinte pergunta ferramentas CASE satildeo softwares que auxiliam a desenvolver novos softwares

Sugerimos que vocecirc pare alguns minutos e tente formular sua proacutepria resposta sobre isso

Vocecirc pode perceber que o objetivo de qualquer induacutestria eacute satisfazer agraves necessidades de seus clientes entregando produtos com qualidade e aumentando assim a produtividade de seus processos de produccedilatildeo Na induacutestria de software esses objetivos natildeo satildeo diferentes

A Engenharia de Software tem como objetivo o aperfeiccediloamento da qualidade dos softwares desenvolvidos e o aumento da produtividade dos engenheiros que os desenvolvem visando sistematizar sua manutenccedilatildeo de modo que aconteccedila dentro de prazos estimados com progresso controlado e usando meacutetodos tecnologias e processos em contiacutenuo aprimoramento (REZENDE 2005)

Passamos no iniacutecio da deacutecada de 1970 pela Crise do Software Crise do Software eacute o termo que resume todos os problemas que permearam o desenvolvimento de software e que de alguma forma a Engenharia de Software com seus processos e procedimentos estruturados tentou minimizar e como muitos autores afirmam colocou ordem numa atividade que aparentemente era caoacutetica (atividade de desenvolver um software)

9

Um dos sintomas da crise ndash alguns dos quais permeiam ateacute os dias atuais ndash eacute a dificuldade de suprir a demanda por novos softwares As ferramentas CASE satildeo promessas da Engenharia de Software para automatizar tarefas diminuir o tempo de desenvolvimento e assim atender melhor agrave crescente demanda por novos softwares sem contudo esquecer da qualidade necessaacuteria ao produto

Em outras palavras a preocupaccedilatildeo em desenvolver ferramentas que automatizam o trabalho de engenheiros de software eacute uma das tentativas de aumentar a produtividade e a qualidade da induacutestria de software

Contexto histoacutericoPressman (1995) lembra-nos do velho ditado sobre os filhos do sapateiro ele passa a maioria

do tempo fazendo sapatos para os outros e seus proacuteprios filhos natildeo tecircm sapatos feitos por ele

Esse ditado eacute anaacutelogo ao ditado popular ldquoem casa de ferreiro o espeto eacute de paurdquo

Segundo Pressman (1995) nos uacuteltimos 20 anos a grande maioria dos engenheiros de softwares tem sido como os filhos do sapateiro constroem softwares sistemas complexos que automatizam o trabalho para os outros mas para si mesmos natildeo tecircm usado quase nada para automatizar o ambiente de trabalho Recentemente a engenharia de software era fundamentalmente uma atividade manual em que ferramentas eram usadas somente em uacuteltimos estaacutegios do processo

Por volta da deacutecada de 1950 engenheiros utilizavam reacuteguas de caacutelculo e calculadoras mecacircnicas livros e tabelas que continham as foacutermulas e algoritmos que precisavam para efetuar a anaacutelise de um problema de engenharia Tudo era feito manualmente com qualidade mas manualmente

Passou uma deacutecada e esses engenheiros comeccedilaram a experimentar os benefiacutecios da informaacutetica principalmente do computador na realizaccedilatildeo destas tarefas

Jaacute na deacutecada de 1970 todas as foacutermulas que os engenheiros necessitavam estavam embutidas em um conjunto de programas de computador usados para analisar uma ampla variedade de problemas o que tornou inevitaacutevel o uso de tal ferramenta no dia a dia da profissatildeo Foi nesse contexto que a tecnologia comeccedilou a estreitar seus laccedilos com o processo de manufatura tendo os computadores como ferramenta oportunizadora do processo Assim surgiu o primeiro elo entre o Projeto Auxiliado por Computador (Computer-Aided Design ndash CAD) e a Manufatura Auxiliada por Computador (Computer-Aided Manufacturing ndash CAM) (PRESSMAN 1995)

Com o passar dos anos e a institucionalizaccedilatildeo da produccedilatildeo de software como induacutestria essas necessidades se intensificaram e finalmente os engenheiros de software ganharam sua primeira ferramenta auxiliada por computador a Engenharia de Software Auxiliada por Computador (ComputerndashAided Software Engineering ndash CASE)

Atualmente as ferramentas CASE fazem parte do dia a dia de trabalho do engenheiro de software Por meio dela foi possiacutevel automatizar as atividades e melhorar a produtividade no desenvolvimento do produto de software (PRESSMAN 2011)

A definiccedilatildeo do que eacute produtividade na induacutestria de software ainda eacute controversa pois a produtividade em software natildeo eacute uma medida direta Assim como nas outras engenharias a

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 6: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

8

Unidade Ferramentas CASE e qualidade de software

Ferramentas CASE

Antes de apresentarmos as caracteriacutesticas das ferramentas CASE vamos ler algumas definiccedilotildees de diferentes autores para essas ferramentas

bullCASE refere-se a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades do processo de software como anaacutelise de requisitos modelagem de sistema depuraccedilatildeo e testes (SOMMERVILLE 2011)

bullCASE eacute uma ferramenta ou conjunto de teacutecnicas facilitadoras de desenvolvimento de software moderno que utiliza teacutecnicas para ajudar no trabalho dos engenheiros de software (REZENDE 2005)

bullUma ferramenta CASE eacute um instrumento ou sistema automatizado utilizado para realizar uma tarefa da melhor maneira possiacutevel Essa melhor maneira pode significar que a ferramenta nos torna mais precisos eficientes e produtivos ou que exista melhora na qualidade do produto resultante (PFLEEGER 2004)

De acordo com Sommerville (2011) os engenheiros fazem os produtos funcionarem aplicando teorias meacutetodos e ferramentas nas situaccedilotildees apropriadas de modo seletivo O software natildeo eacute apenas um programa de computador eacute tambeacutem toda a documentaccedilatildeo associada e os dados necessaacuterios para fazer com que esses programas funcionem corretamente

A Engenharia de Software natildeo cuida apenas do desenvolvimento de um software mas tambeacutem do desenvolvimento de novas ferramentas ou da melhoria das ferramentas que jaacute existem para suporte e apoio ao software

Entatildeo chegamos agrave seguinte pergunta ferramentas CASE satildeo softwares que auxiliam a desenvolver novos softwares

Sugerimos que vocecirc pare alguns minutos e tente formular sua proacutepria resposta sobre isso

Vocecirc pode perceber que o objetivo de qualquer induacutestria eacute satisfazer agraves necessidades de seus clientes entregando produtos com qualidade e aumentando assim a produtividade de seus processos de produccedilatildeo Na induacutestria de software esses objetivos natildeo satildeo diferentes

A Engenharia de Software tem como objetivo o aperfeiccediloamento da qualidade dos softwares desenvolvidos e o aumento da produtividade dos engenheiros que os desenvolvem visando sistematizar sua manutenccedilatildeo de modo que aconteccedila dentro de prazos estimados com progresso controlado e usando meacutetodos tecnologias e processos em contiacutenuo aprimoramento (REZENDE 2005)

Passamos no iniacutecio da deacutecada de 1970 pela Crise do Software Crise do Software eacute o termo que resume todos os problemas que permearam o desenvolvimento de software e que de alguma forma a Engenharia de Software com seus processos e procedimentos estruturados tentou minimizar e como muitos autores afirmam colocou ordem numa atividade que aparentemente era caoacutetica (atividade de desenvolver um software)

9

Um dos sintomas da crise ndash alguns dos quais permeiam ateacute os dias atuais ndash eacute a dificuldade de suprir a demanda por novos softwares As ferramentas CASE satildeo promessas da Engenharia de Software para automatizar tarefas diminuir o tempo de desenvolvimento e assim atender melhor agrave crescente demanda por novos softwares sem contudo esquecer da qualidade necessaacuteria ao produto

Em outras palavras a preocupaccedilatildeo em desenvolver ferramentas que automatizam o trabalho de engenheiros de software eacute uma das tentativas de aumentar a produtividade e a qualidade da induacutestria de software

Contexto histoacutericoPressman (1995) lembra-nos do velho ditado sobre os filhos do sapateiro ele passa a maioria

do tempo fazendo sapatos para os outros e seus proacuteprios filhos natildeo tecircm sapatos feitos por ele

Esse ditado eacute anaacutelogo ao ditado popular ldquoem casa de ferreiro o espeto eacute de paurdquo

Segundo Pressman (1995) nos uacuteltimos 20 anos a grande maioria dos engenheiros de softwares tem sido como os filhos do sapateiro constroem softwares sistemas complexos que automatizam o trabalho para os outros mas para si mesmos natildeo tecircm usado quase nada para automatizar o ambiente de trabalho Recentemente a engenharia de software era fundamentalmente uma atividade manual em que ferramentas eram usadas somente em uacuteltimos estaacutegios do processo

Por volta da deacutecada de 1950 engenheiros utilizavam reacuteguas de caacutelculo e calculadoras mecacircnicas livros e tabelas que continham as foacutermulas e algoritmos que precisavam para efetuar a anaacutelise de um problema de engenharia Tudo era feito manualmente com qualidade mas manualmente

Passou uma deacutecada e esses engenheiros comeccedilaram a experimentar os benefiacutecios da informaacutetica principalmente do computador na realizaccedilatildeo destas tarefas

Jaacute na deacutecada de 1970 todas as foacutermulas que os engenheiros necessitavam estavam embutidas em um conjunto de programas de computador usados para analisar uma ampla variedade de problemas o que tornou inevitaacutevel o uso de tal ferramenta no dia a dia da profissatildeo Foi nesse contexto que a tecnologia comeccedilou a estreitar seus laccedilos com o processo de manufatura tendo os computadores como ferramenta oportunizadora do processo Assim surgiu o primeiro elo entre o Projeto Auxiliado por Computador (Computer-Aided Design ndash CAD) e a Manufatura Auxiliada por Computador (Computer-Aided Manufacturing ndash CAM) (PRESSMAN 1995)

Com o passar dos anos e a institucionalizaccedilatildeo da produccedilatildeo de software como induacutestria essas necessidades se intensificaram e finalmente os engenheiros de software ganharam sua primeira ferramenta auxiliada por computador a Engenharia de Software Auxiliada por Computador (ComputerndashAided Software Engineering ndash CASE)

Atualmente as ferramentas CASE fazem parte do dia a dia de trabalho do engenheiro de software Por meio dela foi possiacutevel automatizar as atividades e melhorar a produtividade no desenvolvimento do produto de software (PRESSMAN 2011)

A definiccedilatildeo do que eacute produtividade na induacutestria de software ainda eacute controversa pois a produtividade em software natildeo eacute uma medida direta Assim como nas outras engenharias a

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 7: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

9

Um dos sintomas da crise ndash alguns dos quais permeiam ateacute os dias atuais ndash eacute a dificuldade de suprir a demanda por novos softwares As ferramentas CASE satildeo promessas da Engenharia de Software para automatizar tarefas diminuir o tempo de desenvolvimento e assim atender melhor agrave crescente demanda por novos softwares sem contudo esquecer da qualidade necessaacuteria ao produto

Em outras palavras a preocupaccedilatildeo em desenvolver ferramentas que automatizam o trabalho de engenheiros de software eacute uma das tentativas de aumentar a produtividade e a qualidade da induacutestria de software

Contexto histoacutericoPressman (1995) lembra-nos do velho ditado sobre os filhos do sapateiro ele passa a maioria

do tempo fazendo sapatos para os outros e seus proacuteprios filhos natildeo tecircm sapatos feitos por ele

Esse ditado eacute anaacutelogo ao ditado popular ldquoem casa de ferreiro o espeto eacute de paurdquo

Segundo Pressman (1995) nos uacuteltimos 20 anos a grande maioria dos engenheiros de softwares tem sido como os filhos do sapateiro constroem softwares sistemas complexos que automatizam o trabalho para os outros mas para si mesmos natildeo tecircm usado quase nada para automatizar o ambiente de trabalho Recentemente a engenharia de software era fundamentalmente uma atividade manual em que ferramentas eram usadas somente em uacuteltimos estaacutegios do processo

Por volta da deacutecada de 1950 engenheiros utilizavam reacuteguas de caacutelculo e calculadoras mecacircnicas livros e tabelas que continham as foacutermulas e algoritmos que precisavam para efetuar a anaacutelise de um problema de engenharia Tudo era feito manualmente com qualidade mas manualmente

Passou uma deacutecada e esses engenheiros comeccedilaram a experimentar os benefiacutecios da informaacutetica principalmente do computador na realizaccedilatildeo destas tarefas

Jaacute na deacutecada de 1970 todas as foacutermulas que os engenheiros necessitavam estavam embutidas em um conjunto de programas de computador usados para analisar uma ampla variedade de problemas o que tornou inevitaacutevel o uso de tal ferramenta no dia a dia da profissatildeo Foi nesse contexto que a tecnologia comeccedilou a estreitar seus laccedilos com o processo de manufatura tendo os computadores como ferramenta oportunizadora do processo Assim surgiu o primeiro elo entre o Projeto Auxiliado por Computador (Computer-Aided Design ndash CAD) e a Manufatura Auxiliada por Computador (Computer-Aided Manufacturing ndash CAM) (PRESSMAN 1995)

Com o passar dos anos e a institucionalizaccedilatildeo da produccedilatildeo de software como induacutestria essas necessidades se intensificaram e finalmente os engenheiros de software ganharam sua primeira ferramenta auxiliada por computador a Engenharia de Software Auxiliada por Computador (ComputerndashAided Software Engineering ndash CASE)

Atualmente as ferramentas CASE fazem parte do dia a dia de trabalho do engenheiro de software Por meio dela foi possiacutevel automatizar as atividades e melhorar a produtividade no desenvolvimento do produto de software (PRESSMAN 2011)

A definiccedilatildeo do que eacute produtividade na induacutestria de software ainda eacute controversa pois a produtividade em software natildeo eacute uma medida direta Assim como nas outras engenharias a

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 8: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

10

Unidade Ferramentas CASE e qualidade de software

Engenharia de Software propotildee algumas meacutetricas para deter dados tangiacuteveis sobre o processo e o produto de software como por exemplo Linhas de Coacutedigo (Line-of-Code - LOC) e Pontos-por-Funccedilatildeo (Function-Point ndash FP) que veremos adiante (PRESSMAN 2011) Entretanto haacute no miacutenimo cinco fatores que interferem na produtividade do software satildeo eles

raquo Fatores humanos o tamanho e a experiecircncia da organizaccedilatildeo de desenvolvimento

raquo Fatores do problema a complexidade do problema a ser resolvido e o nuacutemero de mudanccedilas nos requisitos ou restriccedilotildees de projeto

raquo Fatores do processo teacutecnicas de anaacutelise e projeto que satildeo usadas como linguagens e ferramentas CASE disponiacuteveis e teacutecnicas de revisatildeo

raquo Fatores do produto confiabilidade e desempenho do sistema baseado em computador

raquo Fatores relacionados ao recurso disponibilidade de ferramentas CASE recursos de hardware e software

Portanto a disponibilidade de ferramentas CASE eacute considerada relevante influenciando em ateacute 40 segundo Pressman (2011) na busca pelo aumento da produtividade do processo de software

Para Sommerville (2005) as ferramentas de tecnologia CASE possuem facilidades graacuteficas para o planejamento projeto e construccedilatildeo de sistemas Elas podem ser utilizadas para gerar um esboccedilo do programa a partir de um projeto Isso inclui coacutedigo implementaccedilatildeo interfaces e em vaacuterios casos o desenvolvedor precisa apenas acrescentar pequenos detalhes da operaccedilatildeo de cada componente do programa Elas tambeacutem podem incluir geradores de coacutedigos que automaticamente originaratildeo coacutedigo-fonte com base no modelo de sistema e tambeacutem algumas orientaccedilotildees de processo que fornecem conselhos ao engenheiro de software sobre o que fazer em seguida

Classificaccedilatildeo das CASEDe acordo com Sommerville (2005) em uma perspectiva de processo isto eacute quanto agraves fases

do processo que a ferramenta automatiza as CASE podem se dividir em trecircs categorias

bullFront End ou Upper-CASE satildeo aquelas ferramentas que datildeo apoio agrave anaacutelise e ao projeto isto eacute agraves fases iniciais do desenvolvimento do software

bullBack End ou Lower-CASE satildeo aquelas ferramentas destinadas a dar apoio agrave implementaccedilatildeo e aos testes como depuradores sistemas de anaacutelise de programa geradores de casos de testes e editores de programas

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 9: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

11

bullI-CASE ou Integrated CASE satildeo as ferramentas que tecircm como objetivo unir a Upper-CASE agrave Lower-CASE isto eacute cobrem todo o ciclo de vida do software

Jaacute Pressman (1995) em uma perspectiva de funccedilatildeo ou seja de acordo com sua funccedilatildeo especiacutefica que automatiza as CASE podem ser classificadas em oito ferramentas Observe a seguir a descriccedilatildeo de cada uma

Ferramenta de planejamento de sistemas comerciais essa ferramenta tem como objetivo melhorar a compreensatildeo de como a informaccedilatildeo circula entre as vaacuterias unidades organizacionais Eacute considerada uma ldquometa-modelordquo com base na qual sistemas de informaccedilatildeo especiacuteficos satildeo derivados A informaccedilatildeo comercial eacute considerada e modelada a partir da forma como circula pelas entidades comerciais natildeo sendo considerada como requisito

Ferramenta de gerenciamento de projetos a maioria concentra-se em um elemento especiacutefico do gerenciamento ao inveacutes de apoiar diversas atividades simultacircneas Ao ser usado um conjunto selecionado de ferramenta CASE o gerente de projetos pode gerar estimativas de esforccedilo custo e duraccedilatildeo aleacutem de definir a estrutura de divisatildeo de trabalho planejar o cronograma e acompanhar os projetos continuamente Aleacutem disso essa ferramenta pode ser usada para compilar meacutetricas e rastrear os requisitos

Ferramenta de apoio essa categoria como o nome jaacute diz eacute de apoio Suas funcionalidades satildeo dentre outras de apoiar ativamente atividades de apoio como a documentaccedilatildeo de rede e de sistema de garantia de qualidade de gerenciamento de banco de dados e de configuraccedilatildeo

Ferramentas de anaacutelise e projeto possibilitam que o engenheiro de software crie um modelo do sistema que seraacute construiacutedo Essas ferramentas tambeacutem auxiliam na criaccedilatildeo do modelo e na avaliaccedilatildeo da qualidade do modelo

Ferramenta de programaccedilatildeo satildeo aquelas relacionadas aos compiladores editores e depuradores que satildeo necessaacuterias nas atividades de desenvolvimento Estatildeo nessa categoria as linguagens denominadas de quarta geraccedilatildeo os geradores de aplicaccedilotildees e as linguagens de consulta a banco de dados

Ferramenta de integraccedilatildeo e teste auxilia na aquisiccedilatildeo de dados de testes na anaacutelise do coacutedigo-fonte no planejamento no gerenciamento e controle de testes

Ferramenta de prototipaccedilatildeo daacute suporte agrave criaccedilatildeo de modelos para prototipaccedilatildeo

Ferramenta de manutenccedilatildeo auxilia na execuccedilatildeo de engenharia reversa anaacutelise e reestruturaccedilatildeo de coacutedigo e na reengenharia

Veja que haacute vaacuterias classificaccedilotildees para as ferramentas CASE cada uma relacionada agrave funcionalidade especiacutefica (manutenccedilatildeo prototipaccedilatildeo apoio etc) Esta classificaccedilatildeo pode ser feita tanto pela sua funccedilatildeo quanto pelos papeacuteis que desempenham como suporte aos desenvolvedores gerentes e outros integrantes da equipe

Sugerimos que faccedila uma pesquisa raacutepida sobre linguagens de quarta geraccedilatildeo

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 10: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

12

Unidade Ferramentas CASE e qualidade de software

A Engenharia de Software Auxiliada por Computador pode ser tatildeo simples quanto uma uacutenica ferramenta que suporte uma atividade de Engenharia de Software especiacutefica ou tatildeo complexa quanto um ambiente completo que abrange ferramentas banco de dados pessoas hardware rede sistemas operacionais padrotildees e uma infinidade de outros componentes (PRESSMAN 2011) Enfim todas as ferramentas ldquosoftwaresrdquo que de alguma forma auxiliam nos trabalhos de um engenheiro de software podem ser consideradas como CASE

Haacute vaacuterias classificaccedilotildees de ferramentas CASE que apoiam agraves diversas fases do processo de software Para cada uma dessas classificaccedilotildees haacute no mercado inuacutemeras ferramentas disponiacuteveis Entre elas podemos citar Poseidon Rational ErWin Oracle Designer Genexus Clarify DrCase Multicase Paradigm PowerDesigner Together Cognos CoolGen Smart Theseus BPWin Arena Visio Brio Microstrategy

Informaccedilatildeo

O SEI (Software Engineering Institute ndash Instituto de Engenharia de Software) Carnegie Mellon University Pittsburgh Pennsylvania USA desenvolveu um processo de adoccedilatildeo de ferramentas CASE O modelo tem como postulados seis estaacutegios para um processo de adoccedilatildeo de ferramentas CASE

Explore

Maiores informaccedilotildees sobre o modelo SEI (Software Engineering Institute) podem ser encontrados no site do Instituto Nacional de Pesquisas Espaciais Disponiacutevel em www2deminpebrijarGuiacasedoc Acesso em 05 jul 2010

Idealmente as CASE tecircm como promessas

a) encorajar um ambiente interativo

b) reduzir custos de manutenccedilatildeo

c) melhorar a qualidade do produto de software

d) agilizar o processo de desenvolvimento

e) aumentar a produtividade

Com os seguintes benefiacutecios decorrentes da utilizaccedilatildeo de ferramentas CASE

bull CASE de gerenciamento de configuraccedilatildeo e documentaccedilatildeo satildeo geralmente mais aceitas como mecanismo de melhoria do software

bull benefiacutecios controversos de CASE de anaacutelise e projeto engenharia reversa e ferramentas de geraccedilatildeo de coacutedigos disponiacuteveis comercialmente

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 11: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

13

bull ganhos variando de 10 a 30 resultante do uso de CASE na anaacutelise e projeto

bull ganhos verdadeiros ocorrem somente depois de um ou dois anos de experiecircncia

bull ganhos variaacuteveis de produtividade

bull modestos ganhos de qualidade

bull documentaccedilatildeo melhorada (aumento da manutenibilidade)

bull melhoria na comunicaccedilatildeo

bull imposiccedilatildeo de metodologia e padrotildees

Como os benefiacutecios das CASE satildeo ainda relativos as empresas que se dispuserem a adquirir uma ferramenta para automatizar o processo de software devem considerar alguns itens da CASE em questatildeo como por exemplo

bull custo (investimentos) de adotar a tecnologia CASE

bull consistecircncia entre os processos e meacutetodos suportados pelas ferramentas CASE e os processos e meacutetodos utilizados na organizaccedilatildeo

bull mecanismos de suporte necessaacuterios para ferramentas CASE (por parte do fornecedor)

bull limites da ferramenta quanto ao tamanho do projeto

bull complexidade da adoccedilatildeo e usabilidade miacutenima Complexidade dos processos de adoccedilatildeo das ferramentas CASE

bull capacidade de acomodar mudanccedilas uma vez que os requisitos se modificam

bull permissatildeo da engenharia reversa dos softwares desenvolvidos sem usar uma ferramenta CASE

O sucesso ou falha do esforccedilo de adoccedilatildeo da CASE depende muito da habilidade de uma organizaccedilatildeo para gerenciar custos de curto e de longo prazo

Portanto devem ser consideradas algumas implicaccedilotildees de curto prazo

bull um potencial decaimento na produtividade

bull insatisfaccedilatildeo de parte dos funcionaacuterios ao adotar a nova tecnologia

bull mudanccedilas nos processos e meacutetodos

bull treinamento potencialmente extensivo

bull custos significativos

Apesar de serem consideradas muitas vezes ferramentas de custo elevado e de utilizaccedilatildeo complexa uma vez inserida e institucionalizada no processo de desenvolvimento de software certamente traratildeo benefiacutecios ao projeto por meio do aumento da produtividade

Assim a Engenharia de Software oferece meacutetodos e teacutecnicas para desenvolver ferramentas automatizadas para auxiliar no trabalho de profissionais das mais diversas aacutereas de atuaccedilatildeo Tais ferramentas ndash softwares ndash satildeo bem aceitas prova disso eacute a crescente busca por novos e cada vez mais complexos sistemas

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 12: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

14

Unidade Ferramentas CASE e qualidade de software

Qualidade de software

Vimos no iniacutecio deste trabalho que as ferramentas CASE auxiliam no processo de desenvolvimento de produtos de software com qualidade entretanto durante muito tempo as questotildees de qualidade eram subjetivas e aos poucos esse ambiente foi sendo alterado

Quando falamos em certificaccedilatildeo de qualidade em empresas geralmente pensamos em certificaccedilotildees ISO especificamente as relacionadas agrave ISO 9000 e suas derivaccedilotildees

Certificaccedilotildees ISO possuem restriccedilotildees listas de atributos e niacuteveis que as empresas devem obter relacionadas agrave qualidade para que possam ser certificadas e tudo parte do princiacutepio da definiccedilatildeo do que eacute qualidade dentro do contexto a ser avaliado

Segundo a norma ISO 9000 versatildeo 2000 a qualidade eacute o grau em que um conjunto de caracteriacutesticas inerentes a um produto processo ou sistema cumpre os requisitos inicialmente estipulados para estes (WIKIPEDIA 2007a)

Com relaccedilatildeo aos produtos de software isso natildeo seraacute diferente Precisamos verificar o que eacute qualidade nesse contexto para entendermos porque empresas ldquocorrem tantordquo atraacutes de um software com qualidade

Para Pressman (2011) Qualidade de Software que eacute uma aacuterea que pertence agrave Engenharia de Software objetiva atingir e garantir a qualidade final do produto por meio das definiccedilotildees e normatizaccedilotildees dos processos de desenvolvimento

Apesar dos diversos modelos aplicados na questatildeo ldquoQualidade de Softwarerdquo atuarem durante todo o processo de desenvolvimento o foco principal estaacute na satisfaccedilatildeo do cliente ao receber o produto pronto Eacute importante que se procure garantir que o sistema cumpra com todas espicificaccedilotildees acordadas anteriormente entre a empresa desenvolvedora e o cliente Eacute nesse momento que percebemos a importacircncia de uma definiccedilatildeo de requisitos bem elaborada

Entretanto eacute uma visatildeo simplista dizer que avaliaccedilatildeo de qualidade de um software soacute pode ser feita depois que o software foi entregue ao cliente Deve-se garantir a qualidade desde o iniacutecio da construccedilatildeo do software pois controlamos a sua fabricaccedilatildeo passo a passo e medimos a sua qualidade antes que ele saia da faacutebrica

Vocecirc provavelmente jaacute ouviu falar que a qualidade das partes garante a qualidade do todo eacute mais ou menos isso que acontece ao garantirmos a qualidade das partes do software estamos garantindo a qualidade total do produto

Existem fatores internos e externos que estatildeo relacionados agrave qualidade

bullFatores de qualidade externos satildeo aqueles que podem ser percebidos por pessoas fora da equipe de desenvolvimento ndash cliente ou eventuais usuaacuterios A partir da observaccedilatildeo de fatores especiacuteficos o cliente pode perceber a qualidade ou natildeo do produto de software Enquadram-se nesta classe de fatores de qualidade externa desempenho facilidade de uso correccedilatildeo confiabilidade extensibilidade dentre outros

bullFatores de qualidade internos satildeo aqueles que estatildeo mais relacionados agrave visatildeo de um programador particularmente aquele que vai assumir as tarefas de manutenccedilatildeo do software Enquadram-se nesta classe de fatores de qualidade interna modularidade legibilidade portabilidade manutenibilidade dentre outros

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 13: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

15

Mesmo observando que satildeo diferentes entre si eacute a garantia da qualidade de fatores externos e internos que nos garante um bom produto de software

Fatores de qualidade de softwareOs fatores que afetam a qualidade de software podem ser categorizados em

a) Fatores que podem ser medidos diretamente (erros de execuccedilatildeo)

b) Fatores que podem ser medidos apenas indiretamente (usabilidade do software)

Abaixo encontram-se alguns fatores que devem ser considerados (PRESSMAN 2006 e 2011) Para cada um dos fatores apresentados algumas perguntas podem ser realizadas para perceber a existecircncia ou natildeo deles

Corretitude (Ele faz aquilo que eu quero)

Eacute a capacidade dos produtos de software de executarem suas funccedilotildees precisamente conforme definido nos requisitos e na especificaccedilatildeo

Confiabilidade (Ele se comporta com precisatildeo o tempo todo)

Eacute a capacidade de o sistema funcionar mesmo em condiccedilotildees anormais Eacute um fator diferente da corretitude pois um sistema pode ser correto sem ser confiaacutevel ou seja ele funciona mas natildeo o tempo todo e em todas as condiccedilotildees

Flexibilidade (Posso mudaacute-lo)

Eacute a facilidade com a qual podem ser introduzidas modificaccedilotildees nos produtos de software Todo software eacute considerado em princiacutepio ldquoflexiacutevelrdquo e portanto passiacutevel de modificaccedilotildees No entanto esse fator nem sempre eacute muito bem entendido principalmente em se tratando de pequenos programas

Por outro lado para softwares de grande porte esse fator atinge uma importacircncia consideraacutevel e pode ser alcanccedilado a partir de dois criteacuterios importantes

bull A simplicidade de projeto ou seja quanto mais simples e clara a arquitetura do software mais facilmente as modificaccedilotildees poderatildeo ser realizadas

bull A descentralizaccedilatildeo que implica na maior autonomia dos diferentes componentes de software de modo que a modificaccedilatildeo ou a retirada de um componente natildeo implique uma reaccedilatildeo em cadeia que altere todo o comportamento do sistema podendo inclusive introduzir erros antes inexistentes

Reusabilidade (Serei capaz de reutilizar parte do software)

Eacute a capacidade de os produtos de software serem reutilizados totalmente ou em parte para novas aplicaccedilotildees Esse eacute um conceito fundamental nos dias de hoje

Essa caracteriacutestica de reusabilidade eacute uma necessidade e vem da observaccedilatildeo de que alguns dos componentes de software obedecem a um padratildeo comum de execuccedilatildeo restriccedilotildees e requisitos o que permite que essas similaridades possam ser exploradas e incorporadas para solucionar outras classes de problemas

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 14: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

16

Unidade Ferramentas CASE e qualidade de software

Esse fator permite principalmente diminuir o tempo de desenvolvimento de um software gerando economia e qualidade maiores ou seja ao utilizarmos objetos (programas ou parte deles) jaacute desenvolvidos menos algoritmos precisam ser escritos o que significa menos esforccedilo e menor risco de ocorrecircncia de erros

Compatibilidade (Serei capaz de compor uma interface com outro sistema)

A compatibilidade corresponde agrave facilidade com a qual produtos de software podem ser combinados com outros Esse eacute um fator relativamente importante dado que um produto de software eacute construiacutedo (e adquirido) para trabalhar convivendo com outros softwares

Eficiecircncia (Ele rodaraacute em meu hardware tatildeo bem quanto possiacutevel)

A eficiecircncia estaacute relacionada com a utilizaccedilatildeo racional dos recursos de hardware e de sistema operacional da plataforma onde o software seraacute instalado

Portabilidade (Serei capaz de utilizaacute-lo em outra maacutequina)

A portabilidade consiste na capacidade de um software em ser instalado para diversos ambientes operacionais e de hardware Por termos vaacuterias plataformas de processadores e sistemas operacionais essa natildeo eacute uma caracteriacutestica faacutecil de ser atingida

Usabilidade (Ele foi projetado para o usuaacuterio)

Esse fator eacute certamente um dos mais fortemente detectados pelos usuaacuterios do software ou seja eacute medido por meio da facilidade de se utilizar o produto

Manutenibilidade (Posso concertaacute-lo)

Esse fator eacute relacionado ao esforccedilo exigido para localizar e reparar erros num programa aleacutem de adequaacute-lo a novas versotildees e atualizaacute-lo de forma eficaz e eficiente

Testabilidade

Relacionado ao esforccedilo despendido para testar um software a fim de garantir que execute todas as funccedilotildees para qual foi projetado

Integridade (Ele eacute seguro)

Se o sistema pode ser facilmente acessado por pessoas natildeo autorizadas

Esses itens acima citados podem de acordo com referecircncias existentes ser medidos e por meio do resultado dessa mediccedilatildeo ser definido seu fator de qualidade

Garantia de qualidade de softwareA garantia da qualidade eacute uma atividade fundamental para qualquer negoacutecio que gere

produtos ou serviccedilos

A garantia de qualidade de software engloba algumas atividades como atividade de teste padronizaccedilotildees e procedimentos formais que satildeo aplicados ao processo de engenharia de software para o desenvolvimento de software com qualidade controle de mudanccedila mediccedilatildeo e manutenccedilatildeo

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 15: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

17

Algumas dessas atividades veremos a seguir outras sugerimos que faccedila uma pesquisa porque eacute de fundamental importacircncia conhececirc-las mas devido agrave nossa carga horaacuteria da disciplina restriccedilotildees de conteuacutedo tiveram que ser realizadas

Meacutetrica de qualidade de software

A possibilidade de estabelecer uma medida da qualidade eacute um aspecto importante para a garantia de um produto de software com algumas das caracteriacutesticas definidas anteriormente

Mas como medir por exemplo o quanto um software seraacute faacutecil ou natildeo de dar manutenccedilatildeo ou seraacute seguro

Eacute nesse contexto de ldquocomo medirrdquo que um novo conceito na aacuterea de ES eacute inserido conceito de meacutetrica

Uma vez que as medidas quantitativas (mensuraacuteveis) tecircm-se provado eficientes em vaacuterios ramos da ciecircncia cientistas de computaccedilatildeo tecircm trabalhado arduamente para aplicar meacutetodos similares no desenvolvimento de software

Segundo Wikipeacutedia (2007d e 2007e) a meacutetrica de software eacute a medida de alguma propriedade do software ou da sua especificaccedilatildeo A meacutetrica eacute utilizada para calcular orccedilamentos desempenho dos programadores etc

Para Cavano e MacCall apud Pressman 1996 p753

A determinaccedilatildeo da qualidade eacute fundamental nos eventos cotidianos ndash concursos de degustaccedilatildeo de vinhos eventos esportivos concursos de talento etc Nessas situaccedilotildees a qualidade eacute julgada na maneira mais fundamental e direta uma comparaccedilatildeo lado a lado dos objetos sob condiccedilotildees idecircnticas e com conceitos predeterminados O vinho pode ser julgado de acordo com a clareza cor buquecirc sabor etc Poreacutem esse tipo de julgamento eacute muito subjetivo para ter qualquer valor absoluto ele deve ser feito por um especialista

A subjetividade e a especializaccedilatildeo tambeacutem se aplicam na determinaccedilatildeo da qualidade de software Para ajudar a resolver esse problema uma definiccedilatildeo mais precisa de qualidade de software eacute necessaacuteria bem como uma forma de derivar mediccedilotildees quantitativas de qualidade de software para anaacutelise objetiva Uma vez que natildeo existe essa coisa de conhecimento absoluto ningueacutem deve esperar medir qualidade de software exatamente porque cada mediccedilatildeo eacute parcialmente imperfeita Jacob Bronowsky descreveu esse paradoxo do conhecimento desta maneira ldquoAno a ano deparamo-nos com instrumentos cada vez mais precisos com os quais podemos observar a natureza com mais precisatildeo E quando olhamos para as observaccedilotildees ficamos desconsertados ao ver que elas ainda satildeo vagas e achamos que elas continuam tatildeo incertas como semprerdquo

Pelo paraacutegrafo acima percebemos que medir qualidade natildeo eacute coisa faacutecil mas nem por isso especialistas deixaram de tentar criar modelos para que chegaacutessemos o mais proacuteximo possiacutevel de uma mediccedilatildeo eficaz

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 16: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

18

Unidade Ferramentas CASE e qualidade de software

Atenccedilatildeo

Eacute importante salientar que natildeo medimos diretamente a qualidade de software mas a manifestaccedilatildeo dessa qualidade durante sua execuccedilatildeo

Nesse momento natildeo teremos como abordar com profundidade as teacutecnicas de mediccedilatildeo mas citaremos algumas e espero que vocecirc dedique algum tempo para pesquisar sobre estas teoriasteacutecnicas de mediccedilatildeo

Meacutetricas de dimensatildeo e complexidade

Tecircm sido propostas inuacutemeras meacutetricas para medir a dimensatildeo e complexidade de um programa Elas satildeo apresentadas em conjunto pois na maior parte das vezes a mesma meacutetrica eacute apresentada quantificando ora a dimensatildeo ora a complexidade

A- Linhas de Coacutedigo Fonte (LOC - ldquoLines Of Coderdquo)

Eacute uma meacutetrica de dimensatildeo que apesar de criticada eacute ainda a mais utilizada

Embora aparentemente simples obriga a uma definiccedilatildeo inequiacutevoca das regras de contagem de linhas nomeadamente no tocante ao tratamento a dar agraves linhas em branco e de comentaacuterio instruccedilotildees natildeo executaacuteveis diretivas de compilaccedilatildeo muacuteltiplas instruccedilotildees por linha ou muacuteltiplas linhas por instruccedilatildeo bem como no caso de reutilizaccedilatildeo de coacutedigo

B- Meacutetricas de Halstead

Eacute um conjunto de meacutetricas proposto por Maurice Halstead que se baseia na teoria da informaccedilatildeo e que o autor designou por laquoSoftware Scienceraquo

Ele usa medidas primitivas para desenvolver expressotildees para o comprimento global do programa o volume miacutenimo potencial para um algoritmo o volume real (medido em bits) o niacutevel do programa e outras caracteriacutesticas como o esforccedilo do desenvolvimento o tempo de desenvolvimento e ateacute mesmo o nuacutemero projetado de falhas no software

Satildeo utilizadas bases de caacutelculos matemaacuteticos para se chegar a um valor meacutetrico da qualidade e complexidade do software

Pressman (2011) defende que a meacutetrica de comprimento de Halstead eacute objetiva e melhor que a LOC

C- Meacutetricas de McCabe

A primeira e mais conhecida meacutetrica proposta por Thomas McCabe eacute a meacutetrica de complexidade ciclomaacutetica

Ela pressupotildee que a complexidade depende do nuacutemero de decisotildees (complexidade ciclomaacutetica) eacute adimensional e corresponde ao nuacutemero maacuteximo de percursos linearmente independentes atraveacutes de um programa

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 17: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

19

Os caminhos podem ser podem ser representados atraveacutes de um graacutefico orientado em que os noacutes representam uma ou mais instruccedilotildees sequenciais e os arcos orientados indicam o sentido do fluxo de controle entre vaacuterias instruccedilotildees (Figura 1)

Figura 1 Complexidade do graacutefico de fluxo de controle

Outras meacutetricas que valem a pena pesquisar e conhecer

middot Meacutetrica dos Noacutes proposta por Woodward

middot Meacutetrica dos Fluxos de Informaccedilatildeo proposta por Henry e Kafura

middot Meacutetrica voltada para Orientaccedilatildeo Objeto

Estimativa de software

Quando falamos em estimativa de software uma coisa deve ficar clara eacute difiacutecil estabelecer se eacute possiacutevel desenvolver o produto desejado pelo cliente antes de conhecer os detalhes do projeto

Por isso que uma boa definiccedilatildeo de requisitos e os encontros perioacutedicos com os clientes satildeo fundamentais para estimar o tempo de desenvolvimento custo tamanho do projeto etc

O desenvolvimento de um software eacute um processo gradual de refinamento e devemos sempre lembrar que

middot A incerteza da natureza do produto contribui para a incerteza da estimativa

middot Requisitos e escopo mudam

middot Defeitos geralmente satildeo encontrados e demandam retrabalho

middot A produtividade varia de pessoa para pessoa

O processo de estimativa envolve 5 etapas baacutesicas

middot Estimar o Tamanho do Produto

middot Estimar o Tempo

middot Estimar o Esforccedilo

middot Estimar o Custo (envolve 4 fatores)

middot Estimar o Prazo

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 18: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

20

Unidade Ferramentas CASE e qualidade de software

Eacute viaacutevel fornecer estimativas dentro de uma faixa permitida e com o passar do tempo a partir do momento em que se conhece mais e mais o projeto refinar essa faixa

Estimativa de Tamanho

Eacute a dimensatildeo do software a ser produzido Seu tamanho e quantidade por exemplo

middot Nordm linhas de coacutedigo nordm pontos de funccedilatildeo nordm de requisitos pontos de casos de uso etc

Estimativa de Tempo

Apoacutes desenvolver uma estimativa do volume de trabalho a ser feito natildeo eacute faacutecil estimar o periacuteodo em que o projeto seraacute executado Para que natildeo estimemos outros fatores como custo de forma inadequada a relaccedilatildeo entre tempo e pessoa deve ser bem dimensionadaestimada

Estimativa de Esforccedilo

Eacute a teacutecnica mais comum para apurar os custos de qualquer projeto de desenvolvimento

A estimativa de esforccedilo tem iniacutecio com a definiccedilatildeo do escopo do projeto e as funccedilotildees que deveratildeo conter

O planejador estima o esforccedilo (por exemplo pessoasmecircs) que seria exigido para conclusatildeo de cada tarefa de Engenharia de Software para cada funccedilatildeo de software Taxas de matildeo-de-obra (isto eacute custoesforccedilo unitaacuterio) satildeo aplicadas em cada uma das tarefas de Engenharia de Software

Estimativa de Custo

Aqui o objetivo eacute calcular antecipadamente todos os custos associados ao sistema construccedilatildeo instalaccedilatildeo operaccedilatildeo e manutenccedilatildeo

O Custo da Construccedilatildeo

Uma vez que o custo estaacute associado ao nuacutemero de pessoas envolvidas no desenvolvimento do sistema ndash tais como burocratas diretores membros da comunidade usuaacuteria consultores e programadores membros da auditoria do controle de qualidade ou da equipe de operaccedilotildees ndash ele deve ser cuidadosamente mensurado

O Custo da Instalaccedilatildeo do Sistema

Esse custo estaacute relacionado ao modo como o cliente teraacute acesso ao produto Se ele for instalar sozinho o sistema eacute um valor se for um sistema de grande porte e que precisa de uma equipe de instalaccedilatildeo e treinamento eacute outro Quanto maior o sistema maiores os custos pois teremos que prever custo de treinamento do usuaacuterio custo de conversatildeo de banco de dados custo de instalaccedilatildeo do fornecedor custo da aprovaccedilatildeo legal etc

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 19: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

21

O Custo Operacional

Entra em accedilatildeo apoacutes a instalaccedilatildeo do sistema Haveraacute um custo para o usuaacuterio manter a operaccedilatildeo do produto Nesse custo deve ser previsto como e quando o cliente com o novo produto poderaacute economizar dinheiro a partir da utilizaccedilatildeo desse novo instalado Os custos operacionais mais comuns satildeo custos de hardware e suprimentos custos de software custo de pessoal custo de manutenccedilatildeo etc

O Custo de Manutenccedilatildeo ou Falhas

Por natildeo termos sistemas perfeitos esse custo deve ser bem dimensionado O preccedilo (direto ou indireto) a ser pago por todos se um sistema crucial ficar horas ou dias sem operaccedilatildeo pode ser incomensuraacutevel e gerar inuacutemeros incocircmodos no momento em que isso acontece

Estimativas de Prazo

Geralmente satildeo dirigidas a datas fornecidas pelo cliente e deve sempre que possiacutevel ser respeitado

Fator Humano

Quando os objetivos para o desenvolvimento de sistemas natildeo satildeo claros as pessoas passam a deduzir e criar o produto a partir do que acreditam que seja necessaacuterio desenvolvendo em inuacutemeros casos sistemas inadequados e consequentemente meacutetricas falhas gerando uma expectativa negativa entre o cliente e os teacutecnicos responsaacuteveis isto eacute uma estimativa irreal

As pessoas satildeo sensiacuteveis aos estiacutemulos externos e por eles satildeo influenciadas Um analista ou um grupo de analistas disposto a estimar o tempo e custo de um projeto natildeo poderia deixar de dar a devida relevacircncia a esse fato

Engenharia Humana

Para tentar amenizar a dificuldade e estabelecer criteacuterio para a estimativa em relaccedilatildeo agraves pessoas surge o conceito de Engenharia Humana que consiste em aplicar conceitos de psicologia para projetar uma interaccedilatildeo homem-computador de alta qualidade Do ponto de vista do especialista em Engenharia Humana ou interface homem-computador o homem eacute tratado como elo de coleta e processamento de dados

Assim podemos concluir que as estimativas jamais poderatildeo ser precisas e exatas pois natildeo satildeo compostas apenas por fatores teacutecnicos ldquocontaacuteveisrdquo e palpaacuteveis que fazem parte de um projeto mas tambeacutem por fatores humanos integrados (sentimentos poliacuteticas crenccedilas percepccedilatildeo experiecircncia etc) assim como o ambiente e outras caracteriacutesticas mais que natildeo podemos estimar de forma absoluta Entretanto devem ser analisadas por meio dos embasamentos teoacutericos existentes sobre o tema Afinal estimar natildeo eacute adivinhar e estimativas mal dimensionadas geram problemas

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 20: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

22

Unidade Ferramentas CASE e qualidade de software

Material Complementar

Explore

O objetivo do material complementar eacute ajudaacute-lo a entender sob uma oacutetica diferente daquela do autor do conteuacutedo da apostila assuntos abordados nas unidades teoacutericas

Eacute fundamental a leitura deste material para o melhor entendimento sobre o assunto

Como nesta unidade abordamos os conceitos gerais da Engenharia de Software nossa sugestatildeo de material complementar eacute o capiacutetulo 27 ndash GERENCIAMENTO DE QUALIDADE

SOMMERVILLE I Engenharia de Software 8 ed Satildeo Paulo Pearson 2007 p 423-438

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 21: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

23

Referecircncias

Bibliografia fundamental

SOMMERVILLE I Engenharia de Software 9 ed Satildeo Paulo Pearson 2011

Bibliografia baacutesica

lAUDON K C LAUDON J P Sistemas de Informaccedilatildeo 4 ed Rio de Janeiro LTC 1999

LAUDON K C LAUDON J P Sistemas de Informaccedilatildeo Gerenciais Administrando a empresa digital 5 ed Satildeo Paulo Pearson Education do Brasil 2006

PFLEEGER S L Engenharia de software teoria e praacutetica Satildeo Paulo Prentice Hall 2004

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 1995

PRESSMAN R S Engenharia de software Satildeo Paulo Makron Books 2006

SOMMERVILLE I Engenharia de Software 6 ed Satildeo Paulo Pearson Addison Wesley 2005

Bibliografia complementar

ALCADE E GARCIA M PENUELAS S Informaacutetica Baacutesica Satildeo Paulo Makron Books 1991

FAIRLEY R E Software engineering concepts New York McGraw- Hill 1987

IEEE Software Engineering Standards (2013) Disponiacutevel em lthttpwwwieeeorgportalinno vateproductsstandardieee_soft_enghtmlgt Acesso em 10 dez 2013

LUKOSEVICIUS A P CAMPOS FILHO A N COSTA H G Maturidade em Gerenciamento de Projetos e Desempenho dos Projetos Disponiacutevel em ltwwwproducaouffbrconteudorpepRelPesq_V7_2007_07docgt Acesso em 12 nov 2013

MAFFEO B Engenharia de software e especializaccedilatildeo de sistemas Rio de Janeiro Campus 1992

MICHAELIS Moderno dicionaacuterio da liacutengua portuguesa Satildeo Paulo Cia Melhoramentos 1998

PARREIRA JUacuteNIOR W M Apostila de Engenharia de software Disponiacutevel em lthttpwwwwaltenomartinscombrap_es_v1pdfgt Acesso em 13 nov 2013

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 22: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

24

Unidade Ferramentas CASE e qualidade de software

PAULA FILHO W P Engenharia de Software fundamentos meacutetodos e padrotildees 2 ed Rio de janeiro LTC 2001

Revista Engenharia de Software Disponiacutevel em lthttpwwwdevmediacombrrevista-en genharia-de-software-magazinegt Acesso em 12 nov 2013

VON STA A Engenharia de programas Rio de Janeiro LTC 1983

WIENNER R SINCOVEC R Software engineering with Modula 2 and ADA New York Wiley 1984

WIKIPEDIA (2007a) ISO 9000 Disponiacutevel em lthttpptwikipediaorgwikiISO_9000gt Acesso em 22 jun 2007

WIKIPEDIA (2007c) Melhoria de processo de software brasileiro Disponiacutevel em lthttpptwikipediaorgwikiMPSBRgt Acesso em 22 jun 2007

WIKIPEDIA (2007d) CMMI Disponiacutevel em lthttpptwikipediaorgwikiCmmigt Acesso em 22 jun 2007

WIKIPEDIA Engenharia de Software Disponiacutevel em lthttpptwikipediaorgwikiEngen haria_de_softwaregt Acesso em 01 fev 2007

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 23: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

25

Anotaccedilotildees

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 24: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem

wwwcruzeirodosulvirtualcombrCampus LiberdadeRua Galvatildeo Bueno 868CEP 01506-000Satildeo Paulo SP Brasil Tel (55 11) 3385-3000

Page 25: Engenharia de Software - Blackboard Learn · Engenharia de Software apresentados nesta disciplina. 7 ... (PRESSMAN, 1995). As ferramentas ... como análise de requisitos, modelagem