O documento apresenta uma palestra sobre refatoração de código e métricas de software orientado a objetos. A palestra será dividida em três partes: motivação para refatoração, conceito de refatoração e métricas para medir qualidade de código OO.
O documento discute os sistemas operacionais, definindo-os como o software responsável por gerenciar os recursos de hardware e escalonar tarefas. Apresenta os principais atributos dos sistemas operacionais como abstração de hardware e coordenação de recursos. Explica os tipos de sistemas operacionais como monoprogramáveis, multiprogramáveis e com múltiplos processadores.
Este curso tem como objetivo, ensinar os procedimentos básicos para iniciar o uso de microcomputadores. Pretendemos então, capacitar o aluno a executar rotinas que auxiliem no curso desta entidade educacional, utilizando o microcomputador como uma ferramenta auxiliar ao seu aprendizado.
O documento discute sistemas operacionais e o mercado de trabalho, definindo sistemas operacionais como conjuntos de instruções que controlam o funcionamento do computador e gerenciam seus recursos. Também descreve brevemente a história dos sistemas operacionais e os principais atualmente, como Windows, Linux e Mac OS.
1) A apostila apresenta orientações e links para complementar os estudos sobre aplicativos informatizados, incluindo tarefas de cursar o canal no YouTube e curtir a página no Facebook.
2) O documento discute os fundamentos de equipamentos de processamento de informações e sistemas operacionais, incluindo classificações de computadores e exemplos de sistemas operacionais como Windows e Linux.
3) É apresentada uma seção sobre o sistema operacional Windows, discutindo suas versões principais como Windows 7 e Windows 10, e características como a área de
O documento descreve a arquitetura básica de um computador, incluindo suas principais partes como a unidade central de processamento, memória e unidades de entrada e saída. Detalha os componentes da CPU, como a unidade aritmética e lógica e unidade de controle. Também discute os diferentes tipos de memória, incluindo RAM, ROM e memória secundária.
O documento descreve os principais componentes de hardware de um computador, dividindo os periféricos em de entrada e saída. Ele explica o que é a unidade do sistema, monitor, teclado, mouse, caixa de som, webcam, microfone, impressora, scanner, estabilizador, nobreak, projetor multimídia e leitor de impressão digital.
O documento discute os conceitos e riscos relacionados à segurança da informação. Ele explica o que é segurança da informação e seus principais atributos como confidencialidade, integridade e disponibilidade. Também descreve as ameaças cibernéticas como vírus, worms, trojans e exploits, além de técnicas de engenharia social usadas por criminosos como phishing. Por fim, ressalta a importância de proteger dados pessoais e empresariais.
O documento discute os sistemas operacionais, definindo-os como o software responsável por gerenciar os recursos de hardware e escalonar tarefas. Apresenta os principais atributos dos sistemas operacionais como abstração de hardware e coordenação de recursos. Explica os tipos de sistemas operacionais como monoprogramáveis, multiprogramáveis e com múltiplos processadores.
Este curso tem como objetivo, ensinar os procedimentos básicos para iniciar o uso de microcomputadores. Pretendemos então, capacitar o aluno a executar rotinas que auxiliem no curso desta entidade educacional, utilizando o microcomputador como uma ferramenta auxiliar ao seu aprendizado.
O documento discute sistemas operacionais e o mercado de trabalho, definindo sistemas operacionais como conjuntos de instruções que controlam o funcionamento do computador e gerenciam seus recursos. Também descreve brevemente a história dos sistemas operacionais e os principais atualmente, como Windows, Linux e Mac OS.
1) A apostila apresenta orientações e links para complementar os estudos sobre aplicativos informatizados, incluindo tarefas de cursar o canal no YouTube e curtir a página no Facebook.
2) O documento discute os fundamentos de equipamentos de processamento de informações e sistemas operacionais, incluindo classificações de computadores e exemplos de sistemas operacionais como Windows e Linux.
3) É apresentada uma seção sobre o sistema operacional Windows, discutindo suas versões principais como Windows 7 e Windows 10, e características como a área de
O documento descreve a arquitetura básica de um computador, incluindo suas principais partes como a unidade central de processamento, memória e unidades de entrada e saída. Detalha os componentes da CPU, como a unidade aritmética e lógica e unidade de controle. Também discute os diferentes tipos de memória, incluindo RAM, ROM e memória secundária.
O documento descreve os principais componentes de hardware de um computador, dividindo os periféricos em de entrada e saída. Ele explica o que é a unidade do sistema, monitor, teclado, mouse, caixa de som, webcam, microfone, impressora, scanner, estabilizador, nobreak, projetor multimídia e leitor de impressão digital.
O documento discute os conceitos e riscos relacionados à segurança da informação. Ele explica o que é segurança da informação e seus principais atributos como confidencialidade, integridade e disponibilidade. Também descreve as ameaças cibernéticas como vírus, worms, trojans e exploits, além de técnicas de engenharia social usadas por criminosos como phishing. Por fim, ressalta a importância de proteger dados pessoais e empresariais.
Aula 01 - Introdução ao curso - Projeto de Redes de ComputadoresDalton Martins
Este documento apresenta o curso de Projeto de Redes de Computadores da Fatec São Paulo. O curso tem como objetivos ensinar os alunos a desenvolver projetos de redes abordando aspectos técnicos e de gestão. O material de apoio inclui um livro didático e um simulador de redes. A avaliação dos alunos será feita por meio de duas provas, um projeto de rede e um artigo sobre tendências atuais.
O documento discute o conceito de computação em nuvem, sua história e como surgiu na década de 1960. Também aborda os principais tipos de computação em nuvem, serviços oferecidos, características, vantagens, desvantagens e gerenciamento na nuvem. Por fim, apresenta os principais serviços de armazenamento em nuvem e breve discussão sobre a adoção no Brasil.
O documento fornece uma introdução básica sobre informática, definindo informática como a ciência que trata do processamento de informações por meio de computadores. Explica que um computador é uma máquina capaz de processar dados de acordo com instruções para produzir transformações nesses dados. Lista os principais elementos de um computador e define hardware e software.
O documento fornece instruções sobre como usar o Microsoft Word, incluindo como abrir e salvar arquivos, formatar texto, inserir imagens e formas, e imprimir documentos. Explica como alterar o tipo e tamanho da fonte, formatar texto em negrito, itálico ou sublinhado, e alinhar parágrafos. Também mostra como inserir fotos, clipart, caixas de texto e WordArt, e como usar as ferramentas de edição associadas a esses itens.
O documento discute firewalls e o programa iptables no Linux, fornecendo conceitos, tipos de firewall, limitações, portas comuns, e como o iptables funciona com tabelas, cadeias, regras e rastreamento de conexões.
O documento discute a importância crescente da cibersegurança, destacando estatísticas sobre o uso da Internet, ameaças cibernéticas e ataques de Estados-nação. Também enfatiza que cada usuário deve assumir responsabilidade pela própria segurança online.
Proteção e segurança de sistemas operacionaiscleber_opo
O documento discute conceitos de proteção e segurança em sistemas operacionais, incluindo objetivos de proteção, domínios de proteção, revogação de direitos de acesso, sistemas baseados em competência, proteção baseada em linguagens, problemas de segurança, ameaças e programas maliciosos, detecção de invasões e criptografia.
1. A aula introduz o PHP, abordando sua história, características e estrutura básica.
2. Variáveis, constantes, tipos de dados e operadores são explicados. Exemplos ilustram o uso de variáveis, operações matemáticas e lógicas.
3. O documento fornece os conceitos fundamentais da linguagem PHP para iniciantes.
O documento resume os principais tipos e características dos músculos do corpo humano, incluindo sua divisão em músculos estriados esqueléticos, cardíacos e lisos viscerais. Detalha aspectos como origem, inserção, ação, forma, número de cabeças e componentes anatômicos dos músculos, além de explicar a coordenação muscular e fornecer exemplos de músculos específicos.
O documento descreve a fisiologia muscular, abordando as funções do sistema muscular, propriedades do músculo, tipos de tecido muscular, estrutura do músculo esquelético e processo de contração muscular. Explica também o papel do fuso neuromuscular e do reflexo miotático na regulação da atividade motora.
Os vírus informáticos começaram a aparecer nos anos 80 e se proliferaram com o aumento do uso de computadores. O primeiro vírus para PC surgiu em 1986 e atacava o disco rígido. Dados mostram que o número de vírus conhecidos aumentou de 15.000 em 1995 para mais de 630.000 em 2010.
O documento descreve a evolução dos computadores desde os primeiros instrumentos de cálculo na Mesopotâmia até as gerações atuais, mencionando o ENIAC, o desenvolvimento dos computadores pessoais e a classificação entre desktops, portáteis e mainframes.
- Redes de computadores interligam dispositivos para compartilhar informações através de meios de transmissão. A internet é uma rede global, enquanto intranets e extranets compartilham informações internas e externas de empresas. Redes possuem classificações baseadas em sua dispersão geográfica e topologia.
O documento descreve a história do Windows, começando como uma interface gráfica rodando sobre o DOS em 1985. O Windows tornou-se popular a partir da versão 3.0 de 1990 e a versão 3.1 de 1992 vendeu mais de 3 milhões de cópias. O Windows 95 tornou-se um dos sistemas operacionais mais populares devido à sua facilidade de uso. O Windows NT foi desenvolvido para ambientes corporativos e lançado em 1993.
O documento discute os principais componentes e funções de sistemas operacionais, incluindo a estrutura de um sistema operacional, o controle de ações através de sistemas de arquivos, tipos de arquivos, armazenamento em nuvem e noções básicas sobre redes como tipos de redes, equipamentos e protocolos de rede.
O documento descreve os principais componentes e características de sistemas operacionais, incluindo o papel do núcleo, as interfaces gráficas e de linha de comando, exemplos de sistemas operacionais atuais e descontinuados, e as diferenças entre sistemas operacionais monotarefa e multitarefa.
O Kernel é um componente essencial do sistema operacional que faz a interação entre o hardware e o software, gerenciando os recursos do sistema e permitindo que os programas os utilizem. Ele começa a funcionar quando o computador é ligado, detectando o hardware e carregando o sistema operacional, para depois administrar funções como memória, processos e arquivos.
Computação em nuvem (cloud computing), uma introdução.Rodrigo Miranda
O documento fornece uma introdução à computação em nuvem (Cloud Computing), definindo-a como o uso de aplicações e armazenamento de dados na internet ao invés de dispositivos locais. A computação em nuvem oferece benefícios como disponibilidade, escalabilidade e redução de custos, mas também apresenta desafios como credibilidade e definição de termos de uso.
O documento descreve os principais componentes de um computador pessoal, incluindo a caixa, fonte de alimentação, motherboard, memória, CPU, discos rígidos, placas de expansão, placa gráfica, portas de entrada e saída e cabos. Detalha cada um destes componentes, explicando sua função, tipos e evolução.
PDS é a parte da engenharia de software que se encarrega de fazer todo o planejamento anterior ao desenvolvimento, incluindo a definição da arquitetura do software, e transformar tudo em um documento ou conjunto de documentos capazes de serem interpretados diretamente pelo programador.
FEI - Modelagem de negocios - 2° semestre 2010nathan85
O documento discute modelos de negócios, metodologias para desenvolvimento de sistemas, SGBD e CMM. Apresenta os conceitos de modelo de negócios, suas vantagens e tipos como varejista e B2B. Aborda metodologias para desenvolvimento de sistemas, SGBD, conceitos como chave primária e estrangeira. Explica o CMM, seus níveis de maturidade e KPAs. Por fim, discute SOA e a evolução dos modelos de negócios na economia digital.
Aula 01 - Introdução ao curso - Projeto de Redes de ComputadoresDalton Martins
Este documento apresenta o curso de Projeto de Redes de Computadores da Fatec São Paulo. O curso tem como objetivos ensinar os alunos a desenvolver projetos de redes abordando aspectos técnicos e de gestão. O material de apoio inclui um livro didático e um simulador de redes. A avaliação dos alunos será feita por meio de duas provas, um projeto de rede e um artigo sobre tendências atuais.
O documento discute o conceito de computação em nuvem, sua história e como surgiu na década de 1960. Também aborda os principais tipos de computação em nuvem, serviços oferecidos, características, vantagens, desvantagens e gerenciamento na nuvem. Por fim, apresenta os principais serviços de armazenamento em nuvem e breve discussão sobre a adoção no Brasil.
O documento fornece uma introdução básica sobre informática, definindo informática como a ciência que trata do processamento de informações por meio de computadores. Explica que um computador é uma máquina capaz de processar dados de acordo com instruções para produzir transformações nesses dados. Lista os principais elementos de um computador e define hardware e software.
O documento fornece instruções sobre como usar o Microsoft Word, incluindo como abrir e salvar arquivos, formatar texto, inserir imagens e formas, e imprimir documentos. Explica como alterar o tipo e tamanho da fonte, formatar texto em negrito, itálico ou sublinhado, e alinhar parágrafos. Também mostra como inserir fotos, clipart, caixas de texto e WordArt, e como usar as ferramentas de edição associadas a esses itens.
O documento discute firewalls e o programa iptables no Linux, fornecendo conceitos, tipos de firewall, limitações, portas comuns, e como o iptables funciona com tabelas, cadeias, regras e rastreamento de conexões.
O documento discute a importância crescente da cibersegurança, destacando estatísticas sobre o uso da Internet, ameaças cibernéticas e ataques de Estados-nação. Também enfatiza que cada usuário deve assumir responsabilidade pela própria segurança online.
Proteção e segurança de sistemas operacionaiscleber_opo
O documento discute conceitos de proteção e segurança em sistemas operacionais, incluindo objetivos de proteção, domínios de proteção, revogação de direitos de acesso, sistemas baseados em competência, proteção baseada em linguagens, problemas de segurança, ameaças e programas maliciosos, detecção de invasões e criptografia.
1. A aula introduz o PHP, abordando sua história, características e estrutura básica.
2. Variáveis, constantes, tipos de dados e operadores são explicados. Exemplos ilustram o uso de variáveis, operações matemáticas e lógicas.
3. O documento fornece os conceitos fundamentais da linguagem PHP para iniciantes.
O documento resume os principais tipos e características dos músculos do corpo humano, incluindo sua divisão em músculos estriados esqueléticos, cardíacos e lisos viscerais. Detalha aspectos como origem, inserção, ação, forma, número de cabeças e componentes anatômicos dos músculos, além de explicar a coordenação muscular e fornecer exemplos de músculos específicos.
O documento descreve a fisiologia muscular, abordando as funções do sistema muscular, propriedades do músculo, tipos de tecido muscular, estrutura do músculo esquelético e processo de contração muscular. Explica também o papel do fuso neuromuscular e do reflexo miotático na regulação da atividade motora.
Os vírus informáticos começaram a aparecer nos anos 80 e se proliferaram com o aumento do uso de computadores. O primeiro vírus para PC surgiu em 1986 e atacava o disco rígido. Dados mostram que o número de vírus conhecidos aumentou de 15.000 em 1995 para mais de 630.000 em 2010.
O documento descreve a evolução dos computadores desde os primeiros instrumentos de cálculo na Mesopotâmia até as gerações atuais, mencionando o ENIAC, o desenvolvimento dos computadores pessoais e a classificação entre desktops, portáteis e mainframes.
- Redes de computadores interligam dispositivos para compartilhar informações através de meios de transmissão. A internet é uma rede global, enquanto intranets e extranets compartilham informações internas e externas de empresas. Redes possuem classificações baseadas em sua dispersão geográfica e topologia.
O documento descreve a história do Windows, começando como uma interface gráfica rodando sobre o DOS em 1985. O Windows tornou-se popular a partir da versão 3.0 de 1990 e a versão 3.1 de 1992 vendeu mais de 3 milhões de cópias. O Windows 95 tornou-se um dos sistemas operacionais mais populares devido à sua facilidade de uso. O Windows NT foi desenvolvido para ambientes corporativos e lançado em 1993.
O documento discute os principais componentes e funções de sistemas operacionais, incluindo a estrutura de um sistema operacional, o controle de ações através de sistemas de arquivos, tipos de arquivos, armazenamento em nuvem e noções básicas sobre redes como tipos de redes, equipamentos e protocolos de rede.
O documento descreve os principais componentes e características de sistemas operacionais, incluindo o papel do núcleo, as interfaces gráficas e de linha de comando, exemplos de sistemas operacionais atuais e descontinuados, e as diferenças entre sistemas operacionais monotarefa e multitarefa.
O Kernel é um componente essencial do sistema operacional que faz a interação entre o hardware e o software, gerenciando os recursos do sistema e permitindo que os programas os utilizem. Ele começa a funcionar quando o computador é ligado, detectando o hardware e carregando o sistema operacional, para depois administrar funções como memória, processos e arquivos.
Computação em nuvem (cloud computing), uma introdução.Rodrigo Miranda
O documento fornece uma introdução à computação em nuvem (Cloud Computing), definindo-a como o uso de aplicações e armazenamento de dados na internet ao invés de dispositivos locais. A computação em nuvem oferece benefícios como disponibilidade, escalabilidade e redução de custos, mas também apresenta desafios como credibilidade e definição de termos de uso.
O documento descreve os principais componentes de um computador pessoal, incluindo a caixa, fonte de alimentação, motherboard, memória, CPU, discos rígidos, placas de expansão, placa gráfica, portas de entrada e saída e cabos. Detalha cada um destes componentes, explicando sua função, tipos e evolução.
PDS é a parte da engenharia de software que se encarrega de fazer todo o planejamento anterior ao desenvolvimento, incluindo a definição da arquitetura do software, e transformar tudo em um documento ou conjunto de documentos capazes de serem interpretados diretamente pelo programador.
FEI - Modelagem de negocios - 2° semestre 2010nathan85
O documento discute modelos de negócios, metodologias para desenvolvimento de sistemas, SGBD e CMM. Apresenta os conceitos de modelo de negócios, suas vantagens e tipos como varejista e B2B. Aborda metodologias para desenvolvimento de sistemas, SGBD, conceitos como chave primária e estrangeira. Explica o CMM, seus níveis de maturidade e KPAs. Por fim, discute SOA e a evolução dos modelos de negócios na economia digital.
O documento fornece informações sobre a disciplina de Engenharia de Software ministrada pelo professor Ernesto Bedrikow, incluindo sua formação acadêmica, experiência profissional, ementa, conteúdo programático e dinâmica das aulas.
1) O documento apresenta as qualificações e experiência de Luiz Barboza na área de qualidade de software e serviços.
2) A ementa da disciplina aborda conceitos de qualidade de produto e processo de software, modelos de qualidade e aspectos da qualidade na prestação de serviços.
3) Os objetivos são introduzir conceitos de qualidade de software e serviços para a comercialização de sistemas de informação.
Apresentação sobre qualidade de software na disciplina de Engenharia de Software no Mestrado Acadêmico em Ciência da Computação em parceria com Bruno Neves.
Microserviços - Desafios para lidar com a qualidadeAndré Abe Vicente
1. O documento discute os desafios para lidar com qualidade em microserviços, incluindo testes em microserviços, entrega contínua e testes em produção, e monitoramento, logs e depuração.
2. É importante realizar testes de contrato, mock services, testes exploratórios e testes A/B para garantir a qualidade em ambientes de microserviços.
3. Ferramentas como feature toggles, monitoramento de métricas e logs distribuídos são essenciais para testes em produção e depura
O documento discute os conceitos e técnicas de gerenciamento da qualidade no desenvolvimento de software. Apresenta definições de qualidade de produto e processo, e descreve as subcategorias do gerenciamento da qualidade: planejamento, garantia, controle e melhoria de processos. Detalha técnicas como auditoria, revisão, walkthrough e inspeção para avaliação da qualidade.
O documento discute os aspectos da manutenção de software, incluindo as classificações de manutenção (corretiva, adaptativa, perfectiva e preventiva), fatores que afetam a manutenção (gerência, infraestrutura, humanos e software) e como melhorar a manutenção (processos, pessoas e tecnologia).
O documento discute métricas e medidas para gerenciamento de projetos de software. Ele aborda tópicos como o processo de gerência de projetos, estimativas, análise de riscos, determinação de prazos, monitoramento e controle e vários tipos de métricas como métricas de processo, produto e qualidade.
O documento discute a análise de requisitos de software, incluindo: (1) a importância da elicitação correta de requisitos, (2) as definições de requisitos e os stakeholders envolvidos, (3) os desafios da elicitação de requisitos e as técnicas recomendadas para superá-los.
Jorge Ramos é um gerente de projetos e consultor técnico com mais de 30 anos de experiência em sistemas de informação. Seu currículo resume suas qualificações técnicas, experiência profissional em diversos projetos e conhecimento em várias tecnologias.
Engenharia Reversa e Reengenharia Softwareelliando dias
O documento discute engenharia reversa e reengenharia de software. A manutenção de software é difícil devido a códigos e documentação mal elaborados e falta de compreensão dos sistemas. A reengenharia visa reconstruir sistemas preservando funções existentes e adicionando novas funções para facilitar manutenção. Isso envolve engenharia reversa para entendimento do sistema e reengenharia progressiva para reconstruí-lo.
O documento introduz os conceitos de engenharia de software, definindo-a como uma disciplina dedicada ao desenvolvimento sistemático de software. Apresenta as características, formas e mitos relacionados ao software, além de traçar um breve histórico da evolução do software. Também define os objetivos da engenharia de software e a diferença entre esta disciplina e a engenharia de sistemas, apresentando princípios, processos, modelagem e diagramas relacionados ao desenvolvimento de software.
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
O documento discute a evolução da preocupação com a qualidade de software ao longo dos anos, desde as décadas de 1950 a 2000. Nos anos iniciais, os erros eram conhecidos apenas após o término do programa. Nos anos 1970 surgiram análise estruturada e teste antes do término. Nos anos 1980 houve primeiras preocupações com padrões de qualidade. Nos anos 1990 surgiram primeiros processos de teste motivados pelo bug do milênio. Nos anos 2000, testes foram estruturados dentro do processo de desenvolvimento e surgiram ferramentas de
Este documento resume uma apresentação sobre skills de desenvolvedores em ambientes low code. A apresentação discute: 1) Como equipes de desenvolvimento usaram plataformas low code para soluções de clientes; 2) Skills relevantes como modelagem de dados e modularização ainda são importantes; 3) Desenvolvedores com skills técnicas têm vantagem em ambientes enterprise low code.
O documento discute a qualidade de software, definindo-a como a conformidade aos requisitos dos clientes. Apresenta diferentes visões de qualidade de software e discute padrões e normas importantes como ISO 9126 para garantir a qualidade. Também descreve exemplos históricos de bugs caros que ocorreram por falta de qualidade.
Práticas de Desenvolvimento de SoftwareTiago Barros
O curso aborda os seguintes tópicos:
1) Construção de software, incluindo o que é construção de software e como ela se encaixa no processo de desenvolvimento;
2) Paradigmas de programação e como eles afetam a construção de software;
3) Arquiteturas de software e padrões de projeto.
Modelos e etapas do processo de software.pdfIvanFontainha
O documento discute os fundamentos da engenharia de software, incluindo modelos de processo de software, requisitos funcionais e não funcionais, regras de negócio, projeto de software e validação de requisitos. Apresenta também exercícios para identificar requisitos e regras de negócio para um sistema.
O documento apresenta informações sobre a especificação preliminar de um projeto de engenharia de software, incluindo a necessidade de equipes de 4 a 6 pessoas com papéis definidos, liberdade na escolha do tema do projeto e uso de ferramentas como ArgoUML e modelos para produção de artefatos. Também contém uma lista de exercícios sobre processos de desenvolvimento de software, casos de uso, requisitos e o RUP.
Similar to Palestra TaSafo Conf-2015: Refatoração com Métricas (20)
2. Sobre o palestrante : Cláudio Martins
Sou Mestre em Computação pela Universidade Federal do
Rio Grande do Sul (UFRGS/2003), graduado em Tecnologia
de PD (UFPA/1989), especialista em Análise e Projeto de
Sistemas (UFPA/1998).Sistemas (UFPA/1998).
Professor do Instituto Federal do Pará (IFPA), e analista de
sistemas da Companhia de Informática de Belém (Cinbesa).
Trabalho há mais de vinte anos com engenharia de software
e sistemas de informação.
2Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Lattes: http://lattes.cnpq.br/7014997829591968
LinkedIn: http://br.linkedin.com/in/claudiomartins2010
Facebook: https://www.facebook.com/claudiomartins2000
Blog: http://claudiomartins-prof.blogspot.com.br/
3. • A palestra tem por objetivo apresentar as principais
métricas de código orientado a objetos como suporte
à tarefa de refatoração de código.
Agenda
à tarefa de refatoração de código.
• A palestra é dividida em três partes:
– Motivação
– Refatoração
– Métricas para Software Orientado a Objetos
3
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
5. O que é Software?
• Há pouco tempo, as pessoas não
conseguiam perceber a existência ou
importância do software.importância do software.
– Hardware/Equipamento e software se
confundiam em só um conceito.
• Hoje, o software está presente e
onipresente em vários meios e dispositivos.
Software (definição)
•Programas de computador (código, instruções), estruturas de
dados e...
•A documentação necessária para instalar, usar e tornar os
programas compreensíveis para quem os mantêm.
5
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
6. Custo do Software
• Ao longo do ciclo de vida, os custos em Desenvolvimento
e Manutenção do Software:
▫ Desenvolvimento ................ 30 a 40 %▫ Desenvolvimento ................ 30 a 40 %
▫ Manutenção ........................ 60 a 70 %
6
Custos relativos ao Desenvolvimento
do Software e Manutenção.
Custos relativos a TIC, Desenvolvimento de
Software e Manutenção de Software
8. Ciclo de vida do hardware/equipamentos
físicos
8
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
9. Ciclo de vida do Software
9
Diz respeito a uma das 8 Leis de Lehman:
Complexidade crescente - Se não forem tomadas medidas para reduzir
ou manter a complexidade de um software, conforme ele é alterado sua
complexidade irá aumentar progressivamente.
Deve haver um esforço para reduzir a complexidade final de um sistema
enquanto este recebe alterações.Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
11. • É o processo de alterar a codificação do software sem alterar sua
funcionalidade.
– Ex: definição e nomes de dados e código do programa, melhorias e
simplificações em instruções.
Reestruturação de Código
simplificações em instruções.
• O propósito principal é tornar o programa mais fácil de ser
compreendido.
Fundamentos da Reengenharia
11
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
13. Refatoração
• Refatoração (do inglês, Refactoring) é o processo de
modificar um software para melhorar sua estrutura
interna (do código) sem alterar seu comportamentointerna (do código) sem alterar seu comportamento
externo.
– Martin Fowler et al. (1999).
• Refatoração busca tornar o software mais fácil de
entender e mais barato de se modificar (evoluir).
• O uso desta técnica evita a deterioração tão comum• O uso desta técnica evita a deterioração tão comum
durante o ciclo de vida de um código.
• Não se trata de otimização.
– Refatorar ~ Refabricar ~ Reestruturar
– É uma prática “ágil”!
13
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
14. Refatoração (Refactoring) de Software
•A refatoração visa auxiliar o processo de desenvolvimento
(programação) e evolução (manutenção) do software a partir de
mecanismos de reestruturação de código (orientado a objetos).
14
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
15. “Mau cheiro” (Bad Smell)
Problemas de qualidade de código
15
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
16. Exemplo prático de Refatoração
•Considere a classe ‘C’, responsável por implementar
funcionalidades em uma conta bancária:
public class C {
public double s;
public void sacar(double valor){
this.s = s – valor;
}
public static void main(String args[]){
C c = new C();C c = new C();
c.s = 100;
c.sacar(50);
System.out.println(“Saldo:”+c.s);
}
}
16
17. Exemplo prático de Refatoração:
Renomear Classe
Solução:
Trocar o nome da classe
public class Conta {
public double s;
public void sacar(double valor){
this.s = s – valor;
}
public static void main(String args[]){
Conta c = new Conta();Conta c = new Conta();
c.s = 100;
c.sacar(50);
System.out.println(“Saldo:”+c.s);
}
}
17
18. Exemplos comuns de Refatoração
•Mudança do nome de variáveis•Mudança do nome de variáveis
•Mudanças nas interfaces dos objetos
•Pequenas mudanças arquiteturais
•Decompor grandes métodos em métodos menores
•Encapsular código repetido em um novo método
•Generalização de métodos. Ex:•Generalização de métodos. Ex:
raizQuadrada(float x)⇒ raiz (float x, int n)
18
19. Catálogo de Refatorações
•Existem algumas propostas de catálogos.
Ex:
▫Kerievsky's (2004)
▫Sven Gort e Philippe T’Seyen, Refactoring Thumbnails,
▫Alur et. al.,no livro “Core J2EE Patterns, 2001 (obs: p/
arquitetura JEE)
•Talvez o mais conhecido dos catálogos
seja o proposto por Fowler [2000]
19
http://www.martinfowler.com/
20. O que é Métrica?
Métrica é a medição de
um atributo
20
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
um atributo
(propriedades ou
características ) de uma
determinada entidade
(produto, processo ou
recursos).
21. • A abordagem tradicional para refatorar código é a leitura
do código em busca dos ‘maus cheiros’ (bad smell).
– Essa é uma abordagem que pode ser subjetiva e dependente de
Motivação: “Code Smell” e Refatoração
– Essa é uma abordagem que pode ser subjetiva e dependente de
um especialista (principalmente em grandes sistemas!).
– Para grandes sistemas é inviável.
21http://martinfowler.com/bliki/CodeSmell.html
22. • Abordagem baseada em Métricas de Software.
• As métricas de software podem medir inúmeras
características do software
Como podemos refatorar de forma objetiva?
características do software
– da qualidade do produto
– do processo de desenvolvimento do software.
• Em refatoração, o foco estará nas métricas de software
voltadas ao produto de software no que se refere ao
código.código.
22
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
23. • As métricas que interessam à refatoração estão
relacionadas aos atributos de software :
– Tamanho
Métricas de Software
– Tamanho
– Complexidade
– Acoplamento
– Coesão
• Em algum sentido, medir o grau de “Abstração” do software
• No caso da refatoração, esses atributos estarão• No caso da refatoração, esses atributos estarão
relacionados as seguintes elementos do código OO:
pacotes, classes e métodos.
23
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
24. Há várias métricas que medem a qualidade interna.
Ex:
– Total de linhas de código (Lines of Code – LOC)
Métricas de software ( qualidade interna / código)
– Total de linhas de código (Lines of Code – LOC)
– Número de classes (NC – Number of Classes)
– Falta de coesão em métodos (LCOM)
– Depth of Inheritance Tree (DIT)
– Number of Overridden Methods (NORM)
– Number of Methods (NOM)
– Number of FieldsNumber of Fields
– Specialization Index
– McCabe Cyclomatic Complexity
– Weighted Methods per Class (WMC)
– Etc.
24
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
25. • LOC é a mais antiga e a mais simples das métricas de software.
• LOC mede o tamanho (em linhas) das classes e métodos.
• Normalmente não contabiliza as linha em branco.
Linhas de Código (LOC – Lines of Code)
LOC = 77 linhas
25Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
LOCm = 5LOCm = 5 comentários
26. • Métricas de complexidade indicam o quanto é complexo
é um código (do método, classe, pacote), em relação às
estruturas internas de comandos e como são
organizados.
Métricas de complexidade
organizados.
• Ex:
– Métricas simples para medir complexidade:
• Número de atributos (NF – Number of Fields)
• Número de métodos (NOM – Number of Methods)
• Número de Parâmetros (NP – Number of Parameters)
– Métricas mais usadas para complexidade:
• Profundidade de Blocos Aninhados (NBD – Nested Block Depth)
• Complexidade Ciclomática de McCabe (CC ou VG)
• Métodos Ponderados por Classe (WMC – Weighted Methods per Class)
26
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
27. Métricas simples relacionadas à complexidade
NF = 5 campos
NP = 6 Parameters
27
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
NOM =7 métodos
28. • NBD representa o número máximo de blocos de código aninhados
(Nested Block Depth) em um determinado método.
– A métrica NBD mede a complexidade do método.
Profundidade de Blocos Aninhados
(NBD – Nested Block Depth)
28
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
29. Complexidade Ciclomática (CC ou VG) de McCabe
Mede complexidade de código do método.
Normalmente, VG < 5 => complexidade menor
É calculada contando o número de laços e
condicionais existentes, somando-se 1 no final.
29
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
30. • WMC mede a complexidade individual de uma classe.
– A complexidade de uma classe é reflete o número de seus
métodos e suas complexidades.
Métodos Ponderados por Classe
(WMC – Weighted Methods per Class)
métodos e suas complexidades.
• WMC é geralmente calculado como a somatório das
complexidades dos métodos da classe.
– A métrica de complexidade dos métodos geralmente é medida
pela Complexidade Ciclomática (McCabe).
30
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
31. Métricas de Acoplamento
Medem o acoplamento entre classes ou subsistemas, isto é, medem a ligação
ou dependência entre essas classes ou subsistemas (pacotes).
31
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Recomendação:
Classes com responsabilidades claras e um baixo acoplamento
32. • Acoplamento Eferente (EC- Efferent Coupling ou EC):
– número total de classes dentro de um pacote que dependem
de classes externas ao pacote.
Métricas de Acoplamento
de classes externas ao pacote.
• Acoplamento Aferente (AC - Afferent Coupling)
– número total de classes externas de um pacote que
dependem de classes de dentro desse pacote
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
32
33. Acoplamento Eferente (Ce – Efferent Coupling)
33
O acoplamento eferente do pacote = 2
- há duas classes dentro do pacote que dependem de classes fora do
pacote.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
34. Acoplamento Aferente (Ca – Afferent Coupling)
34
O acoplamento aferente do pacote é cinco,
pois existem 5 classes fora do pacote que dependem de classes dentro do pacote.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
35. Ex: CBO (Coupling Between Object Classes)
CBO mede o total de mensagens trocadas entre os objetos das
classes analisadas em um pacote/sistema.
Ex: CBO do pacote = 8, há 8 relacionamentos entre classes do pacote
e classes externas ao pacote.e classes externas ao pacote.
35
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
36. • Profundidade da Árvore de Herança
(DIT – Depth of Inheritance Tree)
• Número de Filhos (NoC – Number of Children)
Métricas de Herança
• Número de Filhos (NoC – Number of Children)
• Número de Métodos Redefinidos
(NORM –Number of Overridden Methods)
• Índice de Especialização (SI – Specialization Index)
36
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
37. • Essa métrica admite valores entre zero e um.
• Uma medida de abstração (A) próxima de zero (0) :
– indica que as entidades analisadas são bastante concretas e
Abstração (A – Abstractness)
– indica que as entidades analisadas são bastante concretas e
que o mecanismo de abstração foi pouco utilizado, o que
reduzirá a probabilidade de reúso da entidade.
• Quando a métrica se aproxima de um (1):
– O software é bastante abstrato o que evidencia a existência
de classes abstratas e interfaces (com poucasde classes abstratas e interfaces (com poucas
funcionalidades implementadas).
– Normalmente “frameworks” possuem A próximo de 1.
37
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
38. • A métrica Instabilidade (I) avalia entidades (pacotes,
p.ex) quanto a sua dependência perante outras
entidades, servindo de avaliação quanto ao impacto de
Instabilidade (I – Instability)
entidades, servindo de avaliação quanto ao impacto de
mudanças na entidade a ser medida.
• A métrica Instabilidade admite valores entre zero e um.
• A instabilidade é o resultado da divisão do acoplamento
eferente de um pacote pelo total de acoplamentos
(aferentes e eferentes) dele.(aferentes e eferentes) dele.
– De uma maneira bem simples, um pacote é instável se ele
depende de muitos outros pacotes. Dessa forma, pacotes
projetados para serem reusáveis devem ter baixa
instabilidade.
38
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
39. • A Distância (Distance from the Main Sequence - D)
relaciona a Abstração (A) e a Instabilidade (I), calculado
pela distância do ponto traçado entre A e I e a linha
Distância (Distance from the Main Sequence – D
ou Dn)
pela distância do ponto traçado entre A e I e a linha
(seqüência) principal (ideal) do balanceamento entre A e I.
• A Distância Normalizada da Sequência Principal
(Dn) varia entre 0 e 1
• Dn deve ser melhor para valores baixo, demonstrando um
balancemento entre a instabilidade e abstração.balancemento entre a instabilidade e abstração.
39
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
40. Gráfico de Abstração vs. Instabilidade (para Dn)
Dn deve se manter próxima à
linha da sequência principal
11
Abstração
Dn
40
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
1Instabilidade
0
41. • Há muitas ferramentas disponíveis no mercado, tanto
comerciais quanto open-source, para coleta de
métricas de código (análise estática de código):
Ferramentas de medição
métricas de código (análise estática de código):
• Ex (software livre):
– FindBugs (http://findbugs.sourceforge.net/)
– PMD (http://pmd.sourceforge.net)
– Checkstyle (http://checkstyle.sourceforge.net/index.html)
– JDepend (http://clarkware.com/software/JDepend.html)– JDepend (http://clarkware.com/software/JDepend.html)
– Eclipse Metrics
– Simple Code Metrics (NetBeans)
41
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
42. • O sistema “Locadora de Vídeo”, usado no livro de Martin
Fowler, apresenta dificuldades na manutenção e evolução
para novos requisitos (gerar conta no formato HTML, p.ex).
Exemplo de Refatoraçao com Métricas:
Código da “Locadora de Vídeo”
para novos requisitos (gerar conta no formato HTML, p.ex).
• Desafio/Meta: Desenvolva um projeto de refatoração
prevendo melhorias no código quanto à redução da
complexidade e melhorias das abstrações presentes do
sistema.
FilmeLocaçãoCliente
42
códigoPreço: int
Filme
diasAlugados: int
LocaçãoCliente
conta()
1
**1
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
43. Métricas obtidas para o sistema original
43
Método “conta()” com
VG= 8 (Complexidade
Ciclomátitica) alta
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
44. Resultados após refatorações no projeto
44
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
45. Análise e interpretação das métricas de pacote
Relacionadas ao pacote
•O sistema “Locadora de Vídeo” após as refatorações (Extração de
métodos, Método Fábrica, Polimorfismo, etc) apresenta melhoras
nas métricas:
•A (Abstração) e D (Distância da sequência principal) ,
refletindo os efeitos da criação de classes abstratas
45
refletindo os efeitos da criação de classes abstratas
(ClassificaçãoPreço) e interface (Alugável).
•O resultado da refatoração, como é de se esperar, fez aumentar a
métrica NCP (Número de classes) e LOC (linhas de código), porém
para um benefício a favor do reuso, manuteção e legibilidade da
aplicação.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
46. Análise e interpretação das métricas de classes
46
Melhorias na coesão (LCC- Loose
Class Cohesion) e acoplamento
(LCOM e TCC) das classes.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
47. Análise e interpretação das métricas de métodos
47
Melhoria na complexidade (VG) doMelhoria na complexidade (VG) do
método “conta”, cuja
responsabilidades foram movidas
para outros métodos de outras
classes (LOC diminui no método).
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
48. • Quando se avalia a qualidade do produto de software,
um dos atributos a ser considerado é a facilidade de
manutenção/evolução do software.
Considerações Finais
manutenção/evolução do software.
• Refatoração é uma das estratégia a ser adotada para
tratar e melhorar o projeto e a evolução do software.
• Para grandes sistemas de software, a refatoração
torna-se um desafio.
– Para isso, é importante adotar métricas e ferramentas que
ajudem o processo de refatoração.ajudem o processo de refatoração.
• Assim, garantindo a qualidade do projeto do software,
garante-se a viabilidade econômica e uso desse
software por um tempo maior no ciclo de vida.
48
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
50. • Chidamber, S. R. & Kemerer, C. F. (1994). A Metrics Suite for
Object Oriented Design (IEEE Transactions on Software
Engineering, Vol. 20, No. 6).
Em: http://www.pitt.edu/~ckemerer/CK%20research%20papers/
Referências
Em: http://www.pitt.edu/~ckemerer/CK%20research%20papers/
MetricForOOD_ChidamberKemerer94.pdf
• FOWLER, Martin. Refactoring. Disponível em
<http://www.refactoring.com>.
• McCabe, T. J. 1976. A complexity measure. IEEE Trans. Software
Eng. 2, 4, 308–320.
• PRESSMANN, Roger S. (1995). Engenharia de Software. 3. ed.• PRESSMANN, Roger S. (1995). Engenharia de Software. 3. ed.
São Paulo: Makron Books.
• SOMMERVILLE, Ian (2003). Engenharia de Software. São Paulo:
Addison Wesley.
50
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins