1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu về một số mô hình phát triển phần mềm của các công ty lớn ở việt nam và một số bài toán ứng dụng

31 661 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 369,5 KB

Nội dung

Nghiên cứu về một số mô hình phát triển phần mềm của các công ty lớn ở việt nam và một số bài toán ứng dụng

Trang 1

ĐẠI HỌC THÁI NGUYÊNTRƯỜNG ĐẠI HỌC KHOA HỌC

Trang 2

TRƯỜNG ĐẠI HỌC KHOA HỌC

KHOA TOÁN TIN

TÊN ĐỀ TÀI

ĐỀ TÀI SINH VIÊN NGHIÊN CỨU KHOA HỌC

Người hướng dẫn khoa học:

Trang 3

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT CÁC MÔ HÌNH LẬP TRÌNH

I Ngôn ngữ lập trình

1 Giới thiệu ngôn ngữ c#.

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 đề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 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(IDE) cho lập trình client/server

Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấykiểu dữ liệu được xây dựng sẵn 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# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần, component, lập trình hướng đối tượng, những tính chất đó hiện diện trong một ngôn ngữ lập trình hiện đại

v hơn nữa nó được xây dựng trên nền tảng của 2 ngôn ngữ mạnh nhất là C++ và Java

Phần cốt lõi của bất cứ ngôn ngữ lập trình hướng đối tượng là sự hỗ trợ của nó cho việc định nghĩa và làm việc với những lớp Những lớp thì định nghĩa những kiểu dữ liệu mới, cho phép phát triển mở rộng ngôn ngữ tạo mô hình tốt hơn để giải quyết vấn đề Ngôn ngữ C# chứa những từ

Trang 4

khóa cho việc khai báo những kiểu lớp đối tượng mới và những phương thức hay thuộc tính của lớp và cho việc thực thi đóng gói, kế thừa, đa hình-

ba thuộc tính cơ bản nhất của bất cứ ngôn ngữ lập trình hướng đối tượng nào

Trong ngôn ngữ C# mọi thứ liên quan đến khai báo lớp đều được tìm thấy trong phần khai báo của nó Định nghĩa một lớp trong ngôn ngữ C# không đòi hỏi phải chia ra tập tin header và tập tin nguồn giống như trong ngôn ngữ C++ Hơn thế nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn các tag XML để phát sinh tự động các tài liệu cho lớp

C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết với một lớp cho những dịch vụ mà giao diện quy định Trong ngôn ngữ c#,một lớp chỉ có thể kế thừa từ duy nhất một lớp cha Tức là không cho cha

kế thừa như trong ngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều giao diện Khi một lớp thực thi một giao diện thì nó cũng cung cấp chức năng thực thi giao diện

Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ nhưng khái niệm về ngữ nghĩa của nó thay đổi khác với C++ Trong C#, một cấu trúc được giới hạn là kiểu con trỏ nhỏ gọn và khi tạo thể hiện thì nó yêu cầu ít hơn về hệ điều hành và bộ nhớ so với một lớp Một cấu trúc thì không thể

kế thừa từ một lớp hay được kế thừa nhưng một cấu trúc có thể thực thi một giao diện

Ngôn ngữ C# cung cấp những đặc tính hướng thành

phần(component-oriented), như là những thuộc tính, những sự kiện Lập trình hướng thành phần được hỗ trợ bởi CLR cho phép lưu trữ metadata với mã nguồn cho một lớp Metadata mô tả cho một lớp, bao gồm những phương thức và những thuộc tính của nó cũng như những sự bảo mật cần

Trang 5

thiết và những thuộc tính khác Mã nguồn chứa đựng những logic cần thiết

để thực hiện những chức năng của nó Do vậy, một lớp được biên dịch như

là một khối self-contained nên môi trường hosting biết được cách đọc metadata của một lớp và mã nguồn cần thiết mà không cần những thông tinkhác để sử dụng nó

