Expert Systems: Components, Advantages, and Reengineering

1. Force of Expert Systems

Diagnosis: Obtaining a ruling from observable characteristics (symptoms, sensors, etc.).

Prediction: Deducing possible consequences from a given situation.

Interpretation: Converting information from physical sensors into a logical description.

Planning: Developing a sequence of actions to be implemented in a particular temporal order.

Monitoring: Contrasting solutions from an expert system with planned withdrawals.

Education: Diagnosing, treating, and repairing the behavior of learners or students in certain situations (e.g., flight simulators).

Control: Governing the overall system performance.

Design: Configuring or creating objects under certain restrictions.

Debugging and Repair: Providing a solution to a bug (debug) without implementing it and generating a plan for implementing the solution.

2. Components of an Expert System

Knowledge Base: Stores expert knowledge using a knowledge representation language, often in rule format.

Fact Base: Contains information gathered by the expert system, representing the current state of the problem.

Inference Engine: Compares facts with the knowledge base to determine the next step in finding a solution.

Knowledge Acquisition Module: Standardizes and validates user-entered data.

Explanation Module: Explains the steps taken to reach a solution.

User Interface: Provides a simple and streamlined user interaction.

3. Advantages of Expert Systems Compared to Human Expertise

Expert systems faithfully reflect human experience and are a tool for capturing, formalizing, and documenting it.

FeatureHuman ExpertiseExpert System
PersistenceLost over timePermanent
DocumentationDifficultEasy
TransferabilityDifficultEasy
PredictabilityUnpredictable, can failConsistent (if the solution is known)
CostExpensiveAffordable

4. DRA Model

Based on the sequential linear model, this model introduces a “component” element, splitting the project into independent parts for parallel development by different teams.

Disadvantages: Project decomposition and composition, coordinating efforts.

Advantages: Great speed in developing the project.

5. Formal Methods Model

This theoretical model translates project requirements into mathematical notation. The problem is then analyzed and verified using mathematical methods, allowing for automatic error correction.

Disadvantages: Expensive, requires specialized engineering education, communication and validation with the customer can be challenging, limited project applicability.

Used in high-security and complex environments (e.g., space programs) and scientific systems.

6. Reengineering Activities

Inventory Analysis

Software companies should maintain a thorough inventory of developed applications, including:

  • Application name, year of creation, number of updates/changes, employee effort
  • Date of last change, system environment, related applications
  • Accessed databases, number of errors in the last 18 months
  • Number of installations, maintainability schedule
  • Estimated longevity, annual maintenance and operation costs

This inventory should be updated at least twice a year.

Restructuring Documents

Case 1: System too complex and old with no remaining lifespan. Generating new documentation is not worthwhile.

Case 2: New material is generated only for maintenance (documentation of new software). Existing documentation can be gradually completed.

Case 3: Full system documentation must be created, focusing on essential aspects.

Reverse Engineering

Extracts an abstract representation from existing code to describe its operation, often using analysis and design models.

Code Restructuring

Analyzes existing code in robust applications with weaknesses in specific modules, identifying problems and correcting, restructuring, or improving them for efficiency.

Assumes a solid application architecture, focusing on improving specific code modules while checking for side effects.

Data Restructuring

Restructuring data is crucial for adapting and improving applications, often requiring a higher level of abstraction and reverse engineering to understand the problem’s nature and deduce the application’s analysis and design.

A classic example involves legacy applications using flat files with character strings separated by special characters or flags marking different fields. Restructuring often involves adding fields to tables or creating new tables.

Data restructuring aims to create a complete entity-relationship architecture. Due to the strong influence of data on the program, data restructuring often necessitates code restructuring and even changes in program architecture.

Progressive Engineering

Automatically collects requirements for a software product or application and uses them to improve the software. Applied to specific domains, often associated with CASE tools for database generation and improvement.