Architectural Partitioning  «Prev  Next»
Lesson 2Design strategies based on technology
ObjectiveExplain the value of partitioning technological responsibilities.

Design Strategies Based on Technology

For many years, computing technology did not change radically. Big computers were attached to “dumb” terminals that displayed information and captured user actions. You could attach larger computers and additional terminals, but the basic design remained the same. The intelligence resided in the central computer(s) and the terminals were little more than electronic versions of paper forms.

Value of Partitioning Technological Responsibilities

Partitioning technological responsibilities during the design of a system is a critical strategy that achieves several key values:
  1. Increased Specialization and Expertise: By dividing responsibilities, team members can specialize in specific areas. This specialization leads to a deeper understanding and expertise in their respective domains, contributing to higher quality and more innovative solutions.
  2. Enhanced Focus and Efficiency: Partitioning allows team members to focus on a narrower set of tasks, reducing the cognitive load and enabling more efficient work. This focus often results in faster development times and improved productivity.
  3. Scalability and Flexibility: A partitioned system is generally more scalable. Teams can work on different parts of the system concurrently, allowing for parallel development. This approach also makes it easier to modify or expand parts of the system without impacting others, enhancing overall flexibility.
  4. Improved Risk Management: By distributing responsibilities, the risks are also distributed. This dispersion reduces the impact of any single point of failure and enables more effective risk management strategies.
  5. Easier Maintenance and Upgrades: Partitioned systems are often easier to maintain and upgrade. Changes can be made to one part of the system without significantly disrupting others. This modularity also simplifies the process of updating and improving specific components.
  6. Better Collaboration and Communication: When responsibilities are clearly defined and partitioned, it fosters better communication and collaboration within the team. Team members can more easily understand their roles and how their work fits into the larger picture, leading to a more cohesive and effective team dynamic.

In summary, partitioning technological responsibilities in system design is a strategic approach that enhances specialization, efficiency, scalability, risk management, maintainability, and team collaboration, all of which are crucial for the successful development and operation of complex systems.

Technology Changes and Architectural Opportunities

Technology is a tool that makes new architectural opportunities possible. For example, the advent of PCs distributed the computing power to devices other than the large central computer. A cooperative relationship formed between these technologies, which is now typically referred to as a two-tier or client-server relationship. The PC now controls the interface to the user, so this new client device initiates requests to the central computer, which now plays the role of a server. A server is primarily passive and waits for a request, processes the request, returns a response, and waits for another request.
A significant aspect of this change is the distribution of responsibilities. What is the value or benefit of this set-up? On a simple level you can picture the total system need as a spectrum that runs from access to raw data, through logic that interprets the data, to presentation of the information.

Dividing up Responsibilities

Dividing up responsibilities: 1) Presentation, 2) Logic, 3) Data
Total System as Spectrum: 1) Presentation, 2) Logic, 3) Data
Similar to the (MVC) model-view-controller architecture,
  • The presentation layer is represented by the view,
  • The logic layer is represented by the controller.
  • The model layer represents where the data is stored.

  1. Visual components like the Java FX and Swing classes, OCX Controls, ADO, .NET Architecture
  2. CORBA, RMI, DCOM and a number of middleware products provide communication mechanisms between components of the architecture.
  3. Visual programming environments support the development of client applications and visual interfaces.
  4. Transaction processing monitors like Tivoli and Tuxedo handle volume transaction processing and transaction management
  5. Database management systems (DBMS) support data (or object) persistence and access.

Dividing these different responsibilities supports the development of specialized products. It also creates a market for products that provide the 'glue,' or connectivity, between the new architectural partitions.

Transaction Processing Monitor

One of the ways of monitoring the different components of a system is to use a transaction processing monitor. A transaction processing monitor[1] is a systems tool for configuration and management. The TPM monitors transactions from one stage to the next, ensuring that each one completes successfully. If not, the TM Monitor takes the appropriate action. A transaction processing monitor's main purpose is to allow resource sharing and assure optimal use of the resources by applications. Processing of transactions are important, but perhaps the monitoring aspect of the software is its primary purpose. Monitoring can include logging, resource balancing, and security management.

Formal Methodology in Systems Design

Only 18% of software development organizations use a formal methodology such as Structured Systems Analysis and Design Methodology (SSADM).Instead many software development companies adopt in-house methodologies that are far from formal and indeed many are no more than embellishments to waterfall lifecycles. The surveyed companies typically perform full-lifecycle activities that include the following stages, which are performed either iteratively or sequentially depending upon the development methodology adopted by the company for a particular project:
  1. System/Information engineering and modeling;
  2. Software requirements analysis;
  3. Systems analysis and design;
  4. Code generation;
  5. Testing;
  6. Delivery and maintenance.


Each product is aimed at solving one part of the total data processing need. Because the products are so focused, they tend to become more specialized and reusable. This change in software development is identical in nature to the change in manufacturing, from custom production of one item at a time to assembly line production using interchangeable parts.

[1]A transaction process monitor has the primary role of coordination of services, much like an operating system, but does so at a higher level of granularity and can span multiple computing devices.