Your SlideShare is downloading. ×
0
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Ralf Westphal - Design smart not hard (www.pionierbasis.com)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ralf Westphal - Design smart not hard (www.pionierbasis.com)

2,341

Published on

Published in: Education, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,341
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Design smart, not hard – how flow-orientation makes software design easier Ralf Westphal info@ralfw.de @ralfw gplus.to/ralfwestphal http://ralfw.blogspot.com http://geekswithblogs.net/thearchitectsnapkinDonnerstag, 22. September 11
  • 2. The challenge:Donnerstag, 22. September 11
  • 3. Let´s start spinning...Donnerstag, 22. September 11
  • 4. Feature slice 1Donnerstag, 22. September 11
  • 5. Flow-Design 1 Parse Read lines Display Run command line #om file lines (args:string[]) (filename:string) (lines:string*)Donnerstag, 22. September 11
  • 6. Code 1 (args:string[]) Parse (filename:string) command lineDonnerstag, 22. September 11
  • 7. Feature slice 2Donnerstag, 22. September 11
  • 8. Flow-Design 2 app adapter Run Parse command line Read lines #om file Buffer lines (pageLength:int) logic (PageDirections) Get page #om lineBuffer:List<string> buffer Display lines portalDonnerstag, 22. September 11
  • 9. Code 2 Get page #om bufferDonnerstag, 22. September 11
  • 10. Feature slice 3Donnerstag, 22. September 11
  • 11. Flow-Design 3a Parse command Run Read lines #om file line Buffer lines lineBuffer:List<string> Get page #om Format page + buffer (csvLines:string*) lineBuffer:List<string> (string*) Display linesDonnerstag, 22. September 11
  • 12. Flow-Design 3b Format page - Parse lines Format table (csvLines:string*) (string*) (records:CsvRecord*)Donnerstag, 22. September 11
  • 13. Code 3 Format page + Parse linesDonnerstag, 22. September 11
  • 14. Flow-Design 4Donnerstag, 22. September 11
  • 15. Flow-Design 4a Parse command Run Read lines #om file line Buffer lines (PageDirections) Get page #om + + Format page buffer UIDonnerstag, 22. September 11
  • 16. Flow-Design 4b Get page #om buffer - Calc index of first Get page lines (PageDirections) line of page #om buffer (string*) (index:int, pageLength:int) lineBuffer:List<string> (pageLength:int)Donnerstag, 22. September 11
  • 17. Code 4Donnerstag, 22. September 11
  • 18. Feature slice 5Donnerstag, 22. September 11
  • 19. Flow-Design 5a Parse command Run Read lines #om file line Buffer lines Get page #om + + Format page buffer UIDonnerstag, 22. September 11
  • 20. Flow-Design 5b Format page - Normalize Parse lines Format table columns (records:CsvRecord*) (records:CsvRecord*)Donnerstag, 22. September 11
  • 21. Code 5Donnerstag, 22. September 11
  • 22. The challenge continues... Feature slice 6Donnerstag, 22. September 11
  • 23. Flow-Design 6 Parse command Run Read lines #om file line (string*) Prepend line index (string*) Buffer lines Get page #om + + Format page buffer UIDonnerstag, 22. September 11
  • 24. Code 6Donnerstag, 22. September 11
  • 25. Feature slice 7Donnerstag, 22. September 11
  • 26. Flow-Design 7a Parse command Run Read lines #om file line Prepend line index Buffer lines Get page #om + + Format page buffer UI (pageNo:int)Donnerstag, 22. September 11
  • 27. Flow-Design 7b Get page #om buffer - Calc index of first Get page lines #om (PageDirections) line of page buffer (string*) (pageLength:int) (pageNo:int)Donnerstag, 22. September 11
  • 28. Code 7Donnerstag, 22. September 11
  • 29. Feature slice 8Donnerstag, 22. September 11
  • 30. Flow-Design 8a Parse command Run Read lines #om file line Prepend line index Buffer lines Get page #om + + Format page buffer (PageOfLines) UIDonnerstag, 22. September 11
  • 31. Flow-Design 8b Get page #om buffer - Calc index of first Get page lines line of page #om buffer (PageOfLines) (index:int, pageLength:int, PageInfo)Donnerstag, 22. September 11
  • 32. Flow-Design 8c Format page - Normalize Parse lines Format table(PageOfLines) columns (string*) (PageOfRecords) (PageOfRecords)Donnerstag, 22. September 11
  • 33. Code 8Donnerstag, 22. September 11
  • 34. The challenge continues... Feature slice 9Donnerstag, 22. September 11
  • 35. Flow-Design 9.1 Asynchronizer Parse command Read lines Prepend Buffer Config line #om file line index lines background thread ConcurrentList<string> Get page + #om buffer Format page + Run UI foreground threadDonnerstag, 22. September 11
  • 36. Code 9.1Donnerstag, 22. September 11
  • 37. Flow-Design 9.2a Parse command Config Read line positions #om file line Read page lines #om file Calc index of Ini- Read line positions Buffer lines Get page + #om file #om buffer ConcurrentList<long> + Format page Run UIDonnerstag, 22. September 11
  • 38. Flow-Design 9.2b Get page #om buffer - (PageOfLinePositions) (PageDirections) (PageOfLines) Calc index of first Get page line Read page lines line of page positions #om buffer #om file ConcurrentList<string> (pageLength:int) (pageNo:int)Donnerstag, 22. September 11
  • 39. Code 9.2Donnerstag, 22. September 11
  • 40. Flow-Design 9.3 Get page #om buffer - Calc index of first Get page line positions Read page lines line of page #om buffer #om file Format page - Prepend line index Parse lines (PageOfLines) (PageOfLines) Normalize columns Format tableDonnerstag, 22. September 11
  • 41. Code 9.3Donnerstag, 22. September 11
  • 42. Donnerstag, 22. September 11
  • 43. Flow-Design Resources Flow-Design Cheat Sheets http://geekswithblogs.net/theArchitectsNapkin/archive/2011/03/19/flow-design-cheat-sheet-ndash-part-i-notation.aspx http://geekswithblogs.net/theArchitectsNapkin/archive/2011/03/20/flow-design-cheat-sheet-ndash-part-ii-translation.aspx Flow-Design Literature List (partly German) http://clean-code-advisors.com/ressourcen/flow-design-ressourcen Flow-Design Discussion Group (feel free to start discussions in English) http://groups.google.com/group/event-based-componentsDonnerstag, 22. September 11
  • 44. Ralf Westphal Ralf Westphal (www.ralfw.de) is a freelance consultant, project coach, and trainer on .NET software architectural topics. He is the author of more than 450 publications since 1998 and has been awarded the Most Valued Professional badge by Microsoft each year since 2005. Together with his colleague Stefan Lieser he is the co-founder of the "Clean Code Developer" initiative to increase software quality through principles and practices (www.clean-code-developer.de).Donnerstag, 22. September 11

×