Công đoạn cuối cùng và không thể thiếu được trong phần thiết kế hệ thống thông tin quản lý là phải thiết kế phần mềm (mới) hoặc trong một số trường hợp – mua các phần mềm có sẵn trên thị trường cho tổ chức.
Thiết kế phần mềm mới
Mỗi sản phẩm phần mềm là một công trình của sáng tạo và kỹ thuật. Nó là sản phẩm của các nhà phân tích viên hệ thống và các nhà lập trình. Đây là công đoạn không cần nhiều chi phí tài chính lớn và lao động nhưng lại cần một đội ngũ chuyên gia, kỹ thuật viên cấp cao, am hiểu lĩnh vực quản lý và thông thạo các kỹ thuật sáng chế phần mềm.
1. Các bước thiết kế phần mềm
Quy trình thiết kế phần mềm gồm 6 bước sau đây:
- Xác định mục đích, yêu cầu của phần mềm
- Thiết kế giải thuật
- Chọn ngôn ngữ lập trình
- Viết chương trình
- Thử nghiệm chương trình
- Biên soạn tài liệu hướng dẫn
Xây dựng phần mềm là một quá trình phức tạp. Nó được coi là một nghệ thuật vì đòi hỏi trí tưởng tượng tốt, óc sáng tạo và sự khéo léo, đồng thời cũng là một khoa học vì cần áp dụng các kỹ thuật và phương pháp tiêu chuẩn liên quan đến công nghệ phần mềm (Software Engineering). Trước mỗi bài toán đặt ra, người lập trình phải biết lựa chọn cấu trúc dữ liệu phù hợp, trên cơ sở đó tiến hành một giải thuật hiệu quả nhất. Với một cấu hình máy tính đã được chọn, phải xác định được cách tổ chức lưu trữ dữ liệu và truy nhập tương ứng.
2. Các phương pháp thiết kế giải thuật
Một phần mềm tổng thể bao gồm nhiều “module con” (program) để giải quyết các vấn đề cụ thể nhằm thực hiện các chức năng đã được xác định đối với HTTT quản lý của tổ chức. Các module thường tương ứng với các tiến trình (hoặc xử lý) trong sơ đồ DFD, tuy nhiên số mudule bao giờ cũng nhiều hơn số process trên DFD vì một số module phải xử lý các vấn đề không thuộc chức năng (Non Functional) như sửa lỗi, tối ưu hóa hệ thống hay phân quyền… Các mdule không hoạt động riêng lẽ mà thường liên kết với nhau theo cách nào đó để thực hiện chức năng chung của hệ thống. Thiết kế giải thuật có chức năng xác định các module, vị trí và mối quan hệ giữa chúng trong toàn bộ HTTT quản lý cần thiết kế.
Chúng ta sẽ xem xét hai phương pháp thiết kế giải thuật cơ bản của trường phái lập trình cấu trúc: phương pháp thiết kế từ đỉnh xuống và phương pháp thiết kế từ dưới lên. Trong thực tiễn, tùy thuộc từng bài toán cụ thể, người lập trình sẽ chọn một trong hai phương pháp hoặc kết hợp cả hai phương pháp với mục đích cuối cùng là thiết kế được các giải thuật chất lượng, tối ưu và hiệu quả.
a. Phương pháp thiết kế từ đỉnh xuống (Top down design)
Đây là phương pháp thiết kế giải thuật dựa trên tư tưởng module hóa. Nội dung của phương pháp thiết kế này như sau: Trước hết người ta xác định các vấn đề chủ yếu nhất mà bài toán yêu cầu, sau đó phân chia nhiệm vụ cần giải quyết thành các nhiệm vụ cụ thể hơn, tức là chuyển dần từ module chính đến các module con từ trên xuống dưới.
Để minh họa cho phương pháp này, chúng ta xét bài toán thiết kế hệ tin học quản lý hóa đơn bán hàng cho một công ty thương mại.
– Số liệu ban đầu của các hóa đơn:
Số hóa đơn, Mã KH, Họ và tên KH, Địa chỉ KH, Số tài khoản, Mã số thuế, Phương thức thanh toán, Tên hàng hóa (R), Đơn vị tính (R), Đơn giá (R), Số lượng (R), Ngày bán, Người bán, Người mua.
– Các phép toán cần xử lý: nhập số liệu cho tệp hóa đơn (cập nhật), xử lý (tìm kiếm) và lập các báo cáo tổng hợp.
Ta có các nội dung chính của bài toán đặt ra:
b. Phương pháp thiết kế từ dưới lên (Bottom up design)
Tư tưởng của phương pháp thiết kế này ngược lại với phương pháp thiết kế từ trên xuống và bao gồm các ý chính sau đây:
Trước hết người ta giải quyết các vấn đề cụ thể, sau đó trên cơ sở đánh giá mức độ tương tự về chức năng của các vấn đề này trong việc giải quyết bài toán, người ta gộp chúng lại thành từng nhóm cùng chức năng từ dưới lên cho đến module chính. Tiếp đến, người ta sẽ thiết kế thêm một số chương trình còn khuyết nhằm làm đầy đủ hơn chức năng của các phân hệ và cuối cùng là thiết kế một chương trình làm nhiệm vụ tập hợp các module thành một hệ chương trình thống nhất, hoàn chỉnh.
Ví dụ: Giả sử trong một doanh nghiệp, việc ứng dụng tin học trong quản lý đã được triển khai ở các bộ phận khác nhau từ các thời điểm khác nhau. Kết quả là người ta đã thiết kế và đưa vào sử dụng một số chương trình quản lý tại các phòng ban (Phòng Tổ chức cán bộ, Phòng Tài chính – Kế toán, Phòng Vật tư,…). Danh sách các chương trình như sau:
Program 1: Nhập số liệu cho tệp hồ sơ cán bộ (NhapHSCB) Program 2: Sửa chữa, bổ sung, cập nhật hồ sơ (CapnhatHSCB) Program 3: Tính lương cho cán bộ (LuongCB)
Program 4: Nhập số liệu về đào tạo, bồi dưỡng cán bộ (DaotaoCB) Program 5: Nhập số liệu nguyên vật liệu nhập kho (NhapNVL) Program 6: Nhập số liệu hóa đơn bán sản phẩm (NhapHD) Program 7: Nhập số liệu nguyên vật liệu xuất kho (XuatNVL) Program 8: Lập bảng tính giá trị sản phẩm bán ra (GiatriSP)
Tuy các chương trình này đang hoạt động ổn định nhưng có tính đơn lẻ, rời rạc ở từng bộ phận. Do đó các nhà lãnh đạo doanh nghiệp có nhu cầu thiết kế một hệ chương trình thống nhất để phục vụ tốt hơn cho việc quản lý doanh nghiệp. Trong trường hợp này, chúng ta vận dụng phương pháp thiết kế từ dưới lên theo các bước sau đây:
Bước 1:
a) Gộp các program 1, 2 thành module “Quản lý hồ sơ cán bộ”, sau đó gộp module này với các program 3, 4 thành phân hệ “Quản lý nhân sự”.
b. Gộp các program 5, 7 thành phân hệ “Quản lý kho hàng”
c. Gộp các module 6, 8 thành phân hệ “Quản lý bán hàng”
Bước 2: Trên cơ sở chức năng của các phân hệ trên đây, chúng ta có thể tiến hành thiết kế thêm một số chương trình để bổ sung thêm những nội dung còn thiếu nhằm thực hiện đầy đủ các chức năng, ví dụ như:
- Bổ sung Program 9 “Lập bảng tổng hợp hàng tồn kho” (TonghopHTK) vào phân hệ “Quản lý kho hàng”.
- Bổ sung Program 10 “Dự báo mức tiêu thụ” (DubaoTT) vào phân hệ “Quản lý bán hàng”.
Ngoài hai chương trình trên, chúng ta có thể bổ sung nhiều chương trình khác cho mỗi phân hệ. Tuy nhiên cần lưu ý: các chương trình được thiết kế bổ sung phải phù hợp về mặt chức năng và phải tương thích với các chương trình đã được thiết kế.
Bước 3: Gộp ba phân hệ vừa thiết kế thành một HTTT quản lý thống nhất của doanh nghiệp như hình vẽ sau đây.
3. Các ngôn ngữ thiết kế phần mềm
Khi lựa chọn ngôn ngữ lập trình, người ta thường căn cứ vào một số tiêu chuẩn như lĩnh vực ứng dụng tổng quát, môi trường hoạt động của phần mềm, độ phức tạp của thuật toán và của cấu trúc chương trình, tri thức của cán bộ phát triển phần mềm.
Các ngôn ngữ lập trình được phân loại khái quát thành 3 thế hệ:
Ngôn ngữ thế hệ thứ nhất: tiêu biểu nhất của dạng này là hợp ngữ. Các ngôn ngữ thế hệ thứ nhất có đặc điểm là phụ thuộc mạnh vào từng loại máy tính điện tử cụ thể và mức độ trừu tượng của các chương trình thường rất thấp.
Ngôn ngữ thế hệ thứ hai: được phát triển vào cuối những năm 50, đầu những năm 60. Các ngôn ngữ thế hệ thứ hai được đặc trưng bởi một thư viện các chương trình phần mềm liên quan đến nhiều lĩnh vực khác nhau.
FORTRAN là ngôn ngữ thế hệ thứ hai được áp dụng phổ biến trong việc giải quyết các bài toán khoa học và kỹ thuật. COBOL là ngôn ngữ thế hệ thứ hai có khả năng định nghĩa dữ liệu rất tốt nên đến nay vẫn được ứng dụng rộng rãi trong lĩnh vực thương mại và kinh tế. BASIC là ngôn ngữ lập trình phi cấu trúc. Khi xuất hiện mày tính cá nhân IBM PC, ngôn ngữ BASIC lại được phát triển rất mạnh với nhiều bản khác nhau như QBASIC, GWBASIC, BASICA.
Ngôn ngữ thế hệ thứ ba: là ngôn ngữ lập trình hiện đại với khả năng cấu trúc rất phong phú và các thủ tục mạnh. Các ngôn ngữ thế hệ thứ ba có thể chia thành ba nhóm:
- Ngôn ngữ cấp cao vạn năng như: ALGOL với khả năng đưa ra các kết cấu thủ tục và định kiểu dữ liệu. Trên cơ sở ALGOL, người ta đã sáng tạo ra các ngôn ngữ lập trình vạn năng khác như PL/1, PASCAL, MODULA – 2, C và
- Ngôn ngữ cấp cao hướng đối tượng: được xây dựng trên các khái niệm đối tượng và các thuộc tính, lớp và thành phần, toàn thể và bộ phận. Các ngôn ngữ cấp cao hướng đối tượng tiêu biểu là C++, Object Pascal,
- Ngôn ngữ chuyên dụng.
4. Xây dựng tài liệu hướng dẫn sử dụng phần mềm
Xây dựng tài liệu hướng dẫn sử dụng phần mềm là khâu cuối cùng của giai đoạn thiết kế phần mềm. Một tài liệu hướng dẫn đầy đủ, dễ hiểu sẽ làm tăng đáng kể chất lượng của phần mềm.
Ngoài các trang nhan đề và mục lục, các nội dung chính của tài liệu bao gồm:
- Tóm tắt hệ thống: trình bày một cách ngắn gọn các vấn đề chủ yếu của phần mềm (quy trình thao tác, tài liệu đầu vào, tài liệu ra, thiết kế giao diện màn hình…)
- Dữ liệu vào: nguồn gốc dữ liệu vào, các thủ tục kiểm tra dữ liệu, nơi nhập dữ liệu…
- Tài liệu ra (các báo cáo ở đầu ra): mô tả xuất xứ, đặc điểm kỹ thuật của tài liệu, chế độ in, nơi nhận tài liệu, các tệp dữ liệu, giải thích các trường dữ liệu, các thủ tục bảo vệ an toàn, thủ tục khôi phục…
- Các lưu đồ hệ thống, các sơ đồ luồng dữ liệu, từ điển thuật ngữ…
- Các tiến trình máy tính và tài nguyên máy tính.
Lựa chọn phần mềm trên thị trường
Chúng ta đã đề cập đến việc thiết kế phần mềm cho HTTT quản lý. Tuy nhiên, không phải bất cứ lúc nào, việc xây dựng HTTT quản lý đều dẫn đến việc phát triển phần mềm. Trong nhiều trường hợp, chúng ta chỉ cần xem xét tính thích hợp của các phần mềm có sẵn trên thị trường để lựa chọn cho HTTT quản lý của mình. Tất nhiên không có một phần mềm nào là hoàn toàn phù hợp với hệ thống vì nó chỉ giải quyết các vấn đề tổng quát chứ chưa tính đến nét đặc trưng cho mỗi hệ thống cụ thể. Trong thực tế, người ta có thể lựa chọn một phần mềm có sẵn nếu nó đáp ứng khoảng 80% khối lượng công việc đã được tổ chức đề ra.
Các tổ chức thường mua các gói phần mềm trong một số trường hợp sau:
- Chỉ cần áp dụng đối với các chức năng phổ biến của tổ chức như kế toán, quản trị nhân sự…
- Khi tổ chức không có đủ nguồn lực để xây dựng và thiết kế HTTT: không đủ nhân lực để thực hiện các dự án phát triển hệ thống, thiếu khả năng về tài chính…
- Khi các ứng dụng trên máy vi tính được phát triển theo định hướng người sử dụng thì rất nhiều phần mềm được thiết kế sẵn cho máy vi tính là nguồn trợ giúp cho các doanh nghiệp với chi phí thấp.
Các bộ phần mềm có sẵn trên thị trường thường có những lợi ích sau đây:
- Giúp doanh nghiệp giảm bớt được thời gian thiết kế, tổ chức các tệp dữ liệu, xử lý các mối quan hệ và xây dựng các báo cáo…
- Giá thành thấp hơn so với thiết kế phần mềm mới.
- Có thể cài đặt vào các phần cứng khác
- Có độ tin cậy tương đối cao do các gói phần mềm thường đã được kiểm tra trước khi đưa ra thị trường và thường đã được một số tổ chức khác sử dụng.
Tuy nhiên việc sử dụng các phần mềm đó có một số điều bất lợi như sau:
- Không có tính mềm dẻo, khó bảo hành. Các chương trình thương mại hoá không thể đáp ứng được các yêu cầu về kỹ thuật và tính tinh tế cho các công việc đa dạng khác nhau. Thông thường các chương trình thường được thiết kế để thực hiện tốt một chức năng nào đó hơn là tạo một hệ thống với một lượng lớn các chức năng phức tạp.
- Các gói phần mềm có thể không đáp ứng đầy đủ những yêu cầu của tổ chức. Chúng thường được thiết kế phù hợp với những yêu cầu chung nhất của các tổ chức khác
- Đôi khi, các gói phần mềm gây khó khăn cho việc phát triển do chi phí chuyển đổi quá
Để lựa chọn được một gói phần mềm hợp lý, tổ chức cần lập ra một danh sách chi tiết các câu hỏi liên quan đến các vấn đề sau:
– Các chức năng đa dạng đã được thiết kế trong phần mềm:
+ Có bao nhiêu chức năng cần thiết được đáp ứng bởi gói phần mềm đó?
+ Có bao nhiêu chức năng trong số đó đã được chuẩn hoá, có bao nhiêu chức năng có thể sử dụng nhờ việc sửa lại mã phần mềm?
+ Những chức năng nào phần mềm không đáp ứng được?
– Tính linh hoạt:
+ Phần mềm có dễ sửa chữa không?
+ Những đặc điểm nào có thể thay đổi được theo yêu cầu của người sử dụng?
+ Liệu nhà cung cấp có sẵn sàng sửa chữa phần mềm theo yêu cầu của người sử dụng hay không?
– Tính tiện tích cho người sử dụng:
+ Phần mềm có dễ sử dụng bởi những người không có kiến thức về CNTT không?
+ Yêu cầu về đào tạo để sử dụng được phần mềm có nhiều không?
+ Phần mềm cho phép người sử dụng kiểm soát tới mức độ nào?
– Các đặc điểm của CSDL:
+ Phần mềm sử dụng cấu trúc dữ liệu gì?
+ Liệu CSDL có đáp ứng yêu cầu khôi phục dữ liệu và xử lý dữ liệu không?
– Các nỗ lực thiết lập hệ thống:
+ Phần mềm có đòi hỏi nhiều thay đổi về thủ tục không?
+ Việc chuyển đổi từ hệ thống cũ sang hệ thống mới có khó khăn không?
– Bảo trì:
+ Liệu nhà cung cấp có cung cấp dịch vụ bảo trì và cập nhật mới cho phần mềm không?
+ Số lượng nhân viên tối thiểu cần có để bảo trì hệ thống là bao nhiêu?
– Hệ thống tài liệu hỗ trợ:
+ Những tài liệu nào được trang bị cho phần mềm?
+ Chúng có dễ hiểu và dễ sử dụng không?
+ Mức độ hoàn thiện của các tài liệu này?
– Chất lượng nhà cung cấp:
+ Nhà cung cấp có kinh nghiệm trong lĩnh vực xây dựng những hệ thống phần mềm này không?
+ Nhà cung cấp có tiếp tục cung cấp và hoàn thiện các phần mềm trọn gói đó không?
– Chi phí mua phần mềm:
+ Giá mua phần mềm có bao gồm các mô đun phụ trợ, các phương tiện khôi phục dữ liệu, thời gian cố vấn, đào tạo và hỗ trợ thiết lập hệ thống không?
+ Chi phí để sửa chữa phần mềm theo yêu cầu của người sử dụng là bao nhiêu?
+ Liệu có tồn tại chi phí bảo trì và các hợp đồng bảo trì hệ thống không?
+ Chi phí điều hành hàng năm cho khối lượng các công việc được xử lý bởi phần mềm này là bao nhiêu?
Tóm lại, nếu tồn tại một gói phần mềm phù hợp với yêu cầu của tổ chức thì hoàn toàn có thể loại bỏ nhu cầu viết các chương trình phần mềm cần thiết và giảm được một khối lượng lớn việc thiết kế, kiểm tra, thiết lập và bảo trì.