Adriano  Edgar   Fábio   Fernando   Luciana  Nichols Seminário disciplina TAPR – FATEC SP – Profº Paulo Bernice
<ul><li>CMM e CMMI </li></ul><ul><li>Ferramentas CASE – Conceitos e histórico   </li></ul><ul><li>Ferramentas CASE – Class...
<ul><li>Capability Maturity Model  ( CMM ), também conhecido como  Software CMM  ( SW-CMM ) pode ser definido como sendo u...
<ul><li>O CMM descreve os estágios de maturidade através dos quais organizações passam enquanto evoluem o seu ciclo de des...
<ul><li>Inicial </li></ul><ul><ul><li>A organização geralmente não dispõe de um ambiente estável. O sucesso nestas organiz...
<ul><li>Gerenciado </li></ul><ul><ul><li>Utilizando métricas precisas, o gerenciamento pode efetivamente controlar os esfo...
<ul><li>O CMMI (Capability Maturity Model Integration)  é um conjunto de práticas de gerenciamento e de melhoria da qualid...
<ul><li>O nível 2 do CMMI está dividido em sete áreas de processos chave: </li></ul><ul><ul><li>Gerência de requisitos (RE...
 
<ul><li>No início da Análise de Sistemas e da programação, tínhamos as seguintes características: </li></ul><ul><ul><li>Po...
<ul><li>Década de  1960 : Primeiros processadores de textos para documentação de projetos. </li></ul><ul><li>Década de  19...
1960 1970 1980 1990 Ferramentas de Desenvolvimento Ambientes Integrados de  Modelagem Visual Ferramentas de Representação ...
<ul><li>C omputer- A ided  S oftware  E ngineering  (“Engenharia de Software Auxiliada por Computador ”) </li></ul><ul><li...
<ul><li>São ferramentas que auxiliam no desenvolvimento de software ou no gerenciamento do projeto. </li></ul><ul><li>Seu ...
<ul><li>Por volta dos anos 1990 </li></ul><ul><li>Causa? </li></ul><ul><ul><li>Declínio dos mainframes </li></ul></ul><ul>...
<ul><li>Características que propiciaram o ápice.  </li></ul><ul><ul><li>Aperfeiçoamento dos geradores de código. </li></ul...
<ul><li>Primeira forma </li></ul><ul><ul><li>4 tipos </li></ul></ul><ul><li>Segunda forma </li></ul><ul><ul><li>2 tipos </...
<ul><li>UPPER CASE (ou Back End) </li></ul><ul><ul><li>Geram código  automaticamente </li></ul></ul><ul><ul><li>Fase de  c...
<ul><li>I-CASE ( Integrated  CASE) </li></ul><ul><ul><li>Upper  e  Lower  CASE  simultaneamente  (relacionam entre si) </l...
<ul><li>Orientadas à função </li></ul><ul><ul><li>Baseiam-se nas funcionalidades das ferramentas </li></ul></ul><ul><li>Or...
 
<ul><li>Necessidade: múltiplas ferramentas CASE existentes que atendem a processos isolados sem integração </li></ul><ul><...
<ul><li>Benefícios e Características </li></ul><ul><ul><li>Facilidade na troca de informações </li></ul></ul><ul><ul><li>G...
<ul><li>Níveis de integração </li></ul><ul><ul><li>Plataforma </li></ul></ul><ul><ul><li>Dados </li></ul></ul><ul><ul><ul>...
<ul><li>Dificuldades de integração </li></ul><ul><ul><li>Heterogeneidade </li></ul></ul><ul><ul><li>Ferramentas externas <...
<ul><li>Diminuição  de Erros </li></ul><ul><li>Agilidade  de desenvolvimento </li></ul><ul><li>Estímulo para novas metodol...
<ul><li>Falta  de conhecimento  de metodologias </li></ul><ul><li>Necessidade de  treinamento intensivo  dos profissionais...
<ul><li>I-CASE </li></ul><ul><li>Modelagem estruturada + UML </li></ul><ul><li>Aumento da produtividade </li></ul><ul><li>...
 
<ul><li>Ferramenta de modelagem de dados, para ambiente Client/Server, Web e   Datawarehouse </li></ul><ul><li>Modelagem d...
 
 
 
 
Geradores de Programas <ul><li>Automatiza a geração de código </li></ul><ul><li>Diminui a quantidade de erros </li></ul><u...
 
 
 
<ul><li>É uma solução às altas licenças? </li></ul><ul><li>Podem substituir uma solução comercial? </li></ul>
MySQL Workbench <ul><li>Criação e edição visual da base de dados </li></ul><ul><li>Forward Engineering/Engenharia Reversa ...
MySQL Workbench Plataformas suportadas: Windows, Linux e MacOSX
Umbrello UML Modeller <ul><li>Ferramenta de modelagem UML </li></ul><ul><li>Engenharia Reversa </li></ul><ul><li>Possui in...
Umbrello UML Modeller
ArgoUML <ul><li>Ferramenta de modelagem UML </li></ul><ul><li>Possui uma interface bem completa </li></ul><ul><li>É pouco ...
ArgoUML
<ul><li>  </li></ul><ul><li>17 Projetos em andamento no SourceForge </li></ul><ul><li>12 em fase de planejamento </li></ul...
Exemplos Fast Case UMLObject Modeller for Linux Voodoo Thorn xFig DIA kUML ArgoUML UML Sculptor Poseidon
Qualidade de Software X Qualidade de Programa <ul><li>É comum confundirmos qualidade de software com qualidade de programa...
Diretrizes da qualidade de programa <ul><li>Nomes de variáveis e funções </li></ul><ul><ul><li>Variáveis  – Sempre use nom...
 
Sem identação... <ul><li><table border = &quot;0&quot; width =&quot;120%&quot;> </li></ul><ul><li><tr><td><font face = &qu...
Com identação <ul><li><table border = &quot;0&quot; width =&quot;120%&quot;> </li></ul><ul><li><tr><td><font face = &quot;...
Diretrizes da qualidade de programa <ul><li>Evite usar comandos de desvio incondicional   </li></ul><ul><ul><li>GOTO BREAK...
Diretrizes da qualidade de programa <ul><li>Divisão em funções e módulos </li></ul><ul><li>As funções devem ser simples, n...
Diretrizes da qualidade de programa <ul><li>Usar listas de verificação </li></ul><ul><li>Conduzir revisões de código </li>...
Diretrizes da qualidade de programa <ul><li>Percorrer todos os caminhos do código com um depurador </li></ul><ul><li>Evita...
Fatores Externos ao código <ul><li>Eficiência </li></ul><ul><ul><li>Bom uso dos recursos computacionais </li></ul></ul><ul...
?
Upcoming SlideShare
Loading in...5
×

CMM, CMMI e Ferramentas Case

3,718

Published on

Apresentação da disciplina TAPR na FATEC-SP - 1º Semestre/2009

Published in: Technology, Business
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,718
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

CMM, CMMI e Ferramentas Case

  1. 1. Adriano Edgar Fábio Fernando Luciana Nichols Seminário disciplina TAPR – FATEC SP – Profº Paulo Bernice
  2. 2. <ul><li>CMM e CMMI </li></ul><ul><li>Ferramentas CASE – Conceitos e histórico </li></ul><ul><li>Ferramentas CASE – Classificação </li></ul><ul><li>Ferramentas CASE – Exemplos </li></ul><ul><li>Geradores de Programa </li></ul><ul><li>Ferramentas CASE Open Source </li></ul><ul><li>Qualidade de Programa </li></ul>
  3. 3. <ul><li>Capability Maturity Model ( CMM ), também conhecido como Software CMM ( SW-CMM ) pode ser definido como sendo uma soma de &quot;melhores práticas&quot; para diagnóstico e avaliação de maturidade do desenvolvimento de softwares em uma organização. </li></ul><ul><li>O &quot;CMM&quot; não deve ser entendido como sendo uma metodologia, pois o &quot;CMM&quot; não diz exatamente como fazer, mas sim o que deve ser feito (melhores práticas). </li></ul>
  4. 4. <ul><li>O CMM descreve os estágios de maturidade através dos quais organizações passam enquanto evoluem o seu ciclo de desenvolvimento de software, através de avaliação contínua, identificação de problemas e ações corretivas dentro de uma estratégia de melhoria dos processos. Este caminho de melhoria é definido por cinco níveis de maturidade: </li></ul><ul><ul><li>Inicial </li></ul></ul><ul><ul><li>Repetível </li></ul></ul><ul><ul><li>Definido </li></ul></ul><ul><ul><li>Gerenciado </li></ul></ul><ul><ul><li>Otimizado </li></ul></ul>
  5. 5. <ul><li>Inicial </li></ul><ul><ul><li>A organização geralmente não dispõe de um ambiente estável. O sucesso nestas organizações depende da competência e heroísmo dos seus funcionários e não no uso de processos estruturados. </li></ul></ul><ul><li>Repetitivo </li></ul><ul><ul><li>No nível 2 de maturidade, o desenvolvimento do software é repetido. </li></ul></ul><ul><ul><li>A organização já utiliza ferramentas de Gerência de Projetos para mapear o projeto de software. </li></ul></ul><ul><li>Definido </li></ul><ul><ul><li>A organização possui um conjunto de processos padrões, os quais são a base do nível 3. Estes estão estabelecidos e são melhorados periodicamente. Estes processos padrões são usados para estabelecer uma consistência dentro da organização. </li></ul></ul>
  6. 6. <ul><li>Gerenciado </li></ul><ul><ul><li>Utilizando métricas precisas, o gerenciamento pode efetivamente controlar os esforços para desenvolvimento de software. Em particular, o gerenciamento pode identificar caminhos para ajustar e adaptar o processo para projetos particulares sem perda de métricas de qualidade ou desvios das especificações. </li></ul></ul><ul><li>Otimizado </li></ul><ul><ul><li>O nível de maturidade 5 foca no contínuo progresso do desempenho dos processos através de melhorias de inovação tecnológica e incremental. Objetivos de melhoria quantitativa dos processos para a organização são estabelecidos, continuamente revisados, refletindo as mudanças nos objetivos da organização, e usando critérios de melhoria na gerência de processos . </li></ul></ul>
  7. 7. <ul><li>O CMMI (Capability Maturity Model Integration) é um conjunto de práticas de gerenciamento e de melhoria da qualidade a serem aplicadas criteriosamente no processo de desenvolvimento de software. </li></ul><ul><li>O modelo CMMI foi concebido especificamente para organizações que desenvolvem softwares, mas em seu nível de maturidade 2 o foco é a gestão de projetos, o que pode fazer com que seus conceitos possam ser facilmente aplicados em outros tipos de organização que trabalham orientadas a projetos. </li></ul>
  8. 8. <ul><li>O nível 2 do CMMI está dividido em sete áreas de processos chave: </li></ul><ul><ul><li>Gerência de requisitos (REQM); </li></ul></ul><ul><ul><li>Planejamento de projetos (PP); </li></ul></ul><ul><ul><li>Acompanhamento de projetos (PMC); </li></ul></ul><ul><ul><li>Garantia de qualidade do processo e do produto (PPQA); </li></ul></ul><ul><ul><li>Medição e análise (MA); </li></ul></ul><ul><ul><li>Gerência de configuração (CM); </li></ul></ul><ul><ul><li>Gerenciamento de acordos com fornecedores (SAM). </li></ul></ul>
  9. 10. <ul><li>No início da Análise de Sistemas e da programação, tínhamos as seguintes características: </li></ul><ul><ul><li>Poucas regras. </li></ul></ul><ul><ul><li>Regras não bem definidas. </li></ul></ul><ul><ul><li>Métodos ineficientes. </li></ul></ul><ul><ul><li>Alta freqüência de erros. </li></ul></ul>
  10. 11. <ul><li>Década de 1960 : Primeiros processadores de textos para documentação de projetos. </li></ul><ul><li>Década de 1970 : Evolução dos meios gráficos e da programação estruturada. </li></ul><ul><li>Década de 1980 : Primeiras ferramentas de análise estruturada. </li></ul><ul><li>Década de 1990 : Geração de código. </li></ul>
  11. 12. 1960 1970 1980 1990 Ferramentas de Desenvolvimento Ambientes Integrados de Modelagem Visual Ferramentas de Representação de Diagramas Ferramentas RAD Editores de Texto Compiladores Interpretadores Linkers DFDs ERs Esquemas de BDs Documentação Geração de código Realização de Testes Gestão de Projetos Integração Modelagem O-O Regras de negócio
  12. 13. <ul><li>C omputer- A ided S oftware E ngineering (“Engenharia de Software Auxiliada por Computador ”) </li></ul><ul><li>Termo originalmente criado pela companhia Nastec, em 1982. </li></ul><ul><li>Primeiros produtos comercializados: </li></ul><ul><ul><li>GraphiText - Nastec </li></ul></ul><ul><ul><li>Excelerator - Intersolve </li></ul></ul><ul><ul><li>AD Cycle - IBM </li></ul></ul>
  13. 14. <ul><li>São ferramentas que auxiliam no desenvolvimento de software ou no gerenciamento do projeto. </li></ul><ul><li>Seu maior propósito é diminuir o custo e o tempo de desenvolvimento e aumentar a qualidade de software. </li></ul>
  14. 15. <ul><li>Por volta dos anos 1990 </li></ul><ul><li>Causa? </li></ul><ul><ul><li>Declínio dos mainframes </li></ul></ul><ul><li>Conseqüências </li></ul><ul><ul><li>Disseminação de diversas ferramentas </li></ul></ul><ul><ul><li>Domínio do mercado Pela Computer Associates </li></ul></ul>
  15. 16. <ul><li>Características que propiciaram o ápice. </li></ul><ul><ul><li>Aperfeiçoamento dos geradores de código. </li></ul></ul><ul><ul><li>Conceito de re-usabilidade implementado. </li></ul></ul><ul><ul><li>Surgem as ferramentas CASE Integradas. </li></ul></ul><ul><ul><li>Melhoria na interface. </li></ul></ul><ul><ul><li>Ferramentas abrangiam todo ciclo de vida. </li></ul></ul>
  16. 17. <ul><li>Primeira forma </li></ul><ul><ul><li>4 tipos </li></ul></ul><ul><li>Segunda forma </li></ul><ul><ul><li>2 tipos </li></ul></ul>
  17. 18. <ul><li>UPPER CASE (ou Back End) </li></ul><ul><ul><li>Geram código automaticamente </li></ul></ul><ul><ul><li>Fase de concepção do software (análise e especificação e/ou modelação de requisitos) </li></ul></ul><ul><li>LOWER CASE (ou Front End) </li></ul><ul><ul><li>Fase de implementação (edição e compilação de código e de testes) </li></ul></ul>
  18. 19. <ul><li>I-CASE ( Integrated CASE) </li></ul><ul><ul><li>Upper e Lower CASE simultaneamente (relacionam entre si) </li></ul></ul><ul><li>Best In Class </li></ul><ul><ul><li>I-Case + ferramentas externas </li></ul></ul><ul><ul><li>Kit de ferramentas </li></ul></ul>
  19. 20. <ul><li>Orientadas à função </li></ul><ul><ul><li>Baseiam-se nas funcionalidades das ferramentas </li></ul></ul><ul><li>Orientadas à atividade </li></ul><ul><ul><li>I-CASE e Best in Class (specs, modelagem, implementação) </li></ul></ul>
  20. 22. <ul><li>Necessidade: múltiplas ferramentas CASE existentes que atendem a processos isolados sem integração </li></ul><ul><li>Conjunto de ferramentas capazes de agir de forma combinada </li></ul><ul><ul><li>Informações </li></ul></ul><ul><ul><li>Dados </li></ul></ul><ul><ul><li>Serviços </li></ul></ul><ul><ul><li>Suporta todas etapas de desenvolvimento </li></ul></ul>
  21. 23. <ul><li>Benefícios e Características </li></ul><ul><ul><li>Facilidade na troca de informações </li></ul></ul><ul><ul><li>Garantia de qualidade </li></ul></ul><ul><ul><li>Atualização de documentos </li></ul></ul><ul><ul><li>Controle de versão </li></ul></ul><ul><ul><li>Aumento no controle do projeto </li></ul></ul><ul><ul><li>Redução de esforço </li></ul></ul><ul><ul><li>Melhoria na cooperação entre membros de um projeto </li></ul></ul><ul><ul><li>Métricas de desenvolvimento </li></ul></ul>
  22. 24. <ul><li>Níveis de integração </li></ul><ul><ul><li>Plataforma </li></ul></ul><ul><ul><li>Dados </li></ul></ul><ul><ul><ul><ul><li>Arquivos compartilhados </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Estrutura de dados compartilhadas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Repositório compartilhado </li></ul></ul></ul></ul><ul><ul><li>Apresentação </li></ul></ul><ul><ul><ul><ul><li>Sistema de janela </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Comando </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Interação </li></ul></ul></ul></ul><ul><ul><li>Controle </li></ul></ul>
  23. 25. <ul><li>Dificuldades de integração </li></ul><ul><ul><li>Heterogeneidade </li></ul></ul><ul><ul><li>Ferramentas externas </li></ul></ul><ul><ul><li>Abstração de dados </li></ul></ul><ul><ul><li>Distribuição </li></ul></ul>
  24. 26. <ul><li>Diminuição de Erros </li></ul><ul><li>Agilidade de desenvolvimento </li></ul><ul><li>Estímulo para novas metodologias </li></ul><ul><li>Redução de custos na manutenção </li></ul><ul><li>Aumento de produtividade </li></ul><ul><li>Possibilitar a Reengenharia e Engenharia Reversa </li></ul>
  25. 27. <ul><li>Falta de conhecimento de metodologias </li></ul><ul><li>Necessidade de treinamento intensivo dos profissionais </li></ul><ul><li>Alto custo por licença </li></ul><ul><li>Incompatibilidade de ferramentas. </li></ul>
  26. 28. <ul><li>I-CASE </li></ul><ul><li>Modelagem estruturada + UML </li></ul><ul><li>Aumento da produtividade </li></ul><ul><li>Gera scripts em SQL </li></ul><ul><li>Gera códigos em: Delphi, VB </li></ul><ul><li>Automatização da documentação </li></ul><ul><li>Aumento da interação com o usuário na definição do sistema </li></ul>
  27. 30. <ul><li>Ferramenta de modelagem de dados, para ambiente Client/Server, Web e Datawarehouse </li></ul><ul><li>Modelagem de Banco de Dados através do Modelo Entidade-Relacionamento </li></ul><ul><li>Permite a construção do modelo lógico e físico </li></ul><ul><li>Documentação de sistemas já implantados </li></ul><ul><li>Manutenção de banco de dados em produção </li></ul><ul><li>Facilidade de uso </li></ul>
  28. 35. Geradores de Programas <ul><li>Automatiza a geração de código </li></ul><ul><li>Diminui a quantidade de erros </li></ul><ul><li>Aumento de produtividade </li></ul><ul><li>Exemplos: Genexus </li></ul><ul><ul><li>Gerador de programas e de objetos de banco de dados </li></ul></ul><ul><ul><li>Tradução para linguagens do mercado: Visual Basic, Java, C# </li></ul></ul><ul><ul><li>Possui um módulo de gerenciamento de banco de dados e suporta os seguintes SGBD: Access, SQL Server, Oracle, DB2 entre outros </li></ul></ul>
  29. 39. <ul><li>É uma solução às altas licenças? </li></ul><ul><li>Podem substituir uma solução comercial? </li></ul>
  30. 40. MySQL Workbench <ul><li>Criação e edição visual da base de dados </li></ul><ul><li>Forward Engineering/Engenharia Reversa </li></ul><ul><li>Documentação </li></ul>
  31. 41. MySQL Workbench Plataformas suportadas: Windows, Linux e MacOSX
  32. 42. Umbrello UML Modeller <ul><li>Ferramenta de modelagem UML </li></ul><ul><li>Engenharia Reversa </li></ul><ul><li>Possui interface simples e intuitiva </li></ul><ul><li>É utilizado para modelar o KDE </li></ul><ul><li>Plataformas suportadas: Linux, Solaris e BSD </li></ul><ul><li>É capaz de gerar código fonte em diversas linguagens </li></ul><ul><ul><li>(declaração de classes, métodos e atributos), com suporte à geração de código para ActionScript, Ada, C++, CORBA IDL, Java™, JavaScript, PHP, Perl, Python, SQL e Esquema XML </li></ul></ul>
  33. 43. Umbrello UML Modeller
  34. 44. ArgoUML <ul><li>Ferramenta de modelagem UML </li></ul><ul><li>Possui uma interface bem completa </li></ul><ul><li>É pouco intuitivo </li></ul><ul><li>Engenharia Reversa (Java) </li></ul><ul><li>Geração de código: Java, PHP, Python, C++ e C# </li></ul><ul><li>Plataformas suportadas: Qualquer plataforma com JVM </li></ul>
  35. 45. ArgoUML
  36. 46. <ul><li>  </li></ul><ul><li>17 Projetos em andamento no SourceForge </li></ul><ul><li>12 em fase de planejamento </li></ul><ul><li>5 já possuem ferramentas disponíveis </li></ul><ul><li>11 para Windows </li></ul><ul><li>15 para Unix/Linux </li></ul>
  37. 47. Exemplos Fast Case UMLObject Modeller for Linux Voodoo Thorn xFig DIA kUML ArgoUML UML Sculptor Poseidon
  38. 48. Qualidade de Software X Qualidade de Programa <ul><li>É comum confundirmos qualidade de software com qualidade de programa, mas é importante saber que elas possuem características distintas. </li></ul><ul><li>A qualidade do software diz respeito a aspectos mais globais de um software, na seu conformidade a requisitos pré-estabelecidos pelo usuário, não tratando de aspectos mais próximos à programação e sim de aspectos como funcionalidade, confiabilidade, usabilidade etc. </li></ul><ul><li>A qualidade de programa trata de como o código de um programa pode se tornar mais eficiente, com diversas diretrizes para tornar o software mais versátil, documentado, seguro e compreensível. </li></ul>
  39. 49. Diretrizes da qualidade de programa <ul><li>Nomes de variáveis e funções </li></ul><ul><ul><li>Variáveis – Sempre use nomes significativos para suas variáveis, preferindo sempre substantivos para nomes de variáveis. </li></ul></ul><ul><ul><li>F unções - O nome da função deve dizer a operação que a função realiza, dê preferência a utilização de verbos para nomes de funções. Exemplo: calculaSomaSalario() </li></ul></ul><ul><li>Identação </li></ul><ul><ul><li>Deve mostrar bem a estrutura do código </li></ul></ul><ul><ul><li>Um código mal estruturado o torna confuso e favorece a ocorrência de erros </li></ul></ul>
  40. 51. Sem identação... <ul><li><table border = &quot;0&quot; width =&quot;120%&quot;> </li></ul><ul><li><tr><td><font face = &quot;Papyrus&quot; size = &quot;2&quot; ><a href = &quot;princ.html&quot; target = &quot;princ&quot;><img src = &quot;icone.jpg&quot; width=&quot;20&quot; height = &quot;20&quot;> Home</a></font></td></tr><tr><td> </li></ul><ul><li><font face = &quot;Papyrus&quot; size = &quot;2&quot; ><div id=&quot;camada1&quot; > <a href=&quot;#&quot; onclick=&quot;abre_camada2();&quot; > <img src = &quot;icone.jpg&quot; width=&quot;20&quot; height = &quot;20&quot;> Principal </a> </div><div id=&quot;camada2&quot; style=&quot;display:none“> <ul type=&quot;square“> <li><a href=&quot;hist.html&quot; target = &quot;princ&quot;> A História </a> <li><a href=&quot;tec.html&quot; target = &quot;princ&quot;> Tecnologia </a> </ul></div></font></tr></td> </li></ul><ul><li></table> </li></ul>
  41. 52. Com identação <ul><li><table border = &quot;0&quot; width =&quot;120%&quot;> </li></ul><ul><li><tr><td><font face = &quot;Papyrus&quot; size = &quot;2&quot; ><a href = &quot;princ.html&quot; target = &quot;princ&quot;><img src = &quot;icone.jpg&quot; width=&quot;20&quot; height = &quot;20&quot;> Home</a></font></td></tr> </li></ul><ul><li><tr><td> </li></ul><ul><li><font face = &quot;Papyrus&quot; size = &quot;2&quot; > </li></ul><ul><li><div id=&quot;camada1&quot; > </li></ul><ul><li><a href=&quot;#&quot; onclick=&quot;abre_camada2();&quot; > <img src = &quot;icone.jpg&quot; width=&quot;20&quot; height = &quot;20&quot;> Principal </a> </li></ul><ul><li></div> </li></ul><ul><li><div id=&quot;camada2&quot; style=&quot;display:none&quot;> </li></ul><ul><li><ul type=&quot;square&quot;> </li></ul><ul><li><li><a href=&quot;hist.html&quot; target = &quot;princ&quot;> A História </a> </li></ul><ul><li><li><a href=&quot;tec.html&quot; target = &quot;princ&quot;> Tecnologia </a> </li></ul><ul><li></ul> </li></ul><ul><li></div> </li></ul><ul><li></font> </li></ul><ul><li></tr></td> </li></ul><ul><li></table> </li></ul>
  42. 53. Diretrizes da qualidade de programa <ul><li>Evite usar comandos de desvio incondicional </li></ul><ul><ul><li>GOTO BREAK CONTINUE RETURN terminando repetição (com exceção de quando for necessário) </li></ul></ul><ul><ul><li>O uso desses comandos dificulta a análise do código. </li></ul></ul><ul><li>Utilização de constantes </li></ul><ul><ul><li>A criação de constantes permite uma manutenção mais fácil caso certos parâmetros precisem ser mudados. Devem estar em letras maiúsculas. </li></ul></ul><ul><ul><ul><li>#include <iostream.h> #include <conio.h> //apenas usada para getch(); segura a tela #define TAM 10 //10 é o numero de elementos do vetor void main(){  int vetor[TAM];  int cont;    for(cont=0; cont<TAM; cont++){      cout<<&quot;Digite os valores &quot;;      cin>>vetor[cont];    }    for(cont=0;cont<TAM;cont++)      cout<<endl<<vetor[cont];    getch(); } </li></ul></ul></ul>
  43. 54. Diretrizes da qualidade de programa <ul><li>Divisão em funções e módulos </li></ul><ul><li>As funções devem ser simples, não deve ser necessário analisar mais nada para </li></ul><ul><li>entende-la. </li></ul><ul><li>Coesão </li></ul><ul><ul><li>Um módulo é coeso se realizar uma única tarefa bem especificada. </li></ul></ul><ul><li>Acoplamento </li></ul><ul><ul><li>Diz respeito ao grau de dependência entre os módulos. </li></ul></ul>
  44. 55. Diretrizes da qualidade de programa <ul><li>Usar listas de verificação </li></ul><ul><li>Conduzir revisões de código </li></ul><ul><li>Compor testes de unidade </li></ul><ul><ul><li>Testes positivos </li></ul></ul><ul><ul><li>Testes negativos </li></ul></ul><ul><ul><li>Testes de estresse </li></ul></ul><ul><ul><li>Testes de falha de injeção </li></ul></ul><ul><li>Usar ferramentas de análise de código </li></ul><ul><li>Não use linguagem inapropriada no código-fonte </li></ul>
  45. 56. Diretrizes da qualidade de programa <ul><li>Percorrer todos os caminhos do código com um depurador </li></ul><ul><li>Evitar recursos não especificados </li></ul><ul><li>Refatorar </li></ul><ul><ul><li>Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo. </li></ul></ul><ul><ul><li>Refatorar ajuda na melhora e no entendimento do código, conseqüentemente também ajuda no processo de depuração, pois é muito mais rápido e fácil encontrar uma falha num código claro e fácil de entender. </li></ul></ul>
  46. 57. Fatores Externos ao código <ul><li>Eficiência </li></ul><ul><ul><li>Bom uso dos recursos computacionais </li></ul></ul><ul><li>Escalabilidade </li></ul><ul><ul><li>O programa não pode se comportar de maneira inadequada em ambientes heterogêneos e complexos. </li></ul></ul><ul><li>A Documentação do código deve cobrir: </li></ul><ul><ul><li>Plataforma de desenvolvimento. </li></ul></ul><ul><ul><li>Descrição da representação dos dados (Estruturas de dados) </li></ul></ul><ul><ul><li>Divisão lógica do programa: módulos, classes, métodos e funções. </li></ul></ul><ul><ul><li>Descrição de cada módulo, classe, método e função. </li></ul></ul><ul><ul><li>Descrição dos algoritmos implementados. </li></ul></ul><ul><ul><li>Descrição dos testes realizados e dos resultados obtidos. </li></ul></ul>
  47. 58. ?

×