TeamF::CGTMain Page | About | Help | FAQ | Special pages | Log in

Category: Documentation

Software Architectural Design Description

From TeamF::CGT

Revision: 2362

Contents

Abstract


This document discusses and specifies the software design methodologies, system architecture, system deployment environment, and implementation related issues in language, framework and database for the CGT project.

Introduction


Purpose

This document is produced to specify high level system decisions, hence facilitate the communication among the design team, implementation team, test team and other interested stakeholders.

Audience

Design Methodology


List of Design Methodologies Considered

A range of well-known design methodologies have been taken into consideration while choosing the most suitable one for our project.

  1. Top-down Design / Bottom-up Design
  2. Structured Design (SD)
  3. Jackson System Development (JSD)
  4. Performance Centered Design (PCD)
  5. Test Driven Development (TDD)
  6. Object Oriented Design (OOD)

Top-down Design / Bottom-up Design

Top-Down Design start with identifying the major high-level system requirements, and then iteratively breaking them down and refining them, until function specific modules can be designed.

Top-Down Design is well suitable for systems where the problem domain is well-defined.

Bottom-Up Design start with identifying the basic set of modules and their interrelationships. High level system design is then formulated based on these primitives.

Bottom-Up Design is more suitable for systems where the problem domain is ill-defined.

Structured Design (SD)

Structured Design is a data flow-oriented design approach. Data Flow Diagram (DFD) is the main notational schema in SD.

SD separates Logical Design (abstraction) and Physical Design (implementation).

Designers first ignore the implementation techniques and produce a logical solution to satisfy the requirements, and then transfer this logical solution into a physical solution by making necessary changes so the physical solution can be implemented.

Jackson System Development (JSD)

The Jackson System Development is an object-based system, which is an extension of the Jackson Structured Programming (JSP) method.

The behavior of the objects is stored in an Entity Structure Diagram.

Performance Centered Design (PCD)

Performance Centered Design enables users to achieve the required level of performance as quickly as possible, at the very most, within a day, with minimum external support.

This intuitive system allows users to reach a reasonable level of efficiency immediately without training or checking any reference books.

PCD concerns about the human performance instead of the system performance.

Software that is performance-centered is created from the outside-in, from the perspective of the workers who use it, rather than from the inside out, to reflect data structures and system functionality.

It is designed for ease of learning and use rather than just to offer features and perform functions.

The key features of this design is rapid prototyping and high collaboration with actual users resulting in robust interfaces that produces desired solutions.

Test Driven Design (TDD)

Test Driven Design require designers to write test cases first, and then produce code to pass those pre-defined test cases.

The associated advantages include:

TDD does not work where automated testing is not feasible. This include areas such as GUI, database schema, artificial intelligence and etc.

Object Oriented Design (OOD)

Arguably one of the most widely-used design methodologies in software industry.

Main advantages include:

Decision on Design Methodology

Reasons for not choosing certain design methodologies

Final Decision on Design Methodologies

We decided to experiment the use of a mix of three design methodologies in our project.

The whole system will be built under an Object Oriented environment.

We start by using on Structure Design, ignore implementation techniques and produce a logical solution that satisfy the requirements stated in SRS.

This logical solution will break down the system into numerous modules.

Then we have the opportunity to assign team members to research on each module and work out exactly how to implement the functionalities required.

The actual implementation will be based on Test Driven Design, required test cases will be produced before coding, the aim of coding became to pass those pre-defined test cases.

System Architecture


Architecture Research

Three Tier Architecture

The architecture chosen for the CGT is Three Tier Architecture. This architecture provides presentation, business logic and data storage layers. The details of the architecture are shown in the diagram below. The security component of the sysytem has been added on the side of the entire system, as it will be included into each layer.

Three Tier Architecture
Three Tier Architecture

Presentation Layer

The presentation layer provides an interface to the system for user. This will allow user to customise their CGT. As the user interface will sit above all other layers, this will allow the interface to be enhanced during later builds.

Business Logic Layer

The business logic layer will contain the processing and logic concerned with the user's interaction. This layer will serve as the middle layer between the presentation layer and the data storage layer. As the presentation and the data storage communicates through this layer, this allows any method to be enhanced as long as each function call remains unchanged.

Data Storage Layer

The data storage layer will provide access for data storage sources and the system. This layer will contain a module to communicate with the data source, which can be easily changed if the data source changes.

Other Architectures

