CSE5/7319- Software Architecture and Design Homework #1 (10

CSE5/7319- Software Architecture and Design
Homework #1
(10 Points)
On Campus Due Date: 11:59pm on February 18, 2015
Off Campus Due Date: 11:59pm on February 20, 2015
1. Define the following terms: (5 points)
• Software component
• Software connector
• Software architecture
• Software design
• Architectural style
• Architectural pattern
• Application family
• Product line
• Distributed system
• Software model
Each definition may be as short as a single sentence, but no longer than a paragraph.
1) First provide the definitions of what you think these terms mean, without
consulting any external sources.
2) Then do so by consulting external sources (e.g., the Web, a textbook either for
this class or other textbooks, etc.). Make sure to acknowledge your source(s).
Try to refrain from copying existing definitions wholesale; I would like you to convey
your own understanding of these concepts. Justify your definitions whenever needed.
2. Can connectors simply be treated as special-purpose components? Why or why not?
(0.5 point)
3. Design and Code (in Java) a pipe and filter application which prints a sorted list of
every unique word in a text file, i.e. each unique word should appear only once on
the output. (4.5 points)
Please submit the follows:
1) A diagram depicting the top-level pipe and filter architecture including your
components and connectors. An example of such an architecture diagram is
Figure 4-15 (Lunar Lander in pipe-and-filter style).
2) A UML representation of the classes implementing the top-level architecture in 1).
An example of the UML class diagram is Figure 4-9. Note that you are not
required to use Rational tools to generate the class diagram.
3) A printout of the screenshot showing your successful compilation; the screenshot
of your program output; and your source code with all the .java classes;
4) A mapping between your source code (e.g., .java classes) and the components and
connectors in the architecture depicted in 1) and 2).
Try to name your .java classes consistently with the names of the
components/connectors in your architecture.
The input text file (pftest.txt) is provided for testing and output.