470 likes | 612 Views
System design and implementation. Design principles and quality criteria CommonKADS system architecture Four steps in creating a Design Model Sample implementations. From analysis to design. System design. Input: knowledge model = problem-solving requirements
E N D
System design and implementation Design principles and quality criteria CommonKADS system architecture Four steps in creating a Design Model Sample implementations
System design • Input: • knowledge model = problem-solving requirements • communication model = interaction requirements • other models = “non-functional” requirements • Output: • specification of a software architecture • design of the application within this architecture
System architecture • Description of software in terms of: • decomposition into sub-systems • choice of control regime(s) • decomposition of sub-systems into software modules • Focus point in the design process • Reference architecture for CommonKADS-based systems Cf. textbook of Sommerville (1995)
Structure-preserving design “Preserve both the content and the structure of the analysis model during design” • Central modern design principle • Design is seen as “adding implementation-specific detail to the analysis results” • Preservation of information is key notion • Directly related to quality criteria
Design quality criteria in general • Minimization of coupling • Maximization of cohesion • Transparency • Maintainability
Quality criteria for KS design • Reusability of design elements / resulting code • Maintainability and adaptability • one-step development is usually unrealistic, especially for knowledge-intensive systems • Explanatory power • Knowledge-elicitation/refinement ease • knowledge changes over time
Step 1: specify global architecture • Principle: separate functionality from interface issues • MVC architecture: • developed for Smalltalk-80 • distinction between application objects and their visualizations • central control unit with event-driven regime
Sub-system: application model • contains application data and functions = knowledge-model objects • data: • knowledge bases • dynamic data manipulated during reasoning (dynamic roles) • functions • tasks, inferences, transfer functions
Sub-system: views • visualizations of application data and functions • multiple visualizations possible • aggregate visualization of multiple application objects • requires architectural update/integrity mechanisms • mapping table • message protocol for state changes of objects
Sub-system: controller • central “command & control unit” • provides handlers for external and internal events • enables activation of application functions • may define its own “control” views • may have internal clock plus agenda => demon-like behavior
Some remarks about the MVC architecture • Developed in an object-oriented context • Is in fact functional decomposition of “objects” • Use not necessarily restricted to an O-O design/implementation approach • But: message passing paradigm fits well with required architectural facilities
Decomposition of the application model sub-system • Criteria • should enable structure-preserving design • should enable integration with other SE approaches • Options • functional or object-oriented decomposition • Choice: object-oriented decomposition • fits well with declarative character of object specifications in the knowledge model (task => object) • simplifies mapping onto O-O implementations
Step 2: Identify target implementation platform • Customer-specific requirements often constrain this choice = reason for early placement in the process • Software choice is nowadays much more important than hardware choice not true in case of real-time application • If choice is more or less free: • consider to postpone until completion of step 3
Platform criteria (1) • Library of “view” object classes may be a considerable amount to construct yourself • Declarative knowledge representation formalism? idem • Standard interfaces to other software • e.g. ODBC, CORBA • often required
Platform criteria (2) • Language typing facilities • weak typing usually implies more work in mapping analysis model (see Step 4a) • Control facilities/protocols • CommonKADS support • dedicated platform extension (e.g. object library) • link with CASE tool supporting CommonKADS
Example environments: Prolog • View library: vendor-dependent • Declarative knowledge representation • DB interfaces: vendor-dependent • Weak language typing • No standard event-handling/message-passing control protocols • UvA tools provide some support (API)
Example environments: Java • library of views • no declarative knowledge representation • DB interfaces • C++-like typing facilities • control facilities: e.g. multi-threading • currently no CommonKADS support
Example environments: AionDS 8.0 • Library of view objects • (Semi-)declarative knowledge representation • ODBC/CORBA interfaces • O-O typing facilities (including relations) • O-O message passing protocol • CommonKADS support • dedicated framework
Step 3: Specify architectural components • Specify component interfaces • Design general architectural facilities • view update mechanism
Controller facilities • activation/termination of application functions • user interrupts for trace/background information • function abortion • handling transfer functions
Application-model facilities (1) • Task: • initialization and execute methods • Task method: • control-language elements • control-language declarativity • Inference • execute, more-solutions?, has-solution? • linking to inference methods
Application-model facilities (2) • Inference method • method library? • enable many-to-many relation between inference and method • Transfer function • implemented via message-passing pattern • Dynamic role • data types allowed: “element”, “set”, “list” ?! • access/update operations: select, subtract, append,
Application-model facilities (3) • Static role • access/query functions • Domain model • representational format • access/query functions • modification/analysis functions • Domain construct • (only inspected)
View facilities • Standard graphical visualizations • Generation of external formats • e.g. SQL query • Architectural view-update facilities • mapping table • message protocol
User interfaces • End-user interface • consider special facilities: natural language generation, …. • use domain-specific visualizations => depends on application design • Expert interface • trace interface • edit/refine interface for knowledge bases
Step 4: specify application within architecture Step 4a: “map analysis info onto architecture” • ensures structure-preserving approach • manual mapping is cumbersome Step 4b: “add design details” • list of design details that need to be added to complete operationalization of an analysis model
Step 4a: map analysis info onto architecture • mapping tools have been constructed • example: VOID API • see web-site for information • extent of mapping depends on built-in design decisions in architecture
Application design of controller • Main input: communication model • Often “hand work” needed • Minimum: bootstrapping procedure • Other functions: • handling explanation requests • user control over reasoning process • reasoning interrupts / strategic control • enabling “what-if” scenario’s
Application model design Minimal set of application-design activities: • For each task method: • construct operational control structure • For each dynamic role: • choose a data type • For each inference: • identify a map • write a method-invocation call for the inference
Application design of views • Select a view for each application object, if required • Guideline: for end-user interface use views as close as possible to domain-specific formats • too often system designers just impose on users what they like themselves • each domain has its own “tradition” in representing information (and usually for a good reason)
Prototyping: reasoner sub-system • When needed? • Newly constructed elements in knowledge model • Gaps in domain knowledge • In general: knowledge-model V&V • verification: “is the system right” • validation: “is it the right system” • Should be supported by implementation platform • should be a matter of days to construct a prototype
Prototype: mock-up agent interface • Test mock-up interface without full application functionality • When needed: • complex external interaction (e.g.; HOMEBOTS) • complex view formats • complex view aggregations
Distributed knowledge systems • Reasoning service • application model functions as services • no UI • Knowledge-base/ontology server • example: GRASP server for art objects • Method service • distributed system realized through a set of methods • Combinations
Sample implementations • Housing application • Source code at web-site • “Academic” implementation • public-domain Prolog • “Business” implementation • Aion8 • Experiences show that prototypes of “running knowledge models” can be built within days
Aion8 system for “housing” • Realized as O-O “framework” • roles, interfaces => multiple inheritance • Hollywood principle • Includes task-template library facility • Default implementation of inferences
Key points • Design as a structure-preserving refinement process • Four-step design process • Support can be provided by: • CommonKADS architecture • knowledge/communication-model transformation tools • dedicated platforms with “CommonKADS packages” • “Rational design: how and why to fake it” (Parnas & Clements)