SlideShare a Scribd company logo
1 of 17
What are 5G LAMBDAs?
5G is a branding of component-based modeling in
Excel. 5G components are:
• Easy to use
• Reusable
• Fully tested
• Documented
• CBSE-Compliant
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 1
What is CBSE?
CBSE (Component-based software engineering)
• Developed in the late ’90s.
• Relies on pre-built, pre-tested components
• Components:
• Encapsulate specific functionality
• Have well-defined interfaces (arguments)
• And are 100% self-contained
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 2
CBSE’s Value
Proposition
Assembling models from CBSE components:
• Increases productivity
• Reduces errors
• Requires no special technical skills
Quick, Correct, Easy
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 3
What are CBSE-Compliant LAMBDAs?
LAMBDAs that are constructed to be:
• Reusable
• Accessible through interfaces
• 100% Self-contained
• Provide user feedback
• Documented and Tested
• Easily distributed and incorporated
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 4
COMPONENT
EXAMPLE
2023 5
Reducing Errors in Excel Models with Component-Based Software Engineering
Writing CBSE Compliant LAMBDAs
What follows are those things that we must do to make
our LAMBDAs CBSE-compliant.
WARNING: The next section starts at the beginner level
and then quickly progresses to intermediate-level
LAMBDA authors.
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 6
LAMBDA Sections
• Internal Argument Names – How calculations refer to function arguments.
• Calculations – The collection of Excel functions used by the LAMBDA
• Function Arguments – Values passed to the LAMBDA (not in the
LAMBDA)
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 7
=LAMBDA([ArgName1, ArgName2, …], Calculation)([ArgValue1, ArgValue2,…])
Internal Argument Names Calculations Function Arguments
Reusable
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 8
• Created to satisfy a recurring need.
• Designed for reuse in any workbook.
• May be used multiple times within the same workbook.
• From reuse and continuous improvement, components
become ‘battle-tested’
Accessible Through
Interfaces
Interfaces are the component’s arguments, also known as
parameters.
Row 3 is non-compliant because inputs are passed as
references, not arguments
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 9
Arguments
No
Arguments
Self-Contained
Everything needed for the component’s functionality is
inside the component or provided through interfaces.
Row 3 is non-compliant because calculations are
dependent on values in $B$1:$E$1
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 10
Provide User Feedback
When errors are encountered, the component must alert
the user to the error and should suggest corrective
measures.
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 11
The component at right
fails because of an
invalid date and, as a
result, displays its in-
line help.
CODE
EXAMPLE
2023 12
Reducing Errors in Excel Models with Component-Based Software Engineering
User Feedback
Inline help shows when no
parameters are entered, or
the LAMBDA fails. See help
output below source.
Revision log
Component Name
Figure 4 Example CBSE compliant documentation for LAMBDAs
Description of services
Allowable inputs
Example usage
Interface (Arguments)
Help Output
Functional code
Documented and Tested
Components are expected to be error-free
• Documentation describes functionality.
• Common scenarios test functionality conforms to
documentation.
• Edge tests confirm special scenarios conform to
documentation.
• Negative tests confirm inputs that should error, do.
• Revisions incorporate latest improvements
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 13
Easily Distributed and Incorporated
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 14
Store components in GitHub
Gist
Why now?
CBSE requires 3 recent developments:
• Turing complete programming languages - LAMBDA
makes Excel Turing complete
• Integration Facility – Microsoft’s Advanced Formula
Environment (AFE) eases importing LAMBDA
modules.
• Distribution - GitHub Gists provide free LAMBDA
module repositories that AFE can import from readily.
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 15
Summary
2023 Reducing Errors in Excel Models with Component-Based Software Engineering 16
Components are pre-built, pre-tested, LAMBDA functions designed for reuse in any workbook.
CBSE components require:
• Facilities for distribution and access satisfied by GitHub Gist
• Facilities for easily acquiring and incorporating components satisfied by AFE
The CBSE promises are:
• Quicker model development through assembly of pre-existing, non-trivial components
• Improved reliability from pre-tested and, over time, battle-tested components.
• Ease of implementation because components look and feel like familiar Excel functions.
My hope is:
• Component creators will emerge to create quality components addressing recurring needs.
• Excel modelers will embrace component-based modeling because it is quick, correct, and easy.
COMPONENT-
BASED
MODELING
Quick, Correct, Easy

More Related Content

Similar to CBSE and Excel Lite for LAMBDA Authors

