.Các yêu cầu về tính năng kỹ thuật công nghệ

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phát triển ứng dụng sử dụng kiến trúc công nghệ MVC cho bài toán dự báo dòng tiền doanh nghiệp (Trang 28)

Người sử dụng cần phần mềm thuận tiện, linh hoạt, sử dụng được trên các thiết bị, không phải cài đặt nhiều, cũng như phần mềm dễ dàng được nâng cấp, bảo trì.

Phần mềm có chức năng phân quyền truy cập cho từng đối tượng người dùng, bảo mật, mật khẩu phải có độ phức tạp cao. An toàn, an ninh từ mức khá trở lên ( code không dùng Sql Injection, máy chủ web có tường lửa tốt, có Https, cài phần mềm chống DDOS, có máy chủ đồng bộ thay thế nếu máy chủ chính gặp vấn đề)

Khối lượng dữ liệu, với các dòng, các bảng dữ liệu, code tương tác, xử lý dữ liệu với hiệu năng phù hợp, cùng với hệ quản trị cơ sở dữ liệu tốt.

Báo cáo tự động, dễ xem, xuất các định dạng và số liệu được tự động tính toán và chính xác.

Chương 2: Phân tích thi t k và xử lý

Nôi dung Chương trình bày các vấn đề về công nghệ và giải pháp thiết kế xử lý, như công nghệ ASP MVC, kiến trúc MVC, luồng quy trình xử lý nghiệp vụ, thiết kế workflow, cơ sở dữ liệu và các cách xử lý dữ liệu.

2.1.Lựa chọn giải ph p kỹ thuật công nghệ:

- Công nghệ Web ASP MVC được chọn vì tính linh hoạt của web, kiến trúc công nghệ ASP MVC là kiến trúc tiên tiến nhất hiện nay, với tính tùy biến, hiệu năng cao.

2.2. Giới thiệu về MVC

- MVC là viết tắt của Model – View – Controller. Là một trong những design pattern. Được vận hành để tách mã lệnh thành 3 phần riêng biệt. Ở mỗi phần MVC sẽ có những chức năng đặc thù. Để xử lý các tác vụ mà request gởi tới. MVC làm cho mã lệnh trở nên trong sáng, dễ phát triển và dễ nâng cấp theo thời gian.

- Để làm việc tốt đối với MVC, chúng ta cần nắm thật vững kiến thức OOP. Bản chất của các framework khác cũng được hình thành trên lý thuyết MVC. Do vậy nếu chúng ta nắm tốt MVC. Thì ở những framework khác chắc chắn sẽ không cảm thấy khó hiểu.

 Model: Là thành phần chịu trách nhiệm xử lý các thao tác trên database, và gởi trả kết quả thông qua view.

 View: Là phần hiển thị thông tin trên website, sau khi đi qua controller và nhận kết quả từ phía model thì view là bước cuối cùng để chuyển thông tin tới người dùng.

 Controller: Là phần điều hướng các request tới những tác vụ tương ứng. Controller là một phần không thể thiếu ở bất cứ framework nào. Vì nó có trách nhiệm gởi và nhận request từ hệ thống tới người sử dụng.

- Xuất xứ: Tất cả bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC ở Palo Alto. Sự ra đời của giao diện đồ họa (Graphical User Interface) và lập trình hướng đối tượng ( Object Oriented Programming) cho phép lập trình viên làm việc với những thành phần đồ họa như những đối tượng đồ họa có thuộc tính và phương thức riêng của nó. Không dừng lại ở đó, những nhà nghiên cứu ở Xerox PARC còn đi xa hơn khi cho ra đời cái gọi là kiến trúc MVC ( viết tắt của Model – View – Controller).

MVC được phát minh tại Xerox Parc vào những năm 70, bởi Trygve Reenskaug. MVC lần đầu tiên xuất hiện công khai là trong Smalltalk-80. Sau đó trong một thời gian dài hầu như không có thông tin nào về MVC, ngay cả trong tài liệu 80 Smalltalk. Các giấy tờ quan trọng đầu tiên đƣợc công bố trên MVC là “A Cookbook for Using the Model-View-Controller User Interface Paradigm in

