90 likes | 223 Views
Prototyping. • Pure Prolog is ideal for prototyping expert systems (as well as other applications) • For a prototype, the idea is to get a system running for scrutiny by some clients. There is little time for designing the system.
E N D
Prototyping • Pure Prolog is ideal for prototyping expert systems (as well as other applications) • For a prototype, the idea is to get a system running for scrutiny by some clients. There is little time for designing the system. ---> A prototype is a feasibility study (and a sales pitch). • The distinction between shell and knowledge base can be loosened: - encode the knowledge base as pure Prolog rules, and include shell utilities in it. Use vanilla backward chaining. • One can always use an existing commercial shell to throw together a prototype, but Prolog is just as useful for this. It is also more readily available, and more adaptive to special requirements.
Prototyping Example prototype: Sales Advisor • system which sells mainframe software • Knowledge base breakdown: 1. Qualification: see whether this a good prospective customer 2. Objective Benefit Feature analysis (OBF): match customer needs with product benefits 3. Competitive analysis: way to stress product strengths based on competition weaknesses 4. Situation analysis: whether products will run in prostpect's shop 5. Miscellaneous
Prototyping Approach • Encode the knowledge base directly in plain Prolog • incorporate I/O and other utilities in the KB rules as needed (won't be purely declarative perhaps) • no explanation • "shell" will consist of a few driver utilities, and some advising utilities • Later, when we win the bid, we can create a more complete system following techniques earlier in the course
Prototyping Inference engine • not a meta-interpreter, but code which can drive execution of Prolog KB rules
Prototyping User interface: • very important aspect of prototypes • most important feature: cosmetics - eg. windows (helps to have a ready library available) • can kludge some things - eg. can incorporate some elementary error detection and user-friendly features ( a client won't be impressed if the prototype appears stupid, or crashes on spelling errors )