III IV V VI VII V I XX XI
CHƯƠNG 3: XÂY DỰNG CƠ SỞ DỮ LIỆU LƯU VỰC SÔNG
3.3. Xây dựng phần mềm chuyên dụng kết nối các cơ sở dữ liệu
3.3.1. Giới thiệu ngôn ngữ lập trình sử dụng xây dựng phần mềm
3.3.1.1. Các khái niệm về ngôn ngữ lập trình C#
Ngôn ngữ lập trình là một tập con của ngôn ngữ máy tính, đây là một dạng ngôn ngữ được chuẩn hóa. Nó được dùng để miêu tả những quá trình, những ngữ cảnh một cách rất chi tiết. Hay ngôn ngữ lập trình là một hệ thống được ký hiệu hóa để miêu tả những tính toán (qua máy tính) trong một dạng mà cả con người và máy đều có thể đọc và hiểu được.
Theo định nghĩa ở trên thì một ngôn ngữ lập trình phải thỏa mãn được hai điều kiện cơ bản là:
- Nó phải dễ hiểu và dễ sử dụng đối với người lập trình, để con người có thể dùng nó giải quyết các bài toán khác.
- Nó phải miêu tả một cách đầy đủ và rõ ràng các tiến trình, để có thể chạy được trên các máy tính khác.
Một tập hợp các chỉ thị được biểu thị nhờ ngôn ngữ lập trình để thực hiện các thao tác máy tính nào đó thông qua một chương trình. Các tên khác của khái niệm này nếu không bị lầm lẫn là chương trình máy tính hay chương trình điện toán.
Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nó được tạo từ nền tảng phát triển hơn. Microsoft bắt đầu với công việc trong C và C++ và thêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng hơn. Nhiều trong số những đặc tính này khá giống với những đặc tính có trong ngôn ngữ Java.
C# là ngôn ngữ đơn giản, với khoảng 80 từ khóa và hơn mười kiểu dữ liệu dựng sẵn, nhưng C# có tính diễn đạt cao. C# hỗ trợ lập trình có cấu trúc, hướng đối tượng, hướng thành phần. Trọng tâm của ngôn ngữ hướng đối tượng là lớp. Lớp định nghĩa
từ khóa dành cho việc khai báo lớp, phương thức, thuộc tính (property) mới. C# hỗ trợ đầy đủ khái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa hình.
Định nghĩa lớp trong C# không đòi hỏi tách rời tập tin tiêu đề với tập tin cài đặt như C++. Hơn thế, C# hỗ trợ kiểu sưu liệu mới, cho phép sưu liệu trực tiếp trong tập tin mã nguồn. Đến khi biên dịch sẽ tạo tập tin sưu liệu theo định dạng XML.
C# hỗ trợ khái niệm giao diện, interfaces (tương tự Java). Một lớp chỉ có thể kế thừa duy nhất một lớp cha nhưng có thể cài đặt nhiều giao diện. C# có kiểu cấu trúc, struct (không giống C++). Cấu trúc là kiểu hạng nhẹ và bị giới hạn. Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có thể cài đặt giao diện. C# cung cấp những đặc trưng lập trình hướng thành phần như property, sự kiện và dẫn hướng khai báo (được gọi là attribute). Lập trình hướng component được hỗ trợ bởi CLR thông qua siêu dữ liệu (metadata). Siêu dữ liệu mô tả các lớp bao gồm các phương thức và thuộc tính, các thông tin bảo mật,…
Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên là các thư viện liên kết động (DLL) hay tập tin thực thi (EXE). Trong .NET một assembly là một đơn vị của việc tái sử dụng, xác định phiên bản, bảo mật và phân phối. CLR cung cấp một số các lớp để thao tác với assembly. C# cũng cho truy cập trực tiếp bộ nhớ dùng con trỏ kiểu C++, nhưng vùng mã đó được xem như không an toàn. CLR sẽ không thực thi việc thu dọn rác tự động các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giải phóng.
Không dừng lại ở đó, Microsoft đưa ra một số mục đích khi xây dựng ngôn ngữ này.
C# là ngôn ngữ đơn giản
C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như phát triển trước, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo.
Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đến những vấn đề cho các người phát triển C++. Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++. Nếu chúng ta thân thiện với C và C++ hoậc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo, cú pháp, biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ C và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. Một vài trong các sự cải tiến là loại bỏ cácdư thừa, hay là thêm vào những cú pháp thay đổi.
C# là ngôn ngữ hiện đại
Những đặc tính như là xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảo mật mã nguồn là những đặc tính được mong đợi trong một ngôn ngữ hiện đại, C# chứa tất cả những đặc tính trên.
C# là ngôn ngữ hướng đối tượng
Những đặc điểm chính của ngôn ngữ hướng đối tượng (Object-oriented language) là sự đóng gói (encapsulation), sự kế thừa (inheritance), và đa hình (polymorphism). C# hỗ trợ tất cả những đặc tính trên. Phần hướng đối tượng của C# sẽ được trình bày chi tiết trong một chương riêng ở phần sau.
C# là ngôn ngữ ít từ khóa
C# là ngôn ngữ sử dụng giới hạn những từ khóa, chỉ khoảng 80 từ khóa và hơn mười mấy kiểu dữ liệu được xây dựng sẵn. Phần lớn các từ khóa được sử dụng để mô tả thông tin. Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi những khái niệm lập trình hiện đại.
C# là ngôn ngữ hướng module
Mã nguồn C# có thể được viết trong những phần được gọi là những lớp, những lớp này chứa các phương thức thành viên của nó. Những lớp và những phương thức có
mẫu thông tin đến những lớp hay phương thức mà có thể tạo ra những mã nguồn dùng lại có hiệu quả.
C# sẽ là một ngôn ngữ phổ biến
C# là một trong những ngôn ngữ lập trình mới, nó không được biết như là một ngôn ngữ phổ biến. Nhưng ngôn ngữ này có một số lý do để trở thành một ngôn ngữ phổ biến. Một trong những lý do chính là Microsoft và sự cam kết của .NET. Nhiều sản phẩm của công ty Microsoft đã chuyển đổi và viết lại bằng C#. Bằng cách sử dụng ngôn ngữ này Microsoft đã xác nhận khả năng của C# cần thiết cho những người lập trình. Chính vì những ưu điểm và những nhận định chắc chắn của công ty phát triển Microsoft, càng cần thiết tìm hiểu về quá trình hình thành và phát triển của ngôn ngữ C#.
3.3.1.2. Quá trình hình thành và phát triển ngôn ngữ lập trình C#
Trong lĩnh vực công nghệ thông tin của thế giới ngày nay, với sự phát triển liên tục và đa dạng nhất là phần mềm, các hệ điều hành, các môi trường phát triển, các ứng dụng liên tục ra đời. Tuy nhiên, đôi khi việc phát triển không đồng nhất và nhất là do lợi ích khác nhau của các công ty phần mềm lớn làm ảnh hưởng đến những người xây dựng phần mềm. Cách đây vài năm Java được Sun viết ra, đã có sức mạnh đáng kể, nó hướng tới việc chạy trên nhiều hệ điều hành khác nhau, độc lập với bộ xử lý (Intel, Risc,…). Đặc biệt là Java rất thích hợp cho việc viết các ứng dụng trên Internet. Tuy nhiên, Java lại có hạn chế về mặt tốc độ và trên thực tế vẫn chưa thịnh hành. Mặc dù Sun Corporation và IBM có đẩy mạnh Java, nhưng Microsoft đã dùng ASP để làm giảm khả năng ảnh hưởng của Java.
Để lập trình trên Web, lâu nay người ta vẫn dùng CGI-Perl và gần đây nhất là PHP, một ngôn ngữ giống như Perl nhưng tốc độ chạy nhanh hơn. Ta có thể triển khai Perl trên Unix/Linux hay MS Windows. Tuy nhiên có nhiều người không thích dùng do bản thân ngôn ngữ hay các qui ước khác thường và Perl không được phát triển
thống nhất, các công cụ được xây dựng cho Perl tuy rất mạnh nhưng do nhiều nhóm phát triển và người ta không đảm bảo rằng tương lai của nó ngày càng tốt đẹp hơn.
Trong giới phát triển ứng dụng trên Windows ta có thể viết ứng dụng bằng Visual C++, Delphi hay Visual Basic, đây là một số công cụ phổ biến và mạnh. Trong đó Visual C++ là một ngôn ngữ rất mạnh và cũng rất khó sử dụng. Visual Basic thì đơn giản dễ học, dễ dung nhất nên rất thông dụng. Lý do chính là Visual Basic giúp chúng ta có thể viết chương trình trên Windows dễ dàng mà không cần thiết phải biết nhiều về cách thức MS Windows hoạt động, ta chỉ cần biết một số kiến thức căn bản tối thiểu về MS Windows là có thể lập trình được. Do đó theo quan điểm của Visual Basic nên nó liên kết với Windows là điều tự nhiên và dễ hiểu, nhưng hạn chế là Visual Basic không phải ngôn ngữ hướng đối tượng.
Cho đến khi Microsoft. NET ra đời, bao gồm 2 phần chính : Framework và Integrated Development Environment (IDE). Framework cung cấp những gì cần thiết và căn bản, chữ Framework có nghĩa là khung hay khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ước nhất định để công việc được trôi chảy. IDE thì cung cấp một môi trường giúp chúng ta triển khai dễ dàng, và nhanh chóng các ứng dụng dựa trên nền tảng .NET.
Thành phần Framework là quan trọng nhất .NET là cốt lõi và tinh hoa của môi trường, còn IDE chỉ là công cụ để phát triển dựa trên nền tảng đó thôi. Trong .NET toàn bộ các ngôn ngữ C#, Visual C++ hay Visual Basic.NET đều dùng cùng một IDE.
Ngôn ngữ C# được phát triển bởi đội ngũ kỹ sư của Microsoft, trong đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth. Cả hai người này điều là những người nổi tiếng, trong đó Anders Hejlsberg được biết đến là tác giả của Turbo Pascal, một ngôn ngữ lập trình PC phổ biến. Và ông đứng đầu nhóm thiết kế Borland Delphi, một trong những thành công đầu tiên của việc xây dựng môi trường phát triển tích hợp
Mục tiêu của C# là cung cấp một ngôn ngữ lập trình đơn giản, an toàn, hiện đại, hướng đối tượng, đặt trọng tâm vào Internet, có khả năng thực thi cao cho môi trường .NET. C# là ngôn ngữ mới, nhưng tích hợp trong nó những tinh hoa của ba thập kỷ phát triển của ngôn ngữ lập trình. Có thể dễ dàng thấy trong C# có những đặc trưng quen thuộc của Java, C++, Visual Basic,...
Cho đến nay, C# vẫn là ngôn ngữ lập trình mới và nhưng đã khẳng định được khả năng của mình, với những lập trình viên thì C# là ngôn ngữ đầu tiên nghĩ đến để thiết kế, xây dựng một chương trình. Ngoài khả năng hỗ trợ lập trình tốt, bởi sự đơn giản và hiệu quả, C# cho phép người dùng có thể thiết kế giao diện cho các chương trình xây dựng rất đẹp và chuyên nghiệp. Cũng từ nhưng ưu điểm đó, C# được chọn làm ngôn ngữ để thực hiện Luận văn thạc sĩ “Ứng dụng hệ thống thông tin địa lý (GIS) xây dựng công cụ hỗ trợ quản lý tài nguyên nước lưu vực sông Vu Gia – Thu Bồn”.
3.3.2. Quy trình và kỹ thuật xây dựng phần mềm (ngân hàng dữ liệu)
Các ngân hàng dữ liệu đã trở thành một thành phần chủ yếu trong cuộc sống hàng ngày của xã hội hiện đại. Trong vòng một ngày con người có thể có nhiều hoạt động cần có sự giao tiếp với ngân hàng dữ liệu như: đến ngân hàng để rút tiền và gửi tiền, đăng ký chỗ trên máy bay hoặc khách sạn, truy cập vào thư viện đã tin học hoá để tìm sách báo, đặt mua tạp chí ở một nhà xuất bản… Tại các ngân hàng, các cửa hàng, người ta cũng cập nhật tự động việc quản lý tiền bạc, hàng hoá.
Để hiểu được ngân hàng dữ liệu phục vụ quản lý lưu vực sông, ta cần hiểu rõ quy trình và các kỹ thuật áp dụng vào xây dựng ngân hàng dữ liệu.
3.3.2.1. Quy trình xây dựng ngân hàng dữ liệu
Một ngân hàng dữ liệu là một tập hợp các dữ liệu có liên quan với nhau, được lưu trữ trên máy tính, có nhiều người sử dụng và được tổ chức theo một mô hình. Dữ liệu là những sự kiện có thể ghi lại được và có ý nghĩa.
Một ngân hàng dữ liệu có thể được tạo ra và duy trì một cách thủ công và cũng có thể được tin học hoá. Một ngân hàng dữ liệu tin học hoá được tạo ra và duy trì bằng bằng một nhóm chương trình ứng dụng hoặc bằng một hệ quản trị ngân hàng dữ liệu.
Như vậy, ngoài việc xây dựng ngân hàng dữ liệu để lưu trữ, quản lý dữ liệu, cần phải xây dựng các phần mềm quản trị ngân hàng dữ liệu. Các phần mềm này giúp cho người sử dụng tạo ra, duy trì và khai thác dữ liệu từ ngân hàng dữ liệu đã được xây dựng.
Quy trình xây dựng phần mềm hỗ trợ cập nhật, khai thác và sử dụng dữ liệu được tiến hành như sau :
- Thu thập yêu cầu xây dựng phần mềm và nội dung thông tin. - Mô hình hóa nghiệp vụ.
- Phân tích nội dung dữ liệu. - Thiết kế hệ thống.
- Lập trình. - Kiểm thử.
Thu thập yêu cầu xây dựng phần mềm và nội dung thông tin: Xác định nội dung thông tin đưa vào CSDL phần mềm: đối tượng quản lý, thông tin mô tả tính chất cơ bản của đối tượng quản lý, mối quan hệ của các đổi tượng quản lý và các yêu cầu đối với phần mềm.
Mô hình hóa nghiệp vụ: Xây dựng mô hình quy trình thực hiện để tiến hành theo đúng trình tự, tránh bỏ qua hay thiếu bước trong quá trình triển khai.
Phân tích nội dung dữ liệu: Phân tích, đánh giá chi tiết từng dạng dữ liệu để xây dựng phương thức quản lý cho phần mềm.
Thiết kế hệ thống: Thiết kế lược đồ phần mềm theo kết quả phân tích dữ liệu đã có, nhập mẫu để kiểm tra hoạt động.
Lập trình: Giai đoạn xây dựng lên phần mềm về giao diện và cấu trúc.
Kiểm thử: Kiểm tra lại hoạt động của phần mềm và cấu trúc của cơ sở dữ liệu. Tiến hành nhập dữ liệu vào cơ sở dữ liệu thông qua phần mềm đã xây dựng.
3.3.2.2. Kỹ thuật sử dụng
Ngân hàng dữ liệu lưư vực sông Vu Gia – Thu Bồn đã tạo ra một môi trường cung cấp các dịch vụ kết nối, quản trị và trình diễn thông tin cần thiết cho người dùng. Các kỹ thuật chủ yếu áp dụng trong quá trình thực hiện ngân hàng dữ liệu bao gồm :
A/ Giải pháp an toàn và bảo mật
Kiểm soát và bảo mật hệ thống được thiết kế tổng thể, bao gồm các mức bảo mật khác nhau. Các mức bảo mật bao gồm:
- Người dùng muốn sử dụng phải được phân quyền trong cơ sở dữ liệu. Tránh trường hợp phá phách, gây hại đến ngân hàng dữ liệu.
- Cơ sở dữ liệu được mã hóa an toàn, và được lưu trữ liên tục đảm bảo ko mất mát dữ liệu bên trong cơ sở dữ liệu.
Ngân hàng dữ liệu chỉ hoạt động trên một máy tính đơn lẻ, không có khả năng hoạt động trên mạng để có thể cùng lúc cho nhiều người sử dụng truy cập. Đây cũng là mặt hạn chế của ngân hàng dữ liệu, tuy nhiên dựa trên tính hiệu quả sử dụng của ngân hàng dữ liệu vẫn có thể đề xuất phương án nâng cấp hệ thống một cách đơn giản. Cũng chính do Ngân hàng dữ liệu chỉ hoạt động trên một máy tính đơn lẻ nên cũng chỉ cẩn khởi tạo một tài khoản quản trị quyền cao nhất và một tài khoản cho mỗi quyền quản trị dữ liệu thành phần.
Lập trình bằng ngôn ngữ C# có khả năng quản lý lỗi và các trạng thái bất thường bằng biệt lệ (exception). Một biệt lệ là một đối tượng chứa các thông tin về sự cố bất thường của chương trình.
Với việc quản lý được các lỗi phát sinh trong quá trình xây dựng phần mềm, thì vấn đề bắt được các lỗi này và khắc phục là rất đơn giản. Tất nhiên để có thể loại bỏ