Smalltalk – 80”, bởi Glenn Krasner và Stephen Pope, xuất bản trong tháng 8 / tháng 9 năm 1988.

- Kiến trúc mô hình MVC

Trong kiến trúc MVC, một đối tượng đồ họa người dùng(GUI Component) bao gồm 3 thành phần cơ bản: Model, View, và Controller. Model có trách nhiệm đối với toàn bộ dữ liệu cũng như trạng thái của đối tượng đồ họa. View chính là thể hiện trực quan của Model, hay nói cách khác chính là giao diện của đối tượng đồ họa. Và Controller điều khiển việc tương tác giữa đối tượng đồ họa với người sử dụng cũng như những đối tượng khác.

Hình 2.01: Các thành phần chính của mô hình MVC

- Khi người sử dụng hoặc những đối tượng khác cần thay đổi trạng thái của đối tượng đồ họa, nó sẽ tương tác thông qua Controller của đối tượng đồ họa. Controller sẽ thực hiện việc thay đổi trên Model. Khi có bất kỳ sự thay đổi nào xảy ra ở Model, nó sẽ phát thông điệp ( broadcast message) thông báo cho View và Controller biết. Nhận được thông điệp từ Model, View sẽ cập nhật lại thể hiện của mình, đảm bảo rằng nó luôn là thể hiện trực quan chính xác của Model. Còn Controller, khi nhận được thông điệp từ Model, sẽ có những tương tác cần thiết phản hồi lại người sử dụng hoặc các đối tượng khác

2.3 .Đặc điểm của mô hình MVC

- Lợi ích quan trọng nhất của mô hình MVC là nó giúp cho ứng dụng dễ bảo trì, module hóa các chức năng, và được xây dựng nhanh chóng. MVC tách các tác vụ của ứng dụng thành các phần riêng l model, view, controller giúp cho việc xây dựng ứng dụng nhẹ nhàng hơn. Dễ dàng thêm các tính năng mới, và các tính năng cũ có thể dễ dàng thay đổi. MVC cho phép các nhà phát triển và các nhà thiết kế có thể làm việc đồng thời với nhau. MVC cho phép thay đổi trong 1 phần của ứng dụng mà không ảnh hưởng đến các phần khác

-Sở dĩ như vậy vì kiến trúc MVC đã tách biệt (decoupling) sự phụ thuộc giữa các thành phần trong một đối tượng đồ họa, làm tăng tính linh động (flexibility) và tính tái sử dụng (reusebility) của đối tượng đồ họa đó. Một đối tượng đồ họa bấy giờ có thể dễ dàng thay đổi giao diện bằng cách thay đổi thành phần View của nó trong khi cách thức lưu trữ (Model) cũng như xử lý (Controller) không hề thay đổi. Tương tự, ta có thể thay đổi cách thức lưu trữ (Model) hoặc xử lý (Controller) của đối tượng đồ họa mà những thành phần còn lại vẫn giữ nguyên.

- Chính vì vậy mà kiến trúc MVC đã được ứng dụng để xây dựng rất nhiều framework và thư viện đồ họa khác nhau. Tiêu biểu là bộ thư viện đồ họa của ngôn ngữ lập trình hướng đối tượng SmallTalk (cũng do Xerox PARC nghiên cứu và phát triển vào thập niên 70 của thế kỷ 20). Các Swing Components của Java cũng được xây dựng dựa trên kiến trúc MVC. Đặc biệt là nền tảng ASP.NET MVC Frame work.

- Tiềm hiểu về Model

Models: Các đối tượng Models là một phần của ứng dụng, các đối tượng này thiết lập logic của phần dữ liệu của ứng dụng. Thông thường, các đối tượng model lấy và lưu trạng thái của model trong CSDL. Ví dụ như, một đối tượng Product (sản phẩm) sẽ lấy dữ liệu từ CSDL, thao tác trên dữ liệu và sẽ cập nhật dữ liệu trở lại vào bảng Products ở SQL Server.

Trong các ứng dụng nhỏ, model thường là chỉ là một khái niệm nhằm phân biệt hơn là được cài đặt thực thụ, ví dụ, nếu ứng dụng chỉ đọc dữ liệu từ CSDL và gởi chúng đến view, ứng dụng khong cần phải có tầng model và các lớp lien quan. Trong trường hợp này, dữ liệu được lấy như là một đối tượng model (hơn là tầng model).

- Tiềm hiểu về View

Views: Views là các thành phần dùng để hiển thị giao diện người dùng (UI). Thông thường, view được tạo dựa vào thông tin dữ liệu model. Ví dụ như, view dùng để cập nhật bảng Products sẽ hiển thị các hộp văn bản, drop-down list, và các check box dựa trên trạng thái hiện tại của một đối tượng Product.

- Tiềm hiểu về Controler

Controllers: Controller là các thành phần dùng để quản lý tương tác người dùng, làm việc với model và chọn view để hiển thị giao diện người dùng. Trong một ứng dụng MVC, view chỉ được dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý và đáp trả nội dung người dùng nhập và tương tác với người dùng. Ví dụ, controller sẽ quản lý các dữ liệu người dùng gởi lên (query- string values) và gởi các giá trị đó đến model, model sẽ lấy dữ liệu từ CSDL nhờ vào các giá trị này.

2.4. Ưu điểm của MVC

- Mẫu MVC giúp bạn tạo được các ứng dụng mà chúng phân tách rạch ròi các khía cạnh của ứng dụng (logic về nhập liệu, logic xử lý tác vụ và logic về giao diện). Mẫu MVC chỉ ra mỗi loại logic kể trên nên được thiếp lập ở đâu trên ứng dụng. Logic giao diện (UI logic) thuộc về views. Logic nhập liệu (input logic) thuộc về controller. Và logic tác vụ (Business logic – là logic xử lý thông tin, mục đích chính của ứng dụng) thuộc về model. Sự phân chia này giúp bạn giảm bớt được sự phức tạp của ứng dụng và chỉ tập trung vào mỗi khía cạnh cần được cài đặt ở mỗi thời điểm. Ví dụ như bạn chỉ cần tập trung vào giao diện (views) mà không phải quan tâm đến logic xử lý thông tin của ứng dụng.

- Để quản lý sự phức tạp của ứng dụng, mẫu MVC giúp cho chúng ta có thể kiểm thử ứng dụng dễ dàng hơn hẳn so với khi áp dụng mẫu Web Forms. Ví dụ, trong một ứng dụng ASP.NET Web Forms, một lớp thường được sử dụng để hiển thị thông tin xuất ra cho người dùng và đồng thời xử lý thông tin người dùng nhập. Việc xây dựng các bộ test tự động cho ứng dụng Web Forms là rất phức tạp, bởi để kiểm thử mỗi trang web, bạn phải khởi tạo đối tượng trang, khởi tạo tất cả các control được sử dụng trong trang và các lớp phụ thuộc trong ứng dụng. Và bởi vì có quá nhiều lớp cần được khởi tạo để chạy được trang, thật khó để có thể viết các test chỉ tập trung vào một khía cạnh nào đó của ứng dụng. Và vì thế, kiểm thử đối với các ứng dụng dứa trên nền tảng Web Forms sẽ khó khăn hơn nhiều so với khi áp dụng trên ứng dụng MVC. Hơn thế nữa, việc kiểm thử trên nền tảng Web Forms yêu cầu phải sử dụng đến web server. Nền tảng MVC phân tách các thành phần và sử dụng các interface (khái niệm giao diện trong lập trình hướng đối tượng), và nhờ đó có thể kiểm thử các thành phần riêng biệt trong tình trạng phân lập với các yếu tố còn lại của ứng dụng.

- Sự phân tách rạch ròi ba thành phần của ứng dụng MVC còn giúp cho việc lập trình diễn ra song song. Ví dụ như một lập trình viên làm việc với view, lập trình viên thứ hai lo cài đặt logic của controller và lập trình viên thứ ba có thể tập trung vào logic tác vụ của model tại cùng một thời điểm.

-Views: Views là các thành phần dùng để hiển thị giao diện người dùng (UI). Thông thường, view được tạo dựa vào thông tin dữ liệu model. Ví dụ như, view

dùng để cập nhật bảng Products sẽ hiển thị các hộp văn bản, drop-down list, và các check box dựa trên trạng thái hiện tại của một đối tượng Product.

- MVC làm cho ứng dụng trở nên trong sáng, giúp lập trình viên phân tách ứng dụng thành ba lớp một cách rõ ràng. Điều này sẽ rất giúp ích cho việc phát triển những ứng dụng xét về mặt lâu dài cho việc bảo trì và nâng cấp hệ thống.

MVC hiện đang là mô hình lập trình tiên tiến bậc nhất hiện nay, điều mà các framework vẫn đang nổ lực để hướng tới sự đơn giản và yếu tố lâu dài cho người sử dụng.

2. 5. Luồng quy trình xử lý nghiệp vụ

2.6.Thi t k workflow

Hình 2.03: Thiết kế workflow

2.7.Thi t k Cơ sở dữ liệu

2.7.1.Dự b o b n c c nhóm hàng

Hình 2.04: Cơ sở dữ liệu – Dự báo bán các nhóm hàng -Bảng Danh mục Sản phẩm: ProductCate -Bảng Danh mục Sản phẩm: ProductCate

-Bảng Sản phẩm: Product

-Bảng Dự báo bán hàng: ForecastSale

2.7.2. Dự b o Sản lượng nhóm hàng chính

Hình 2.05: Cơ sở dữ liệu – Dự báo Sản lượng nhóm hàng chính

-Bảng Dự báo Sản lượng nhóm hàng chính : ForecastFoodPerMonth

2.7.3. Dự b o mua nguyên vật liệu

Hình 2.06: Cơ sở dữ liệu – Dự báo mua nguyên vật liệu -Bảng Nguyên vật liệu: Material -Bảng Nguyên vật liệu: Material

-Bảng Dự báo mua nguyên vật liệu: ForecastPurchaseMaterial

2.7.4. Dự b o c c dòng tiền và các dự b o kh c

Hình 2.07: Cơ sở dữ liệu – Dự báo các dòng tiền

-Bảng Lĩnh vực kinh doanh: UniversalCate -Bảng Chủ đề gốc dòng tiền: RootCate -Bảng Chủ đề cha dòng tiền: ParentCate -Bảng Chủ đề dòng tiền : CashflowCate

-Bảng Dự báo các dòng tiền: ForecastTransaction

2.7.5. Dữ liệu thực t c c dòng tiền

-Bảng Dữ liệu thực tế các dòng tiền: ActualTransaction

2.7.6.Số liệu số dư cuối kỳ thực t

Hình 2.09: Cơ sở dữ liệu – Số liệu số dư cuối kỳ thực tế

-Bảng Số dư thực tế của tài khoản: Balance Actual

2.7.7.Dự b o số dư tài khoản

Hình 2.10: Cơ sở dữ liệu – Dự báo số dư tài khoản -Bảng Dự báo Số dư tài khoản: BalanceForecast -Bảng Dự báo Số dư tài khoản: BalanceForecast

2.7.8. Người dùng

Hình 2.11: Cơ sở dữ liệu – Người dùng

-Bảng thông tin người dùng: AspNetUsers -Bảng vai trò: AspNetRoles

-Bảng vai trò người dung: AspNetUsersRoles

2.8.Thi t k Model-View-Controller

-Kiến trúc MVC trong Ứng dụng: gồm 3 thư mục: Controllers, Models, Views

Hình 2.12: Thiết kế M-V-C

Ví dụ Model Product:

Hình 2.13: Models

-View chứa @model IEnumerable<CashLV.Models.Product> để gọi Model

Hình 2.14: Views

