ferramenta de apoio a reestrutura ção de c ódigo...
TRANSCRIPT
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
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
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.