CYBERMINER WEB SEARCH ENGINE Muaz Jamshed Russell Elliott
CYBERMINER WEB SEARCH ENGINE Muaz Jamshed Russell Elliott Joseph Martinez SOFTWARE ARCHITECTURE
Outline n n Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE 2
Introduction n n What is CYBERMINER Requirements of CYBERMINER Functional Requirements Non-Functional Requirements SOFTWARE ARCHITECTURE 3
What is CYBERMINER n n n A Web Search Engine Search the websites for the users KWIC system will be integrated with CYBERMINER web search engine to perform the search on the keywords enter by the user SOFTWARE ARCHITECTURE 4
KWIC System n n n The KWIC Software System is an index system accepts an ordered set of lines Any line shall be “circularly shifted” by repeatedly removing the first word and appending it to the end of the line SOFTWARE ARCHITECTURE 5
Outline n n Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE 6
Requirements of CYBERMINER n n Functional Requirements Non-Functional Requirements SOFTWARE ARCHITECTURE 7
Functional Requirements n n n CYBERMINER shall accept a list of keywords CYBERMINER shall return a list of URLs whose descriptions contain any of the given keywords CYBERMINER shall use another software system, KWIC index system, to maintain a database of URLs and descriptions SOFTWARE ARCHITECTURE 8
Functional Requirements Cont. n n KWIC shall accept an order set of lines Each line consist of two parts URL part Descriptor part SOFTWARE ARCHITECTURE 9
Functional Requirements Cont. n n n The URL part syntax is URL : : = ’http: //’ identifier ‘. ’ [‘edu’ | ‘com’ | ‘org’ | ‘net’] identifier : : = {letter|digit}+ letter : : = [‘a’ | ‘b’ | ‘c’| …. |’Y’| ‘Z’] digit : : = [ ‘ 1’ | ‘ 2’| ‘ 3’| ‘ 4’ |…. |’ 9’| ‘ 0’] The descriptor part, whose syntax is: identifier {“ “ identifier}*. SOFTWARE ARCHITECTURE 10
Functional Requirements Cont. n n The descriptor part of any line will be “circularly shifted” by repeatedly removing the first word and appending it at the end of the line. The KWIC index system will output a list of all circular shifts of the descriptor parts of all the lines in alphabetically ascending order, together with their corresponding URLs SOFTWARE ARCHITECTURE 11
Non-Functional Requirements CYBERMINER system shall be n Easily understandable n Portable n Reusable n Enhanceable n User-friendly n Adaptable SOFTWARE ARCHITECTURE 12
Outline n n Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE 13
CYBERMINER System Architecture n n n The CYBERMINER system is an extension of the KWIC System The KWIC System uses the abstract data type architecture Therefore the CYBERMINER system also uses the abstract data type architecture SOFTWARE ARCHITECTURE 14
CYBERMINER Design Diagram SOFTWARE ARCHITECTURE 15
CYBERMINER System Architecture n n n Style: Abstract Data Type (ADT) Components: Objects and Data Constraints: Different components access data with each other by invoking the interface provided with each module. SOFTWARE ARCHITECTURE 16
Miner Module n n void set. Keywords(String keywords) Divides the search string into a list of words and stores this list in an array String get. Summary() Compares the words in the array created by the set. Keywords operation to the original lines Returns any matching lines and their associated URLs. SOFTWARE ARCHITECTURE 17
Advantages of ADT Architecture Every module is independent n Modifiability Algorithms and data representation can be changed in one module without affecting other modules n Enhanceability Enhancements can be added to a module without affecting other modules SOFTWARE ARCHITECTURE 18
Disadvantages of ADT Architecture n n Space Requirements: since every module needs a copy of the data it works with Response Time: each module reconstructs the whole architecture for itself to operate SOFTWARE ARCHITECTURE 19
Alternatives to the CYBERMINER Software System n Data Share Architecture Advantages: Space requirements are minimal Disadvantages: Modifiability and Reusability are poor SOFTWARE ARCHITECTURE 20
Alternatives to the CYBERMINER Software System n Implicit Invocation Architecture Advantages: Algorithms are easily modified and do not affect other modules Disadvantages: Response time due to triggering and larger space requirements SOFTWARE ARCHITECTURE 21
Alternatives to the CYBERMINER Software System n Pipe and Filter Architecture Advantages: Process and data representation independence between modules Disadvantages: Inefficient use of space and difficult to enhance features or support an interactive system SOFTWARE ARCHITECTURE 22
Outline n n Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE 23
Cyberminer System n n Line. Storage Circular. Shift Alphabetic. Shift Miner SOFTWARE ARCHITECTURE 24
Cyberminer UML n n Declare GUI objects Declare KWIC system n n n Line. Storage Circular. Shift Alphabetic. Shift Declare Miner n n Cyberminer Search class init() method from the applet class is used to initialize the variables and the system action. Performed() uses the action. Listeners from within init() to perform the individual tasks of submitting URL/Descriptors, clearing the input. Area, and searching for the given keywords - input. Area: Text. Area - output. Area: Text. Area - submit. Button: Button - clear. Button: Button - s: String: - keywords: String - search. Label: Label - input. Field: Text. Field - search. Button: Button - summary. Area: Text. Area - ls: Line. Storage - cs: Circular. Shift - as: Alphabetic. Shift - m: Miner - output: Array. List - aslines: Array. List + init(): void + action. Performed(ae: Action. Event): void SOFTWARE ARCHITECTURE 25
Line. Storage UML n n n Declare Arraylist to hold lines and descriptions Declare String. Tokenizers for lines and words get. Lines() returns the Array. List of lines set. Words() uses st. Words to separate the l-th line get. Words() returns the list of descriptions get. Word. Count() returns number of words in the line Line. Storage - line. Count: int - word. Count: int - lines: Array. List - descriptions: Array. List - temp: String - st. Lines: String. Tokenizer - st. Words: String. Tokenizer + get. Lines(): Array. List + set. Words(l: int): void + get. Words(): Array. List + get. Word. Count(l: int): int SOFTWARE ARCHITECTURE 26
Circular. Shift UML n n n Declare Array. List of lines, words, temp. Words, shifted. Words, cs. Lines Declare String. Tokenizer for words get. Circular. Shifts() returns the Array. List of circularly shifted lines get. CSWords() returns the Array. List of words for each circularly shifted lines get. Word. Count() returns the number of words for each circularly shifted lines Circular. Shift - lines: Array. List - words: Array. List - temp. Words: Array. List - shifted. Words: Array. List - cs. Lines: Array. List - word. Count: int - st. Words: String. Tokenizer - temp: String - URL: String + get. Circular. Shifts(): Array. List + get. CSWords(l: int): Array. List + get. Word. Count(l: int): int SOFTWARE ARCHITECTURE 27
Alphabetic. Shift UML n n n Declare Array. List of lines, cs. Lines, as. Lines set. Alphabetic. Shifts() uses the Collections. sort() to sort the circularshifted lines get. Alphabetic. Shifts() returns the circularly shifted lines in alphabetical order Alphabetic. Shift - lines: Array. List - cs. Lines: Array. List - as. Lines: Array. List + set. Alphabetic. Shifts(al: Array. List): Array. List + get. Alphabetic. Shifts(): Array. List SOFTWARE ARCHITECTURE 28
Miner n n Declare Array. List of indices, words. To. Find, original. Lines, URL Declare String. Tokenizer for words and lines set. Keywords() uses st. Words to separate the passed in keywords String get. Summary() returns the original. Lines associated with the keywords Miner - keywords: String - indices: Array. List - words. To. Find: Array. List - original. Lines: Array. List - st. Words: String. Tokenizer - st. Lines: String. Tokenizer - summary: String - URL: Array. List - keyword: String + set. Keywords(k: String): void + get. Summary(): String SOFTWARE ARCHITECTURE 29
Screen Shot n n n n input. Area submit. Button clear. Button output. Area input. Field search. Button summary. Area SOFTWARE ARCHITECTURE 30
Conclusion SOFTWARE ARCHITECTURE 31
- Slides: 31