Spring Architecture | Advanced Java
Spring Architecture | Advanced JavaSpring Architecture | Advanced Java
Spring Architecture | Advanced JavaVISHAL DONGA
 
Practical data science
Practical data sciencePractical data science
Practical data scienceDing Li
 
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery LabsIncquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery LabsIncQuery Labs
 
Modeling and Testing Dovetail in MagicDraw
Modeling and Testing Dovetail in MagicDrawModeling and Testing Dovetail in MagicDraw
Modeling and Testing Dovetail in MagicDrawGregory Solovey
 
Getting Started with Serverless Architectures using Azure Functions
Getting Started with Serverless Architectures using Azure FunctionsGetting Started with Serverless Architectures using Azure Functions
Getting Started with Serverless Architectures using Azure FunctionsMarc Duiker
 
Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...
Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...
Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...Modelon
 
414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integrationTrevor Dolby
 
[DSC Europe 23] Petar Zecevic - ML in Production on Databricks
[DSC Europe 23] Petar Zecevic - ML in Production on Databricks[DSC Europe 23] Petar Zecevic - ML in Production on Databricks
[DSC Europe 23] Petar Zecevic - ML in Production on DatabricksDataScienceConferenc1
 
Is your ABAP Code Ready for the Cloud?
Is your ABAP Code Ready for the Cloud?Is your ABAP Code Ready for the Cloud?
Is your ABAP Code Ready for the Cloud?Tobias Trapp
 
App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...
App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...
App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...mrle7
 
Introduction to Azure Functions
Introduction to Azure FunctionsIntroduction to Azure Functions
Introduction to Azure FunctionsCallon Campbell
 
Modules as requirement specifications
Modules as requirement specificationsModules as requirement specifications
Modules as requirement specificationsIBM Rational software
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Phil Leggetter
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectColdFusionConference
 
Journey to Forge Mastery: Part 1 - Webinar on building a Forge component usi...
Journey to Forge Mastery: Part 1 -  Webinar on building a Forge component usi...Journey to Forge Mastery: Part 1 -  Webinar on building a Forge component usi...
Journey to Forge Mastery: Part 1 - Webinar on building a Forge component usi...MuhammedIbrahimHM
 

Similar to CBSE and Excel Lite for LAMBDA Authors (20)

Spring Architecture | Advanced Java
Spring Architecture | Advanced JavaSpring Architecture | Advanced Java
Spring Architecture | Advanced Java
 
Practical data science
Practical data sciencePractical data science
Practical data science
 
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery LabsIncquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
 
Modeling and Testing Dovetail in MagicDraw
Modeling and Testing Dovetail in MagicDrawModeling and Testing Dovetail in MagicDraw
Modeling and Testing Dovetail in MagicDraw
 
Resume
ResumeResume
Resume
 
Getting Started with Serverless Architectures using Azure Functions
Getting Started with Serverless Architectures using Azure FunctionsGetting Started with Serverless Architectures using Azure Functions
Getting Started with Serverless Architectures using Azure Functions
 
Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...
Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...
Closing the Design Cycle Loop with Executable Requirements and OSLC - IBM Int...
 
414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration
 
[DSC Europe 23] Petar Zecevic - ML in Production on Databricks
[DSC Europe 23] Petar Zecevic - ML in Production on Databricks[DSC Europe 23] Petar Zecevic - ML in Production on Databricks
[DSC Europe 23] Petar Zecevic - ML in Production on Databricks
 
Is your ABAP Code Ready for the Cloud?
Is your ABAP Code Ready for the Cloud?Is your ABAP Code Ready for the Cloud?
Is your ABAP Code Ready for the Cloud?
 
Vedic Calculator
Vedic CalculatorVedic Calculator
Vedic Calculator
 
App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...
App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...
App Connect v12. Unit testing with a Pipeline Example. Trevor Dolby Architect...
 
Introduction to Azure Functions
Introduction to Azure FunctionsIntroduction to Azure Functions
Introduction to Azure Functions
 
Modules as requirement specifications
Modules as requirement specificationsModules as requirement specifications
Modules as requirement specifications
 
Angular 2
Angular 2Angular 2
Angular 2
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
 
0. About this course
0. About this course0. About this course
0. About this course
 
Mvc
MvcMvc
Mvc
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an Architect
 