2 Ưu điểm, nhược điểm của ngôn ngữ C#.

2.1 Ưu điểm

Ngôn ngữ C# được dẫn xuất từ ngôn ngữ C++ và C nhưng nó được xây dựng 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ố đặc tính này khá giống với những đặc tính có trong ngôn ngữ Java Không dừng lại ở đó Microsoft còn đưa ra một số mục đích cũng như ưu điểm để xây dựng ngôn ngữ này như sau:

 C# là ngôn ngữ đơn giản

C# loại bỏ một vài sự phức tạp của những ngôn ngữ như Java, C++ bao gồm việc loại bỏ những macro, 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 những người phát triển C++

C# được xây dựng dựa trên nền tảng C và C++ C# khá giống C, C++ hay thậm chí là Java về diện mạo, cú pháp, biểu thức, toán tử

Một số chức năng khác của 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 trong những sự cải tiến đó là loại bỏ các dư thừa hay thêm vào những cú pháp thay đổi

Trang 6

VD: Trong C++ có 3 toán tử làm việc với các thành viên là ::, , và

→ Để biết khi nào dùng ba toán tử này cũng phức tạp và dễ nhầm lẫn Trong C#, chúng được thay thế với một toán tử duy nhất gọi là (dot)

 C# là ngôn ngữ hiện đại

C# có được những đặc tính của ngôn ngữ hiện đại như:

 C# là ngôn ngữ hướng đối tượng

C# hỗ trợ tất cả những đặc tính của ngôn ngữ hướng đối tượng là:

- Sự đóng gói(encapsulation)

- Sự kế thừa(inheritance)

- Đa hình(polymorphism)

 C# là ngôn ngữ hướng module

Mã nguồn của C# được viết trong Class(lớp) Những Class này chứacác Method(phương thức) thành viên của nó

Class(lớp) và các Method(phương thức) thành viên của nó có thể sử dụng lại trong những ứng dụng hay chương trình khác bằng cách truyền các mẫu thông tin đến những lớp hay phương thức chúng ta có thể tạo ra những mã nguồn dùng lại có hiệu quả

 C# là ngôn ngữ ít từ khóa

Trang 7

C# là ngôn ngữ sử dụng giới hạn những từ khóa Phần lớn các từ khóa này được sử dụng để mô tả thông tin Nhưng không vì thế mà ngôn ngữ C# trở nên kém mạnh mẽ Chúng ta có thể thấy rằng ngôn ngữ này có thể được sửdụng để làm bất cứ nhiệm vụ nào C# được sử dụng cho nhiều dự án khác nhau như: Ứng dụng xử lý văn bản, ứng dụng đồ họa hay tạo ra những trình biên dịch cho các ngôn ngữ khác

 C# là một ngôn ngữ phổ biến

 C chạy trên nền Net, nền này cung cấp rất nhiều đối tượng mạnh, phong phú và đa dạng để giải quyết nhiều vấn đề phổ biến trong lập trình

Do đó sử dụng ngôn ngư lập trình C# tốn ít thời gian, chi phí, ứng dụng kết

quả chạy đáng tin cậy, một phần do tính chất hướng đối tượng của C#,

phần khác do ứng dụng dung chủ yếu các đối tượng đã được viết sẵn bởi Microsoft

2.2 Nhược điểm

KẾT LUẬN: Ta lựa chọn ngôn ngữ C# bởi vì những ưu điểm của nó

II Cơ sở dữ liệu

1) Giới thiệu cơ sở dữ liệu SQL server

SQL là viết của Structured Query Language( Ngôn ngữ truy vấn cấu

trúc)

 SQL là một chuẩn của ANSI (American National Standards Institute

– Viện tiêu chuẩn quốc gia Hoa Kì) về truy xuất các hệ thống CSDL

 Các câu lệnh SQL được sử dụng để truy xuất và cập nhập dữ liệutrong cơ sở dữ liệu