-Control chứa các actions để xử lý, tương tác với Cơ sở dữ liệu và truyền dữ liệu cho model

Hình 2.15: Controllers

-Có thể dùng Entity Framework (StoredProcedure, CRUD Controlers) hoặc SqlDataReader để tương tác thêm, đọc, sửa, xóa với Cơ sở dữ liệu.

2.9. Xử lý, tính to n từ công thức nghiệp vụ 2.9.1.Xử lý, dự b o B n hàng

- Công thức:

Thành tiền = Số lượng * Đơn giá

Tổng thành tiền = Tổng cộng Thành tiền của các Sản phẩm

Với Nhóm Sản phẩm chính:

Tổng khối lượng = Tổng cộng Khối lượng của các Sản phẩm

Tổng thành phẩm (Tổng khối lượng có điều chỉnh) = Tổng khối lượng + +Thông số điều chỉnh

Hình 2.16: Xử lý, dự báo bán hàng

- Sử dụng 3 hành động

<form action="~/ForecastSale/Index" method="post"> Để truy vấn được các kết quả theo các tham số

<form action="~/ForecastTransaction/Create" method="post"> Để lấy các dữ liệu kết quả, đẩy sang bảng ForecastTransaction

<form action="~/ForecastFoodPerMonth/Create" method="post"> Để lấy các dữ liệu kết quả, đẩy sang bảng ForecastFoodPerMonth (với nhóm sản phẩm chính)

(với các nhóm sản phẩm khác, không có hành động đẩy này)

- Có các trường để điều chỉnh cho linh hoạt - Tổng thành phẩm

Hình 2.17: Tổng thành phẩm

2.9.2.Xử lý, dự b o B n hàng

- Công thức:

Khối lượng Nguyên vật liệu dùng trong Thành phẩm = Phần trăm Tỷ lệ* Tổng thành phẩm.

Kho cuối kỳ của Nguyên vật liệu = ( Số ngày Dự trữ Nguyên vật liệu cho Sản xuất / 30 ngày) * Khối lượng từng Nguyên vật liệu dùng trong Thành phẩm. Kế hoạch khối lượng mua Nguyên vật liệu = Khối lượng từng Nguyên vật liệu dùng trong Thành phẩm + Kho cuối kỳ - Kho đầu kỳ

Số tiền mua Nguyên vật liệu = Kế hoạch khối lượng mua Nguyên vật liệu * Giá Nguyên vật liệu

@foreach (var item in Model) { tongthanhpham = Convert.ToDouble(item.ForecastFoodPerMonth.ForecastFoodTonsPerMonth) + Convert.ToDouble(item.ForecastFoodPerMonth.Flexibal1); sudungnvl = Convert.ToDouble(item.UsageInProductPerMonth) * tongthanhpham / 100; dutonkhocuoiky = (sudungnvl / 30) * (Convert.ToDouble(item.StockDays));

dumua = sudungnvl + dutonkhocuoiky - Convert.ToDouble(item.MonthStockBegin);

tiendumua = dumua * Convert.ToDouble(item.MaterialPrice); tongtiendumua = tongtiendumua + tiendumua;

}

-Sử dụng 2 hành động:

<form action="~/ForecastPurchaseMaterial/Index" method="post"> <form action="~/ForecastTransaction/Create" method="post">

Hình 2.19: Thao tác Post

2.9.3.Dự b o Số dư tài khoản

- Với báo cáo Dự báo Dòng tiền Tài chính:

Số dư tài khoản đầu kỳ tháng mới = Số dư tài khoản cuối kỳ của dữ liệu thật tháng gần nhất

Số dư tài khoản cuối kỳ tháng mới = Số dư tài khoản đầu kỳ tháng mới+ +tăng giảm + chênh lệch tỷ giá

- Với báo cáo Dòng tiền Tài chính dữ liệu thực:

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phát triển ứng dụng sử dụng kiến trúc công nghệ MVC cho bài toán dự báo dòng tiền doanh nghiệp (Trang 28)

Tải bản đầy đủ (PDF)

(84 trang)