26 Jan Give Me Smart Requirements
Artificial Intelligence (AI) has been explored and developed in universities and startup companies throughout the developed world for decades, but is still struggling to reach the mainstream. There are many companies that effectively use intelligent processes and algorithms to improve automated capabilities, including fuzzy matching to deduplicate customer names and match bone marrow donors, and neural networks to track stock behaviors and convert speech to text. I submit that one way to overcome the barriers to entry in the broader enterprise processing space, is for intelligent capability developers to improve development methodologies, and add discipline to the wild-wild west of AI. Today I want to talk about defining the requirements that characterize the capabilities and outcomes of such systems.
|Understanding Context Cross-Reference
|Click on these Links to other posts and glossary/bibliography references
|Methodology or Mythology
|Planning a Knowledge Project
|Johnson 2014 (SCRUM)
Computers are not particularly useful to businesses unless they meet users’ real needs and automate their day to day processes. SMART requirements help communicate these needs to developers accurately and completely. The acronym has a few interpretations, but here is my favorite:
- Specific (indivisible),
- Relevant (to users and outcomes),
These standards for requirements apply to all projects, whether for intelligent systems design or otherwise. Articulating SMART requirements is critical to project success, but there’s more. Validating and implementing the requirements must be done with three things in mind:
- Vertical Alignment: Each requirement reflects something needed to accomplish the explicitly stated vision and mission of the organization’s leadership.
- Horizontal Alignment: Consistency across the organization, especially across silos, improves interoperability and maintainability – start early in the project requirements definition cycle to avoid painful decisions or consequences later.
- Traceability: Each requirement should be reflected in both physical design elements and test plans, and even through to support scripts for long-term maintenance.
Defining Capabilities and Outcomes
Whether for intelligent systems or other automated capability project, different types of requirements need to be considered:
1) Business requirements:
2) Technical requirements:
These are technical issues such as performance, load, company automation standards and interoperability that can be described in terms of platforms, capacities and data flows.
The process of gathering requirements for expert systems can either be done in the same way as for any other project, or it can be wrapped into the knowledge-engineering process. We advocate separate requirements and knowledge-engineering processes because the deliverables are different. Furthermore, the requirements process should be complete, with validated, prioritized requirements, and preferably test plans as well, before design begins. Knowledge engineering continues throughout the design and build phases.
Here are some sample requirements for an English to French language translator:
1) Business Requirements –
- Correctly interprets 90% of English text
- Correctly generates 90% of French text
- Accepts input from web interface
- Accepts input from mobile device interface
- Translates text as-is with no pre-editing
- Translated text mirrors source formatting
- Interface requires no more than 1 hour training
2) Technical Requirements –
- Supports up to 1000 concurrent users
- Translations delivered at 5000 words per minute
- Authenticates users against corporate LDAP
- Front-end standard Wintel/Android/iOS
- Middle tier java services with Spring framework
- Interface to corporate Oracle database
- Runs on Linux servers / virtual
Many organizations need to specify some of the specific technologies required if it is to interoperate with existing infrastructure. Many of these specific requirements are not needed if the solution is hosted or Software as a Service (SaaS), often making off-premise solutions more desirable.
Almost everything in this post applies equally to any business technology project. The unique elements of Intelligent Systems development projects are the knowledge engineering aspects. I discuss those processes in the following posts:
|Click below to look in each Understanding Context section
|Perception and Cognition
|Language and Dialog
|Apps and Processes
|The End of Code