Trang 8

 SQL là ngôn ngữ thao tác dữ liệu(DML- Data Manipulation

Language): SQL có thể thực thi các truy vấn trên cơ sở dữ liệu, lấy dữ liệu,chèn dữ liệu, xóa dữ liệu, sửa đổi dữ liệu hiện có trong cơ sở dữ liệu

 SQL là ngôn ngữ định nghĩa dữ liệu(DDL- Data Definition

Language)

Phần DDl của SQL cho phép tạo ra hoặc xóa các bảng Chúng ta cũng có thể định nghĩa các khóa (key), chỉ mục(index), chỉ định các liên kết giữa các bảng và thiết lập các quan hệ ràng buộc giữa các bảng trong cơ sở dữ liệu

2) Ưu điểm, nhược điểm của ngôn ngữ SQL

2.1) Ưu điểm

 Khả năng bảo mật lớn

 Chứa được một lượng lớn dữ liệu , thích hợp cho nhiều người sử dụng cùng lúc

 Truy xuất dữ liệu nhanh

 Đảm bảo tính toàn vẹn dữ liệu

2.2) Nhược điểm

 Yêu cầu tài nguyên lớn nếu không sẽ chạy rất chậm

 Chỉ chạy trên hệ điều hành Window

 Dữ liệu nếu bị hổng sẽ rất dễ bị khai thác

3) So sánh ngôn ngữ SQL Server với các ngôn ngữ lập trình khác

3.1) MySQL và SQL Server

SQL Server và MySQL đều có những đặc thù riêng của chúng Vì vậy chúng ta sẽ so sánh theo tính năng, hiệu suất, bảo mật và khả năng phuc hồi, tính toàn vẹn dữ liệu …

 Tính năng:

Trang 9

MySQL hơn SQL Server ở tính năng cung cấp nhiều loại storage engine Tuy nhiên, tính về mặt tích hợp chặt chẽ cho toàn bộ hệ thống và công cụ phát triển phần mềm thì SQL Server tích hợp tốt hơn MySQL đặc biệt là ở mảng.NET SQL Server còn hỗ trợ XML trực tiếp trong cơ sở dữ liệu trong khi đó thì MySQL chưa làm được việc này Các chức năng cần thiết như View, StoreProcedure, Trigger thì cả hai tương đương nhau.

 Bảo mật:

SQL Server có độ bảo mật rất cao Hơn hẳn MySQL về tính bảo mật

ở mức độ cột Trong khi đó MySQL chỉ có thể thiết lập mức truy cập đến hàng trong bảng Hệ thống xác thực người dùng của SQL Server cũng qua mặt MySQL

 Bảo đảm tính toàn vẹn của dữ liệu

Sau khi thi HK, bạn được giao nhiệm vụ cập nhật điểm cho SV Điểm số là 1 số thực nằm trong khoảng từ 0 - 10; và có thể có điểm lẻ như 6.5, nhưng không có điểm lẻ kiểu như 8.2 Dĩ nhiên là bạn hoàn toàn có thểviết chương trình để kiểm tra tính đúng đắn của điểm trước khi cập nhật vào CSDL Nhưng lỡ như đến 1 lúc nào đó, trường đổi cách chấm điểm, cho phép điểm có thể lẻ đến 0.25, hoặc thay đổi thang điểm từ 0 - 100 và không có điểm lẻ Lúc đó bạn phải sửa lại chương trình của bạn ở nhiều chỗ, và nếu chẳng may bạn quên sửa 1 chỗ nào đó thì hậu quả sẽ không

Trang 10

biết trước được.

Các DBMS cao cấp cho phép bạn tránh được điều này bằng cách thiết lập các ràng buộc cho dữ liệu Ví dụ bạn có thể thiết lập ràng buộc rằng ở tableDiemSo thì field Diem phải là 1 số nguyên từ 0 - 100 (nếu là thang điểm 100) Sau đó, nếu dữ liệu cập nhật vào không đúng với ràng buộc, DBMS

