"Lập trình chạy ngay" - ý tưởng bắt đầu từ đâu?
Công nghệ lập trình là lĩnh vực mà hiện nay trên thế giới các "sáng tạo" vẫn không ngừng được đưa ra để cải tiến quy trình sao cho các doanh nghiệp phần mềm có thể sản xuất được phần mềm một cách chủ động nhất với chi phí ngày càng hạ. Các chuẩn ISO, CMM... là các mẫu mực để các doanh nghiệp phấn đấu để có thể gia công hoặc xuất khẩu phần mềm của mình ra thị trường nước ngoài. Ở Việt Nam, để tạo được ra các phần mềm "ứng dụng được", đặc biệt là các phần mềm kế toán và quản lý doanh nghiệp, đã có quá nhiều cách để thực hiện. Từ những phần mềm đơn giản nhất do các cá nhân vì "yêu thích tin học" mà viết ra chỉ để phục vụ cho riêng mình hoặc cho doanh nghiệp của mình, đến các cá nhân viết phần mềm để mang bán cho các công ty nhỏ kiếm tiền bỏ túi mà vẫn hơn chán so với việc đi làm thuê cho các công ty phần mềm, cho đến các công ty phần mềm chuyên nghiệp muốn viết ra phần mềm để bán được cho nhiều doanh nghiệp nhằm mục đích kiếm về doanh thu và lợi nhuận. Do đó, cạnh tranh giữa các phần mềm với nhau và các công ty phần mềm với nhau đã và đang ở mức khốc liệt chưa từng có. Giá cả phần mềm hạ liên tục đặc biệt là các phần mềm "phổ thông", đại trà. Nạn vi phạm bản quyền đang là phổ biến vì chỉ cần với dưới 10.000 đồng, bạn cũng đã có thể mua được đĩa CD phần mềm mang về "dùng chơi", nếu biết cách khai thác, bạn cũng có thể sử dụng được cho doanh nghiệp của bạn theo đúng nghĩa của phần mềm. Điều này càng làm cho giá cả phần mềm tiếp tục hạ.
Tuy nhiên, nhu cầu của các doanh nghiệp đặc biệt là các doanh nghiệp lớn vẫn đang là thách thức đối với các công ty phần mềm chuyên nghiệp nhất ở Việt Nam. Các công ty này vẫn đang ngày đêm làm việc miệt mài, sáng tạo không ngừng để sản phẩm của mình có đủ sức mạnh đáp ứng được cho các doanh nghiệp với giá cả "cạnh tranh".
Con đường đi của các doanh nghiệp phần mềm cũng thật khác nhau. Phần lớn các công ty phần mềm tương đối lớn đang muốn hướng mình theo một mô hình tiên tiến có tính bài bản, đẳng cấp quốc tế vì đây đã là kinh nghiêm được đúc kết nhiều năm trên đấu trường quốc tế, tội gì Việt Nam không khai thác mà đưa vào áp dụng. Điểm không thuận lợi nhất của cách đi này là người Việt Nam không dễ gì "thích nghi", chi phí sản xuất phần mềm theo cách này rất cao và do đó giá bán phần mềm cũng phải cao theo nên khả năng cạnh tranh có thể bị ảnh hưởng tại thị trường Việt Nam.
Một số doanh nghiệp phần mềm chọn cách đi "thực tế hơn" để có thể đưa ra phần mềm giá cả phù hợp với thị trường mà chi phí sản xuất chuyển giao phần mềm thấp, chấp nhận chỉ bán sản phẩm của mình vào mảng thị trường "cấp thấp" nhưng hy vọng bán được số lượng nhiều sản phẩm.
Số ít các công ty phần mềm muốn sản phẩm của mình có được các tính năng cạnh tranh thực sự với các sản phẩm quốc tế mà chi phí để sản xuất và chuyển giao phần mềm lại ở mức "Việt Nam", từ đó giá bán sản phẩm phẩn mềm cũng sẽ ở mức "Việt Nam". EFFECT là một trong số những công ty phần mềm loại này. Chúng tôi sẽ phải làm gì để đạt được điều mong muốn này?
"Tính động" đã là một khái niệm được đưa ra bởi EFFECT và thực tế đã chứng minh sự thành công của việc phát triển phần mềm mang tính Động. Chúng tôi đã không ngừng nâng cao tính động của phần mềm nhưng vẫn nhận thấy một rào chắn vô hình nói rằng "Tính động vẫn chưa phải là đủ!". Bạn có thể thay đổi các nghiệp vụ đầu vào và thông tin đầu ra dựa vào tính động phần mềm nhưng trên thực tế thì tính động vẫn luôn được thiết kế trong một khuôn khổ giới hạn nào đó. Cần phải có cách nào đó viết được mã lệnh lập trình ngay khi phần mềm đang chạy và quản lý được các mã lệnh này dưới dạng "dữ liệu" hay "thuộc tính" của các nghiệp vụ đầu vào hoặc báo cáo đầu ra. Xa hơn nữa, liệu có thể thay đổi được giao diện, viết các mã lệnh nghiệp vụ ngay khi phần mềm đang chạy và các mã lệnh này cũng được quản lý giống như các tham số "cấu hình" của phần mềm hay không? Nếu làm được điều này thì không những việc sửa đổi phần mềm được dễ dàng mà doanh nghiệp sẽ không phải gián đoạn sử dụng phần mềm - những chức năng đã ổn định - trong thời gian chỉnh sửa các chức năng khác. Hơn nữa, trong thời gian đầu áp dụng phần mềm bao gồm những chức năng viết riêng theo yêu cầu của doanh nghiệp sẽ có được sự thuận lợi "vô bờ bến" trong việc tinh chỉnh, sửa lỗi phần mềm. Khái niệm "Lập trình chạy ngay" được nảy sinh từ đây (vào khoảng năm 2000) và kéo theo hàng loạt các nghiên cứu, thử nghiệm của đội ngũ lập trình EFFECT. Các nghiên cứu thử nghiệm rất có thể thất bại hoàn toàn vì đây là vấn đề hoàn toàn mới mà chưa một công ty phần mềm nào tiến hành nghiên cứu. Trong giai đoạn này, "thành công hay thất bại?" luôn là câu hỏi mà chúng tôi đặt ra, nếu câu trả lời là vế sau thì hàng loạt các công sức của chúng tôi sẽ phải đổ xuống sông xuống biển. Nếu bạn là chuyên gia lập trình sử dụng các ngôn ngữ lập trình cấp cao thời thượng như Visual Basic, C#, .NET...thì chắc chắn bạn sẽ suy nghĩ rằng không thể can thiệp hay sửa đổi các cư xử của ngôn ngữ lập trình được và chúng giống như những thành trì "bất khả xâm phạm". Đúng là như vậy! Ngoài ra, nếu điểm tên của các ngôn ngữ lập trình được sử dụng rộng rãi thì bạn cũng chỉ có thể đếm được cùng lắm là khoảng 10 ngôn ngữ trên toàn thế giới và trong một vùng địa lý cụ thể (như Việt Nam, hoặc đông âu cũ...) thì bạn cũng chỉ có thể đếm được 3 đến 4 ngôn ngữ thịnh hành mà thôi. Điều này cho thấy các ngôn ngữ lập trình là cái gì đó thật vĩ đại. Nếu ngôn ngữ lập trình có lỗi thì điều duy nhất bạn có thể làm được là "chờ phiên bản sửa lỗi" của đại gia như Microsoft hay Sun hoặc Oracle!
"Ngôn ngữ Lập trình chạy ngay" - ý tưởng đã trở thành hiện thực
Thực tế thì các ngôn ngữ lập trình cũng là những phần mềm được viết ra bằng cách sử dụng một ngôn ngữ lập trình khác cơ bản hơn để viết. Ngôn ngữ cơ bản nhất cũng là ngôn ngữ gần với mã máy nhất là ASSEMBLE. Các ngôn ngữ lập trình bậc cao ngày nay có những chức năng xác định để đáp ứng yêu cầu viết ra các phần mềm ứng dụng khác của người lập trình. Đó là: tạo lập và quản lý cơ sở dữ liệu, tạo lập và quản lý các màn hình giao diện (form), các thực đơn (menu) và đặc biệt là quản lý việc viết và dịch các mã lệnh lập trình mô phỏng các tính toán, các quy trình nghiệp vụ...
Như vậy ngôn ngữ lập trình thực chất cũng là một sản phẩm phần mềm được xây dựng và phát triển giống như mọi phần mềm khác, chỉ có điều là do sứ mệnh đặc biệt của các ngôn ngữ lập trình và vì cần phải có sự tương thích của các phần mềm ứng dụng viết ra từ các ngôn ngữ lập trình nên trên thế giới không có nhiều "sản phẩm" ngôn ngữ lập trình như số lượng khổng lồ các phần mềm ứng dụng. Thay vào đó chỉ có một vài ngôn ngữ lập trình thịnh hành được viết ra bởi các đại gia phần mềm như Microsoft, IBM, Oracle...
Tất nhiên ngôn ngữ lập trình là sản phẩm phần mềm rất phức tạp vì ngoài việc nó phải đảm nhận trách nhiệm quản lý các đối tượng lập trình (như cơ sở dữ liệu, form, object, các mã lệnh...) để có thể dịch ra thành file chương trình chạy được (EXE)... mà còn cần phải quản lý cả các giao tiếp với hệ điều hành và cả các thiết bị ngoại vi của máy tính.
Sử dụng ngôn ngữ lập trình, việc viết ra phần mềm ứng dụng được thực hiện theo quy trình đơn giản truyền thống là Thiết kế, Lập trình và Kiểm thử, lặp đi lặp lại cho đến khi phần mềm hoàn thiện.
Cuối giai đoạn lập trình, người lập trình phải dịch lại tất cả các module chương trình và lắp ghép để tạo ra phần mềm sẵn sàng chạy thử nghiệm để kiểm tra lỗi. Khi phát hiện ra lỗi thì việc chỉnh sửa cần được tiến hành. Điều đáng nói ở đây là các ngôn ngữ lập trình thịnh hành hiện nay như Visual Foxpro, Visual Basic, C++, C#, .NET... đều là các ngôn ngữ lập trình dạng "biên dịch" tức là sau khi viết mã lệnh, phần mềm phải được biên dịch thì mới có thể chạy được ở mode người sử dụng. Mỗi khi phát hiện lỗi trên phần mềm và sửa đổi trên mã lệnh, phần mềm lại cần phải biên dịch lại thì kết quả sửa đổi mã lệnh mới được thể hiện trên phần mềm.
Nếu như bài toán của phần mềm được xác định 100% ngay từ đầu và các công đoạn xây dựng sản phẩm được tiến hành "thật chu đáo" theo các quy định ngặt nghèo của ISO hoặc CMM thì việc cần phải biên dịch lại này cũng không gây cản trở lớn cho tiến độ của dự án phần mềm. Nhưng với các phần mềm kế toán, quản trị doanh nghiệp hoặc các phần mềm quản lý (như ERP), đặc biệt là trong hoàn cảnh Việt Nam thì ngay cả bài toán cũng không được xác định chính xác từ đầu. Bài toán chỉ được bổ sung và hoàn thiện trong quá trình triển khai. ERP thường là một dự án phần mềm rất lớn và thường xuyên phải xây dựng các modules theo yêu cầu riêng của doanh nghiệp nên việc luôn phải dịch lại phần mềm mỗi khi bổ sung hoặc sửa lỗi là việc làm tiêu tốn nhiều thời gian và làm chậm rất nhiều tiến độ của dự án phần mềm.
Một nhược điểm nữa của việc bắt buộc phải biên dịch lại phần mềm trước khi có thể ứng dụng là phần mềm đang hoạt động ở mode người dùng phải ngưng hoạt động mỗi khi cần copy phiên bản hoặc module phần mềm đã được sửa lỗi vào máy chủ của khách hàng.
Làm sao để không cần phải thao tác biên dịch lại toàn bộ phần mềm (hoặc toàn bộ module) sau khi sửa mã lệnh mà những sửa đổi này vẫn có thể có hiệu lực ngay ở mode người sử dụng? hay nói cách khác, có thể sửa đổi phần mềm ngay khi nó đang hoạt động ở mode người dùng và các sửa đổi này có hiệu lực ngay khi việc sửa đổi hoàn tất? Đây là ý tưởng "Lập trình chạy ngay", được sinh ra để khắc phục tất cả những nhược điểm trên đây của quy trình xây dựng phần mềm truyền thống.
Đối với lập trình chạy ngay, không còn khái niệm "biên dịch phần mềm" nữa. Phiên bản mà người lập trình dùng để phát triển phần mềm cho khách hàng cũng chính là phiên bản sẽ được cài đặt lên máy chủ khách hàng, hay nói cách khác, toàn bộ mã nguồn phần mềm ứng dụng sẽ được copy nguyên si vào máy chủ của khách hàng và việc sửa đổi hay bổ sung phần mềm được thực hiện trực tiếp trên phần mềm đang hoạt động tại các máy tính nối mạng của khách hàng. Việc hạn chế hoặc cấm can thiệp sửa đổi phần mềm được thực hiện thông qua nhiều lớp mật khẩu và cần có độ an toàn "tuyệt đối". Vậy thì bằng cách nào để có thể hiện thực hoá ý tưởng lập trình chạy ngay?
Sửa đổi ngôn ngữ lập trình là việc làm không thể thực hiện vì ngôn ngữ lập trình là thành trì "bất khả xâm phạm" và việc sửa đổi chỉ thực hiện được bởi các đại gia phần mềm là nơi đã viết ra ngôn ngữ lập trình đó. Vậy thì có cách nào đây để thực hiện được ý tưởng "Lập trình chạy ngay" và khai thác được ưu điểm to lớn của nó?
Qua nghiên cứu tìm tòi thời gian dài về cách thức hoạt động và quản lý mã lệnh, quản lý giao diện... của ngôn ngữ lập trình cơ sở dữ liệu Visual Foxpro, nhóm lập trình EFFECT đã nhận thấy rằng hoàn toàn có thể mô phỏng được cách quản lý này để viết lại các module quản lý của ngôn ngữ lập trình như quản lý cơ sở dữ liệu, quản lý Form, Menu.... Bằng cách này có thể quản lý luôn cả các mã lệnh viết trên các form, trên các menu...
Phát kiến này mới chỉ là suy nghĩ ban đầu để có thể hiện thực hoá được ý tưởng Lập trình chạy ngay. Phần thực hiện xuất phát từ xuy nghĩ ban đầu này thực sự đã gặp nhiều gian truân để đi đến được kết quả là "Ngôn ngữ lập trình chạy ngay" (NNLTCN) của EFFECT ra đời và đi vào ứng dụng thực tế.
NNLTCN của EFFECT đến nay đã thực sự có đầy đủ tính chất của một ngôn ngữ lập trình và hoàn toàn ổn định. Trên giao diện của NNLTCN có thể phát triển ra nhiều ứng dụng khác nhau. Các sản phẩm của EFFECT đã thực hiện bằng NNLTCN là: EFFECT 2.0, EFFECT-SQL 3.0, EFFECT-ERP, ReportBase, EFFECT-Exam (phần mềm thi trắc nghiệm). Toàn bộ giao diện của phần mềm ứng dụng đều được viết trên NNLTCN. NNLTCN đã thực sự quản lý được toàn bộ hệ thống cơ sở dữ liệu Visual Foxpro hoặc kết nối với cơ sở dữ liệu Microsoft SQL Server. NNLTCN cũng quản lý tất cả các form giao diện và các mã lệnh viết cho các object trên form (chính vì vậy mà trên các sản phẩm EFFECT, bạn có thể thao tác đánh dấu cấm quyền người sử dụng tới object bất kỳ trên form bất kỳ), quản lý cả hệ thống thực đơn động và mã lệnh đi kèm. Ngoài ra NNLTCN của EFFECT còn được bổ sung trên 400 hàm tiện ích phục vụ cho việc lập trình các ứng dụng cơ sở dữ liệu đặc biệt là cho các hệ thống kế toán và các phần mềm quản trị doanh nghiệp. Năng suất lập trình ứng dụng viết trên NNLTCN theo thống kê đã tăng từ 5 đến 7 lần so với cách lập trình biên dịch truyền thống. Đặc biệt tính chất "chạy ngay" của việc lập trình đã và đang phát huy tác dụng, làm cho năng suất triển khai phần mềm tại khách hàng của EFFECT được cải thiện một cách ngoạn mục. Đây là lý do cơ bản giải thích tại sao EFFECT sẵn sàng thực hiện các yêu cầu đặc thù riêng của tất cả các khách hàng trên các hệ thống kế toán và ERP và các sản phẩm của chúng tôi sẵn sàng đáp ứng được cả những khách hàng phức tạp và khó tính nhất.
Một ưu điểm nữa của lập trình chạy ngay là tất cả các mã nguồn ứng dụng viết riêng cho doanh nghiệp được lưu trữ tại Server của doanh nghiệp nên được bảo quản lâu dài và luôn sẵn sàng phát triển để phục vụ sự phát triển tiếp theo của doanh nghiệp.
Cuối cùng, kết hợp với công nghệ điều khiển từ xa (Remote Desktop) hoặc truy cập từ xa (Remote Access), tính động và khả năng lâp trình chạy ngay của các sản phẩm EFFECT càng phát huy tác dụng trong việc hỗ trợ khách hàng thông qua môi trường internet. Việc cải tiến và sửa lỗi phần mềm được tiến hành ngay tại trụ sở EFFECT nhưng cũng là thao tác trực tiếp trên hệ thống phần mềm mà doanh nghiệp đang áp dụng và do đó những sửa đổi được cập nhật ngay lập tức trên phần mềm đang được ứng dụng hàng ngày tại doanh nghiệp.
Đánh giá trên Facebook