Saturday, February 14, 2009

[Sofware Engineering] - Software Development Platform

Khi bắt đầu học Tin học, tôi đã từng ước mơ viết được các chương trình chạy được và có ứng dụng thực tế. Ước mơ là vậy, nhưng cho đến giờ, mọi thứ vẫn là con số 0 tròn trĩnh. Tôi code cũng rất nhiều, nhưng chủ yếu vẫn là prototype, nhiều mảnh rời rạc phục vụ cho nhiều thí nghiệm khác nhau. Theo thời gian, khi các mảnh rời rạc ngày càng nhiều lên, nhu cầu cần phải chuẩn hóa và hợp nhất lại cần hơn bao giờ hết. Có như vậy mới tối ưu hóa được các công sức đã bỏ ra, đồng thời có thể chia sẻ được cho nhiều mục đích khác trong tương lai. Nói một cách khác, tôi cần phải thư viện hóa những gì tôi đã, đang và sẽ code. Thread này lập ra nhằm chia sẻ các kinh nghiệm liên quan đến vấn đề chuẩn hóa và hợp nhất này.

Câu hỏi đặt ra đầu tiên đó là dùng software development platform nào? Không biết bây giờ có khác vài năm trước hay không, nhưng nếu bạn tốt nghiệp Khoa CNTT ĐH KHTN, có lẽ IDE duy nhất mà bạn biết chỉ là Visual Studio. Với các nhu cầu hiện nay của tôi Visual Studio không còn là sự lựa chọn tốt nhất nữa. Thay vào đó, tôi nghĩ Eclipse là sự lựa chọn tốt nhất. Với Eclipse, tôi có thể code nhiều ngôn ngữ lập trình khác nhau, ví dụ C++, PHP, Java, ActionScript, etc. Bằng kiến trúc mở cho phép người dùng phát triển các plug-ins, nếu một ngôn ngữ lập trình đủ thông dụng, nó hầu như chắc chắn sẽ được hỗ trợ bởi Eclipse. Hơn nữa, quan trọng không kém đó là Eclipse free.

Một lí do khác khi dùng Eclipse đó là giảm sự phụ thuộc vào các thư viện của Microsoft để làm cho các chương trình portable hơn. Ví dụ chương trình có thể chạy trên nhiều hệ điều hành khác nhau. Nếu chương trình của bạn chỉ cần 4 CPU là đủ thì không có vấn đề gì, chỉ cần mua cái máy 4 CPU, cài Windows lên đó là xong. Tuy nhiên nếu bạn cần nhiều máy với tài nguyên đủ mạnh, mà đa số các máy này đều cài Linux, thì chương trình của bạn tốt nhất là có thể chạy được trên cả Linux và Windows. Liên quan đến tài nguyên tính toán, có thể sẽ phải nghĩ tới viết chương trình để có thể thi hành song song, tận dụng tài nguyên của grid computing nữa.

Với việc có thể phải xài rất nhiều thư viện ngoài do người khác viết với các ngôn ngữ lập trình khác nhau (C++, C#, PHP, Perl, Python, Java, etc), dùng Eclipse sẽ giúp cung cấp một môi trường tích hợp để quản lí các project hiệu quả hơn rất nhiều.

Câu hỏi thứ hai đó là vấn đề version control. Tôi có từng nghe nói Visual Source Safe khi dùng VS, có xài qua nhưng không có chút hứng thú và thấy có ích gì. Có lẽ lúc đó nhu cầu ko đến nổi phải dùng VSS. Tuy nhiên lần này thì lại khác, tôi đã có một thư viện có thể share cho nhiều project. Mỗi lần cập nhật thư viện xong thì ko biết phải cập nhật ở những chỗ nào khác. Đó là lí do mà tôi phải tìm hiểu về vấn đề version control. Trong trường hợp dùng Eclipse và mã nguồn mở, có lẽ CVS là sự lựa chọn tối ưu. Tôi chưa từng xài CVS bao giờ, cho nên chắc chắn trong thread này sẽ có bài liên quan đến việc sử dụng CVS.

Câu hỏi thứ ba đó là vấn đề documentation. Có hai mức documentation. mức thứ nhất liên quan đến việc dùng các hàm thư viện đã code và mức thứ hai liên quan đến việc chia sẻ các thư viện. Ở mức thứ nhất, mỗi khi dùng một hàm đã viết, nếu có chú thích, thì khi gõ tên hàm, chú thích sẽ hiện ra để giúp cho việc hiểu được hàm đó rõ ràng hơn (ngoài việc liệt kê các tham số cần có). Ở mức thứ hai, documentation rất quan trọng một khi muốn public thư viện cho nhiều người dùng. Tôi chỉ biết và xài qua Doxygen, thấy cũng rất tiện. Đặc biệt khi xài với Graphviz, có thể giúp trực quan hóa các thành phần của hệ thống.

Xem thêm danh sách các plug-ins trong Eclipse tại đây: http://www.eclipseplugincentral.com/. Ngoài ra cũng có một số gói tích hợp sẵn giúp người dùng trong việc tiện lợi sử dụng Eclipse cho một số ngôn ngữ, xem thêm ở đây: http://www.easyeclipse.org/site/home/.

Lê Đình Duy

Xem đầy đủ bài viết tại http://ledduy.blogspot.com/2009/02/are-engineering-software-development.html

No comments:

Post a Comment

Popular Posts