Building 
Dependable Software 
Strategic technology advice 
for building dependable business-critical software 
Dr. Jayaraj Poroor 
http://jayaraj.poroor.com
Overview 
The land of 
requirements 
The land of 
dependable software 
The gap needs to 
be filled by 
employing the 
right technology 
strategies. 
● Architecting 
● Analysis 
● Feasibility Studies 
● Prototyping 
Semantic gap 
between 
requirements and 
dependable code.
Bugs vs Strategic Mistakes 
● It will take a lot of bugs to kill a typical 
software - but a single strategic mistake 
is enough.
FBI’s Virtual Case File project 
$170 million project scrapped 
700,000 lines of unusable code written 
“The [VCF] architecture was developed without adequate 
assessment of alternatives and conformance to various 
architectural standards.” 
Assessment Report by Aerospace Corp. 
[IEEE Spectrum]
What is Software Architecture? 
A complex jigsaw that connects together 
frameworks, libraries, modules, data stores, 
platforms, app servers into a robust system. 
●
Functional vs Non-functional 
requirements 
Functionality is only a part of the puzzle. 
Stability Extensibility Performance 
Security Scalability 
Domain 
Functionality
Good vs Bad Architecture 
A system that can 
collapse any time 
A system that can 
gracefully handle stress 
vs 
● load 
● attacks 
● changes
Benefits of proper software 
architecture 
● Stability 
● Scalability 
● Performance 
● Security 
● Reduced code complexity 
● Extensibility
Data architecture is especially 
important 
“Show me your flowcharts and conceal your tables, and I 
shall continue to be mystified. Show me your tables, and I 
won't usually need your flowcharts; they'll be obvious.” 
Fred Brooks 
Computer Pioneer & Turing Award* Winner 
* Turing Award is Computer Science equivalent of Nobel Prize
Data Architecture: Good vs Bad 
System 
Requirements 
Wrong Data Architecture 
System 
Requirements 
Right Data Architecture 
vs
Not all application data are equal 
Basic 
Domain 
Data 
Time-tagged 
Log Data 
Relationship 
Data 
Unstructured 
Text 
Session 
Data 
The same application may have diverse data requirements.
Force fit all data into the same 
data store? 
● Poor performance/scalability 
● Complex application code 
○ Slow/buggy 
Application’s diverse data 
requirements. 
A single data store won’t fit all 
requirements
Hybrid Data Architecture 
● Use the right kind of data store for each 
different kind of data requirement.
Data stores: the sheer variety! 
Key-value Stores 
Distributed 
Key-value Stores 
In-Process 
Key-value Stores 
Un/Semi-structured 
search databases Time-series 
databases 
Column-family 
databases 
In-process SQL 
databases 
Relational 
databases 
Graph 
databases 
Document 
databases 
XML 
databases 
Logic-based 
databases
Frameworks are important too! 
Frameworks support the code we write.
Choices are many! 
Ruby on 
Rails 
Groovy 
on Grails 
Express 
(Node.js) 
Spring 
CakePHP 
Client-side 
frameworks, e.g. 
AngularJS
Security: Protect your precious data! 
Security incidents result in serious financial losses 
and lost credibility 
Cross-site 
Scripting 
XSRF 
SQL 
Injection 
Use of 
Vulnerable 
Libraries
Rework is costly 
● Architectural mistakes are strategic 
mistakes - costly to correct 
○ e.g., migrating from a bad framework or 
migrating to a new data store. 
● Investment in architecture will save you 
time, money, and your reputation 
tomorrow
Strategic decisions must be 
based on hard data 
“In God we trust; all others must bring 
data.” 
Edward Deming* 
*The man behind Japanese post-war industrial revolution
Strategic technology activities 
● Architecture Performance & Scalability 
Study. 
● Framework Comparative Analysis. 
● Architecture Vulnerability Assessment. 
● Technology Feasibility Study. 
● Technology Prototyping.
Performance & Scalability 
“Premature optimization is the root of all evil.” 
Don Knuth. 
● Scalability is important but not everyone 
needs to be Google or Twitter. 
○ Over-architecting can be expensive. 
○ Under-architecting can be disastrous.
Performance & Scalability 
1. Study Requirements. 
2. Start with a simple architecture. 
3. DO 
Model the architecture, simulate (in AWS 
with actual VMs), and collect performance 
data. 
Identify bottlenecks. 
Incrementally modify the architecture. 
ITERATE UNTIL 
PERFORMANCE IS 
SUFFICIENT
Choosing the right framework 
You’re unsure whether to really go with 
framework A, B, C, or D? 
How to decide? Roll a dice?
Framework Comparative Analysis 
Analyze data from various sources so that you can 
make an informed decision.
Concrete trend metrics 
Analysis will show framework trend metrics. 
● Stable? 
● Active? 
● Growing community? 
● Library availability? 
● Support? 
● Security Issues?
Architecture Vulnerability Assessment 
Analysis should help identify security weak links 
in your system architecture.
Using an insecure library? 
Analysis should reveal whether libraries, 
frameworks, platforms you are using have any 
serious security issues.
Technology Feasibility Study 
When you explore fresh & challenging application 
domains feasibility study report will be your map.
Technology Prototyping 
Nothing beats building an actual prototype when 
exploring new & challenging domains. 
“I do and I understand.” “The map is not the territory.” 
- - Confucious
Thank You 
jayaraj.poroor@gmail.com 
http://jayaraj.poroor.com 
Peace of mind with dependable software.

