ĐẠi học quốc gia hà NỘi trường Đại học Công nghệ Nguyễn Việt Hà Bài giảng


Khó khăn, thách thức đối với phát triển phần mềm



tải về 454.68 Kb.
trang2/13
Chuyển đổi dữ liệu09.09.2017
Kích454.68 Kb.
#33014
1   2   3   4   5   6   7   8   9   ...   13

1.2 Khó khăn, thách thức đối với phát triển phần mềm


Từ những năm 60, nhiều dự án phần mềm lớn không thành công như các dự án OS 360 (tiêu tốn một số tiền và thời gian gấp nhiều lần dự kiến) và TSS 360 (không đạt các chỉ tiêu kỹ thuật, hầu như không hoạt động) của IBM. Do đó, việc phát triển phần mềm dần dần đã được nhận thức là một lĩnh vực đầy khó khăn và chứa nhiều rủi ro. Chúng ta sẽ xem xét các khó khăn và thách thức trên các khía cạnh đặc trưng, qui mô và nhu cầu của phần mềm.

1.2.1 Phần mềm và phần mềm tốt


Phần mềm thông thường được định nghĩa bao gồm:

- các lệnh máy tính nhằm thực hiện các chức năng xác định

- các cấu trúc dữ liệu cho phép chương trình thao tác với dữ liệu

- các tài liệu giúp cho người dùng có thể vận hành được phần mềm

Bốn thuộc tính chủ chốt mà một hệ phần mềm tốt phải có là:

• Có thể bảo trì được: phần mềm tuổi thọ dài phải được viết và được lập tư liệu sao cho việc thay đổi có thể tiến hành được mà không quá tốn kém. Đây được coi là đặc tính chủ chốt nhất của một phần mềm tốt. Để có thể bảo trì được, phần mềm phải có một thiết kế tốt có tính modun hóa cao, được viết bằng ngôn ngữ bậc cao và được lập tài liệu (tài liệu phân tích, thiết kế, chú thích mã nguồn, hướng dẫn người dùng...) đầy đủ.

• Đáng tin cậy: phần mềm phải thực hiện được điều mà người tiêu dùng mong mỏi và không thất bại nhiều hơn những điều đã được đặc tả. Điều này có nghĩa là phần mềm phải thỏa mãn được nhu cầu của người dùng. Để đạt được yếu tố đáng tin cậy, trước tiên người phát triển cần phải hiểu một cách đúng đắn yêu cầu của người dùng và sau đó cần thỏa mãn được các yêu cầu này bằng các thiết kế và cài đặt tốt.

• Có hiệu quả: phần mềm khi hoạt động phải không lãng phí tài nguyên hệ thống như bộ nhớ, bộ xử lý. Nếu phần mềm chạy quá chậm hay đòi hỏi quá nhiều bộ nhớ... thì dù có được cài đặt rất nhiều chức năng cũng sẽ không được đưa vào sử dụng. Tuy nhiên, ngoại trừ các phần mềm nhúng hay thời gian thực đặc biệt, người ta thường không cực đại hóa mức độ hiệu quả vì rằng việc đó có thể phải dùng đếm các kỹ thuật đặc thù và cài đặt bằng ngôn ngữ máy khiến cho chi phí tăng cao và phần mềm rất khó thay đổi (tính bảo trì kém).

• Dễ sử dụng: giao diện người sử dụng phải phù hợp với khả năng và kiến thức của người dùng, có các tài liệu hướng dẫn và các tiện ích trợ giúp. Đối tượng chính của các phần mềm nghiệp vụ thường là người không am hiểu về máy tính, họ sẽ xa lánh các phần mềm khó học, khó sử dụng.

Có thể thấy rõ, việc tối ưu hóa đồng thời các thuộc tính này là rất khó khăn. Các thuộc tính có thể mẫu thuẫn lẫn nhau, ví dụ như tính hiệu quả và tính dễ sử dụng, tính bảo trì. Quan hệ giữa chi phí cải tiến và hiệu quả đối với từng thuộc tính không phải là tuyến tính. Nhiều khi một cải thiện nhỏ trong bất kỳ thuộc tính nào cũng có thể là rất đắt.

Một khó khăn khác của việc phát triển phần mềm là rất khó định lượng các thuộc tính của phần mềm. Chúng ta thiếu các độ đo và các chuẩn về chất lượng phần mềm. Vấn đề giá cả phải được tính đến khi xây dựng một phần mềm. Chúng ta sẽ xây dựng được một phần mềm dù phức tạp đến đâu nếu không hạn chế về thời gian và chi phí. Điều quan trọng là chúng ta phải xây dựng một phần mềm tốt với một giá cả hợp lý và theo một lịch biểu được định trước.

1.2.2 Đặc trưng phát triển và vận hành phần mềm


Chúng ta có thể thấy khó khăn hàng đầu của việc phát triển phần mềm là do tính chất phần mềm là hệ thống logic, không phải là hệ thống vật lý. Do đó nó có đặc trưng khác biệt đáng kể với các đặc trưng của phần cứng. Dưới đây là 3 yếu tố chính tạo ra sự phức tạp trong quá trình phát triển cũng như sử dụng, bảo trì phần mềm.

a. Phần mềm không được chế tạo theo nghĩa cổ điển


