CHƯƠNG 1: CƠ SỞ LÝ LUẬN 1. NHỮNG KHÁI NIỆM CƠ BẢN 1. Lý thuyết về phần mềm Phần mềm là một tập hợp những câu lệnh hoặc chỉ thị được viết bằng một hoặc nhiều ngôn ngữ lập trình theo một trật tự xác định đi kèm với các dữ liệu hay tài liệu liên quan như mô hình thiết kế, tài liệu hướng dẫn sử dụng… nhằm tự động thực hiện một số nhiệm vụ hay chức năng hoặc giải quyết một vấn đề cụ thể nào đó. Yêu cầu sử dụng phần mềm không ngừng thay đổi cùng với sự tiến bộ nhanh của hạ tầng phần cứng thì sự tiến hóa của phần mềm là tất yếu.
Phần mềm được chia làm các giai đoạn phát triển: Giai đoạn 1: Những năm đầu từ năm 1950 đến năm 1960 Trong giai đoạn này, phần cứng có năng lực hạn chế và thay đổi liên tục. Phần mềm phần lớn mang tính chuyên dụng. Lập trình máy tính "theo bản năng" và được xem là một nghệ thuật, chưa có phương pháp mang tính hệ thống, phát triển phần mềm chưa được quàn lý, phần lớn hệ thống xử lý theo lô. Môi trường phát triển phần mềm mang tính cá nhân, tiến trình phát triển phần mềm không tường minh, thường không có tài liệu.
Sản xuất mang tính đơn chiếc, theo đơn đặt hàng. Kết quả là, những người làm phần mềm có thể học được việc cài đặt nhưng không học được nhiều về kỹ nghệ làm ra các phần mềm một cách hiệu quả. Giai đoạn 2: Thời kỳ từ những năm 1960 đến giữa những năm 1970 Đặc trưng của giai đoạn này là: Hệ thống phần mềm đa chương trình, đa người sử dụng phát triển, dẫn đến khái niệm mới về tương tác người - máy. Kỹ thuật này mở ra nhiều ứng dụng mới và đòi hỏi mức độ tinh vi của cả phần mềm và phần cứng.
Hệ thống thời gian thực ra đời, bao gồm việc thu thập, phân tích, biến đổi dữ liệu từ nhiều nguồn khác nhau để kiểm soát các tiến trình và phải xuất ra các yêu cầu đáp ứng trong phần nghìn giây, thay vì nhiều phút như trước. Tiến bộ lưu trữ trực tuyến làm xuất hiện các hệ quản trị cơ sở dữ liệu thế hệ đầu. Số lượng các hệ thống dựa trên máy tính phát triển, nhu cầu phân phối mở rộng, thư viện phần mềm phát triển, quy mô phần mềm ngày càng lớn. Vì thế, nảy sinh nhu cầu sửa chữa chương trình khi gặp lỗi, hay người dùng yêu cầu phải làm thích nghi chương trình với những thay đổi của môi trường.
Giai đoạn 3: Thời kỳ giữa những năm 1970 đến năm 1990 Thời kỳ này đặc trưng bằng việc phát triển mạng toàn cục và cục bộ, truyền thông tin hiệu số. Những sự kiện này đã làm tăng nhu cẩu truy nhập dữ liệu, yêu cầu phát triển các phần mềm quản lý dữ liệu. Cùng với nó là sự phát triển các hệ thống phân tán (bao gồm nhiều máy tính, mỗi máy thực hiện một chức năng và liên kết với 5 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com các máy khác) làm tăng quy mô và độ phức tạp của phần mềm. Sự tiến bộ nhanh và sử dụng phổ biến các bộ vi xử lý (ôtô, rô bôt, lò vi sóng, thiết bị chẩn đoán,.
) trong công nghiệp, máy tính cá nhân ra đời và các máy trạm để bàn phát triện, làm cho nhu cầu về phần mềm tăng nhanh do phạm vi người dùng mở rộng, bao gồm cả lĩnh vực công nghiệp, dịch vụ và đời sống sinh hoạt. Phần cứng ngày càng ổn định, chi phí phần mềm có khuynh hướng tăng nhanh hơn chi phí mua máy. Từ đó nảy sinh yêu cầu tăng năng suất sản xuất phần mềm Phương pháp luận và phương pháp phát triển phần mềm hướng cấu trúc đạt đốn một mức hoàn thiện cao và cùng với nó là sự phát triển các công cụ trợ giúp kỹ nghệ phần mềm bằng máy, đã làm tăng năng suất và chất lượng phần mềm một cách đáng kể. Giai đoạn 4: Thời kỳ sau năm 1990 Trong thời kỳ này, cách tiếp cận kỹ nghệ hướng đối tượng nhanh chóng thay thế các cách tiếp cận truyền thống trong nhiều lĩnh vực ứng dụng.
Các hệ thông minh: Hệ chuyên gia và phần mềm trí tuệ nhân tạo chuyên từ phòng thí nghiệm ra thực tế. Phần mềm mạng nơron nhân tạo đã mở ra khả năng nhận dạng và thực hiện khả năng xử lý thông minh của con người. Sự phát triển Internet làm cho người dùng máy tính tăng vọt, nhu cầu phần mềm ngày càng lớn, quy mô và độ phức tạp của những hộ thống phần mềm mới cũng tăng đáng kể. Các hệ thống dựa trên nền web đang chiếm ưu thế trong các hệ ứng dụng nghiệp vụ.
Công nghệ hướng đổi tượng (tiêu biểu như các hệ. NET) và phát triền phần mềm theo hướng sử dụng lại (Patterns và Framewoks) đang trở thành một xu hướng công nghệ. Tất cả những yếu tố trên tạo nên những thách thức mới cho việc phát triển phần mềm hiện nay. Đặc điểm của phần mềm: Phần mềm cũng được thiết kế, chế tạo như phần cứng, nhưng nó không được định hình trước.
Chỉ khi phát triển xong người ta mới có sản phẩm cụ thể và biết được nó hoạt động có hiệu quả hay không. Quá trình thiết kế và sản xuất phần mềm phụ thuộc vào con người, vào điều kiện môi trường cụ thể mà tại đó nó được phát triển. Chính quá trình phát triển phần mềm quyết định giá thành và chất lượng cùa nó. 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 bị ảnh hưởng từ những tác động của môi trường vốn gây cho phần cứng bị mòn cũ. Về mặt lý thuyết, tỷ lệ lỗi của phần mềm là không đổi khi đã đưa vào sử dụng. Nhưng trên thực tế, nó lại "thoái hóa" theo thời gian do lỗi mới sinh ra mỗi khi tiến hành bảo trì trong quá trình sừ dụng. Khi sửa đổi (bảo trì) phần mềm, một số khiếm khuyết mới sinh ra, làm cho đường cong tỷ lệ lỗi trở thành có đầu nhọn.
Dần dần, mức lỗi tối thiểu tăng lên phần mềm bị "thoái hóa" do tỷ lệ sai hỏ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, hoặc người dùng không muốn sử dụng nữa, vì có những phần mềm khác tốt hơn. Phần mềm còn lạc hậu do các công nghệ mới ra đời, 6 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com người dùng không lựa chọn phần mềm cũ nữa, hay khi các công nghệ mới (hệ điều hành, các hệ quản trị cơ sở dữ liệu, phiên bản dịch mới,. ) được đưa vào tổ chức, làm cho các phần mềm cũ không thể tiếp tục vận hành trên máy tính. Phần lớn phần mềm vẫn được xây dựng theo đơn đặt hàng.
Phần mềm không có danh mục các thành phần cố định như phần cứng. Nó thường được đặt hàng theo một đơn vị hoàn chỉnh, theo yêu cầu riêng của mỗi tổ chức, mỗi khách hàng, ít khi có thể lắp ráp theo một khuôn mẫu có sẵn. Ngày nay, nhờ công nghệ hướng đối tượng ra đời, việc phát triển phần mềm dựa trên thành phần có sẵn đã được đề xuất, nhưng mới ở giai đoạn ban đầu. Yêu cầu đối với phần mềm của khách hàng tùy thuộc vào môi trường cụ thể, mà ở đó nó được phát triển và sử dụng.
Môi trường này (phần cứng phần mềm, con người và tổ chức, công nghệ có được,. ) không thể định dạng từ trước và luôn thay đổi theo không gian và thời gian. Tính bất định của môi trường quy định sự bất định của phần mềm cho đến khi nó được xây dựng xong. Sự phức tạp và tính thay đổi luôn là bản chất của phần mềm.
Phần mềm không phải là thực thể vật lý, mà bản chất là những khái niệm được thể hiện bằng một hệ thống lôgic dưới các ngôn ngữ khác nhau và được lưu trên giấy. Mặt khác, nó là một mô hình của thế giới thực. Bản chất đa dạng của thế giới thực không cho phép mỗi người có đủ kiến thức để có thể hiểu nó một cách dễ dàng. Phần mềm là "không nhìn thấy được", mà chi có thể nhận biết qua sự mô tả từ những khía cạnh khác nhau (sơ đồ điều khiển, sơ đồ luồng dữ liệu, sơ đồ tương tác giữa các mô đun.
Hơn nữa, thế giới thực (mô hình tổ chức và quản lý, các tiến trình nghiệp vụ, các điều kiện công nghệ, môi trường kinh tế - xã hội) luôn thay đổi theo thời gian và không gian, và ngày càng diễn ra một cách nhanh chóng hơn. Phần mềm là mô hình của thế giới thực để phục vụ con người, nên nó chỉ có ý nghĩa khi thích nghi được với sự thay đổi đã diễn ra, tức là nó phải thay đổi một cách tương ứng cùng thời gian. Thay đổi trở thành yêu cầu và thuộc tính tất yếu cùa phần mềm. Ngày nay phần mềm được phát triển theo nhóm.
Càng ngày các phần mềm càng có quy mô lớn, mỗi thành phần của nó thường đòi hỏi những kỹ năng khác nhau để thực hiện. Cùng với sự phát triển nhanh chóng của công nghệ, khả năng hiểu biết và kỹ năng của những người phát triển với các công nghệ mới bị giới hạn trong một phạm vi nhất định. Trong khi đó, nhu cầu về sản phẩm ngày càng tăng và đòi hỏi thời gian sản xuất ra ngày càng phải được rút ngắn. Trong điều kiện đó, việc sản xuất phần mềm cần nhiều người với kỹ năng khác nhau, tham gia trong các đội phát triển, để tạo được phần mềm chất lượng cao với thời gian ngắn.
Phát triển phần mềm theo nhóm là một cách lựa chọn duy nhất. Phân loại phần mềm theo lĩnh vực ứng dụng bao gồm: - Phần mềm hệ thống: Tập hợp các chương trình, tương tác trực tiếp với phần cứng, phục vụ nhiều người dùng. 7 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - Phần mềm thời gian thực: Thu thập xử lý các dữ kiện thế giới thực, đáp ứng yêu cầu chặt chẽ về thời gian. - Phần mềm nghiệp vụ: Xử lý các thông tin nghiệp vụ, các giao tác.
- Phần mềm khoa học kỹ thuật: Đặc trưng bởi thuật toán, đòi hỏi năng lực tính toán cao. - Phần mềm nhúng: chỉ đọc khi thiết bị khởi động, thực hiện chức năng hạn chế. - Phần mềm máy tính cá nhân: Các bài toán nghiệp vụ nhỏ, giao diện đồ họa phát triển, nhu cầu cao. - Phần mềm trí tuệ nhân tạo: Dùng các thuật toán phi số.
- Phần mềm công cụ cho kỹ nghệ phần mềm 1. Quy trình triển khai phần mềm là gì? Quy trình triển khai phần mềm là tất cả các hoạt động khiến một hệ thống phần mềm sẵn sàng cho sử dụng.