Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de...

24
Qualidade Contínua de Software Alessandro Garcia [email protected] Departamento de Informática

Transcript of Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de...

Page 1: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Qualidade Contínua de Software

Alessandro Garcia

[email protected]

Departamento deInformática

Page 2: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Object-OrientedSoftware Engineering

Plethora of (SE) Software Engineering Paradigmspromoting “quality by construction”

• syndrome of *-based software engineering approaches

– underpinning principles

• simple design

• low coupling and high cohesion

• separation of concerns

• narrow interfaces

• ….

– abstractions and decomposition mechanisms

• classes, objects, inheritance, delegation, …

– new methods, techniques, mechanisms

Component-BasedSoftware Engineering

Product LineEngineering

Aspect-Oriented

Software Development

Architecture-CentricSoftware Development

Pattern-Based

Software Engineering

Are theyenough?

Page 3: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

However ...

Memory manager component - Linux

3

... Spite of developers applying those principles and approaches by construction

Taylor, R. et al. Software Architecture: Foundations, Theory and Practice. Wiley Publishing. 2009

Nenad Medvidović. When, Where, and Why Do Software Systems Architectures Decay? March 2013.

Page 4: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Quality Degradation over Time

Actual architecture - iRODS

March 16 4

violations of theintended architecture

Taylor, R. et al. Software Architecture: Foundations, Theory and Practice. Wiley Publishing. 2009

Nenad Medvidović. When, Where, and Why Do Software Systems Architectures Decay? March 2013.

Page 5: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Quality Degradation over Time

• Hadoop

5

Page 6: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Quality Degradation over Time

Actual architecture - Hadoop

March 16 6Nenad Medvidović. When, Where, and Why Do Software Systems Architectures Decay? March 2013.

Page 7: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Intended architecture of a software system

March 16 7

• … defines how developers actually communicate and

work on the system’s “building blocks”

Page 8: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Actual architecture of the same…

March 16 8

… software system

Page 9: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Architectural Erosion

March 16 9

Actual architecture in the program

Intended

architecture

Page 10: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Architectural Erosion

March 16 10

Actual architecture in the program

Intended

architecture

Page 11: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Architectural Drift

March 16 11

Intended

architecture

No dependencyviolation!

Unused interface

Scattered parasitic functionality

Ambiguous interface

Connector envy

Bloated interface

Concernoverload

Page 12: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Retrospective Techniques in SE

• Help to undestand when, how and why certain quality problems were introduced

– architecture recovery techniques

– bug localization techniques

– system’s reviews

• However, then reparining the problems afterwards might be too late...

Page 13: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Continuous Code Quality

March 16 13

Did I violate any design rule?

How is the modularity ‘health’

of my code?

Will I introduce

merge conflicts?

Did I introduce security vulnerabilities?

How should I

refactor my code?

How to implement this ‘catch’ block?

Is my list of assertions

ok?

Page 14: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Continuous Code Quality

• support: warn and provide feedback to developers when editing the code

14

Before After

OngoingContinuously

Inbetween

Programmer

editing code

specifying

designing

compiling

committing

maintaining

evolving

Page 15: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Examples of emerging SE techniques

• Continuous Maintainability

• Continuous Robustness

• Continuous Security

15

Page 16: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Ementa e Formato da Disciplina

• Série de seminários/aulas

• Parte 1: Técnicas para qualidade de software por construção/retrospecção

– Arquitetura de software

• Recuperação de arquitetura

– Linhas de produto de software

– Desenvolvimento orientado a aspectos

– Localização de bugs

– Etc...16

Page 17: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Ementa e Formato da Disciplina

• Parte 2: Taxonomia para problemas de

qualidade de software

– Anomalias de modularidade

– Anomalias de robustez

– Vulnerabilidades de segurança

– Outros problemas de qualidade

• Estudos de caso: por que e como estes

problemas ocorrem em projetos de software?

• Limitações de técnicas prospectivas e

retrospectivas de análise de qualidade de

software 17

Page 18: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Ementa e Formato da Disciplina

• Parte 3: Qualidade contínua em software

– Robustez contínua em software

– Modularidade contínua em software

– Segurança contínua em software

– Suporte a colaboração para qualidade

contínua em software

Apresentações dos alunos e aulas

18

Page 19: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Trabalho

• Apresentação

– Cada aluno escolhe uma técnica de

qualidade contínua para estudar e apresentar

• Apresentação de aprox. 50 minutos

– Monografia pode abordar qualquer um destes

temas:

• Revisão conceitual daquela área

• Revisão sistemática de trabalhos naquela área

• Comparação de técnicas naquela área

• Um estudo de caso de uma ferramenta

• Etc...

Page 20: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Assessment

• Participation – 10%

• Presentation – 45%

• Article – 45%

Page 21: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Monografia e Apresentação

• Critério:– Clareza e Objetividade– Originalidade– Uso de exemplos– Reflexão crítica– Se houver avaliação/comparação, espera-se que o

critério esteja bem definido– Largura e profundidade– Se envolver implementação:

• criatividade no projeto • uso elegante de principios e mecanismos de modularidade• qualidade da documentação do projeto

Page 22: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Atendimento

• Todos sempre muito bem-vindos para discutir proposta e refinamento do trabalho, apresentação e outras questões

• Via email: [email protected]

• Minha sala: RDC – 506, marcar horário com antecedência

Page 23: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Próximas duas aulas

• 15/3, 16:00, terça: sala 9º. Andar, Prédio Couve-

Flor

• 22/3, 16:00, terça: sala 9º. Andar, Prédio Couve-

Flor

Professores Convidados:

1) architecture-centric development,

Apache Ant (Prof. Marcio Barros)

2) product-line engineering (Prof. Jaejoon Lee)

Page 24: Qualidade Contínua de Software › ~inf2007 › docs › aulas › 1-Course... · qualidade de software – Anomalias de modularidade – Anomalias de robustez – Vulnerabilidades

Qualidade Contínua de Software

Alessandro Garcia

[email protected]

Departamento deInformática