Image via Wikipedia
The final post in this series on Architecture – Understanding The Criteria.
This post consists of the few remaining terms that I overlooked in my previous posts.
Distributed computing is a field of computer science that studies distributed systems. A distributed system consists of multiple autonomous computers that communicate through a computer network. The computers interact with each other in order to achieve a common goal. A computer program that runs in a distributed system is called a distributed program, and distributed programming is the process of writing such programs.
Distributed computing also refers to the use of distributed systems to solve computational problems. In distributed computing, a problem is divided into many tasks, each of which is solved by one computer.
Distributed systems are systems that communicate to each other via the network; this implies different systems residing on different physical hardware. A web architecture is by nature distributed; the client is the browser that resides on the user’s machine; the presentation tier may or may not be co-located with the business objects on a single machine and finally the database resides on a database server.
Also, SOA (Service Oriented Architecture) which implies web services are also by their very nature distributed systems. Message Oriented Middleware add another layer of abstraction and decoupling to distributed systems.
Grid computing involves the asynchronous distribution of tasks of a job or several jobs to slave systems that perform the tasks and the results are sent back to the master where the results are aggregated to be presented to the job submitter. A very relevant example of grid computing would be Google Search Indexing which is a grid computing exercise with several software agents called robots that index the web and update the Google Cache and Index Database.
Variability is how well the architecture can be expanded or modified to produce new architectures that differ in specific , preplanned ways. Variability mechanisms may be run-time,compile-time,build-time or code-time. Variability is important in a product setting when the architecture is the underlying architecture behind a whole set of related products or product line.
Conceptual integrity is the unifying theme underlying an architecture. Simply put, the architecture allows does similar things in a similar fashion. The architecture should exemplify consistency, have few data and control mechanisms and use a small number of patterns. This makes it easy for developers to work on the system and nasty surprises are avoided.
Though this seems specific to cloud computing, I will include it here. Elasticity is the ability of the supply of computing resources to react dynamically, in a preplanned manner, to changes in demand – either increased or decreased demand. This is a feature of cloud computing offerings as per the Service Level Agreements (SLAs) the enterprise may have with its cloud computing suppliers. The outsourcing can have various combinations, such as in-sourcing for normal, anticipated computing demand and outsourcing for spikes in demand; or complete outsourcing to a single provider , single sourcing ; outsourcing to a single provider with surges in demand outsourced to another cloud computing provider; outsourcing to multiple providers to reduce downtime – multi-sourcing.
Reference: Evaluating Software Architectures – Methods and Case Studies – Clements, Kazman & Klein.
|Evaluating Software Architectures: Methods and Case Studies|
Have a great week!
|An intellectual is a person who has discovered something more interesting than sex.|
[Powered by QuotesPlugin v1.0 for Windows Live Writer]