A software architecture separates the overall structure of the system, in terms of components and their interconnections, from the internal details of the individual components.Software Architecture in Practice, Bass, Clements and Kazman (2003)
The structure of a software system matters!
Microsoft MSDN“N-tier data applications are data applications that are separated into multiple tiers. Also called “distributed applications” and “multitier applications,” n-tier applications separate processing into discrete tiers that are distributed between the client and the server. When you develop applications that access data, you should have a clear separation between the various tiers that make up the application.”
“a distributed software architecture that consists of multiple autonomous services. The services are distributed such that they can execute on different nodes with different service providers. With a SOA, the goal is to develop software applications that are composed of distributed services, such that individual services can execute on different platforms and be implemented in different languages. Standard protocols are provided to allow services to communicate with each other and to exchange information. In order to allow applications to discover and communicate with services, each service has a service description, The service description defines the name of the service, the location of the service, and its data exchange requirements”
Software Modeling & Design, by Hassan Gomaa Ch. 16
“Real-time software architectures are concurrent architectures that usually have to deal with multiple streams of input events. They are typically state-dependent, with either centralized or decentralized control. Thus, the design of finite state machines, state-dependent interaction modeling, and control patterns are very important in the design of real-time software architectures.” I/O, Concurrency issues play a major role.
Software Modeling & Design, by Hassan Gomaa Ch. 18
Write C# code that minimally implements this:
Draw a class diagram for this code:
All software engineers should be able to read UML, especially Class Diagrams.
You should be able to draw UML class diagrams starting from code and vice versa, to write code if given a class diagram
See "DesignPatterns.pdf" slides on main class page