sẽ từ chối cập nhật và hiển thị ra thông báo lỗi cho bạn biết

MySQL cho tới version hiện thời vẫn chưa có tính năng này

có thể SELECT MSV từ 2 bảng và hiển thị các record có SinhVien.MSV =DangKy.MSV Hoặc bạn cũng có thể làm gọn hơn chỉ với 1 câu lệnh SELECT DISTINCT msv FROM DangKy

Nhưng giả sử yêu cầu đặt ra là bạn hiển thị danh sách các SV KHÔNG có

Trang 11

đăng ký môn học nào Với MySQL bạn không thể chỉ với 1 câu lệnh SQL

là đạt được kết quả mà bạn phải dùng nhiều câu lệnh SQL đơn liên tiếp nhau, và có thể phải tạo ra các bảng tạm thời để lưu trữ các kết quả trung gian Trong khi đó, trên thực tế, với SQL Server, bạn chỉ cần 1 câu lệnh SQL đơn giản như sau:

SELECT msv FROM SinhVien

WHERE NOT EXISTS (

SELECT msv FROM DangKY

WHERE DangKy.msv = SinhVien.msv

MySQL sử dụng cho các wed nhỏ Còn SQL Server thường sử dụng cho các doanh nghiệp vừa, trung bình

3.2) Access và SQL Server

 Mức độ bảo mật:

Access thì độ bảo mật không cao Còn SQL Server mức độ bảo mật vượt hơn hẳn

 Khả năng truy xuất dữ liệu:

MS SQL sever, chuyên quản trị dữ liệu nên hệ thống chứa dữ liệu đồ

sộ hơn tối đa khoảng 10GB còn access chỉ chứa được tối đa 2GB Vậy nên

Trang 12

khả năng truy xuất dữ liệu của SQL Server tốt và nhanh hơn Access Thêmvào đó khả năng Dataware house, phân tích dữ liệu SQL server làm tốt hơnnhiều.

 Phạm vi sử dụng:

Cả hai cơ sở dữ liệu Access và SQL Server đều chỉ chạy trên hệ điềuhành Window của Microsoft

KẾT LUẬN:

Từ các kết quả so sánh trên ta nhận thấy rằng ngôn ngữ lập trình cơ

sở dữ liệu SQL Server là ngôn ngữ rất ưu thế và đây là ngôn ngữ được lựa chọn trong đề tài vì những đặc điểm sau:

 Đây là ngôn ngữ mạnh, chỉ đứng thứ 2 sau Oracel

 Là ngôn ngữ phổ biến

 Câu lệnh đơn giản

 Khả năng chứa dữ liệu lớn

 Mức độ bảo mật cao

 Đơn giản, dễ sử dụng

 Hiệu suất sử dụng lớn, truy xuất dữ liệu nhanh

 Thích hợp sử dụng trong bài toán vừa và lớn

III Sự khác nhau giữa các mô hình lập trình

1) Mô hình một lớp

Mô hình một lớp thông thường là mô hình mà chương trình chạy từ đầutới cuối Không có sự phân tách mã nguồn Tất cả các công việc được viết trong một lớp

1.1) Ưu điểm

 Chương trình đơn giản, dễ hiểu

 Tư duy giải thuật rõ ràng

Trang 13

1.2) Nhược điểm

 Không hỗ trợ việc tái sử dụng

 Không phù hợp với các bài toán lớn

 Tốn thời gian và chi phí bảo trì

2) Mô hình 3 lớp

Đặc điểm:

Mô hình ba lớp giúp phân việc cần làm ra ba nhóm riêng biệt là

Presentation Layer, DataAccess Layer và Bussiness Logic Layer Các lớp này giao tiếp với nhau qua các dịch vụ mà các lớp cung cấp và làm việc độc lập với nhau Việc triển khai trên một máy hay nhiều máy không làm mất đi ý nghĩa của lớp