Journey to Forge Mastery: Part 1 - Webinar on building a Forge component usi...
Journey to Forge Mastery: Part 1 -  Webinar on building a Forge component usi...Journey to Forge Mastery: Part 1 -  Webinar on building a Forge component usi...
Journey to Forge Mastery: Part 1 - Webinar on building a Forge component usi...
 

Recently uploaded

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

CBSE and Excel Lite for LAMBDA Authors

  • 1. What are 5G LAMBDAs? 5G is a branding of component-based modeling in Excel. 5G components are: • Easy to use • Reusable • Fully tested • Documented • CBSE-Compliant 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 1
  • 2. What is CBSE? CBSE (Component-based software engineering) • Developed in the late ’90s. • Relies on pre-built, pre-tested components • Components: • Encapsulate specific functionality • Have well-defined interfaces (arguments) • And are 100% self-contained 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 2
  • 3. CBSE’s Value Proposition Assembling models from CBSE components: • Increases productivity • Reduces errors • Requires no special technical skills Quick, Correct, Easy 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 3
  • 4. What are CBSE-Compliant LAMBDAs? LAMBDAs that are constructed to be: • Reusable • Accessible through interfaces • 100% Self-contained • Provide user feedback • Documented and Tested • Easily distributed and incorporated 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 4
  • 5. COMPONENT EXAMPLE 2023 5 Reducing Errors in Excel Models with Component-Based Software Engineering
  • 6. Writing CBSE Compliant LAMBDAs What follows are those things that we must do to make our LAMBDAs CBSE-compliant. WARNING: The next section starts at the beginner level and then quickly progresses to intermediate-level LAMBDA authors. 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 6
  • 7. LAMBDA Sections • Internal Argument Names – How calculations refer to function arguments. • Calculations – The collection of Excel functions used by the LAMBDA • Function Arguments – Values passed to the LAMBDA (not in the LAMBDA) 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 7 =LAMBDA([ArgName1, ArgName2, …], Calculation)([ArgValue1, ArgValue2,…]) Internal Argument Names Calculations Function Arguments
  • 8. Reusable 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 8 • Created to satisfy a recurring need. • Designed for reuse in any workbook. • May be used multiple times within the same workbook. • From reuse and continuous improvement, components become ‘battle-tested’
  • 9. Accessible Through Interfaces Interfaces are the component’s arguments, also known as parameters. Row 3 is non-compliant because inputs are passed as references, not arguments 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 9 Arguments No Arguments
  • 10. Self-Contained Everything needed for the component’s functionality is inside the component or provided through interfaces. Row 3 is non-compliant because calculations are dependent on values in $B$1:$E$1 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 10
  • 11. Provide User Feedback When errors are encountered, the component must alert the user to the error and should suggest corrective measures. 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 11 The component at right fails because of an invalid date and, as a result, displays its in- line help.
  • 12. CODE EXAMPLE 2023 12 Reducing Errors in Excel Models with Component-Based Software Engineering User Feedback Inline help shows when no parameters are entered, or the LAMBDA fails. See help output below source. Revision log Component Name Figure 4 Example CBSE compliant documentation for LAMBDAs Description of services Allowable inputs Example usage Interface (Arguments) Help Output Functional code
  • 13. Documented and Tested Components are expected to be error-free • Documentation describes functionality. • Common scenarios test functionality conforms to documentation. • Edge tests confirm special scenarios conform to documentation. • Negative tests confirm inputs that should error, do. • Revisions incorporate latest improvements 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 13
  • 14. Easily Distributed and Incorporated 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 14 Store components in GitHub Gist
  • 15. Why now? CBSE requires 3 recent developments: • Turing complete programming languages - LAMBDA makes Excel Turing complete • Integration Facility – Microsoft’s Advanced Formula Environment (AFE) eases importing LAMBDA modules. • Distribution - GitHub Gists provide free LAMBDA module repositories that AFE can import from readily. 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 15
  • 16. Summary 2023 Reducing Errors in Excel Models with Component-Based Software Engineering 16 Components are pre-built, pre-tested, LAMBDA functions designed for reuse in any workbook. CBSE components require: • Facilities for distribution and access satisfied by GitHub Gist • Facilities for easily acquiring and incorporating components satisfied by AFE The CBSE promises are: • Quicker model development through assembly of pre-existing, non-trivial components • Improved reliability from pre-tested and, over time, battle-tested components. • Ease of implementation because components look and feel like familiar Excel functions. My hope is: • Component creators will emerge to create quality components addressing recurring needs. • Excel modelers will embrace component-based modeling because it is quick, correct, and easy.