Pro Yearly is on sale from $80 to $50! »

Toward a Definition of Cognitive-Driven Development

Toward a Definition of Cognitive-Driven Development

Apresentação do nosso primeiro artigo científico, uma visão preliminar de uma das pesquisas que temos conduzido na Zup Innovation | Zup EDU sobre o Cognitive-Driven Development - uma teoria para design de código para mitigar a complexidade do software. A pesquisa foi apresentada na 36th IEEE International Conference on Software Maintenance and Evolution (ICSME).

Link do evento: https://icsme2020.github.io/
Artigo: https://github.com/victorpintozup/papers/blob/master/Toward%20a%20Definition%20of%20Cognitive-Driven%0DDevelopment.pdf
Apresentação no canal do YouTube: https://www.youtube.com/watch?v=FT6-n7dfBy4&t=1s

72c31874ee9608481b508b62e35a2136?s=128

Victor Hugo Santiago

October 01, 2020
Tweet

Transcript

  1. Toward a Definition of Cognitive-Driven Development ICSME 2020 - Late

    Breaking Ideas Track Alberto Luiz Oliveira Tavares de Souza and Victor Hugo Santiago Costa Pinto Zup Innovation - Academy São Paulo, SP. Brazil
  2. Content • Context & Problem • Motivation • Cognitive-Driven Development

    (CDD) • Guidelines • Discussions • Future perspectives
  3. Context & Problem • The software complexity increases as new

    features are incorporated • Developers are waylaid by unpredicted complexities in building software • We often lose sight of the business problems being solved and forget of managing complexity • Result: the developers are frequently affected by cognitive overload 3
  4. Motivation • There is a lack of empirical studies exploring

    how the source code could be developed under the human cognition perspective • Continuous expansion of the software complexity and threats to its understanding level • How to develop high-quality applications if we cannot deal efficiently with their complexity? 4
  5. What needs to change? 5

  6. Our suggestion: To keep focused on Simplicity and define a

    feasible limit for the software complexity based on Human Cognition 6
  7. Cognitive-Driven Development (CDD) Cognitive Load Theory (Sweller, 1988; Sweller, 2010)

    and Cognitive complexity measurement • Recognition of a human limitation ◦ A high number of items in our short-term memory may contribute to an excessive cognitive load • There is an intrinsic complexity for materials ◦ Number of elements that must be simultaneously processed in the working memory ◦ Only 7 + or - 2 units of information in short-term memory (Miller, 1956) J. Sweller. Cognitive load during problem solving: Effects on learning.Cognitive science, 12(2):257–285, 1988. J. Sweller. Cognitive load theory: Recent theoretical advances. 2010. G. A. Miller. The magical number seven, plus or minus two: Some limits on our capacity for processing information. Psychological review,63(2):81, 1956 7
  8. Cognitive-Driven Development (CDD) Cognitive complexity in object-oriented applications (Shao and

    Wang, 2003; Misra et al., 2018) ◦ Basic Control Structures (BCS) and Weights Initial proposal to measure Intrinsic Complexity Points (ICP) [not limited] J. Shao and Y. Wang. A new measure of software complexity based on cognitive weights.Canadian Journal of Electrical and Computer Engineering, 28(2):69–74, 2003. S. Misra, A. Adewumi, L. Fernandez-Sanz, and R. Damasevicius. A suite of object oriented cognitive complexity metrics.IEEE Access,6:8782–8796, 2018. 8
  9. Key characteristics: • It is focused on Simplicity and complementary

    to other strategies • CDD is not restricted by specific metrics (LOC, Cyclomatic complexity, … can be used) • Development needs to keep a limit for intrinsic complexity points in the implementation units • CDD can be adapted considering the projects’ nature and team members' experience level • CDD can guide the software development reducing the cognitive overload for developers Cognitive-Driven Development (CDD) 9
  10. Contextual coupling A function as an argument if statement Illustrative

    example: Total of Intrinsic Complexity Points 10
  11. Future perspectives: • Developing a plugin for IntelliJ IDEA to

    estimate the ICPs during programming • Performing a study to assess the CDD effects for different software quality metrics, as a reduction of the number of faults Cognitive-Driven Development (CDD) 11
  12. Thank you! Contact: {victor.pinto, alberto.tavares}@zup.com.br