Mô hình ba lớp phù hợp với những bài toán trung bình và lớn

Trang 14

thực thi của ứng dụng, làm ứng dụng trở nên “chậm” hơn một cách thông thường

 Việc phát triển ứng dụng phức tạp hơn

3) Mô hình đa tầng

Kiến trúc đa tầng trong phần mềm là kiến trúc mà trong đó phần mềm được chia thành rất nhiều phần khác nhau, độc lập với nhau và có liên quanđến nhau Để phân chia các chức năng thành các tầng, chúng ta phải dựa vào nhiệm vụ và giới hạn của mỗi phần để chia thành các phần sao cho thậtchính xác

Kiến trúc đa tầng dùng cho những người phân tích và thiết kế chương trình Mục đích của nó là giảm thiểu sự phức tạp trong việc thiết kế một chương trình "không module" và liên quan phức tạp đến nhau trở thành những thành phần riêng biệt, tách rời nhau nhưng vẫn giữ được mối liên quan trong toàn bộ hệ thống

Mô hình đa tầng phù hợp với những bài toán lớn

Trang 15

nó còn vì những lí do sau:

 Là mô hình lập trình phổ biến và được sử dụng rộng rãi

 Phù hợp với những bài toán vừa và lớn

Chương 2: Mô hình ba lớp

I Lý thuyết

1) Giới thiệu về mô hình ba lớp

Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau

Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương,độc lập với nhau trong công việc Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức năng này Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào

Trang 16

đó, trong đó mô hình 3 lớp là phổ biến nhất 3 lớp này là Presentation

Layer, Business Logic Layer, và Data Access Layer Tuy làm những nhiệm

vụ khác nhau nhưng lại có liên quan mật thiết với nhau Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp đểtạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì màchỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi

Ta có mô hình mô tả mô hình ba lớp như sau:

Trang 17

 Presentation Layer: Lớp này làm nhiệm vụ giao tiếp với người dùngcuối để thu thập dữ liệu, chia sẻ giao diện người dùng, mã ẩn và được thiết kế để hiển thị kết quả/dữ liệu cho người dùng thông qua các thànhphần trong giao diện người sử dụng.

Lớp này sẽ sử dụng dịch vụ do lớp Bussiness Logic cung cấp trong lớp này có 2 thành phần chính đó là User Interface Components và UserInterface Process Components

Trang 18

User Interface Components là những phần tử chịu trách nhiệm thu thập và hiển thị thong tin cho ngưởi dung cuối User Interface Process Components là những thành phần chịu trách nhiệm quản lý các quy trình chuyển đổi giữa các User Interface Components.

 Business Logic Layer: Lớp này thực hiện các nghiệp vụ chính của

hệ thống, làm việc như cầu nối giữa lớp Data Layer và Presentation Layer Tất cả các dữ liệu đều phải đi qua lớp này trước khi được đưa đến lớp Presentation Layer

Trong lớp này có các thành phần chính là Business Components,

Business Entities và Service Interface.

Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng Lớp Presentation chỉ cần biết các dịch vụ thông

qua giao diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào

Business Entities là những thực thể mô tả những đối tượng thông

tin mà hệ thống xử lý Các business entities này cũng được dùng để trao đổi thông tin giữa lớp Presentation và lớp Data Access.

Business Components là những thành phần chính thực hiện các dịch

vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng

 Data Access Layer: Về cơ bản, Data Layer là máy chủ lưu trữ tất cả các dữ liệu của ứng dụng Data Layer bao gồm các cơ sở dữ liệu bảng, các tập tin XML và các phương tiện khác lưu trữ Data Aplication Lớp này thực hiện các nghiệp vụ lien quan đến lưu trữ và truy vấn dữ liệu của ứng dụng

Ngày đăng: 12/12/2015, 09:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w