html5-img
1 / 69

What do you mean, backwards compatibility?

#GeeCON. What do you mean, backwards compatibility?. Trisha Gee. Java Driver Developer, 10gen @trisha_gee. Design : translate the requirements in a specification that describes the global architecture and the functionality of the system.

page
Télécharger la présentation

What do you mean, backwards compatibility?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. #GeeCON What do you mean, backwards compatibility? Trisha Gee • Java Driver Developer, 10gen • @trisha_gee

  2. Design: translate the requirements in a specification that describes the global architecture and the functionality of the system. http://homepages.cwi.nl/~paulk/patents/isnot/node4.html

  3. Managing the Development of Large Software Systems - Dr Winston Royce http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

  4. <This Page Left Intentionally Blank> Agile Design

  5. Design is a Process, not a Document

  6. What are you saying? • Design is a journey, enjoy the ride • There will be Monsters • There will be Safe Houses • There might not even be a destination...

  7. Best Job Evar!!

  8. We’re off!

  9. Backward Compatibility

  10. Lots of unknowns

  11. Design Goals

  12. Yes, it’s a document

  13. Design Goals • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  14. Lack of consistency

  15. Coding Standards

  16. Zero Analysis Errors

  17. No more arguments

  18. Design Goals • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  19. Users

  20. Identify Our Users

  21. Three Types Of Users • Java Developers • ODMs / other drivers / third parties • Contributors

  22. Java Developers • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  23. Third Party Libraries • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  24. Contributors • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  25. Users are our friends

  26. Backward Compatibility

  27. Architecture

  28. UML, yuk!

  29. High Level Architecture

  30. Scala Driver

  31. Design Goals • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  32. Design Goals • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  33. High Level Architecture

  34. Option 1: Wrapping

  35. Option 2: Connecting

  36. Backward Compatibility?

  37. Tests Pass

  38. We win!

  39. Design Goals • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  40. Not Dead Yet...

  41. The Public API

  42. Design Goals • Consistency • Cleaner design • Intuitive API • Sane Exception handling • Test friendly • Backwards compatible

  43. Caveats • It won’t look like this • Haven’t decided consistent names yet • Need something that suits all drivers

  44. Find • collection.find(query).skip(1000).limit(100); • collection.find(query).skip(1000).limit(100);

  45. Find • collection.find(query).skip(1000).limit(100); • collection.find(query).skip(1000).limit(100); • collection.find(query, fields);

  46. Which One?

  47. Find • collection.find(query).skip(1000).limit(100); • collection.find(query).skip(1000).limit(100); • collection.find(query, fields); • collection.find(query).fields(fieldsToSelect);

  48. Fewer Decisions

  49. “Cmd + space” friendly

  50. Find • collection.find(query).skip(1000).limit(100); • collection.find(query).skip(1000).limit(100); • collection.find(query, fields); • collection.find(query).select(fields);

More Related