Tuesday, February 14, 2012

2/15/2012

The assignment for this post was to read chapter 4 in Software Development: An Open Source Approach.  This chapter covers Software Architecture.  The book describes software architecture as being "an organizational model for a moderate or large software system...provides strong guidance on how modules interact with each other, how a test suite can be designed, how refactoring strategies can be exercised, and how program bugs can be detected and removed."


It lists 4 architecture patterns:


  • Mutlti-Tier: distiguishes the user interface layer from the core class layer from the database later.  GUI  components are isolated within the user interface layer and database interactions are isloated within the database layer.
  • Client-Server: separates the functionality of a typical user of the system from that of the server that hosts the database that all users access.  The "client-side" code is that which resides on the user's computer, including GUI components.  "Server-side" code resides on the server's computer, including the database components.
  • Transaction Processing: useful for systems that accept a stream of transactions and process each transaction fully before moving on to the next.
  • Model-View Controller (MVC): useful for systems that have substantially complex user interfaces.  The idea here is to separate the functionality that underlies the user interface from the code that controls how the user sees and interacts with the system.




It also lists the 3 important software architecture development principles:


  • Layering Principle: Every module belongs in a single layer.  No module should skip over its neighbors in the layer immediately above or below it, in order to provide or obtain services from another layer.
  • Maximum Cohesion Principle: All the functions that relate to a single concept are gathered into a single module or class.  A software architecture is maximally cohesive if all its modules and classes are cohesive in this way.
  • Minimum Coupling Principle: Two modules are coupled if either one shares information or receives services directly from the other.  A software system is minimally coupled when the number of interactions between all pairs of modules is kept to a minimum.

No comments:

Post a Comment