Look at electronic reading called: “The Architecture of Open-Sourced Applications.”

Look at electronic reading called: “The Architecture of Open-Sourced Applications.”

There are several systems described there in two volumes. Pick one system that might interest you. There are examples from almost every domain from games to sound processing to networking. There is also anothersource Exploring CQRS and Event Sourcing : A journey into high scalability, availability, and maintainability with Windows Azure. This is also an alternative. You can scan the chapters on actual coding and just look at the design parts. This is good option for students interested in Complex Web Applications using Command-Query Response. BE CAREFUL, DO NOT SELECT A SYSTEM FROM THE PERFORMANCE BOOK OR THE 500 LINES OR LESS BOOK!!!! Read the previous line again,

DO NOT PICK A SYSTEM FROM THE PERFORMANCE OR 500 LINES OF CODE BOOK!!! DO NOT PICK SOME SYSTEM OUT OF THE AIR. YOU MUST WRITE ABOUT A LARGER SYSTEM DESCRIBED IN THE GIVEN BOOKS. PICKING AN UNAPPROVED SYSTEM MAY RESULT IN A SIGNIFICANT GRADE REDUCTION. Read the author’s description of the system Now for your chosen system, read and think about their comments. This is a rationale for how their system is put together. Since these are open source systems, you can obtain the source code if you wish to do more detailed analysis of the system. If you are interested in distributed, scalable web systems, then look at the book: Exploring CQRS and Event Sourcing; A journey into high scalability, availability, and maintainability with Windows Azure. There is a link to this on the web page also. Perform a case study analysis of the design. Here are some things to think about: Start by identifying the problem the software was supposed to solve. What is their user demographic (who is the software targeted towards: students, developers, musicians, etc). Did this have any effect on their design approach? What architectural style do they seem to be using? What would you have used given their constraints? What seems to be their criteria for packaging (grouping classes or code together)? Is it maintenance or reuse? Look at their description and then apply the SOLID design principles to discuss application of these principles to the approach taken by the software. Identify design patterns that would be especially helpful in solving their particular problem. What quality factors (like FURPS, or maintainability) are addressed in their design? Even if your chosen system is not Object-Oriented, you can consider coupling and cohesion and many of the other principles. Consider the files themselves like classes and the functions inside them — both should be cohesive.