building dependable software
Post on 06-Jul-2015
Embed Size (px)
DESCRIPTIONStrategic technology advice for building dependable business-critical software.
- 1. BuildingDependable SoftwareStrategic technology advicefor building dependable business-critical softwareDr. Jayaraj Poroorhttp://jayaraj.poroor.com
2. OverviewThe land ofrequirementsThe land ofdependable softwareThe gap needs tobe filled byemploying theright technologystrategies. Architecting Analysis Feasibility Studies PrototypingSemantic gapbetweenrequirements anddependable code. 3. Bugs vs Strategic Mistakes It will take a lot of bugs to kill a typicalsoftware - but a single strategic mistakeis enough. 4. FBIs Virtual Case File project$170 million project scrapped700,000 lines of unusable code writtenThe [VCF] architecture was developed without adequateassessment of alternatives and conformance to variousarchitectural standards.Assessment Report by Aerospace Corp.[IEEE Spectrum] 5. What is Software Architecture?A complex jigsaw that connects togetherframeworks, libraries, modules, data stores,platforms, app servers into a robust system. 6. Functional vs Non-functionalrequirementsFunctionality is only a part of the puzzle.Stability Extensibility PerformanceSecurity ScalabilityDomainFunctionality 7. Good vs Bad ArchitectureA system that cancollapse any timeA system that cangracefully handle stressvs load attacks changes 8. Benefits of proper softwarearchitecture Stability Scalability Performance Security Reduced code complexity Extensibility 9. Data architecture is especiallyimportantShow me your flowcharts and conceal your tables, and Ishall continue to be mystified. Show me your tables, and Iwon't usually need your flowcharts; they'll be obvious.Fred BrooksComputer Pioneer & Turing Award* Winner* Turing Award is Computer Science equivalent of Nobel Prize 10. Data Architecture: Good vs BadSystemRequirementsWrong Data ArchitectureSystemRequirementsRight Data Architecturevs 11. Not all application data are equalBasicDomainDataTime-taggedLog DataRelationshipDataUnstructuredTextSessionDataThe same application may have diverse data requirements. 12. Force fit all data into the samedata store? Poor performance/scalability Complex application code Slow/buggyApplications diverse datarequirements.A single data store wont fit allrequirements 13. Hybrid Data Architecture Use the right kind of data store for eachdifferent kind of data requirement. 14. Data stores: the sheer variety!Key-value StoresDistributedKey-value StoresIn-ProcessKey-value StoresUn/Semi-structuredsearch databases Time-seriesdatabasesColumn-familydatabasesIn-process SQLdatabasesRelationaldatabasesGraphdatabasesDocumentdatabasesXMLdatabasesLogic-baseddatabases 15. Frameworks are important too!Frameworks support the code we write. 16. Choices are many!Ruby onRailsGroovyon GrailsExpress(Node.js)SpringCakePHPClient-sideframeworks, e.g.AngularJS 17. Security: Protect your precious data!Security incidents result in serious financial lossesand lost credibilityCross-siteScriptingXSRFSQLInjectionUse ofVulnerableLibraries 18. Rework is costly Architectural mistakes are strategicmistakes - costly to correct e.g., migrating from a bad framework ormigrating to a new data store. Investment in architecture will save youtime, money, and your reputationtomorrow 19. Strategic decisions must bebased on hard dataIn God we trust; all others must bringdata.Edward Deming**The man behind Japanese post-war industrial revolution 20. Strategic technology activities Architecture Performance & ScalabilityStudy. Framework Comparative Analysis. Architecture Vulnerability Assessment. Technology Feasibility Study. Technology Prototyping. 21. Performance & ScalabilityPremature optimization is the root of all evil.Don Knuth. Scalability is important but not everyoneneeds to be Google or Twitter. Over-architecting can be expensive. Under-architecting can be disastrous. 22. Performance & Scalability1. Study Requirements.2. Start with a simple architecture.3. DOModel the architecture, simulate (in AWSwith actual VMs), and collect performancedata.Identify bottlenecks.Incrementally modify the architecture.ITERATE UNTILPERFORMANCE ISSUFFICIENT 23. Choosing the right frameworkYoure unsure whether to really go withframework A, B, C, or D?How to decide? Roll a dice? 24. Framework Comparative AnalysisAnalyze data from various sources so that you canmake an informed decision. 25. Concrete trend metricsAnalysis will show framework trend metrics. Stable? Active? Growing community? Library availability? Support? Security Issues? 26. Architecture Vulnerability AssessmentAnalysis should help identify security weak linksin your system architecture. 27. Using an insecure library?Analysis should reveal whether libraries,frameworks, platforms you are using have anyserious security issues. 28. Technology Feasibility StudyWhen you explore fresh & challenging applicationdomains feasibility study report will be your map. 29. Technology PrototypingNothing beats building an actual prototype whenexploring new & challenging domains.I do and I understand. The map is not the territory.- - Confucious 30. Thank Youjayaraj.firstname.lastname@example.org://jayaraj.poroor.comPeace of mind with dependable software.