Question: SE 577- Software Architecture Spring 2022 Assignment #2 The KWIC index system accepts an ordered set of lines, each line containing an ordered set

SE 577- Software Architecture Spring 2022 Assignment #2 The KWIC index system accepts an ordered set of lines, each line containing an ordered set of words, and each word consisting of an ordered set of characters. A KWIC index is formed by sorting and aligning the words within a line to allow each word (except the stop words) to be searchable alphabetically. [Stop words are words which are filtered out before or after text processing. There is no single universal list of stop words; any group of words can be chosen as the stop words for a specific application.] For example, given the sentence "KWIC is an acronym for Keyword In Context." and assuming the stop words {is, an, for, in}, the index will contain the following entries: Initial output (before sorting) KWIC is an acronym for Keyword In Context. acronym for Keyword In Context. KWIC is an Keyword In Context. KWIC is an acronym for Context. KWIC is an acronym for Keyword In Output after sorting in alphabetical order acronym for Keyword In Context. KWIC is an Context. KWIC is an acronym for Keyword In Keyword In Context. KWIC is an acronym for KWIC is an acronym for Keyword In Context. The KWIC problem was first used by David L. Parnas in his classic paper "On the Criteria to be Used in Decomposing Systems into Modules, Communications of the ACM, 15(12):1053-1058, December 1972", to contrast different criteria for decomposing a system into modules. Parnas proposed possible solutions for the KWIC index problem around four basic functions: input, shift, alphabetize, and output. Since its introduction, the problem has received significant attention by the software engineering community and a lot has been published about it. The idea of using pipes-and-filters for the implementation of KWIC was discussed in the paper "An Introduction to Software Architecture" by Dave Garland and Mary Shaw. Your assignment is to implement a program using pipes-and-filters that generates a KWIC index for a given set of input lines. Your program should be implemented in Java. It should read input lines from a file and write its output to a (different) file. It should also accept, as an option, a file containing stop words. The functional modules of your program (that is, Input, Shift, Alphabetize, and Output) should be implemented as filters that execute concurrently. Data between these filters should be passed through a pipe mechanism. The pipe mechanism should be implemented by you. You should submit (i) the source code, (ii) a README.txt file, and (iii) a UML class diagram. The README.txt file should provide any instructions required for executing the program and should also describe any known faults that have been observed from testing the program.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
