Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Building Dependable Software

Strategic technology advice for building dependable business-critical software.

  • Login to see the comments

  • Be the first to like this

Building Dependable Software

  1. 1. Building Dependable Software Strategic technology advice for building dependable business-critical software Dr. Jayaraj Poroor
  2. 2. 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.
  3. 3. Bugs vs Strategic Mistakes ● It will take a lot of bugs to kill a typical software - but a single strategic mistake is enough.
  4. 4. 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]
  5. 5. What is Software Architecture? A complex jigsaw that connects together frameworks, libraries, modules, data stores, platforms, app servers into a robust system. ●
  6. 6. Functional vs Non-functional requirements Functionality is only a part of the puzzle. Stability Extensibility Performance Security Scalability Domain Functionality
  7. 7. Good vs Bad Architecture A system that can collapse any time A system that can gracefully handle stress vs ● load ● attacks ● changes
  8. 8. Benefits of proper software architecture ● Stability ● Scalability ● Performance ● Security ● Reduced code complexity ● Extensibility
  9. 9. 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
  10. 10. Data Architecture: Good vs Bad System Requirements Wrong Data Architecture System Requirements Right Data Architecture vs
  11. 11. 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.
  12. 12. 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
  13. 13. Hybrid Data Architecture ● Use the right kind of data store for each different kind of data requirement.
  14. 14. 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
  15. 15. Frameworks are important too! Frameworks support the code we write.
  16. 16. Choices are many! Ruby on Rails Groovy on Grails Express (Node.js) Spring CakePHP Client-side frameworks, e.g. AngularJS
  17. 17. 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
  18. 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. 19. 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
  20. 20. Strategic technology activities ● Architecture Performance & Scalability Study. ● Framework Comparative Analysis. ● Architecture Vulnerability Assessment. ● Technology Feasibility Study. ● Technology Prototyping.
  21. 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. 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. 23. Choosing the right framework You’re unsure whether to really go with framework A, B, C, or D? How to decide? Roll a dice?
  24. 24. Framework Comparative Analysis Analyze data from various sources so that you can make an informed decision.
  25. 25. Concrete trend metrics Analysis will show framework trend metrics. ● Stable? ● Active? ● Growing community? ● Library availability? ● Support? ● Security Issues?
  26. 26. Architecture Vulnerability Assessment Analysis should help identify security weak links in your system architecture.
  27. 27. Using an insecure library? Analysis should reveal whether libraries, frameworks, platforms you are using have any serious security issues.
  28. 28. Technology Feasibility Study When you explore fresh & challenging application domains feasibility study report will be your map.
  29. 29. 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
  30. 30. Thank You Peace of mind with dependable software.