Building Dependable Software

  • 1.
    Building Dependable Software Strategic technology advice for building dependable business-critical software Dr. Jayaraj Poroor http://jayaraj.poroor.com
  • 2.
    Overview The landof requirements The land of dependable software The gap needs to be filled by employing the right technology strategies. ● Architecting ● Analysis ● Feasibility Studies ● Prototyping Semantic gap between requirements and dependable code.
  • 3.
    Bugs vs StrategicMistakes ● It will take a lot of bugs to kill a typical software - but a single strategic mistake is enough.
  • 4.
    FBI’s Virtual CaseFile project $170 million project scrapped 700,000 lines of unusable code written “The [VCF] architecture was developed without adequate assessment of alternatives and conformance to various architectural standards.” Assessment Report by Aerospace Corp. [IEEE Spectrum]
  • 5.
    What is SoftwareArchitecture? A complex jigsaw that connects together frameworks, libraries, modules, data stores, platforms, app servers into a robust system. ●
  • 6.
    Functional vs Non-functional requirements Functionality is only a part of the puzzle. Stability Extensibility Performance Security Scalability Domain Functionality
  • 7.
    Good vs BadArchitecture A system that can collapse any time A system that can gracefully handle stress vs ● load ● attacks ● changes
  • 8.
    Benefits of propersoftware architecture ● Stability ● Scalability ● Performance ● Security ● Reduced code complexity ● Extensibility
  • 9.
    Data architecture isespecially important “Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious.” Fred Brooks Computer Pioneer & Turing Award* Winner * Turing Award is Computer Science equivalent of Nobel Prize
  • 10.
    Data Architecture: Goodvs Bad System Requirements Wrong Data Architecture System Requirements Right Data Architecture vs
  • 11.
    Not all applicationdata are equal Basic Domain Data Time-tagged Log Data Relationship Data Unstructured Text Session Data The same application may have diverse data requirements.
  • 12.
    Force fit alldata into the same data store? ● Poor performance/scalability ● Complex application code ○ Slow/buggy Application’s diverse data requirements. A single data store won’t fit all requirements
  • 13.
    Hybrid Data Architecture ● Use the right kind of data store for each different kind of data requirement.
  • 14.
    Data stores: thesheer variety! Key-value Stores Distributed Key-value Stores In-Process Key-value Stores Un/Semi-structured search databases Time-series databases Column-family databases In-process SQL databases Relational databases Graph databases Document databases XML databases Logic-based databases
  • 15.
    Frameworks are importanttoo! Frameworks support the code we write.
  • 16.
    Choices are many! Ruby on Rails Groovy on Grails Express (Node.js) Spring CakePHP Client-side frameworks, e.g. AngularJS
  • 17.
    Security: Protect yourprecious data! Security incidents result in serious financial losses and lost credibility Cross-site Scripting XSRF SQL Injection Use of Vulnerable Libraries
  • 18.
    Rework is costly ● Architectural mistakes are strategic mistakes - costly to correct ○ e.g., migrating from a bad framework or migrating to a new data store. ● Investment in architecture will save you time, money, and your reputation tomorrow
  • 19.
    Strategic decisions mustbe based on hard data “In God we trust; all others must bring data.” Edward Deming* *The man behind Japanese post-war industrial revolution
  • 20.
    Strategic technology activities ● Architecture Performance & Scalability Study. ● Framework Comparative Analysis. ● Architecture Vulnerability Assessment. ● Technology Feasibility Study. ● Technology Prototyping.
  • 21.
    Performance & Scalability “Premature optimization is the root of all evil.” Don Knuth. ● Scalability is important but not everyone needs to be Google or Twitter. ○ Over-architecting can be expensive. ○ Under-architecting can be disastrous.
  • 22.
    Performance & Scalability 1. Study Requirements. 2. Start with a simple architecture. 3. DO Model the architecture, simulate (in AWS with actual VMs), and collect performance data. Identify bottlenecks. Incrementally modify the architecture. ITERATE UNTIL PERFORMANCE IS SUFFICIENT
  • 23.
    Choosing the rightframework You’re unsure whether to really go with framework A, B, C, or D? How to decide? Roll a dice?
  • 24.
    Framework Comparative Analysis Analyze data from various sources so that you can make an informed decision.
  • 25.
    Concrete trend metrics Analysis will show framework trend metrics. ● Stable? ● Active? ● Growing community? ● Library availability? ● Support? ● Security Issues?
  • 26.
    Architecture Vulnerability Assessment Analysis should help identify security weak links in your system architecture.
  • 27.
    Using an insecurelibrary? Analysis should reveal whether libraries, frameworks, platforms you are using have any serious security issues.
  • 28.
    Technology Feasibility Study When you explore fresh & challenging application domains feasibility study report will be your map.
  • 29.
    Technology Prototyping Nothingbeats building an actual prototype when exploring new & challenging domains. “I do and I understand.” “The map is not the territory.” - - Confucious
  • 30.
    Thank You jayaraj.poroor@gmail.com http://jayaraj.poroor.com Peace of mind with dependable software.