ECSE 2203 SYSTEM DESIGN & IMPLEMENTATION
INTRODUCTION TO SYSTEM DESIGN
System
A system is an orderly grouping of interdependent components linked together according to a
plan to achieve a specific objective.
System design is the process of defining the components, modules, interfaces, and data for a
system to satisfy specified requirements. System development is the process of creating or
altering systems, along with the processes, practices, models, and methodologies used to develop
them.
System Design Process
Major Tasks Performed During the System Design Process
1. Initialize design definition
• Plan for and Identify the technologies that will compose and implement the systems
elements and their physical interfaces.
• Determine which technologies and system elements have a risk to become obsolete, or
evolve during the operation stage of the system. Plan for their potential replacement.
• Document the design definition strategy, including the need for and requirements of any
enabling systems, products, or services to perform the design.
2. Establish design characteristics
• Define the design characteristics relating to the architectural characteristics and check
that they are implementable.
• Define the interfaces that were not defined by the System Architecture process or that
need to be refined as the design details evolve.
• Define and document the design characteristics of each system element2.
3. Assess alternatives for obtaining system elements
• Assess the design options
• Select the most appropriate alternatives.
• If the decision is made to develop the system element, rest of the design definition
process and the implementation process are used. If the decision is to buy or reuse a
system element, the acquisition process may be used to obtain the system element.
4. Manage the design
• Capture and maintain the rationale for all selections among alternatives and decisions for
the design, architecture characteristics.
• Assess and control the evolution of the design characteristics.
• System design components: Input design, output design, process design, file design,
dialog design, screen design, Code design, Design tools, Design controls; system
development methodologies: traditional, structured, object oriented;
Page | 1Information Design and implementation @mokua
, Information Systems
Fundamentals of System Design
While designing systems, there are three primary concerns that should be addressed — reliability,
scalability and maintainability. These terms are tossed around quite frequently and in this post I
want to provide expositions for each of them.
Reliability
Reliability means the ability of a system to tolerate faults or problems in order to prevent failures
or complete shutdowns. Large systems are built using fault intolerant components. The beauty
and art of system design is to build fault tolerant systems using fault intolerant components.
Scalability
Scalability is the system’s ability to deliver reasonable performance in face of increased load.
System load can be described in terms of parameters that best translate an application’s raison
d’être technically.
Maintainability
Maintainability means writing code that can easily be understood, refactored and upgraded by
someone who is not the original author of the code. Any piece of spaghetti confusing code will
ultimately be understood by machines.
Factors that affect technology trade-offs during system design
Scale of Product
For example, enterprise software companies that are building system-level software prioritize
reliability because customers need to use them. Each change needs to be rigorously tested, and
often approved before it can be released.
Time
Learning new technologies sometimes often takes time. The trade-offs in this instance will be
made according to which stack/technology will be in time with the set delivery dates. If
switching to a new stack/technology will result in a major shift on the delivery dates and major
inconveniences to the stakeholders then the switch can be held off until an appropriate time.
Cost
On a larger scale Technology decisions are made based on which is more cost effective, where a
comparison can be done on which will be more effective between buying an off the shelf system
and customizing it or building a new system.
Efficiency
Technology trade offs are also done based on which technology is more efficient for example
choosing between ReactJs or AngularJs for a front end application.
User Experience and Support
The amount of support and documentation available on a given technology can also be a
determining factor on the decisions. Working with Technologies that have a large support base,
comprehensive documentation and A good user experience is much easier and take a very short
time to ramp up on due to the large amount of resources available to support it.
Maintainability
maintainability in this case is the ease with which a product can be maintained in order to correct
errors, fix bugs and add additional features. Trade-offs decisions will be made based on the
maintainability of the Technology
Reliability
Page | 2Information Design and implementation @mokua
, Information Systems
In this case the trade offs are made based on the Technology that performs consistently well and
consistently upgrading to more efficient versions.
Scalability
Technology trade offs are also made based on the technologies that are more scalable and able to
handle increase loads efficiently without a break in the system efficiency
The benefits of Design Systems
Creating systems sounds like a lot of work (however, you can save lots of hours using some
tools. However, it has got multiple benefits that make the system worth preparing. Here are the
main ones:
• Consistency – thanks to Design System developers are able to implement consistent UI
much easier. They can think of the particular page as of the set of components.
• Higher quality – consistency makes the impression of higher quality. QA Specialists
will easily monitor the implemented design with Design System documentation.
Inconsistency should appear rarely.
• Better Communication with Development Team – Design System is the single source
of truth – this means it also contains vocabulary that may be used in the project. When
the developer and designer discuss the page, they will use the same names of the
components.
• Faster Design Process – You have already built or purchased the Library of UI controls
needed to implement UI. Now you just use them when the new feature requires to create
a new page or modify the existing one.
• Focus more on UX, less on visuals – Using UI Library means you do not have to figure
out every time what should be the appearance of the input field on this page – it is already
defined.
Page | 3Information Design and implementation @mokua
, Information Systems
FUNCTIONAL DECOMPOSITION
What is Functional Decomposition?
Functional decomposition corresponds to the various functional relationships as how the original
complex business function was developed. It mainly focusses on how the overall functionality is
developed and its interaction between various components.
Large or complex functionalities are more easily understood when broken down into pieces
using functional decomposition.
When and How?
• Functional decomposition is mostly used during the project analysis phase in order to
produce functional decomposition diagrams as part of the functional requirements
document.
• Functional Decomposition is done after meeting with business analysts and subject
matter expertise.
• Decompose the first level components with their functions and continue to decompose to
lower levels until sufficient level of detail is achieved
• Perform an end-to-end walk-through of the business operation and check each function to
confirm that it is correct.
Example:
The below example, best describes the Functional Decomposition:
Modular Decomposition: Cohesion and Coupling
Decomposition: Decomposition technique is used in project management for breakdown the
work into smaller unit of o work which is more manageable and easy to carryout.
Decomposition of project scope generally involves the following activities:
* Gather information on major project deliverables and analyze related tasks
* Start development of work breakdown structure(WBS) at the highest level
* Decompose the upper WBS levels into lower level detailed components
* Identify each work package & WBS components with unique code, and
* Verify if the degree of decomposition of the work is necessary and sufficient.
Moduraltiy : Modularity is the degree to which a system's components may be separated and
recombined. Modular programming is a software design technique that emphasizes separating
the functionality of a programing to independent, interchangeable modules, such that each
contains everything necessary to execute only one aspect of the desired functionality. Example –
Page | 4Information Design and implementation @mokua