SlideShare une entreprise Scribd logo
1  sur  36
Lazy
Programmer’s
Guide To Writing
Spec
Inno Tech Boot Camp 2018 July #ITBC2
Leong Hean Hong
Agenda
● Purpose
● Feature List
● Business Process
● Business Rule
● Other Diagrams
● API Spec
Why Should I Write Spec?
● Confirm what user wants
● Make sure we are developing the right software
● Clarity among team members
● Ensure members work toward same direction
Tip: Do not write something nobody reads
Guideline
● Start from high level, go more detail as you need
● If not sure need to write or not, write anywhere
● Be as specific as possible
● Prefer image over words
● Make it easy to read & understand
● Assume reader of spec document is confused, with no prior knowledge of this project
Let’s build
an eWallet!
Feature List
Functional vs Nonfunctional
Requirements
● Functional Requirements - that is of value to user
● Nonfunctional Requirements - user don’t care
Functional Requirements
● An user can transfer money to another user
● User can topup wallet using different payment methods (Credit Card, IB, scratch card)
● User can check balance
● User can receive money by sending URL link to payer
● User can transfer money by scanning QR code
Nonfunctional Requirements
● Network communication must be secured (HTTPS)
● Compliance with KYC, AML/CFT
● It need to support at least 200 concurrent transactions
● Log all transactions
● Daily reconcile
Business Processes
Business Process
● Sequence of actions user performs to achieve an objective.
● User can be human or system
● Example of objective
○ Scan QR code to make payment
○ Generate and send payment link
● Method
○ Writing
○ Flowchart
○ Sequence Diagram
Example: Writing
1. Merchant use system to generate QR code.
2. Merchant print and display QR code.
3. Payer scan QR code.
4. Payer types in payment amount.
5. Payer confirms payment with 6-digits PIN.
Method: Writing
● Clearly define actors (“who”) and actions (“what”)
● Hard to express if/else, loop
● Wordy
Example: Flowchart
Method: Flowchart
● Can express if/else, loop
● Take up large space
● Flow chart symbols: http://bit.ly/2zanyxb
○ Start/end
○ Process
○ Display
○ Decision
● Lack of actor information
Example: Sequence Diagram
Method: Sequence Diagram
● Clearly define actors and actions
● Hard to express if/else, loop
● Shows interactions between multiple actors
● Sequence from top to bottom
Business Rules
Business Rules
● Imagine “if/else” and “switch” for business.
● Make decision based on conditions/criteria
Business Rule Example (1)
Amount < $50.00 Amount ≥ $50.00
ID Verified Y Y
ID Not Yet Verified Y N
Rules for allowing transfer:
Business Rule Example (2)
Topup Amount Reward
< $50 1%
$50.00 ~ $99.99 2%
$100.00 ~ $199.99 3%
≥ $200.00 4%
Other Diagrams
System Diagram
System Diagram
● High-level concept
● Relationship between different (sub)systems
Module Diagram
Module Diagram
● Dependency: top depend on bottom
● Composition: module contain submodules
Relationship Diagram
Relationship Diagram
● Different from entity-relationship diagram
● Good for showing high-level concepts
● Describes relationships
● May not be direct reflection of DB schema
API Spec
API Spec
● Test/Production URLs
● Authentication (e.g. Token, HTTP Basic Auth)
● Listing of each endpoint
○ Brief description
○ List all parameter (name, data type, optional?, description, data size, values)
○ Example request
○ Example response
Reference:
● Xpressify, Mailgun
Ending Note
● Inspired by UML Diagrams (highly recommend you read up on it http://bfy.tw/5dZO)
○ Class Diagram
○ Activity Diagram
○ Sequence Diagram
○ State Machine Diagram
Lazy Programmer’s Guide To Writing Spec

Contenu connexe

Similaire à Lazy Programmer’s Guide To Writing Spec

Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UXBehaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UXJohn Patterson
 
Getting started with Stripe
Getting started with StripeGetting started with Stripe
Getting started with StripeTechMagic
 
Event sourcing and CQRS
Event sourcing and CQRSEvent sourcing and CQRS
Event sourcing and CQRSRezwan Rafiq
 
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...Hanapin Marketing
 
SCM || CRM || Intrasoft - Case Study
SCM || CRM ||  Intrasoft - Case StudySCM || CRM ||  Intrasoft - Case Study
SCM || CRM || Intrasoft - Case StudyMufaddal Nullwala
 
Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...Kok Tong (K.T.) Khoo
 
figo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech Startupsfigo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech StartupsLars Markull
 
Online real estate management system
Online real estate management systemOnline real estate management system
Online real estate management systemnishi711
 
Data analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedbackData analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedbackAnkit Jain
 
A journey from Vision to product
A journey from Vision to productA journey from Vision to product
A journey from Vision to productRitesh Mehrotra
 
Become a Sitecore Entrepreneur
Become a Sitecore EntrepreneurBecome a Sitecore Entrepreneur
Become a Sitecore EntrepreneurAnant Corporation
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Roleeleksdev
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first classLibbySchulze
 
Quickbooks training in Chandigarh
Quickbooks training in ChandigarhQuickbooks training in Chandigarh
Quickbooks training in ChandigarhAshish Mamgain
 
TGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptxTGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptxNalinikantaPatra1
 
Interpreting RL Trading Agents
Interpreting RL Trading AgentsInterpreting RL Trading Agents
Interpreting RL Trading AgentsBryanYekelchik
 

Similaire à Lazy Programmer’s Guide To Writing Spec (20)

Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UXBehaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
 
Getting started with Stripe
Getting started with StripeGetting started with Stripe
Getting started with Stripe
 
Event sourcing and CQRS
Event sourcing and CQRSEvent sourcing and CQRS
Event sourcing and CQRS
 
SRS for Google Pay(Gpay)
SRS for Google Pay(Gpay)SRS for Google Pay(Gpay)
SRS for Google Pay(Gpay)
 
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
Lead Score Web Visitors For KILLER Remarketing, Upsell and Exit Intent Strate...
 
SCM || CRM || Intrasoft - Case Study
SCM || CRM ||  Intrasoft - Case StudySCM || CRM ||  Intrasoft - Case Study
SCM || CRM || Intrasoft - Case Study
 
Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...Presentation on developments in hiring and fintech for HKU Executive certific...
Presentation on developments in hiring and fintech for HKU Executive certific...
 
3 types of monitoring for 2020
3 types of monitoring for 20203 types of monitoring for 2020
3 types of monitoring for 2020
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
figo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech Startupsfigo Banking API: A Banking Service Provider for FinTech Startups
figo Banking API: A Banking Service Provider for FinTech Startups
 
Online real estate management system
Online real estate management systemOnline real estate management system
Online real estate management system
 
Data analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedbackData analytics in fraud detection and customer feedback
Data analytics in fraud detection and customer feedback
 
PPT.pptx
PPT.pptxPPT.pptx
PPT.pptx
 
A journey from Vision to product
A journey from Vision to productA journey from Vision to product
A journey from Vision to product
 
Become a Sitecore Entrepreneur
Become a Sitecore EntrepreneurBecome a Sitecore Entrepreneur
Become a Sitecore Entrepreneur
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Role
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first class
 
Quickbooks training in Chandigarh
Quickbooks training in ChandigarhQuickbooks training in Chandigarh
Quickbooks training in Chandigarh
 
TGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptxTGL - ERP for Logistics.pptx
TGL - ERP for Logistics.pptx
 
Interpreting RL Trading Agents
Interpreting RL Trading AgentsInterpreting RL Trading Agents
Interpreting RL Trading Agents
 

Plus de Hean Hong Leong

Plus de Hean Hong Leong (19)

Telegram Bot
Telegram BotTelegram Bot
Telegram Bot
 
How To Work With UI/UX Designer
How To Work With UI/UX DesignerHow To Work With UI/UX Designer
How To Work With UI/UX Designer
 
How not to be a mediocre developer!
How not to be a mediocre developer!How not to be a mediocre developer!
How not to be a mediocre developer!
 
Gitflow Workflow
Gitflow WorkflowGitflow Workflow
Gitflow Workflow
 
Developing Better Software
Developing Better SoftwareDeveloping Better Software
Developing Better Software
 
Go serving: Building server app with go
Go serving: Building server app with goGo serving: Building server app with go
Go serving: Building server app with go
 
Webhook & Mailhook
Webhook & MailhookWebhook & Mailhook
Webhook & Mailhook
 
Hacker Culture
Hacker CultureHacker Culture
Hacker Culture
 
Do More With Message Queue
Do More With Message QueueDo More With Message Queue
Do More With Message Queue
 
Building A Software Team
Building A Software TeamBuilding A Software Team
Building A Software Team
 
What the HACK is HHVM?
What the HACK is HHVM?What the HACK is HHVM?
What the HACK is HHVM?
 
Developing MyTrafficCam
Developing MyTrafficCamDeveloping MyTrafficCam
Developing MyTrafficCam
 
Mobile Payment
Mobile PaymentMobile Payment
Mobile Payment
 
Android and web services
Android and web servicesAndroid and web services
Android and web services
 
Color filters for the dummies
Color filters for the dummiesColor filters for the dummies
Color filters for the dummies
 
Android security
Android securityAndroid security
Android security
 
PHP_Frameworks_Discussion
PHP_Frameworks_DiscussionPHP_Frameworks_Discussion
PHP_Frameworks_Discussion
 
Rubik Cubes For Geeks
Rubik Cubes For GeeksRubik Cubes For Geeks
Rubik Cubes For Geeks
 
Geekcamp Android
Geekcamp AndroidGeekcamp Android
Geekcamp Android
 

Dernier

VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profileakrivarotava
 

Dernier (20)

VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profile
 

Lazy Programmer’s Guide To Writing Spec