E0 257 - Software Architecture

Y. Narahari

Department of Computer Science and Automation
Indian Institute of Science
Bangalore - 560 012
INDIA


PROBLEM SET #5

1) We all know about the classification system used by Gamma, as creational, structural and behavioral patterns in his book. What posible classification schemes can you think of for the architectural patterns you have learnt ?

2) Architectural patterns normally get refined to form more intricate systems. Do you find any mapping, where some design patterns are very applicable for some architectural patterns ?

3) Consider that you wish to build a high performance web server. Which patterns do you envisage to drastically improve the performance of the web server? What are the technical issues that forced you to use these patterns?

4) Consider that you are using a thin client architecture running over HTTP. Which security mechanism should be used to enable secure transactions?

5) You have been introduced to several technologies in this course, SOAP, CORBA, RMI, EJB, COM. Create a chart of which technology would you prefer when? What are the reasons for going for one technology against another at a given context?

6) What is the role of the software architect?

7) What does an Instant Messaging application and a web based email application have in common? How will you make IM and email interoperate with SMS services?

8) Assume that you have several IM servers, and each of them have an agreement to allow for users from the different servers to interact. WHat kind of protocol and communication will the IM servers need amongst themselves now?

9) How does Akamai, a distributed caching server work? What is their payment model? Assume you have to implement one such service. How will your architecture be? How will you build your payment scheme?

10) A software architect's job is a hard one. In the course how many contexts have you seen where better tools can assist his job? What aspects of the software architecting process do you feel can be automated? Give examples.

11) What are the essential considerations you have to think about when you are developing a distributed application. On what grounds do these differ a lot from centralized applications?

12) Suppose you are asked to build a library of data structures. Which patterns do you feel are very useful while building this library? Provide an explanation with examples.

13) Suppose you are a software architect and your company asks you to devise guidelines for architectures built in the organization by other people. How would you create those guidelines at various stages? What are the criteria you will use to reject architectures and designs of people?

14) As a software architect you are asked to also asked to manage the team that designs, develops and tests the architecture. You are given 10 people with varying skill levels, exposure and experience. Who would you choose for what roles and why? You can ask the same person to design and develop, design, develop and test, or just develop and test (any combination). In what cases would you see it useful to make the same person do more than one task?



BACK TO HOME

 Modified by: Sandhya G & Shijesta Victor on 03.11.2003