Page 1 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Software Design
Specification (SDS)
Prepared by
Curt Marjaniemi
4/16/2008
Vendor Management
Page 2 of 31
Version:
1.0
Date: 4/16/2008
Table of Contents
1. Introduction
2. System Overview
3. Design Considerations
3.1. Assumptions and Dependencies
3.2. General Constraints
3.2.1. Requirements
3.2.2. Network Communications
3.2.3. Hardware Constraints
3.2.4. Software Requirements
3.3. Goals and Guidelines
3.4. Development Methods
4. Architectural Strategies
4.1. Architectural Style
5. System Architecture
5.1. Subsystem Architecture
5.1.1. Presentation Layer
5.1.2. Business Layer
5.1.3. Data Access Layer
6. Policies and Tactics
6.1. Microsoft .NET 3.5 and ASP.NET
6.2. Coding Conventions
6.3. Design Patterns
6.3.1. N-Tier design pattern
6.3.2. Provider model design pattern
6.4. Software Configuration Management (SCM)
6.5. Continuous Integration
7. Detailed System Design
7.1. Contract state machine
7.1.1. Contract states
7.1.2. Contract state transitions
7.2. Database Design
7.3. Class Diagrams
7.4. User Interface Design
7.4.1. Master Page Layouts
7.4.2. Themes, Style sheets, and Skins
8. Requirements Traceability
9. Appendix A Coding Conventions
9.1. General Notes
9.2. Comments
9.3. Class or Struct
9.4. Ordering Regions
Vendor Management
Page 3 of 31
Version:
1.0
Date: 4/16/2008
Revision History
Date
4/13/2008
Version
1.0
Description
Draft submitted to capstone
project committee.
Author
Curt Marjaniemi
Vendor Management
Page 4 of 31
Version:
1.0
Date: 4/16/2008
1. Introduction
The purpose of this software design specification (SDS) document is to clearly
describe the implementation design details of the Vendor Management
system and subsystems. This document assumes that the reader has reviews
the software requirements specifications (SRS) document for the Vendor
Management application.
2. System Overview
The Vendor Management application will provide a mechanism for
organizations to better manage their vendor relationships, with particular
regard to monitoring and managing the risk associated with critical vendors.
In todays business environment, where vendors can sometimes provide
essential services and house sensitive business data, managing critical
relationships with vendors is more important than ever. In the financial
sector, there is an increase in regulatory oversight surrounding proper vendor
management. The Vendor Management application specified in this
document intends to fill this business need for managing vendors and
providing an audit trail for regulators.
This application was initially designed for Ent and is based upon Ents vendor
management policies and procedures, and industry best practices. The
application is designed to be used by multiple institutions in a hosted
environment, with the intention that Ent would host this application for use by
other Credit Unions.
The application will be a web application built using the latest Microsoft
technologies, ASP.NET, C#, LINQ, and use a SQL Server 2005 backend
database.
3. Design Considerations
This section describes many of the issues that will need to be addressed or
resolved.
Vendor Management
Page 5 of 31
Version:
1.0
Date: 4/16/2008
4. Architectural Strategies
4.1. Architectural Style
The system will utilize the modularity of a 3-logic tier architecture in order
to separate the concerns of these distinct functionalities (see Figure 1).
The business entities and data access layer will utilize the Microsoft
Language Integrated Query (LINQ) technology. LINQs builds all of the
business entities based off of the design of the database.
Test Driven Developed (TDD) is the development methodology utilized in
this project. Microsoft Test through Visual Studio 2008 will be utilized for
building the unit tests that will be used for the services layer, where the
majority of the business log resides.
One of the requirements is to allow the look and feel of the application to
change based on the institution using the application. Microsoft Master
Pages and themes will be used to implement this feature.
In general the design tries to take advantage as much as possible any
Microsoft functionality available. For example the authentication, object
relational mapping (ORM), navigation, exception management, themes,
and configuration management all utilize existing asp.net technologies.
Vendor Management
Page 6 of 31
Version:
1.0
Date: 4/16/2008
5. System Architecture
The Vendor Management system is composed of three major logical layers
(see Figure 1): presentation layer, business layer, and data access layer.
Vendor Management
Page 7 of 31
Version:
1.0
Date: 4/16/2008
This layer contains all of the web controls, pages, images, mater
pages, style sheets, etc.
In the Visual Studio solution for the Vendor Management application
the presentation layer is composed of the following projects:
VendorMgmt.Web Contains the actual web site including the page
definitions, images, master pages, and style sheets.
VendorMgmt.Controls - Any common UI functionality, like sortable
lists views, common base pages, and common UI utility functions,
have been moved into this project in the form of base pages, web
service controls, and static classes.
VendorMgmt.Resources Contains the majority of common string
messages, such as error messages, success messages, etc.
Vendor Management
Page 8 of 31
Version:
1.0
Date: 4/16/2008
The data access layer provides access to the persistent storage utilized
by the application. In the case of this application the persistent
storage takes the form of a SQL Server 2005 database.
LINQ handles all of the access to SQL, including connection
management, change tracking, transaction management, etc.
There is no specific code for the data access layer as LINQ handles this
layer entirely.
Vendor Management
Page 9 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 10 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 11 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 12 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 13 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 14 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 15 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 16 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 17 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 18 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 19 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 20 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 21 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 22 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 23 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 24 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 25 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 26 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 27 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 28 of 31
Version:
1.0
Date: 4/16/2008
8. Requirements Traceability
The traceability from software requirements to the design is shown in the
following table.
Table 1: Requirements traceability matrix
Feature
ID
1
Description
Manage the contract lifecycle, including
contract submission, due diligence,
approval, monitoring, renewal, and
expiration.
Allow for multiple institutions to use the
vendor management application
independently.
Design
Component
Contract state
machine
Master Page
Layouts
&Database
Design
specifically
the
InstitutionID
keys on
almost all
tables
Database
Vendor Management
Page 29 of 31
Version:
1.0
Date: 4/16/2008
Vendor Management
Page 30 of 31
Version:
1.0
Date: 4/16/2008
9.2. Comments
Do not write comments for every line of code and every variable declared.
Write comments wherever required. However, good readable code will
require very few comments. If all variables and method names are
meaningfull, that will make the code very readable and comments will only
be required to illuminate the more complex passages.
Fewer lines of comments will make the code more elegant. However, if the
code is not clean/readable and there are inadequate comments, that is
worse.
If you have to use some complex or weird logic for any reason, document
it very well with sufficient comments.
With the code regions (e.g. Private Methods, Public Methods) try to
balance using the code regions to split apart logical groups without having
a code region for everything.
Vendor Management
Page 31 of 31
Fields / Constants
Constructor
Public Properties
Public Methods
Private Fields
Constructors
Public Properties
Public Methods
Private Methods
Embedded Classes/Structs/Enums
Version:
1.0
Date: 4/16/2008