Ferramenta de apoio a reestrutura ção de c ódigo...

21
Ferramenta de apoio a Ferramenta de apoio a reestrutura reestrutura ç ç ão de c ão de c ó ó digo digo fonte em linguagem C++ fonte em linguagem C++ baseado em padrões de baseado em padrões de legibilidade legibilidade Denis Alberto Denis Alberto Dalmolin Dalmolin Orientador: Orientador: Everaldo Everaldo Artur Artur Grahl Grahl

Transcript of Ferramenta de apoio a reestrutura ção de c ódigo...

Ferramenta de apoio a Ferramenta de apoio a reestruturareestrutura çção de cão de c óódigo digo fonte em linguagem C++ fonte em linguagem C++ baseado em padrões de baseado em padrões de

legibilidadelegibilidade

Denis AlbertoDenis Alberto DalmolinDalmolin

Orientador:Orientador: EveraldoEveraldo ArturArtur GrahlGrahl

Roteiro de Roteiro de AApresentapresentaççãoão

�� IntroduIntroduççãoão

�� A Linguagem CA Linguagem C

�� Qualidade de SoftwareQualidade de Software

�� Padrões EstudadosPadrões Estudados

�� AnAnáálise do Programa Fontelise do Programa Fonte

�� DescriDescriçção ão do Softwaredo Software

�� Diagrama de Casos de UsoDiagrama de Casos de Uso

�� Diagrama de ClassesDiagrama de Classes

�� Diagrama de SeqDiagrama de Seqüüênciaência

�� DefiniDefiniçção do Softwareão do Software

�� AnAnáálises do Softwarelises do Software

�� Funcionamento do SoftwareFuncionamento do Software

�� ConclusãoConclusão

IntroduIntroduççãoão

�� As empresas procuram aumentar a qualidade As empresas procuram aumentar a qualidade do softwaredo software

�� As empresas necessitam de padrões de As empresas necessitam de padrões de desenvolvimento do cdesenvolvimento do cóódigo fonte para agilizar e digo fonte para agilizar e reduzir custos com a manutenreduzir custos com a manutençção do software ão do software

�� Apesar de toda a flexibilidade da linguagem C e Apesar de toda a flexibilidade da linguagem C e C++, os programas podem se tornar C++, os programas podem se tornar desorganizados e difdesorganizados e difííceis de serem ceis de serem compreendidoscompreendidos

Objetivo PrincipalObjetivo Principal

�� Especificar e implementar uma ferramenta Especificar e implementar uma ferramenta que apoie a reestruturaque apoie a reestruturaçção de cão de cóódigo fonte digo fonte escrito em linguagem C++ utilizando padrões escrito em linguagem C++ utilizando padrões de legibilidade. Estes padrões foram obtidos a de legibilidade. Estes padrões foram obtidos a partir de pesquisa bibliogrpartir de pesquisa bibliográáfica.fica.

A Linguagem CA Linguagem C

�� Nos anos 70, a linguagem C foi inventada e Nos anos 70, a linguagem C foi inventada e implementada porimplementada por Dennis RitchieDennis Ritchie

�� Para resolver o problema do seu difPara resolver o problema do seu difíícil cil gerenciamento foi desenvolvido a linguagem C++gerenciamento foi desenvolvido a linguagem C++

�� Linguagem C++ possui suporte Linguagem C++ possui suporte àà programaprogramaçção ão orientada ao objetoorientada ao objeto

Qualidade de SoftwareQualidade de Software

�� Nos primeiros anos da sua existência o Nos primeiros anos da sua existência o software era projetado sob medida software era projetado sob medida

�� Com o crescimento do tamanho e da Com o crescimento do tamanho e da complexidade dos programas, aumentou a complexidade dos programas, aumentou a existência de diversas propostas de mexistência de diversas propostas de méétodos todos para o desenvolvimento de programas com para o desenvolvimento de programas com elevado nelevado níível de qualidade vel de qualidade

�� A reestruturaA reestruturaçção do cão do cóódigodigo--fonte contribui fonte contribui para a melhoria da produtividade na para a melhoria da produtividade na manutenmanutençção de sistemas, consequentemente ão de sistemas, consequentemente aumentando a qualidade do softwareaumentando a qualidade do software

PadrõesPadrões

�� Padrão de composiPadrão de composiçção de mão de móódulosdulos

–– como criar e declarar mcomo criar e declarar móódulos de definidulos de definiçção e de ão e de implementaimplementaçção em C e C++ão em C e C++

�� Padrão geralPadrão geral

–– como utilizar a linguagem padrão , fazer declaracomo utilizar a linguagem padrão , fazer declaraçções, ões, uso de expressões, comandos euso de expressões, comandos e sequênciasequência de de execuexecuçção de comandosão de comandos

�� Padrão de estiloPadrão de estilo

