Identify and describe various architectures, including embedded systems, client-server, n-tier, web, wireless, messaging, collaborative platforms, and analyze their impact on quality. (Analyze)
BODY OF KNOWLEDGE III.B
A system architecture defines the system-level components (including subsystems), interfaces between those components, and the allocation of system-level requirements to those components and interfaces. The architectural design of a system may also consider timing and bandwidth of those interfaces. System-level components can be software, data, hardware, and humans (who implement processes and manual operations), and may also include “processes (for example, processes for providing services to users), procedures (for example, operator instructions), facilities, materials and naturally occurring entities” (ISO/IEC/IEEE 2011).
Good systems architectures address higher-level concepts and abstractions for the system. (Lower-level details are dealt with during the component design, also called detailed design, activities, which define the internals of each component at the hardware / software / data / process engineering level.) Stakeholders of the systems architecture should be able to:
“Architecture is what remains when you can not take away any more things and still understand the system and explain how it works” (Kruchten 2000).
Levels of Architecture and Design
As illustrated in Figure 10.1 , there can be a hierarchy of architectures, which may include the following levels:
Figure 10.1 Levels of architecture and design—example.
Another example of different levels of architectural is from The Common Approach to Federal Enterprise Architecture, (see whitehouse.gov/sites/default/files/omb/assets/egov_docs/common_approach_to_federal_ea.pdf2012 ), which lists eight levels of scope for implementing an architecture:
  1. International
  2. National
  3. Federal
  4. Sector
  5. Agency
  6. Segment
  7. System
  8. Application
Embedded System
An embedded system is a computer system with a dedicated function embedded as part of a larger system. For example, a software/hardware breaking system or fuel injection system that is a component of a larger system (car, airplane). If the software is installed into a hardware component it is often referred to as firmware, and is stored in read-only memory (ROM), in a flash memory chip or other devices.
Embedded systems can vary widely in capability. Many embedded systems are limited to the performance of one, or a limited number of, dedicated functions or tasks, as opposed to a personal computer or mainframe. Digital watches, microwaves, mobile phones, traffic lights, and handheld calculators are just a few of the many examples of embedded systems. A system of systems like a modern automobile or aircraft has multiple embedded systems. Medical devices and weapons systems are examples of embedded systems that are complex and multifunctional. Embedded systems can range from having no user interface to a complex graphical user interface similar to a personal computer. Many embedded systems are also restricted by timing, size, power utilization, reliability, and other constraints imposed by the system’s environment.
n-Tier
In an n-tier architecture, also called a multi-tier architecture, the system is logically decomposed into two or more layers (levels), each with independent processing capability, creating a modularized approach to the architecture. The “n” in an n-tier architecture implies any number, such as two-tier, four-tier, five-tier, and so on.
Well-defined interfaces and information-hiding (abstraction) characterize a tiered or layered architectural style. As illustrated in Figure 10.2 , each tier interfaces with the tiers just above and/or below it, and performs part of the functionality of the whole system. If communication is severed between two tiers, partial independent functionality within each tier, or between non-severed tiers, is still possible. For example, the telecommunications network is a classic tiered architecture. If the private branch exchange (PBX) inside a company loses connections with the local switch, employees can not make outside phone calls, but they may still be able to call other employees using the same PBX. If, however, the local switch has good connection to the PBX, but loses connection with the class 5 switch, employees can still call each other and may also have limited outside calling capacity with others sharing the same local switch.
Figure 10.2 Five-tier architecture—example.
The tiers provide abstraction because a tier does not need to know how the operations of the layer above or below it are implemented. In a tiered architecture, layers can be added, upgraded, or replaced independently without major impact to other parts of the system.
Client-Server
Client-server architectures are a specific type of two-tier architecture, as illustrated in Figure 10.3 . For example, many computer networks within businesses are based on client-server architectures. Each computer or device on the network is either a client or a server. Central server computers/devices on a network provide services, manage network resources (for example, the sharing of software licenses), and centralize most, or all, of the data.
The client is the requester of services and typically runs on a decentralized access terminal, computer, or workstation. These clients download or access the centralized data, share the network resources, and utilize centralized processing capability available from the server. A thin client, also referred to as a slim or lean client, primarily focuses on the user interface and on sending and receiving inputs/outputs from the server. A thin client depends on the server for most or all of its processing activities. Typically, the only software that is installed on a thin client is the user interface, networked operating system, and possibly a limited number of frequently used applications. In contrast, a fat client, also referred to as a rich or thick client, typically has a large number of applications installed, and performs most of the processing functionality locally, depending on the server chiefly for shared data. A thick client can run much more independently. In fact, a thick client may be able to run without connectivity to the server for some period of time, requiring only periodic connection for data refreshing and synchronization with the rest of the system and its users.
Figure 10.3 Client-server architecture—example.
Advantages of a client-server architecture include the:
Disadvantages can include:
Peer-to-Peer Architecture
A peer-to-peer architecture is a distributed applications architecture that partitions tasks or workloads between equally privileged, interconnected nodes (peers). As illustrated in Figure 10.4 , these peers are interconnected and share resources with each other across a network without the use of one or more centralized administrative systems (servers in the client-server architecture). Each peer can function as both a client and a server to other peers on the network.
Figure 10.4 Peer-to-peer architecture—example.
Web
There are three major types of web architectures, as illustrated in Figure 10.5 , including:
Figure 10.5 Web architecture—example.
Wireless
In today’s environment, many individuals need to take their computer processing power with them as they travel, without being tethered via cabling to a network. People need wireless access to the Internet, to stored information and data, and so on, as they travel from site to site. For example, a doctor or nurse might use a personal electronic device to access patient records from wherever that information is needed. Sales people, consultants, law enforcement, students, and many others need to stay in contact while traveling, which can be accomplished through wireless access on their electronic devices. Wireless access is often provided to guests of a company or for use in conference rooms or manufacturing areas where wires might be a problem.
Messaging
Messaging system architectures are designed to accept messages from, or deliver messages to, other systems. An e-mail system or instant messaging (IM) are examples of a messaging system. In its simplest form, a messaging architecture:
Collaboration Platforms
According to Wikipedia, “Collaboration platforms offer a set of software components and software services that enable individuals to find each other and the information they need, and to be able to communicate and work together to achieve common business goals.” A collaboration platform helps individuals and teams work together regardless of how geographically dispersed they are. Examples of key components of a collaboration platform include: