The WareHouse Web Application -...

59
Supervisor: Viktor Kulikov

Transcript of The WareHouse Web Application -...

Page 1: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

Supervisor: Viktor Kulikov

Page 2: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

ContentsTable of figures............................................................................................................................................4

Abstract.......................................................................................................................................................5

Acknowledgement.......................................................................................................................................6

Requirements..............................................................................................................................................7

Project Management.................................................................................................................................10

Code writing convention........................................................................................................................10

Project Hosting......................................................................................................................................10

SVN....................................................................................................................................................10

TORTISESVN.......................................................................................................................................10

Google Code..........................................................................................................................................11

WareHouse hosting in Google code..................................................................................................11

Working Procedures..............................................................................................................................11

Wiki Pages.........................................................................................................................................11

Work Plans.........................................................................................................................................14

Defect Handling Procedures..............................................................................................................15

Issues Handling..................................................................................................................................17

Development Environment...................................................................................................................18

Microsoft Visual Studio 2008.............................................................................................................18

Microsoft SQL Server 2005................................................................................................................18

Technologies..............................................................................................................................................19

ASP.NET.................................................................................................................................................19

ADO.NET................................................................................................................................................19

AJAX.......................................................................................................................................................19

Project Design............................................................................................................................................20

Database Layer......................................................................................................................................21

Entity relationship diagram................................................................................................................21

Data Structure Diagram.....................................................................................................................21

Tables design.........................................................................................................................................22

2

Page 3: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Data Set.............................................................................................................................................24

Business Logic Layer..............................................................................................................................25

Events handling class.........................................................................................................................33

Exception handling............................................................................................................................34

User Interface Layer..............................................................................................................................35

Site Map............................................................................................................................................35

Master Page.......................................................................................................................................35

Validation Controls............................................................................................................................36

ToolTips.............................................................................................................................................37

Security......................................................................................................................................................38

Passwords..............................................................................................................................................38

Passwords in database......................................................................................................................38

Password in UI...................................................................................................................................38

Session Control......................................................................................................................................39

Concurrency..........................................................................................................................................40

Issues and Decisions:.................................................................................................................................42

Limitations.................................................................................................................................................43

Supported Environments...........................................................................................................................44

Server side.............................................................................................................................................44

Client Side..............................................................................................................................................44

Summary...................................................................................................................................................45

Bibliography...............................................................................................................................................46

3

Page 4: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Table of figuresFigure 1......................................................................................................................................................11Figure 2......................................................................................................................................................12Figure 3......................................................................................................................................................17Figure 4......................................................................................................................................................20Figure 5......................................................................................................................................................21Figure 6......................................................................................................................................................21Figure 7......................................................................................................................................................27Figure 8......................................................................................................................................................28Figure 9......................................................................................................................................................31Figure 10....................................................................................................................................................31Figure 11....................................................................................................................................................32Figure 12....................................................................................................................................................33

4

Page 5: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

AbstractThe warehouse application was designed to give a full solution to the warehouse employees and manager. It gives them the ability to manage the warehouse components, Items, users, customers and deliveries.

The main objective of this project is to get the experience of programming in a web based environment which includes a database, using the most popular and common design pattern for such software, the 3-tier design.

This project was developed using the most advanced programming tools. Web 2.0 components, .Net 3.5 frameworks, ASP.Net, AJAX technology and more.

Through the development process we have emphasized the working procedures and the project management. We have set a clear timelines and milestones, defined a defects handling procedures, etc. In addition, we have written many wiki pages to help documenting our work.

Like in real life projects, the system security was one of our top concerns.

5

Page 6: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Acknowledgement

We want to thank our families especially our parents for supporting us during the development of this project.

We also want to thank Engineer Vicktor Kulikov, our instructor, for the precious information he have passed to us and for his guidance when things wasn’t clear and for his support.

Finally, we would like to thank the Networked Software Systems Lab staff for his valuable support.

6

Page 7: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

RequirementsOur requirement was written in Hebrew.

2009 מאי 10

מסמך דרישות

המערכת תשמש לניהול מחסן המכיל רכיבים הממוקם בבניין הפקולטה להנדסת חשמלכללי:בטכניון.

WEB. (WUI) ממשק המערכת יהיה מבוסס ממשק משתמש:

: תפקידי המערכת

ניהול המשתמשים במערכת..1ניהול הרכיבים במחסן..2ניהול ספקים..3ניהול לקוחות..4ניהול השאלות של רכיבים ללקוחות..5

.ניהול המשתמשים במערכת.1קיימים שני סוגי משתמשים במערכת.א.

a. . )"מנהל יחיד של המחסן המשמש גם כמנהל המערכת )להלן: "מנהל המערכתb..)"עובדי המחסן שהם משתמשים רגילים במערכת )להלן: "משתמש

יתחברב. המשתמש בעזרתם אשר וסיסמה משתמש קיימים שם במערכת כל משתמש עבור למערכת.

מנהל המערכת ינהל את המשתמשים במערכת.ג.

סמכויות מנהל המערכת:ד.a..מנהל המערכת יכול להוסיף משתמש חדש במערכתb.מנהל המערכת יכול לשנות את סיסמתו ואת סיסמת כל אחד ממשתמשי המערכת כולל

את סיסמתו הפרטית.c..מנהל המערכת יכול לעדכן פרטי משתמש במערכתd..מנהל המערכת יכול למחוק משתמש קיים במערכתe.:שאילתות המבוצעות ע"י מנהל המערכת

i..חיפוש משתמש לפי כל אחת מתכונות המשתמשניתן יהיה להפיק דו"ח עבור כל אחת מהשאילתות לעיל.ה.

ניהול הרכיבים במחסן..2המערכת תשמור נתונים אודות רכיבים השייכים למחסן.א.הרכיבים במחסן ממוינים לפי קטגוריות.ב.

7

Page 8: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

הרכיבים מסופקים ע"י ספקים. )יש לציין עבור כל רכיב ספק(ג.

לכל רכיב קיים תאריך גמר אחריות.ד.

קיימים שני סוגי רכיבים – חד פעמיים ורב שימושיים.ה.

הרכיבים הרב שימושיים במערכת יכולים להימצא פיזית במחסן או להיות מושאלים ע"י לקוחותו.המחסן.

ניהול מלאי הרכיבים מתבצע ע"י משתמש המערכת.ז.

סמכויות המשתמשים הרגילים:ח.a..משתמש יכול להכניס רכיב חדש למערכתb..משתמש יכול לעדכן פרטי רכיב במערכתc..עבור רכיבים חד פעמיים ניתן לשנות את הכמות במחסןd.:שאילתות המבוצעות ע"י המשתמש

i.,סידורי מספר הרכיב.)קטגוריה,שם, מתכונות אחד כל ע"י רכיבים חיפוש מיקום,...(

ii..בדיקת כמות הרכיבים מקטגוריה מסוימת – כמות מושאלת וכמות במחסןסמכויות מנהל המערכת:ט.

a..מנהל המערכת יכול לבצע את כל הפעולות שמשתמש רגיל יכול לבצעb..מנהל המערכת יכול להוסיף קטגוריות של רכיביםc..מנהל המערכת יכול למחוק רכיבים מהמערכתd..מנהל המערכת יכול למחוק קטגוריות מהמערכת

הרכיביםי. ומספר לו במקרה ותודיע באופן אוטומטי למנהל המערכת דוא"ל המערכת תשלח מקטגוריה מסוימת הנוכחים במחסן קטן מהכמות המינימאלית.

ניתן יהיה להפיק דו"ח עבור כל אחת מהשאילתות לעיל.יא.

ניהול ספקים..3המערכת תשמור נתונים אודות הספקים של המחסן.א.ניהול הספקים מתבצע ע"י משתמשי המערכת.ב.לכל ספק יש לשמור את התכונות הבאות: מס' זיהוי, טלפון, ...ג.סמכויות המשתמשים הרגילים:ד.

a..משתמש יכול להוסיף ספק למערכתb..משתמש יכול לעדכן פרטי ספקים קיימים במערכתc.:שאילתות המבוצעות ע"י המשתמש

i..חיפוש ספקים ע"י כל אחד מתכונות הספקii..שליחת דוא"ל לספק

סמכויות מנהל המערכת:ה.a..מנהל המערכת יכול לבצע את כל הפעולות שמשתמש רגיל יכול לבצעb..מנהל המערכת יכול למחוק ספקים מהמערכת

ניתן יהיה להפיק דו"ח עבור כל אחת מהשאילתות לעיל.ו.

ניהול לקוחות..4

8

Page 9: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

המערכת תשמור נתונים אודות לקוחות המחסן.א.

הלקוחות במחסן ממוינים לפי סוגים.ב.

ניהול הלקוחות מתבצע ע"י משתמשי המערכת.ג.

סמכויות המשתמשים הרגילים:ד.a..משתמש יכול להוסיף לקוחות למערכתb..משתמש יכול לעדכן פרטי לקוחות קיימים במערכתc.:שאילתות המבוצעות ע"י המשתמש

i..חיפוש לקוחות ע"י כל אחד מתכונות הלקוחii..שליחת דוא"ל ללקוח

סמכויות מנהל המערכת:ה.a..מנהל המערכת יכול לבצע את כל הפעולות שמשתמש רגיל יכול לבצעb..מנהל המערכת יכול למחוק לקוחות מהמערכתc..מנהל המערכת יכול להוסיף סוגי לקוחות חדשים במערכת

ניתן יהיה להפיק דו"ח עבור כל אחת מהשאילתות לעיל.ו.

ניהול השאלות של רכיבים ללקוחות..5המערכת תשמור מידע אודות השאלות של רכיבים ללקוחות ע"י משתמשי המערכת.א.רכיבים רב שימושים: כל השאלה של רכיב היא ללקוח בתאריך מסוים עם תאריךב. עבור

החזרה.עבור רכיבים חד פעמיים: לא קיים תאריך חזרה.ג.ניהול ההשאלות יתבצעו ע"י משתמשי המערכת.ד.סמכויות משתמשים רגילים:ה.

a.)השאלה של רכיב במחסן ללקוח. )או נתינה של רכיב חד פעמיb..עדכון כי רכיב מושאל הוחזר למחסןc..שינוי מועד החזרה של רכיב מושאלd.:שאילתות המבוצעות ע"י המשתמש

i..מהם הרכיבים המושאלים ע"י לקוח נתוןii..מיהו הלקוחות שהשאילו רכיב נתון ומתי

iii..מיהם הלקוחות שהשאילו רכיבים מקטגוריה נתונהiv..מתי מוחזר רכיב נתוןv..מהם הרכיבים שהושאלו ע"י משתמש נתון ולמי

vi..המשתמש יוכל לקבל מידע לגבי ההשאלות שהתבצעו בטווח תאריכים נתוןvii.בטווח לחזור שאמורות ההשאלות לגביל מידע לקבל יוכל המשתמש

תאריכים נתון .סמכויות מנהל המערכת:ו.

a..מנהל המערכת יכול לבצע את כל הפעולות שמשתמש רגיל יכול לבצע המערכת תשלח דוא"ל באופן אוטומטי ללקוח שעליו להחזיר רכיב כשבוע לפי מועד ההחזרהז.

כמוכן תשלח למשתמש שהשאיל את הרכיב העתק של הודעה זו.ניתן יהיה להפיק דו"ח עבור כל אחת מהשאילתות לעיל.ח.

9

Page 10: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

10

Page 11: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Project ManagementTo manage our project we have assisted some web tools.

Code writing conventionWe have used the naming convention described in irritatedvowel web site in the following article: NET Programming Standards and Naming Conventions

Project Hosting

SVNIt is used to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly-compatible successor to the widely used Concurrent Versions System (CVS).

TORTISESVNTortoiseSVN is a really easy to use Revision control / version control

Source control software for Windows. It is based on Subversion. TortoiseSVN provides a nice and easy user interface for Subversion.It is developed under the GPL. Which means it is completely free, including the source code. But just in case you don't know the GPL too well: you can use TortoiseSVN to develop commercial applications or just use it in your company without any restrictions.Since it's not integration for a specific IDE like Visual Studio, Eclipse or others, you can use it with whatever development tools you like. As a Subversion client, TortoiseSVN has all the features of Subversion itself, including:

Most current CVS features. Directories, renames, and file meta-data are versioned. Commits are truly atomic. Branching and tagging are cheap (constant time) operations. Efficient handling of binary files.

11

Page 12: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Google CodeGoogle Code runs a project hosting service that provides revision control offering both Subversion and Mercurial , an issue tracker, a wiki for documentation, and a file download feature. The service is available and free for all Open Source projects that are licensed under one of nine licenses (Apache, Artistic, BSD, GPLv2, GPLv3, LGPL, MIT, MPL and EPL). The site limits the number of projects one person can have to 25. Additionally, there is a limit as to the number of projects that may be created in one day.

WareHouse hosting in Google code The URL to the project home in Google code is: http://code.google.com/p/webwarehouseapp/

Working Procedures

Wiki PagesAs mentioned above, Google code project hosting offers wiki section.

Figure 1

12

Page 13: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Figure 2

Example of a wiki page:

TipsAndTricks  

Common problems/issues and fixes

Introduction

This page contains tips and tricks to fix frequent defects in our beautiful project.

When you find a fix to some common problem please write down the problem's description and fix in this page to avoid the situation of both of us looking for the same fix to the same issue.

Guid in BLL

In our implementation the update function in the business logic gets an GUID parameter as a string and then pass it to the DAL as GUID. This causes a problem with the DetailesView.

Fix: the update function should get the a GUID as a parameter!

The GUI can pass a Guid so the parameter of the BLL should be Guid and not string and thus avoid the

New GuId(bla_bla)

code in the body of the functions in the BLL.

13

Page 14: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Parameters names in the BLL

In our initial implementation, the names of the parameters in the BLL didn't match the names of the parameters of the Dal so when you work on a page, fix the corresponding BLL file. This may avoid a lot of problems in the pages.

Entities Num

We have to decide where to show the Num )guid( field and where to invisible it. In both cases you should not delete it from the detailsview beacause its being use by the update and delete functions. So you can just invisible it.

databound function in grid view

Watch and learn:

 foreach (GridViewRow row in LendGridView.Rows)           {                Label user = (Label)row.FindControl("UserLabel");                Label customer = (Label)row.FindControl("CustomerLabel");                Label item = (Label)row.FindControl("ItemLabel");                if (user != null && customer != null && item != null)                {                    UserBLL userBLL = new UserBLL();                    CustomerBLL customerBLL = new CustomerBLL();                    LendItemBLL lendItemBLL = new LendItemBLL();

                    try                    {                        user.Text = userBLL.userGetByNum(new Guid(user.Text))[0].user_name;                        customer.Text = customerBLL.CustomerGetByNum(new Guid(customer.Text))[0].customer_name;                        item.Text = lendItemBLL.LendItemByNum(new Guid(item.Text))[0].lend_item_serial;                    }                    finally                    {                        //TODO                        //we should add dispose here                        // we need to add dispose function foreach bll                        // or maybe the detailsview disposes alone ,                        // need to check, because there exists disposing event

                    }                                   }           }

14

Page 15: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Work PlansEach milestone, we wrote a work plan, that’s including the division of tasks for the near future. This work plan was written as a wiki page in Google code.

Example for a work plan:

Plan for George:

1. Resolve the defect 31 )Ajax user friendly enhancement(.2. Resolve defect 30 add update progress in all mail pages.3. Resolve defect 27 )research for changing the Ajax combo box ugly style(.

Plan for Hanny:

1. Fix all the bugs set to you )mostly regular expression issues(.2. Add title to the excel generated.3. Suggest enhancements.

Code Freeze: 29.10

by this date all the defects should be fixed.

Stabilization: 30.10-31.10

In the Stabilization period we should try use the system, look for bugs and resolve them immediately. No new features are added in this period.

Working on the book: from 1.11 till 7.11

Working on the presentation: from 8.11 till 11.11

Presentation: we should coordinate with Viktor. Between 13.11 - 20.11

15

Page 16: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Defect Handling ProceduresQuoted from our wiki:

WorkProcedures

Our Work procedures for debugging the Project

Scope

This WIKI page describes our work procedures in opening a defect, fixing and verifying it.

We have almost completed the heavy code writing of the project, Now, It’s the time for giving the final touch, in other word QA-ing the project.

Motivation

No work can be done beautifully if there is no clear and comprehensible work procedures.

A defect-free software is almost non-exist, but as a (brilliant) software engineers, we should make sure our products contains, as less as possible, defects in its functionality.

Opening a Defect

Assume a developer encounters a mal-functionality in the project.

If he knows how to fix it, he should fix it immediately.1. If he thinks that the defect may appear in many other places, he should open a

defect describing it, and write down the fix.2. Mark the defect as Verified.

Else, he should open a defect and make sure that the responsible developer knows about the defect, by sending mail in the defect CC.

Make sure you classify the defect according to its severity. Note The severity matrix in this page bottom.

Fixing a defect

If a developer sees a defect in his responsibility area, he should fix it as soon as possible. If he plans to fix it in the future he should mark it as Accepted. He should write down the fix, to remember for the next time. (most of the bugs are

duplicated in many places) After the fix, he should mark it as fixed.

16

Page 17: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Verifying a Defect

Note: Only the person who opened a defect (owns the defect) can mark it as Verified. Assume a developer sees a fixed defect he owns.

1. He should try to reproduce.2. If it can be reproduced, he should reopen it and write down a comment.3. Else, he should mark it as verified.

Definitions

User Impact - how does the defect disturbing the user doing his task? How it’s hard to find a workaround.

Failure Likelihood - what is his percentage of users that will encounter the defect.

Severity MatrixUser Impact \ Failure Likelihood Low Medium High

Low Low Low Medium

Medium Medium Medium High

High Medium High Critical

17

Page 18: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Issues HandlingWe have used the issues pane in the Google code site intensively; here we have managed our project defects.

A snapshot:

Figure 3

18

Page 19: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Development Environment

Microsoft Visual Studio 2008Microsoft Visual Studio is an Integrated Development Environment (IDE) from Microsoft. It can be used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all platforms supported by Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework and Microsoft Silver light.

Visual Studio includes a code editor supporting IntelliSense as well as code refactoring. The integrated debugger works both as a source-level debugger and a machine-level debugger. Other built-in tools include a forms designer for building GUI applications, web designer, class designer, and database schema designer. It allows plug-ins to be added that enhance the functionality at almost every level - including adding support for source control systems (like Subversion and Visual SourceSafe) to adding new toolsets like editors and visual designers for domain-specific languages or toolsets for other aspects of the software development lifecycle (like the Team Foundation Server client: Team Explorer).

Microsoft SQL Server 2005

Microsoft SQL Server is a relational model database server produced by Microsoft. Its primary query languages are T-SQL and ANSI SQL.

19

Page 20: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Technologies

ASP.NETASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services. It was first released in January 2002 with version 1.0 of the .NET Framework, and is the successor to Microsoft's Active Server Pages (ASP) technology. ASP.NET is built on the Common Language Runtime (CLR), allowing programmers to write ASP.NET code using any supported .NET language.

ADO.NETADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the Microsoft. It is commonly used by programmers to access and modify data stored in relational database systems, though it can also be used to access data in non-relational sources. ADO.NET is sometimes considered an evolution of ActiveX Data Objects (ADO) technology, but was changed so extensively that it can be considered an entirely new product.

AJAXASP.NET AJAX is a free framework for building a new generation of richer, more interactive, highly personalized cross-browser web applications. This new web development technology from Microsoft integrates cross-browser client script libraries with the ASP.NET 2.0 server-based development framework. In addition, ASP.NET AJAX offers you the same type of development platform for client-based web pages that ASP.NET offers for server-based pages. And because ASP.NET AJAX is an extension of ASP.NET, it is fully integrated with server-based services. ASP.NET AJAX makes it possible to easily take advantage of AJAX techniques on the web and enables you to create ASP.NET pages with a rich, responsive UI and server communication. However, AJAX isn't just for ASP.NET. You can take advantage of the rich client framework to easily build client-centric web applications that integrate with any backend data provider and run on most modern browsers.

20

Page 21: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Project Design

Generally speaking there are three tiers to a database based web applications. These three tiers allow us to write programs, which are high in cohesion and low in coupling. It also promotes the reuse of code throughout the application. The three tiers or layers are:

Presentation layer - this is the user interface end of our application, the way in which it is presented.

Application layer - this is the layer in which the business logic of application resides. The business logic of the application is the "thing" that our application does the purpose of our application. The bulk of the functionality of our program is found in the application layer.

Persistence layer - the persistence layer allow us to "persist" data for the application or in other words, store and retrieve the data required for the running of the application. The persistence mechanism could be a relational database, XML files, or some other means of storing data.

Figure 4

21

Page 22: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Database Layer

Entity relationship diagram

Figure 5

Data Structure Diagram

Figure 6

22

Page 23: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Guid In each table the primary key is of a type Guid which generated automatically by the database.

Foreign Keys: Relationships between tables are only via the Guid fields. SQL Server: Concurrency: optimistic. Managed by DAL.

Tables designHere we will give a description for some tables that will give you a perspective of our design.

In figure 5 you can see the type of every field in the database tables.

User table

Field CommentUser_num User guid. An automatic key given by the system.user_id The user id numberuser_name The user nameuser_address The user addressuser_phone The user phone numberuser_email The user mail addressuser_type The user type, this is a foreign key from the user type table.user_login_name

User login name

user_password The user login password. The password id hashed into the database.

The supplier and customer table design is very similar to the user’s table.

Component table

component_num Component guid. Automatic key given by the systemcomponent_serial_num Component serial number, a number that is hardcoded In componentcomponent_vendor A foreign key to the vendor table.component_description The component description.component_place The component location in the warehouse.component_quantity The available quantity of this component in the warehousecomponent_supplier A foreign key to the suppliers table. The component’s supplier.

The lend_item table is very similar to this table. The reason for this division, Is that the system can contains two kinds of items, components and item, the items should be lended and finally returned to the warehouse and component are delivered to the customer. As seen in figure 5, the lend_item table missing the quantity field, the reason is that each row in the lend_item table describes only 1 entity. There Is an additional field in the lend_item table which named available. This field is true, if the item is

23

Page 24: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

available in the warehouse and its value is false if the item is leased to a customer and not available currently in the warehouse.

Vendor table

Field Commentvendor_num Vendor guid. An automatic key given by the system.vendor_name The vendor name.

Lend table

Field Commentlend_num Lend number. Automatic key generated by the applicationlend_user Foreign key to the user tablelend_customer Foreign key to the customer tablelend_item_num Forign key to the item that is lended.lend_start_date The lend start datelend_end_date The lend end datelend_returned_date The lend return date

The delivery table structure is similar to the lend table. The difference is that when the user lend, he lend only one item, this item should be returned to the warehouse, however, when the user delivers a component, he can deliver more than one item from the same component that is the reason that the delivery table contain additional quantity field.

Parameter Table

Field CommentParameter_name The parameter nameParameter_value The parameter value

This table handles the application metadata. There are some built in parameters that the user can edit but can’t delete. The user can add additional parameters to the application.

24

Page 25: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Data Access Layer

A Data Access Layer (DAL) is a layer of a computer program which provides simplified access to data stored in persistent storage of some kind, such as an entity-relational database.

This data access layer is used in turn by other program modules to access and manipulate the data within the data store without having to deal with the complexities inherent in this access.

For example, the DAL might return a reference to an object (in terms of object-oriented programming) complete with its attributes instead of a row of fields from a database table. This allows the client (or user) modules to be created with a higher level of abstraction. This kind of model could be implemented by creating a class of data access methods that directly reference a corresponding set of database stored procedures. Another implementation could potentially retrieve or write records to or from a file system. The DAL hides this complexity of the underlying data store from the external world.

Also, business logic methods from an application can be mapped to the Data Access Layer. So, for example, instead of making a query into a database to fetch all users from several tables the application can call a single method from a DAL which abstracts those database calls.

Applications using a data access layer can be either database server dependent or independent. If the data access layer supports multiple database types, the application becomes able to use whatever databases the DAL can talk to. In either circumstance, having a data access layer provides a centralized location for all calls into the database, and thus makes it easier to port the application to other database systems (assuming that 100% of the database interaction is done in the DAL for a given application).

Data SetA DataSet contains a complete representation of data, including the table structure, the relationships between tables, and the ordering of the data. DataSet classes are flexible enough to store any kind of information from a database to an Extensible Markup Language (XML) file. DataSet classes are stateless; that is, you can pass these classes from client to server without tying up server connection resources

25

Page 26: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Business Logic LayerA Business logic layer (BLL) is a software engineering practice of compartmentalizing the rules and calculations of a software application from its other design elements. It is also known as the Domain layer.

This Business logic layer is usually one of the tiers in a multitier architecture, in our case, the 3-tier design. It separates the business logic from other modules, such as the Data access layer and User interface.

By doing this, the business logic of an application can often withstand modifications or replacements of other tiers. For example, in an application with a properly separated Business logic layer and Data access layer, the Data access layer could be rewritten to retrieve data from a different database, without affecting any of the business logic. This practice allows software application development to be more effectively split into teams, with each team working on a different tier simultaneously.

Our design:

We used the 3 layers design pattern which is made of the following layers:

1) WUI – web user interface from asp.net pages2) BLL – C# classes3) DAL – ado .net objects. DATA SETS4)Communications between the layers :

Each layer only knows about the existence of the lower layers, and doesn’t know about the existence of the upper layers. For example the BLL layers, it knows that there exist a DAL layer , and uses it , but doesn’t know that there exists WUI layer.

Each layer sends messages only to the below level and gets answers from that level. Our design is like straight forward messages as the following example:

WUI get users BLL get users DAL get users DB

WUI users list BLL users list DAL user list DB

26

Page 27: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

We have no inheritance, no complicated object oriented design.

Why choosing such design when we can use store procedures and other DAL objects such as SqlCommand?

Main reason for that is simplicity, second reason, there are many options or ways to design the application, but you only choose one, we decided to use this one for more than one reason:

1) Simplicity: Microsoft has built the DATASETS objects especially for this need and for this reason, so we can find it ready and easy to use object, and not build one from beginning.

2) Tutorials: most of the available tutorials, examples, videos, are made for this design, for the DATASETS, and very easy to understand the example and from there to build your own objects.

3) Requirements: for this project and its requirements, we did not find a need to build complicated design with inheritance, and support for thousands of users. It is simple project , with at most 100 users to use , so need to complicate stuff and instead we concentrate on our WUI and the many features of .net

27

Page 28: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Here is our class Diagrams and relations:

Figure 7

28

Page 29: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

As you can see, the left side is the BLL classes, which only send messages to the DAL components, and they receive answers from them.

For each relation, I will expand more and give examples:

1)ComponentBLL ComponentDAL relation :

Figure 8

ComponentDS :

29

Page 30: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

For each table in the database we have dataset , each dataset contains Table Adapter which holds all the fields of the table in the database with the same entity types , for example the table in the database contains the componentID field as GUID so also the table adapter contains a GUID field with the same name componentID.

As we can see in the methods of the table adapter, we have a lot of methods, all those methods are built from pure sql queries, for example the componentDelete method is built like this:

Input parameters:

System.Guid Original_component_num

And the method contains the following query:

DELETE FROM [component] WHERE (([component_num] = @Original_component_num))

so when the delete method is invoked it activates the above query.

Another example:

ComponentUpadateQuantity :

Input parameters :

int component_quantity

System.Guid component_num

And this method contains the following query :

UPDATE [component] SET [component_quantity] = @component_quantity

where component_num=@component_num

so when this component is invoked , the above query is activated , and the quantity of the item is updated.

ComponentBLL ( BLL layer ) :

30

Page 31: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

As you can see, there is the Adapter property, it holds the dataset object in it, each time we create new class from this BLL it immediately creates new DATASET and holds it in the adapter. The main goal of the BLL classes in our design is to enforce the business rules. For example, it ensures that the GUID is a legal value, or the quantity is a legal number, and the BLL returns a well understandable error.

Let's take a look on the component quantity update function:

1)public void ComponentQuantityUpdate (Guid component_num, int 2)component_quantity)

3) {

4) if (component_quantity < 0)

5) throw new Exception("Quantity should be greater 6)than 0");

7)Adapter.ComponentUpadateQuantity(component_quantity,component_num );

}

In 4 we can see the rules enforce.

In 5) we can see that it throws exception to indicate the error and its meaning.

This is how all our project is built, so here is all our classes with the methods name, no relations in this diagram because it is the same as the above diagram but with methods names.

31

Page 32: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Figure 9

Figure 10

32

Page 33: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Figure 11

33

Page 34: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Events handling class

Figure 12

The History class is responsible to record the last 6 operations conducted by the user to update the system administrator. It is placed in the BLL.

MyEvent class has one string property named MyMessage. The History class has one property of type queue<MyEvent> that holds the last 6 events in the system.

Every operation on the system components (components, items) and deliveries (deliveries, lends) id decorated in the required format by the EventDecorator function and add to the queue.

If the History reaches the maximum capacity, it delete the oldest event.

34

Page 35: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Exception handlingMost of the exception handling in our application is placed in the business logic. Excepton that are raised from the DAL or from the Database bubble to the BLL, and the BLL in its turn treat the exception.

The BLL may also raise some exceptions. Most of the functions in the BLL are wrapped with a try-catch command.

Some exceptions are treated internally in the BLL and others alert the user in the GUI layer.

35

Page 36: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

User Interface Layer

Site MapBeginning with version 2.0, ASP.NET allows the developer to define an application’s structure via the Site Map Web server control. The site map is defined in a separate file. The default format for this file is XML.

The site map is the base for using the navigation controls available in ASP.NET 2.0. The site map is used as the data source for the navigation controls. These navigation controls include Menu, SiteMapPath, and TreeView.

The WareHouse Site Map resides in the Master Page; thus, in every page in the application have the sitemap appear to help the user get oriented in the application tree.

Master PageASP.NET master pages allow you to create a consistent layout for the pages in your application. A single master page defines the look and feel and standard behavior that you want for all of the pages (or a group of pages) in your application. You can then create individual content pages that contain the content you want to display. When users request the content pages, they merge with the master page to produce output that combines the layout of the master page with the content from the content page.

In our project, we used 2 main master pages, one is for users, and the other is for admins, so all user pages are set that their master page is the user master page, and the same for the admin page. This way we separate users from admits, and each of them has their unique menu, and we build the menu only once in the master page and also all security checks are called from the master page. So all pages have the same behavior.

For example the code to add master page:

<%@ Page Title="Customers" Language="C#" MasterPageFile="~/Pages/user/userMaster.Master" ….

36

Page 37: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Validation ControlsAn important aspect of creating ASP.NET Web pages for user input is to be able to check that the information users enter is valid. ASP.NET provides a set of validation controls that provide an easy-to-use but powerful way to check for errors and, if necessary, display messages to the user. The topics in this section describe the validation controls and how to use them.

All of the validation controls inherit from the base class BaseValidator so they all have a series of properties and methods that are common to all validation controls. They are:ControlToValidate - This value is which control the validator is applied to.ErrorMessage - This is the error message that will be displayed in the validation summary.IsValid - Boolean value for whether or not the control is valid.Validate - Method to validate the input control and update the IsValid property.Display - This controls how the error message is shown. Here are the possible options: None (The validation message is never displayed.) Static (Space for the validation message is allocated in the page layout.) Dynamic (Space for the validation message is dynamically added to the page if validation fails.)

Here is validator code which displays error msg if the quantity is not a valid number:

“<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="QuantityTextBox" ErrorMessage="Overlarge Delivery"         onservervalidate="CustomValidator1_ServerValidate" ToolTip="Delivery Quantity must be equal or less than the Component Quantity In the Warehouse. "> </asp:CustomValidator>”

37

Page 38: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

ToolTipsToolTips are those small windows which display some text when the mouse is over a control giving a hint about what should be done with that control. ToolTip is not a control but a component which means that when we drag a ToolTip from the toolbox onto a form it will be displayed on the component tray. Tooltip is an Extender provider component which means that when you place an instance of a ToolTipProvider on a form, every control on that form receives a new property.

For example, here is a code that hints the user about the quantity when the mouse is over the field:

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="QuantityTextBox" ErrorMessage="Overlarge Delivery" onservervalidate="CustomValidator1_ServerValidate" ToolTip="Delivery Quantity must be equal or less than the Component Quantity In the Warehouse. ">

38

Page 39: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

SecurityAs mentioned in the Abstract. We put the security concern on a top priority. Thus we have implemented security requirements in various places in our code.

Passwords In our project, in order to prevent anyone from stealing passwords, we used one way hash functions in order to store passwords in the database. For example, if anyone access the database manually, he will not be able to get any information about the password even if he knows that hash function we used.

In .net it has very simple way in order to hash it one way.

The SHA hash functions are a set of cryptographic hash functions designed by the National Security Agency (NSA) and published by the NIST as a U.S. Federal Information Processing Standard. SHA stands for Secure Hash Algorithm. The three SHA algorithms are structured differently and are distinguished as SHA-0, SHA-1, and SHA-2. The SHA-2 family uses an identical algorithm with a variable digest size which is distinguished as SHA-224, SHA-256, SHA-384, and SHA-512.

SHA-1 is the best established of the existing SHA hash functions, and is employed in several widely used security applications and protocols. In 2005, security flaws were identified in SHA-1, namely that a possible mathematical weakness might exist, indicating that a stronger hash function would be desirable, Although no attacks have yet been reported on the SHA-2 variants, they are algorithmically similar to SHA-1 and so efforts are underway to develop improved alternatives. A new hash standard, SHA-3, is currently under development – the function will be selected via an open competition running between fall 2008 and 2012.

In our project we used SHA to hash passwords.

For example, in order to hash passwords, there is the SHA256Managed class that is built to hash passwords. Here is the usage:

SHA256Managed().ComputeHash(Encoding.UTF8.GetBytes(UnHashedPassword)

Passwords in databaseAll passwords in database are hashed through one way hash function.

39

Page 40: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Password in UIAll passwords are invisible in the interface , even though they are hashed , we preferred hiding them so no one could get them and try to brute force the passwords.

Session Control ASP.NET session state provides an important security advantage over client state management techniques in that the actual state is stored on the server side and not exposed on the client and other network entities along the HTTP request path.

ASP.NET 2.0 session state has been hardened to help guard against session ID spoofing and injection. It takes advantage of the HTTP-only cookie feature

In addition, ASP.NET 2.0 also provides a session ID regeneration feature, which forces expired session IDs that are not found on the server to be replaced with a newly generated ID. This avoids the accidental reuse of session IDs that commonly occurs with cookieless session links (such as those indexed by search engine crawlers), as well as malicious session ID injection attacks through cookieless session link posting. This feature is on by default and is only supported for cookieless session Ids

So we used sessions in order for users to login and log out, C# has that almost ready if anyone wants to use it It manages the sessions for all users, and you can extract and add information to it such as username, expire, and role.

For example in file global.asax.cs we configured the event authentication request , to add the role of the user :

protected void Application_AuthenticateRequest(object sender, EventArgs e){

…FormsAuthenticationTicket ticket = identity.Ticket;

                      string[] roles =  getRole(ticket.Name); HttpContext.Current.User =        new System.Security.Principal.GenericPrincipal(identity, roles);

}

                   

40

Page 41: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

ConcurrencyThe warehouse handles concurrency in the DAL. The handling is being done automatically by the DataTableAdapter as described below. We have chosen the Optimistic locking as it is more suitable to our application.

Now, we will describe the difference between optimistic and pessimistic Locking.

Optimistic vs. Pessimistic Locking

The only way to prevent concurrency errors is to lock the records that are being edited. There are two basic approaches towards locking - optimistic and pessimistic. One would consider an optimistic locking scenario when the likelihood of a concurrency condition is low. This is usually the case in systems where the activity is primarily additive, like an order entry system. On the other hand, one would consider pessimistic locking when the likelihood of a concurrency condition is high. This is usually true of management or workflow-oriented systems.

Since pessimistic locking anticipates contention for the same record, we take precautions by preventing users from selecting a record for editing when another user has already done so, thereby locking the record. This is often implemented by relying on the database itself. All major relational databases on the market today offer some kind of inherent locking when updates are occurring, although the granularity of the locks may differ. For instance, SQL Server 2000 provides locking at the row level, while others may lock the entire page or table the row resides in. We will refer to this as Pessimistic Database Locking. Unfortunately, this type of locking requires that you remain connected to the database for the entire process, which is somewhat contrary to the .NET model. In addition, this type of locking could hold up other users trying to access the system.

In optimistic locking, we allow multiple users to access the same record for edits, since we don't anticipate contention for data. Here the "locking" happens after the user tries to save changes on top of someone else's changes. Before or during an update, the application logic will check to see if the current record in the database has changed since you retrieved your copy of the record. If it has, the app will generate an error causing the update transaction to be rolled back. If no changes are detected, the record is saved directly.

ADO.NET: Optimistic Concurrency Updating Logic

To check for optimistic concurrency violations, the Data Adapter Configuration Wizard writes SQL statements that verify the record you are about to update or delete has not changed since

41

Page 42: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

you originally loaded it into your DataSet. The Wizard does this by adding a rather large WHERE clause to the SQL statement to verify that it is updating or deleting an exact match of what was downloaded and placed in the DataSet. However, this also relies on another aspect of the DataSet: DataTables can store multiple versions of each row. Each DataTable in a DataSet is made up of DataRow objects. Each record in the table can actually exist multiple times, where each record has a different DataRowVersion. The ones that come into play with optimistic concurrency are current and Original.

When the DataAdapter first populates your DataSet with records, each DataRow is given a DataRowVersion of Original. If you then edit a record, the changes are stored in a new version of the record with a DataRowVersion of Current. Now, you have both the Original version (from the database) and the Current version (the changes you want to make). It is called the Current version because it is the current version of the data in your DataSet, but, of course, it is not yet the current version in the underlying database.

42

Page 43: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Issues and Decisions:Problems we encountered during the project or critical decisions we had to make:

One of the main problems and took a lot effort and time was what objects are we going to use in our project, for example, are we going to use DataSets, Linq , general DAL… we had to read a lot of material and search the web for examples , advantages and disadvantages of each object , what's recommended and what is not recommended , problems in these objects , since it is all new objects, finally we decided to use dataset because it was more appropriate for this project.

Another problem we encountered was how to make join between tables in the DAL , since we used one primary key in each table , and the primary key was GUID entity and each foreign key was also GUID , so we had to make joins between the tables , the best way we found to do that , was through events in the GUI , instead of joining the tables in the DAL , we made in each BLL method , that gets the GUID and returns a row of the GUID that was requested and its details. And this was done with the help of events in the WUI objects such as DATA GRID events.

Another problem, very important one, since all of primary keys GUIDs, so for example each user has an id , name… , but because the primary key is the GUID and not the id or the name , so we had to verifiers manually to verify that a user could not be added twice to the database , for example we used If exists … else …

43

Page 44: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

LimitationsSimilar to any other software, our warehouse management system has some limitation.

The project is designed for only two kinds of users, administrators, and regular users, we didn’t manage the user types’ permissions, as it may complex the application. However the Infra structure and the design of the database enable easy explanation. There is a table for users types, fields can be add it all the 3 tier application, and with some changes in the authentication code will make the application user multi-type which support detailed permissions.

Default Date Parameters for Lend Search and Lend Edit-We want that when the user enters the lend search page for the first time he will see all the lends that where done in the system, so we need to specify a default start and end dates to send to the BLL as a parameters. We have decided for the following dates as the default dates: lend_start_date=1/1/1753 end_end_date=1/1/2200

The export to excel, exports the entities that are showed in the current page of the detailsview. Entities of other pages are not included in the report.

44

Page 45: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Supported Environments

Server sideOperating System

Windows server 2003 and above. .Net Framework 3.5 IIS 6 and above.

Client SideOperating System:

All versions of Microsoft Windows later than windows XP.

Explorer:

Microsoft Internet Explorer 6 and above. (Internet Explorer 8 – compatibility mode). Mozilla Firefox version 3 and above.

45

Page 46: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

SummaryDeveloping this project was a great experience.

We have learned some vital information which made us better engineers. In the design stage, we had to be well familiar with the theory of the 3-tier application design, then we had to get to know Microsoft’s tools, like visual studio, MS-SQL server, DataSets, etc. and in the Web Designing stage, we had to work with some state of the art technologies, like AJAX.

In the development process we have emphasized the work procedures, so we have wrote down the accepted working process. We were sure that many defects will appear through the development process and they have to be fixed and documented. Also, we knew that we have to share information and findings, to prevent both of us looking for the same information. For these reasons, we have used Google great application, named Google code to manage our development process, open defects and write wiki pages.

Finally, we hope you will enjoy using, checking and grading and maybe continue developing the system.

46

Page 47: The WareHouse Web Application - Mainnssl.eew.technion.ac.il/files/Projects/2008Winter/Warehou…  · Web viewThe warehouse application was designed to give a full solution to the

The WareHouse Web Application

By: George Kour & Hanny Danial

Bibliographyhttp://bytes.com/topic/.

http://cit.wta.swin.edu.au. Introduction to a Better Architecture - 3 Tier Design.

http://code.google.com/p/webwarehouseapp/.

http://en.wikipedia.org/wiki/ADO.NET. ADO.NET.

http://en.wikipedia.org/wiki/ASP.NET. ASP.NET.

http://en.wikipedia.org/wiki/Google.

http://en.wikipedia.org/wiki/Microsoft_Visual_Studio. Microsoft Visual Studio.

http://msdn.microsoft.com/en-us/. Building an N-Tier Application in .NET.

http://stackoverflow.com/.

http://tortoisesvn.net/. tortoisesvn.

http://www.asp.net/.

http://www.codeproject.com/KB/webforms/AspNetMsgBox.aspx. Simple MessageBox functionality in ASP.NET.

http://www.irritatedvowel.com/Programming/Standards.aspx. .NET Programming Standards and Naming Conventions.

Peter A. Bromberg, P. ADO.NET: Optimistic Concurrency Updating Logic.

47