–– espaespaççamento da margem esquerda, estilo de amento da margem esquerda, estilo de declaradeclaraçções de variões de variááveis, estilo de expressões e veis, estilo de expressões e atribuiatribuiçções, estilo de blocos e estruturas de controleões, estilo de blocos e estruturas de controle

�� PPadrão paraadrão para aa escolhaescolha de de nomesnomes

–– trata sobre a estrutura gentrata sobre a estrutura genéérica do nomerica do nome de de varivariááveisveis

AnAnáálise lise do do Programa FontePrograma Fonte

�� ParaPara o o desenvolvimento do software, seguiudesenvolvimento do software, seguiu--se a mesma linha da se a mesma linha da ananáálise lise de de ccóódigo feita digo feita por compiladorespor compiladores, , que que segue as segue as três fasestrês fases::

–– AnAnáálise linear: extrai os lise linear: extrai os tokenstokens

–– AnAnáálise hierlise hieráárquica: anrquica: anáálise dos lise dos tokenstokens

DescriDescriçção do ão do SoftwareSoftware

�� Ferramentas utilizadasFerramentas utilizadas

–– Rational RoseRational Rose

–– Microsoft Visual C++ 6.0Microsoft Visual C++ 6.0

�� PrincipaPrincipall funfunçção ão do software do software éé efetuarefetuar a a reestruturareestruturaçção ão de de ccóódigodigo--fonte em fonte em C++C++

–– AnAnáálise que gera avisoslise que gera avisos

–– AnAnáálise que gera modificalise que gera modificaççõesões

Diagrama Diagrama de de Casos Casos de de UsoUso

Diagrama Diagrama de Classesde Classes

Diagrama Diagrama de de SeqSeqüüênciaência

DefiniDefiniççãoão do Softwaredo Software

AnAnáálises do Softwarelises do Software�� gotogoto

�� operador ?operador ?

�� continuecontinue

�� friendfriend

�� mallocmalloc

�� reallocrealloc

�� freefree

�� case sem case sem breakbreak

�� switch switch sem sem defaultdefault

�� else else final em blocos final em blocos else ifelse if

�� bloco case grandebloco case grande

�� tamanho linhatamanho linha

�� usouso incremincrem. expressões. expressões

�� alinhamento do calinhamento do cóódigodigo

�� varivariáável linha individualvel linha individual

�� espaespaçço na declarao na declaraçção de ão de ponteirosponteiros

�� estrutura controle separar estrutura controle separar abertura da condiabertura da condiççãoão

�� colocar operadores lcolocar operadores lóógicos gicos em linhas separadasem linhas separadas

�� alinhar inalinhar iníício e fim blococio e fim bloco

�� condicondiçções devem ter inões devem ter iníício cio e fim de blocoe fim de bloco

�� ininíício e fim de bloco em cio e fim de bloco em linhas exclusivaslinhas exclusivas

Funcionamento Funcionamento do Softwaredo Software

Funcionamento Funcionamento do Softwaredo Software

Funcionamento Funcionamento do Softwaredo Software

Funcionamento Funcionamento do Softwaredo Software

FF DDUU OON N .CC SSII OOOO FFNN TTAA WWMM AAEE RRNN EETT .OO .

ConclusãoConclusão

�� Os padrões utilizados são de grande valia, pois tornam Os padrões utilizados são de grande valia, pois tornam o co cóódigo fonte mais legdigo fonte mais legíível, aumentando a qualidade do vel, aumentando a qualidade do software e consequentemente diminuindo os futuros software e consequentemente diminuindo os futuros custos com a manutencustos com a manutençção dos mesmosão dos mesmos

�� AA utilizautilizaçção deão de tokenstokens agilizou agilizou a a reestruturareestruturaççãoão

�� Os objetivos do trabalho foram alcanOs objetivos do trabalho foram alcanççados visto que a ados visto que a ferramenta permite analisar e reestruturar cferramenta permite analisar e reestruturar cóódigodigo--fonte fonte de programas feitos na linguagem C++, a partir de de programas feitos na linguagem C++, a partir de padrões de legibilidade estudados na bibliografiapadrões de legibilidade estudados na bibliografia

�� LimitaLimitaççõesões

–– o padrão para escolha de nomes e o padrão de o padrão para escolha de nomes e o padrão de composicomposiçção de mão de móódulos possuem regras e/ou dulos possuem regras e/ou recomendarecomendaçções que não puderam ser ões que não puderam ser implementadas. implementadas.

DemonstraDemonstraçção do ão do SoftwareSoftware

�� Ferramenta de apoio a reestruturaFerramenta de apoio a reestruturaçção de ão de ccóódigo fonte em linguagem C++ baseado em digo fonte em linguagem C++ baseado em padrões de legibilidadepadrões de legibilidade