Various system architectures were researched before the decision to use the three-tier architecture was made. The architectures that were research that could have possibly be used for the CT, but were not chosen are list below.

Architectural Model

System Architectural Model
System Architectural Model

Deployment Model

System Deployment Model
System Deployment Model

Implementation Issues


.NET Language

When choosing a proper .NET language for the project, one of the most important point to understand is that with .NET, all language choices are now just different ways of achieving basically the same result. Because the CLR (Common Language Runtime, Managed Runtime) works on IL (Intermediate Language) and all .NET enabled languages compile to IL, there is no difference in the capability in terms of functionality and even performance (for proficient programmers). Learning the .NET Framework itself is a much bigger issue than learning any of those languages.

Options

Although there are more than 20 .NET enabled languages, four of them are natively supported in Microsoft Visual Studio .NET, namely C#, Visual Basic .NET, C++ and J#. Furthermore, VB.NET, C# and J# are the most common languages for ASP.NET applications. Therefore, only these three languages will be taken into consideration when choosing a language for implementation.

Language Feature Comparisons

Here are some comparisons of various language features with their references:

http://msdn2.microsoft.com/en-US/library/zwkz3536(VS.80).aspx
http://msdn2.microsoft.com/en-US/library/we7h0cz1(VS.80).aspx
http://msdn2.microsoft.com/en-US/library/4xwz0t37(VS.80).aspx
http://msdn2.microsoft.com/en-US/library/2hxce09y(VS.80).aspx
http://msdn2.microsoft.com/en-US/library/0061wezk(VS.80).aspx
http://www.codeproject.com/dotnet/vbnet_c__difference.asp

Pros and Cons

Rankings

Consideration Rank 1 Rank 2 Rank 3
Learning curve VJ#.NET VC#.NET VB.NET
Language features VC#.NET VB.NET VJ#.NET
Developer community VC#.NET, VB.NET VJ#.NET
Complexity of code VB.NET, VC#.NET, VJ#.NET
Length of code VC#.NET, VJ#.NET VB.NET

Decision

The team will use VC#.NET as their development language with ASP.NET, due to its familiar syntax, shorter learning curve, rich language features and large developer community.

.NET Framework

The choice of a version of .NET Framework not only determines the available framework libraries, but also affects the choices of Visual Studio .NET, C# language, ASP.NET engine and SQL Server.

Options

The two sets of options are:

Advantages of .NET Framework 2.0

There seem to be few performance measurements that have been done by the community to really make a bold statement about any improvement of performance. The comparison therefore mainly focuses on features.

Drawbacks of .NET Framework 2.0

Decision

The team decides to develop with .NET Framework 2.0, Visual Studio .NET 2005, ASP.NET 2005 and C# 2.0, mainly due to a variety of enhanced features.

Database Server

Database Management System

Database Management System (DBMS) is designed to manage database and run operations on data requested by numerous clients. There are two major types of DBMS: Relational DBMS and Object-Oriented DBMS. Relational DBMS is that relationships among tables/databases can be created and linked to each other. Whilst Object-Oriented DBMS emphasizes user-defined data types, relationships among tables/databases can be built as well.

DB2 Universial Database

DB2 Universial Database is one of the database products of IBM. Research on DB2 Universial Enterprise Database is conducted.

Microsoft SQL Server Express

Microsoft SQL Server Express 2005 is shipped with VS 2005. It is productive and easy to design database in the Integrated Development Environment.

Oracle Database 10g Express

The aim of Oracle Database 10g series is to adopt grid computing technology and provide higher performance on large data set.

Decision

DB2 Universial Enterprise Database strips some good features of server explorer, by using its own explorer. This will make the design of database a lot more difficult. Oracle 10g Database Express is very advanced, but the learning curve is high. Considering the time constraint for the team project, Oracle 10g Database Express is not recommended. At the end, the team decides to develop using SQL Server 2005 Express, due to its easy configuration and relatively good features.

Retrieved from "http://www.erichuang.info/projects/cgt/wiki/index.php?title=Software_Architectural_Design_Description"

This page has been accessed 1,231 times.
This page was last modified 06:13, 9 May 2006.
Content is available under Attribution-NonCommercial-ShareAlike 2.5.


Find
Browse
Main Page
Current events
Recent changes
Help
Edit
Edit this page
Editing help
This page
Discuss this page
Post a comment
Printable version
Context
Page history
What links here
Related changes
My pages
Log in / create account
Special pages
New pages
File list
Statistics
Bug reports
More...