<commit_before>
                  
   REQUIREMENTS   
                  



maintanability vs quality vs (UX+flexibility+manageability)
UX vs flexibility


(UX): usability (learnability), performance [take memory, increase complexity]
(flexibility): interactivity [less simplicity]
(quality): robustness [less flexible, more complex]: compatibility
(maintainability): extensibility
reusability
abstraction:
  - better maintainability for consumer, lower for producer
modularity
  - increase isolation -> better maintainability on each module
  - lower efficiency on the whole
  - too much granularity -> lower maintainability because must use several modules at once for each task|problem

refactoring
object oriented
concurring programming
parallellism
functional programming

SUMMARY ==>                       #Functional vs non-functional (execution vs evolution, product vs process)
                                  #Of non-functional requirements:
                                  #  - UX: usability (ease to use, learnability), a11y (i18n), design, performance
                                  #  - flexibility: featureful, interactivity, evolvability, configurability, adaptability, modifiability
                                  #  - quality:
                                  #     - stability: testability, security, compatibility, durability, availability, reliability
                                  #     - vulnerability: recoverability, risk, fault tolerance, correctability (debuggability)
                                  #     - monitoring: auditability, reporting
                                  #  - maintainability: operability, extensibility, scalability, portability, transferability
                                  #  - manageability: discoverability, deployability (integrability, interoperability), administrability (upgradability), supportability, interchangeability
                                  #  - social impact: privacy, sustainability, transparency
                                  #  - marketability: certification, cost, legality
                                  #Definition: INVEST (Independent, Negotiable, Valuable, Estimable, Small, Testable), "what to do" not "how to do", high-level first
                                  #Stages: 
                                  #  - inception 
                                  #  - formalization: user story, acceptance test, use case
                                  #  - proposals: 
                                  #     - prototype: sketch/wireframe/mockup/pretotype/prototype, horizontal/vertical, rapid/evolutionary
                                  #     - specification



																						 /=+===============================+=\ 
																						/  :                               :  \  
							 														  )==:             LIST              :==(   
																						\  :_______________________________:  /    
																						 \=+===============================+=/


TYPES ==>                         #Types:
                                  #  - functional (design): what software does
																	#     - implementation needs:
																	#        - quality: UX, robustness
																	#        - quantity|number: flexibility
																	#        - pertinence: respond precisely to the requirement
																	#        - cohesion: with rest of system
																	#  - non-functional, quality attributes (architecture): how software does it
                                  #     - experienced:
																	#        - execution qualities: runtime, e.g. UX, robustness
																	#        - evolution qualities: development-time, e.g. maintainability
                                  #     - can be:
																	#        - product requirement, i.e. what to build, e.g. UX, flexbility, robustness, maintainability, manageability
																	#        - process requirement, i.e. how to build, e.g. social impact, marketability

USER EXPERIENCE (UX) ==>          #Categories:
																	#  - usability: can achieve goal efficiently, i.e. with no obstacles
																	#     - ease of use
																	#     - learnability
																	#  - accessibility: how many different ways to use
																	#     - internationalizability
																	#  - design
																	#  - performance: perceived performance
																	#     - speed: latency vs throughput
																	#     - efficiency: resource consumption

FLEXIBILITY ==>                   #Behavior changes with different conditions, i.e. according to:
                                  #  - featureful: application state (i.e. lot of functional features)
																	#  - interactivity: input
																	#  - evolvability: after each interaction (e.g. AI)
																	#  - configurability: expected context
																	#  - adaptability: unexpected context
																	#  - modifiability|customizability: user additions

QUALITY ==>                       #Preventing faulty execution:
																	#  - stability|robustness:
																	#     - testability
																	#     - security: caused by malice
																	#     - compatibility: caused by implementation changes
																	#     - durability: caused by time
																	#     - availability: total fault
																	#     - reliability: frequent fault
																	#  - vulnerability
																	#     - recoverability: long-term damage (i.e. part cannot be fixed)
																	#     - risk: fault impact (vertical)
																	#     - fault tolerance: fault extent|scope (horizontal)
																	#     - correctability: time|ease to fix
																	#        - debuggability
																	#  - monitoring:
																	#     - auditability: how much is logged|visible
																	#     - reporting: alerting for faults

MAINTAINABILITY ==>               #Ease to manage by developers, i.e. ease to:
																	#  - operability: keep on offering same features
																	#  - extensibility: offer new features
																	#  - scalability: increase|decrease demand
																	#  - portability: support new environments
																	#  - transferability: transfer knowledge to new developers

MANAGEABILITY ==>                 #Ease to manage by users.
                                  #Anything but "using", i.e. any action not related to functionality, i.e. ease to:
																	#  - discoverability: find|discover
																	#  - deployability|installability: install
																	#     - seamlessness|integratibility: install in existing platform
																	#     - interoperability: install in different platforms
																	#  - administrability
																	#     - upgradability: upgrade
																	#  - supportability|serviceability: technical support
																	#  - interchangeability: uninstall, i.e. switching cost

SOCIAL IMPACT ==>                 #Categories:
																	#  - privacy
																	#  - environmental|human sustainability
																	#  - transparency|accountability|inspectability|traceability

MARKETABILITY ==>                 #Categories:
																	#  - certification
																	#  - cost
																	#  - legality
																	#     - compliance
																	#     - licensing


																						 /=+===============================+=\ <commit_msg>no commit message<commit_after>
                  
   REQUIREMENTS   
                  



maintanability vs quality vs (UX+flexibility+manageability)
UX vs flexibility


(UX): usability (learnability), performance [take memory, increase complexity]
(flexibility): interactivity [less simplicity]
(quality): robustness [less flexible, more complex]: compatibility
(maintainability): extensibility (reusability)
abstraction:
  - better maintainability for consumer, lower for producer
modularity
  - increase isolation -> better maintainability on each module
  - lower efficiency on the whole
  - too much granularity -> lower maintainability because must use several modules at once for each task|problem

refactoring
object oriented
concurring programming
parallellism
functional programming

SUMMARY ==>                       #Functional vs non-functional (execution vs evolution, product vs process)
                                  #Of non-functional requirements:
                                  #  - UX: usability (ease to use, learnability), a11y (i18n), design, performance
                                  #  - flexibility: featureful, interactivity, evolvability, configurability, adaptability, modifiability
                                  #  - quality:
                                  #     - stability: testability, security, compatibility, durability, availability, reliability
                                  #     - vulnerability: recoverability, risk, fault tolerance, correctability (debuggability)
                                  #     - monitoring: auditability, reporting
                                  #  - maintainability: operability (transferability), extensibility (portability, reusability), scalability
                                  #  - manageability: discoverability, deployability (integrability, interoperability), administrability (upgradability), supportability, interchangeability
                                  #  - social impact: privacy, sustainability, transparency
                                  #  - marketability: certification, cost, legality
                                  #Definition: INVEST (Independent, Negotiable, Valuable, Estimable, Small, Testable), "what to do" not "how to do", high-level first
                                  #Stages: 
                                  #  - inception 
                                  #  - formalization: user story, acceptance test, use case
                                  #  - proposals: 
                                  #     - prototype: sketch/wireframe/mockup/pretotype/prototype, horizontal/vertical, rapid/evolutionary
                                  #     - specification



																						 /=+===============================+=\ 
																						/  :                               :  \  
							 														  )==:             LIST              :==(   
																						\  :_______________________________:  /    
																						 \=+===============================+=/


TYPES ==>                         #Types:
                                  #  - functional (design): what software does
																	#     - implementation needs:
																	#        - quality: UX, robustness
																	#        - quantity|number: flexibility
																	#        - pertinence: respond precisely to the requirement
																	#        - cohesion: with rest of system
																	#  - non-functional, quality attributes (architecture): how software does it
                                  #     - experienced:
																	#        - execution qualities: runtime, e.g. UX, robustness
																	#        - evolution qualities: development-time, e.g. maintainability
                                  #     - can be:
																	#        - product requirement, i.e. what to build, e.g. UX, flexbility, robustness, maintainability, manageability
																	#        - process requirement, i.e. how to build, e.g. social impact, marketability

USER EXPERIENCE (UX) ==>          #Categories:
																	#  - usability: can achieve goal efficiently, i.e. with no obstacles
																	#     - ease of use
																	#     - learnability
																	#  - accessibility: how many different ways to use
																	#     - internationalizability
																	#  - design
																	#  - performance: perceived performance
																	#     - speed: latency vs throughput
																	#     - efficiency: resource consumption

FLEXIBILITY ==>                   #Behavior changes with different conditions, i.e. according to:
                                  #  - featureful: application state (i.e. lot of functional features)
																	#  - interactivity: input
																	#  - evolvability: after each interaction (e.g. AI)
																	#  - configurability: expected context
																	#  - adaptability: unexpected context
																	#  - modifiability|customizability: user additions

QUALITY ==>                       #Preventing faulty execution:
																	#  - stability|robustness:
																	#     - testability
																	#     - security: caused by malice
																	#     - compatibility: caused by implementation changes
																	#     - durability: caused by time
																	#     - availability: total fault
																	#     - reliability: frequent fault
																	#  - vulnerability
																	#     - recoverability: long-term damage (i.e. part cannot be fixed)
																	#     - risk: fault impact (vertical)
																	#     - fault tolerance: fault extent|scope (horizontal)
																	#     - correctability: time|ease to fix
																	#        - debuggability
																	#  - monitoring:
																	#     - auditability: how much is logged|visible
																	#     - reporting: alerting for faults

MAINTAINABILITY ==>               #Ease to manage by developers, i.e. ease to:
																	#  - operability: keep on offering same features
																	#     - transferability: operability for new developers
																	#  - extensibility: offer new features
																	#     - portability: support new environments
                                  #     - reusability
																	#  - scalability: increase|decrease demand

MANAGEABILITY ==>                 #Ease to manage by users.
                                  #Anything but "using", i.e. any action not related to functionality, i.e. ease to:
																	#  - discoverability: find|discover
																	#  - deployability|installability: install
																	#     - seamlessness|integratibility: install in existing platform
																	#     - interoperability: install in different platforms
																	#  - administrability
																	#     - upgradability: upgrade
																	#  - supportability|serviceability: technical support
																	#  - interchangeability: uninstall, i.e. switching cost

SOCIAL IMPACT ==>                 #Categories:
																	#  - privacy
																	#  - environmental|human sustainability
																	#  - transparency|accountability|inspectability|traceability

MARKETABILITY ==>                 #Categories:
																	#  - certification
																	#  - cost
																	#  - legality
																	#     - compliance
																	#     - licensing


																						 /=+===============================+=\ 
{'fraction_non_alphanumeric': 0.11695869441457397, 'fraction_numerical': 0.000506040862799671, 'mean_word_length': 1.3943661971830985, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 64, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4626851', 'n_tokens_mistral': 7203, 'n_tokens_neox': 5141, 'n_words': 953}