Slide 1

Slide 1 text

FooLab ERD, Flowcharts and Other Documentation FrOSCon - August 25, 2012

Slide 2

Slide 2 text

FooLab What It’s Not About • Not a full analysis and design course • Not a demo of modeling tools • Not a detailed explanation of symbology 2

Slide 3

Slide 3 text

FooLab What It Is About • What diagrams serve what purpose • Tie diagrams together • Real world examples • More examples 3

Slide 4

Slide 4 text

FooLab Anna Filina • PHP Quebec - user group • ConFoo - non for profit Web conference • FooLab Inc. • I write code. • I train and supervise programmers. 4

Slide 5

Slide 5 text

FooLab Why No Docs? • Don't know where to begin • It's boring • There’s no point • Get out of date • Nobody reads them • Lean and mean 5

Slide 6

Slide 6 text

FooLab Not Always Boring 6

Slide 7

Slide 7 text

FooLab The Real Problem • Don't understand diagrams • Diagrams serve no purpose, not helpful • Mistake diagrams for waterfall model • Inadequate tools 7

Slide 8

Slide 8 text

FooLab Conference Management Software

Slide 9

Slide 9 text

FooLab Use Case 9

Slide 10

Slide 10 text

FooLab ER Diagram 10 0 or more (many) 1

Slide 11

Slide 11 text

FooLab ER Diagram 11 Non-identifying Identifying

Slide 12

Slide 12 text

FooLab ER Diagram 12

Slide 13

Slide 13 text

FooLab Data Flow Diagram 13 External entity

Slide 14

Slide 14 text

FooLab Data Flow Diagram 14 1 2 3 4 5 6 7 8

Slide 15

Slide 15 text

FooLab Data Flow Diagram 15

Slide 16

Slide 16 text

FooLab Common Mistakes 16 • Data not stored. • Black hole. • Grey hole. • Spontaneous generation.

Slide 17

Slide 17 text

FooLab Flowchart 17 Input Output

Slide 18

Slide 18 text

FooLab Mockups 18

Slide 19

Slide 19 text

FooLab Mockups 19

Slide 20

Slide 20 text

FooLab Function Reference • Session • bool isSelected() • void mailConfirmation(), check logs • bool saveVote($user, $vote) • Automate tests of input/output. 20

Slide 21

Slide 21 text

FooLab Source Comments • Inline comments // simple and short explanations • /** * Commonly used above functions. * Can use annotations with phpDocumentor or other. */ Descriptive blocks • Comment when it’s fresh. • Big functions with lots of comments = split function. 21

Slide 22

Slide 22 text

FooLab Putting it all together A.K.A. “The Manual”

Slide 23

Slide 23 text

FooLab Manual • Define chapters. Example: 1. Scope (Use Cases) 2. Database (ERD) 3. Processes (DFD + Flowchart) 4. Mockups (later screenshots) 5. Classes + usage 23

Slide 24

Slide 24 text

FooLab Manual • Write topics in bullet point • Add diagrams • Write paragraph under each bullet • Move topics and chapters around • Fill in with details 24

Slide 25

Slide 25 text

FooLab How much to write?

Slide 26

Slide 26 text

FooLab Application Complexity 26 More docs Less docs Grandma’s recipes vs Facebook

Slide 27

Slide 27 text

FooLab Security Requirements 27 Grandma’s recipes vs IAFIS fingerprints More docs Less docs

Slide 28

Slide 28 text

FooLab Financial Impact 28 Grandma’s recipes vs Forex currency trading More docs Less docs

Slide 29

Slide 29 text

FooLab Team Size 29 Yourself vs 20 devs More docs Less docs

Slide 30

Slide 30 text

FooLab Team Proximity 30 Same office vs Remote More docs Less docs

Slide 31

Slide 31 text

FooLab Good Documentation • Makes your software easier to build and maintain • Makes your team more effective • Discover new features before implementation 31

Slide 32

Slide 32 text

FooLab Mind Maps

Slide 33

Slide 33 text

FooLab Systems Analysis and Design and/or UML book

Slide 34

Slide 34 text

FooLab Next Steps • I will tweet the slides: @afilina • Please leave feedback: http://bit.ly/anna-docs 34

Slide 35

Slide 35 text

FooLab Ask me which software I use. astah, Balsamiq