CYBERMINER WEB SEARCH ENGINE Muaz Jamshed Russell Elliott Joseph Martinez
SOFTWARE ARCHITECTURE Outline Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE Introduction What is CYBERMINER Requirements of CYBERMINER Functional Requirements Non-Functional Requirements SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE What is CYBERMINER 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
SOFTWARE ARCHITECTURE KWIC System 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
SOFTWARE ARCHITECTURE Outline Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE
Requirements of CYBERMINER Functional Requirements Non-Functional Requirements SOFTWARE ARCHITECTURE
Functional Requirements 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
Functional Requirements Cont. KWIC shall accept an order set of lines Each line consist of two parts URL part Descriptor part SOFTWARE ARCHITECTURE
Functional Requirements Cont. The URL part syntax is URL ::= ’http://’ identifier ‘.’ identifier ‘.’ 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
Functional Requirements Cont. 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
Non-Functional Requirements CYBERMINER system shall be Easily understandable Portable Reusable Enhanceable User-friendly Adaptable SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE Outline Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE
CYBERMINER System Architecture 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
CYBERMINER Design Diagram SOFTWARE ARCHITECTURE
CYBERMINER System Architecture 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
SOFTWARE ARCHITECTURE Miner Module Miner Module void setKeywords(String keywords) Divides the search string into a list of words and stores this list in an array String getSummary() Compares the words in the array created by the setKeywords operation to the original lines Returns any matching lines and their associated URLs. SOFTWARE ARCHITECTURE
Advantages of ADT Architecture Every module is independent Modifiability Algorithms and data representation can be changed in one module without affecting other modules Enhanceability Enhancements can be added to a module without affecting other modules SOFTWARE ARCHITECTURE
Disadvantages of ADT Architecture 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
Alternatives to the CYBERMINER Software System Data Share Architecture Advantages: Space requirements are minimal Disadvantages: Modifiability and Reusability are poor SOFTWARE ARCHITECTURE
Alternatives to the CYBERMINER Software System 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
Alternatives to the CYBERMINER Software System 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
SOFTWARE ARCHITECTURE Outline Introduction Requirement Specification CYBERMINER Architecture Specification Java Applet Specification SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE Cyberminer System LineStorage CircularShift AlphabeticShift Miner SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE Cyberminer UML Declare GUI objects Declare KWIC system LineStorage CircularShift AlphabeticShift Declare Miner Search class init() method from the applet class is used to initialize the variables and the system actionPerformed() uses the actionListeners from within init() to perform the individual tasks of submitting URL/Descriptors, clearing the inputArea, and searching for the given keywords Cyberminer - inputArea: TextArea - outputArea: TextArea - submitButton: Button - clearButton: Button - s: String: - keywords: String - searchLabel: Label - inputField: TextField - searchButton: Button - summaryArea: TextArea - ls: LineStorage - cs: CircularShift - as: AlphabeticShift - m: Miner - output: ArrayList - aslines: ArrayList + init(): void + actionPerformed(ae: ActionEvent): void SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE LineStorage UML Declare Arraylist to hold lines and descriptions Declare StringTokenizers for lines and words getLines() returns the ArrayList of lines setWords() uses stWords to separate the l-th line getWords() returns the list of descriptions getWordCount() returns number of words in the line LineStorage - lineCount: int - wordCount: int - lines: ArrayList - descriptions: ArrayList - temp: String - stLines: StringTokenizer - stWords: StringTokenizer + getLines(): ArrayList + setWords(l: int): void + getWords(): ArrayList + getWordCount(l: int): int SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE CircularShift UML Declare ArrayList of lines, words, tempWords, shiftedWords, csLines Declare StringTokenizer for words getCircularShifts() returns the ArrayList of circularly shifted lines getCSWords() returns the ArrayList of words for each circularly shifted lines getWordCount() returns the number of words for each circularly shifted lines CircularShift - lines: ArrayList - words: ArrayList - tempWords: ArrayList - shiftedWords: ArrayList - csLines: ArrayList - wordCount: int - stWords: StringTokenizer - temp: String - URL: String + getCircularShifts(): ArrayList + getCSWords(l: int): ArrayList + getWordCount(l: int): int SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE AlphabeticShift UML Declare ArrayList of lines, csLines, asLines setAlphabeticShifts() uses the Collections.sort() to sort the circularshifted lines getAlphabeticShifts() returns the circularly shifted lines in alphabetical order AlphabeticShift - lines: ArrayList - csLines: ArrayList - asLines: ArrayList + setAlphabeticShifts(al: ArrayList): ArrayList + getAlphabeticShifts(): ArrayList SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE Miner Declare ArrayList of indices, wordsToFind, originalLines, URL Declare StringTokenizer for words and lines setKeywords() uses stWords to separate the passed in keywords String getSummary() returns the originalLines associated with the keywords Miner - keywords: String - indices: ArrayList - wordsToFind: ArrayList - originalLines: ArrayList - stWords: StringTokenizer - stLines: StringTokenizer - summary: String - URL: ArrayList - keyword: String + setKeywords(k: String): void + getSummary(): String SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE Screen Shot inputArea submitButton clearButton outputArea inputField searchButton summaryArea SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE Conclusion SOFTWARE ARCHITECTURE