-
Notifications
You must be signed in to change notification settings - Fork 42
Capturing Requirements
Overview
The very first items that need to be discussed and documented are the business requirements for the project. This is the “why” of the project. These are the fundamental objectives that need to be met to ensure the project has succeeded and are an artifact of discussions between the client and Project Manager (PM). They should be very high level and reflect larger strategic objectives for the client. Also, they should take in account any technical, time, and budgetary constraints that may impact the scope of the project. The size of the project will dictate how lengthy the business requirements will be, but they generally range from a few sentences or bullet points up to a page or two in length. Some brief examples of effective business requirements:
- Better communicate our community building efforts to our readers
- Reduce the frequency of items being abandoned in carts to increase sales volume
- Conduct a meeting with the business owner to discuss the business requirements
- Identify the core non-technical requirements to the project
- Identify the following constraints of the project:
- Technical
- Time
- Business owner should provide a Policies and Procedures document documenting all the business logic of the project
- Record all requirements shared in the meeting in a document and share it with the business owner for reference
After the business requirements have been gathered, the next step is to explore possible solutions to them and document the result. This is the “what” of the project. Ideating potential solutions should involve team members from as many different disciplines as possible to consider all the alternative approaches to meet the business requirements. This stage could potentially create a crude proof of concept or mockup to verify the solution is viable, but the most important artifact are the rules that dictate how the solution will look and work. Without getting into technical details, determine what needs to happen in order to satisfy the business requirements. These rules should detail the entire workflow including “error paths” that account for invalid data, dependency failures, API outages, etc.
The PM should lead a meeting with representatives of back-end development, front-end development, design/user experience (UX), and quality control (QC) to develop a complete picture of the feature before sprint planning begins. For larger projects, this meeting may need to be repeated as the sprint retrospective cycle provides additional insight. It is vital that the functional requirements are accurate as they become the basis for work estimates and QC test scripts. Functional requirements would look like:
- “The events module should automatically display the next 4 upcoming events.”
- “An email should automatically be sent to users 4 hours after adding an item to their cart if it has not been subsequently removed or purchased.”
- Conduct a meeting with the development team to discuss the functional requirements
- Identify and propose a technical solution for the business requirement
- Prepare a mockup or documentation of how the solution’s functionality will satisfy the business requirement
- Conduct a meeting with the business owner to share and verify the functional requirements with them
Once the functional requirements are complete, the final step is to detail how the solutions will satisfy the functional requirements, and thereby meet the business requirements. This is the “how” of the project. Despite the artifact of these requirements being technical in nature, to avoid later rework it is imperative to consider all aspects of the feature to gain holistic view and develop a complete solution. Be mindful of other features, the site editor experience, dependencies such as APIs and third-party libraries, how back-end and front-end code will be integrated, performance, security, etc. when writing the technical requirements.
Again, the PM should lead meetings with the entire team to review the functional requirements and determine the best technical solutions – potentially prior to each sprint being planned. The feature should be broken down into smaller component tasks that can be completed in one day at this point. Anything larger must be further broken down in order to allow for the most accurate work estimation and burn-down reporting. These requirements will be used as the blueprint for each sprint, so it is vital that they are accurate, complete, and discrete. Based on the previous functional requirement examples, technical requirements would look like:
- “Upon successful API retrieval of the JSON object, the event title, date, time, and location placeholders will be dynamically replaced via JavaScript”
- “Removing an item from the cart or completing the checkout process will trigger an API call to HubSpot update the user workflow”
- Create an epic (collection of stories) in the project management software (Currently Pivotal Tracker)
- For each story, provide the necessary information to complete the story (business value, acceptance criteria, reference documents)
- Conduct the Sprint Planning meeting with the Development team
- Discuss the epic and the stories it contains
- Split stories that are large into smaller stories that can be shippable on their own (if necessary)
- Add additional stories (if necessary)
- What does this project/feature need?
- Who is this project/feature for?
- Why is this project/feature needed?
- What is the input of this project/feature?
- What is the output of this project/feature?
- What are the technical constraints for this project/feature?
- What are the time constraints for this project/feature?
- Is there a current implementation or documentation of this project/feature? If so, what is it?
##Capture the Functional Requirements The Business Analyst needs to update the below checklist
- API Requirement Capture
- ERP Requirement Capture
- Issue Capture
###API Requirement Capture
- Define the API endpoint, if the requirment is not to update Existing API else mention the existing API endpoint.
- Define the mandatory and optional input with input type
- Define validations of inputs and the validation messages with status code
- Define the success condition, yield and status code with success message and message format
- Define the filure condition, yield and status code with error message and message format
###ERP Requirement Capture
- Attach the workflow diagram if any
- Define if the requirement needs Form/Page/Portal 2.1. Atatch wireframe 2.2. Define no of Form/Page/Portal 2.3. Define each Form 2.4. Define each Page/Portal design and functionalities
- Define Scheduled events
- Define if the requirement(s) edits the existing form or feature in the core frappe apps
###Define Form
- Capture Form Requirements
- Define client/server side validations
- Define the Actions on after insert/update/submit/save/before save/before submit/cancel/before cancel/trash..etc.
- Define filters for the fields in the form
- Define workflow for the form
###Define Actions
- Define notifcation
- Define validation
- Define auto defined or auto calculated fields
- Condition for the action
- Define if the action create/delete/update any record(s) 5.1. Create a record for an existing form, then mention the form(s) 5.2. Create a record for a new form, then define the form(s) 5.3. Mention the codition to fecth the record/field for update/delete
###Define Notification
- Define the recipients
- Define Mode of notification (Push/System/Email/System-Email/Email-Push/System-Push/All/None)
- Define When the notification triggerd (Eg: On Create/Submit/On Workflow/Date and Time)
###Define auto defined or auto calculated fields For example the total in an invoice is an auto calculated field and full name in the employee is an auto defined field from first name and last name
- Define the field
- Define the conditions and fileds that used for the auto calculation or definition
###Define filters for the fields
- Define the field
- Define the conditions for the field filter. Same field can have multiple filter based on the condition
- Define the filter
###Workflow for the form
- Define notification required 1.1. Use Standard notification? 1.1. Define custom notifcation required 1.2. Define the custom format and message
- Define the assignees, role and condition
- Define the sates
- Define the transactions
###Define Scheduled Events
- Define the frequency Hourly/Monthly/Daily/Weekly/Cron Time
- Define actions
###Define edit existing form/feture from the frappe apps
- Define core field changes
- Define core action changes(Define Action)
- Define method/class overrieds
###Define Core Field Changes
- Define the field
- Define the field property
- Define the field alreday exist in th form or not
- Define the condition for update the value/property of the field
###Define method/class overrieds
- Define the existing method/class
- Define the changes in detail
Define the below settings for the DocType:
- Name
- Module
- Is Submittable
- Do you want your data to be allowed to be modified after saving?
- Is Child Table
- Do you want the data in this DocType to be linked in another document as a table?
- Is Single
- Will this DocType hold multiple records or just 1?
- Is Tree
- Need more information about this
- Quick Entry
- Do you need to quickly enter data into this DocType?
- Track Changes
- Do you want to track any changes that happen on each document?
- Track Seen
- Do you want to track who has seen/opened the document the first time?
- Track Views
- Do you want to track who has viewed the documents every time they open it?
- Custom
- Any Custom DocType will have this checked and cannot be modified
- Beta
- Do you want the development of the DocType to be in phases and indicate to users that they are not seeing the final version of the DocType?
- Is Virtual
- Do you want the data to be saved outside of ERPNext? (rare case)
For each field, determine the following information:
- Label
- Type (Refer to ERPNext Documentation for list and description of each type)
- Name
- Length
- Used in specific cases to limit the length of the field (e.g. text field)
- Mandatory
- Is it required for the document to be saved/submitted?
- Index
- Do you want to optimize searching by this field extensively?
- In List View
- Do you want this field to be displayed when viewing a list of all documents in this DocType?
- In Standard Filter
- Do you want this field to be displayed by default when filtering through the documents in this DocType?
- In Preview
- Do you want this field to be displayed in a quick preview when hovering over it?
- Allow in Quick Entry
- Should this field appear in the quick entry form?
- Bold
- Options:
- For Links: enter the DocType as range
- For Select: enter the list of options, each in a new line
- Default
- What is the default value for this field if it is left empty?
- Fetch from
- If the field is linked to another doctype, which field should we fetch the value from?
- Should we still fetch if the field from which we are fetching from is empty?
- Permissions
- Based on what condition should the value be displayed?
- Should it be hidden?
- Should it be read-only? (Non-modifiable)
- Should it be unique? (Not repeated in the DocType)
- Should it be set only once? (locked after it is set)
- Permission level: by default everything is 0
- Ignore user permissions?
- Should it be hidden from reports?
- Do you want the value of this field to load custom scripts?
- Property Depends on
- Should this field become mandatory under a specific condition?
- Should this field become read-only under a specific condition?
- Display
- Should this field be filterable?
- Do you want to disable copying this field?
- Do you want to hide this field from the Print format?
- Print width: pixels
- Width: pixels
- Columns: number
- Description: Describe the field
- Autoname: How would you like the documents in the DocType to be named?
- Based on a field in the DocType
- Using a single naming series (e.g. P000001) that is applied to all
- Define multiple naming series (e.g. SO00001 and PO00001) that can be selected
- Prompt the user creating the document for a name
- Special format (combination of fields and naming series)
- Name Case
- Title Case
- UPPERCASE
- Do you want to allow renaming?
- Description for the naming logic
- Documentation link (if available) to explain how the naming is done
- Image Field
- Which image field in the doctype should be displayed when viewing the document?
- Timeline Field
- Do you want a custom timeline other than the one provided by ERPNext?
- Max Attachments
- Do you want to set a maximum number of attachments the document can have?
- Hide Sidebar and Menu
- Hide Copy
- Do you want to restrict users from copying the form?
- Allow Import (via Data Import Tool)
- Do you want to import bulk data into the DocType?
- Allow events in timeline
- Allow Auto Repeat
- Do you want to automate creation of documents?
- Title Field
- Which field should appear as the title of the document being viewed?
- Search Fields
- What fields do you want to search by?
- Default Print Format
- Default Sort Field
- Which field should be used by default to sort the list of documents?
- Default Sort Order (Ascending/Descending)
- Show In Module Section
- Do you want to see the DocType inside the Module section?
- Icon
- Color
- Show Preview Popup
- Do you want a preview popup to appear when hovering over a document of this DocType?
- Make “name” searchable in Global Search
- Do you want to be able to search for your DocType in the Global Search?
- Default Email Template
- Allow document creation via Email
- Do you want to create documents by sending an email to a specific address?
- Do you want to specify permission rules based on roles?
- Is the DocType restricted to a specific Domain?
- Do you want to restrict searching?
- Do you want to restrict creating?
Do you want specific actions to be performed on the documents? If so, mention them and what they are supposed to do
Is your document linked to another?
Do you want certain documents to automatically be created or perform certain changes on a periodic basis?
Do you want documents to be assigned to users/employees based on specific conditions?
Does your document need to follow a specific workflow? If so, determine:
- Number of steps in the workflow
- Actions to be taken in each workflow step
- Determining the next-in-line person for each workflow step and how they will be selected
- Define what is the print formats needed and the look.
Use interactive Mockups to show the Use Cases for each function defined in the Business Requirements
Follow the Scrum guide to create User stories mentioning the following in the story:
- Business Value
- Acceptance Criteria
- Attachments of references (business requirements, functional requirements, and any additional references)