Explain 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:
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.
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.
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.
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.
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.
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 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.
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:
System/Information engineering and modeling;
Software requirements analysis;
Systems analysis and design;
Code generation;
Testing;
Delivery and maintenance.
Reuse:
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.