Phần mềm cũng được được thiết kế, phát triển như phần cứng, nhưng nó không định hình trước. Chỉ khi phát triển xong người ta có sản phẩm cụ thể và hiểu được nó có hiệu quả hay không. Tức là ở các bước trung gian, chúng ta rất khó kiểm soát chất lượng của phần mềm.

Giá thành của phần cứng chủ yếu bị chi phối bởi giá thành nguyên vật liệu và chúng ta tương đối dễ kiểm soát. Trong khi đó, giá thành phần mềm chủ yếu tập chung vào chi phí nhân công. Quá trình phát triển phần mềm phụ thuộc vào con người (hiểu biết, khả năng vận dụng, kinh nghiệm và cách thức quản lý) và được tiến hành phát triển trong điều kiện môi trường (kỹ thuật, xã hội) đa dạng và không ngừng thay đổi. Do đó chúng ta rất khó ước lượng được chi phí cũng như hiệu quả của phần mềm.


b. Phần mềm không hỏng đi nhưng thoái hóa theo thời gian


Phần mềm không cảm ứng đối với những tác động của môi trường vốn gây cho phần cứng bị mòn cũ đi, nhưng nó cũng thoái hóa theo thời gian. Thực tế, phần mềm trải qua thời gian sử dụng cần phải được thay đổi (bảo trì) để đáp ứng nhu cầu luôn thay đổi của tổ chức sử dụng nó. Mỗi khi thay đổi, sẽ xuất hiện thêm một số khiếm khuyết mới không thể tránh làm cho số lỗi tiềm ẩn trong phần mềm tăng lên. Dần dần, phần mềm bị thoái hóa do tỷ lệ sai hỏng ngày càng tăng lên đến mức gây ra những thiệt hại không thể chấp nhận được.

Việc bảo trì phần mềm phức tạp hơn nhiều và có bản chất khác hẳn so với bảo trì phần cứng do sự phức tạp của hệ thống phần mềm và sự không có sẵn phần thay thế cho bộ phận bị lỗi. Chúng ta không thay thế bộ phận bị lỗi bằng cái có sẵn mà thực tế phải tạo ra một môđun mới. Do đó, thông thường chỉ có nhà sản xuất phần mềm mới bảo trì (sửa chữa) được hỏng hóc. Sẽ rất khó ước lượng được chi phí cho bảo trì phần mềm.


c. Phần lớn phần mềm đều được xây dựng từ đầu, ít khi được lắp ráp từ thành phần có sẵn


• Phần mềm không có danh mục các thành phần cố định như phần cứng.

• Phần mềm thường được đặt hàng theo một đơn vị hoàn chỉnh, theo yêu cầu riêng của khách hàng.

• Phần mềm ít khi có thể lắp ráp theo một khuôn mẫu có sẵn. Yêu cầu với phần mềm thay đổi theo môi trường cụ thể mà ở đó nó được xây dựng. Môi trường của phần mềm (gồm phần cứng, phần mềm nền, con người và tổ chức) không thể định dạng từ trước và lại thay đổi thường xuyên.

Những yếu tố này dẫn đến chi phí cho phần mềm cao và rất khó đảm bảo được lịch biểu cho phát triển phần mềm.


1.2.3 Nhu cầu và độ phức tạp


Tuy ngành công nghiệp máy tính đã bước sang giai đoạn phát triển thứ tư nhưng các thách thức đối với phát triển phần mềm máy tính không ngừng gia tăng vì những nguyên nhân sau:

- Khả năng xây dựng các chương trình mới không giữ được cùng nhịp với nhu cầu về phần mềm tăng lên nhanh chóng, đặc biệt khi Internet phát triển và số lượng người dùng tăng cao. Ngày nay, sản xuất phần mềm đã trở thành một ngành công nghiệp không lồ tuy vậy năng suất không cao, không đáp ứng được đòi hỏi của xã hội và điều này ảnh hưởng lớn đến giá thành và chất lượng phần mềm. Ngoài ra, còn tồn tại rất nhiều chương trình được thiết kế và lập tài liệu sơ sài khiến cho việc bảo trì rất khó khăn và kém tài nguyên. Phát triển các phần mềm mới dễ bảo trì để thay thế các hệ thống cũ trở thành nhu cầu cấp bách.

- Cùng với sự phát triển của phần cứng, quy mô và độ phức tạp của các phần mềm mới ngày càng tăng. Một số phần mềm hiện đại có kích thước được tính bằng đơn vị triệu dòng lệnh (HĐH Unix, Windows...). Một vấn đề khó khăn trong sản xuất phần mềm lớn là độ phức tạp tăng vọt, các kinh nghiệm sản xuất sản phẩm nhỏ không ứng dụng được cho môi trường làm việc theo nhóm và phát triển sản phẩm lớn.

- Sự tinh vi và năng lực của phần cứng đã vượt xa khả năng xây dựng phần mềm để có thể sử dụng được các tiềm năng của nó. Tất cả các khó khăn và thách thức nêu trên đã dẫn đến việc chấp nhận thực hành kỹ nghệ phần mềm để có thể tạo nhanh các phần mềm có nhất lượng ngày một cao, có quy mô và số lượng ngày một lớn và có những tính năng tương ứng với tiềm năng phần cứng.




tải về 454.68 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   ...   13




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương