Lịch sử tóm tắt về phát triển phần mềm
Lịch sử của công nghệ máy tính hiện đại là rất ngắn, nó mới quãng 70 năm. Lịch sử của phần mềm còn ngắn hơn, nó khoảng 50 năm. Phần lớn các phương pháp phát triển phần mềm chưa hình thành đầy đủ mãi tới những năm 1970. Về căn bản, có hai cách để phát triển phần mềm:
“Cách cổ điển” hay “cách được dẫn lái theo sản phẩm” coi phát triển phần mềm là hoạt động xây dựng với từng viên gạch (mã) đặt đặt lên nhau cho tới khi chúng trở thành sản phẩm phần mềm. Nó coi bất kì ai có kĩ năng lập trình đều có thể xây dựng phần mềm và hoạt động đó dẫn tới sản phẩm phần mềm là “dạng tự do” vì từng người lập trình đều biết điều mình làm. Cách nhìn này tới từ những ngày đầu của máy tính, thời kì mà phần mềm vẫn còn là điều huyền bí phụ thuộc vào người lập trình để viết mã phần mềm. Nó dựa trên các kĩ thuật và tri thức cá nhân có trong đầu người đó và không được làm tài liệu.
“Cách hiện đại” hay “cách được dẫn lái theo qui trình” xuất hiện vào cuối những năm 1970 dựa trên khu vực chế tạo điều hội tụ vào cách phần mềm được xây dựng để xác định chất lượng của sản phẩm. Cách này coi phần mềm là tập các nhiệm vụ nhỏ tuân theo một qui trình nơi từng nhiệm vụ có thể được kiểm soát và đo. Nó loại bỏ quan niệm rằng phát triển phần mềm là “dạng tự do”. Nó nhấn mạnh rằng chính kỉ luật được dùng tốt nhất dưới những qui tắc nghiêm ngặt theo đó mối quan hệ giữa các nhiệm vụ được xác định rõ một cách tường minh. Những quan hệ này, cũng còn được biết là “qui trình”, nhận diện các nhiệm vụ cần để tạo ra một sản phẩm phần mềm và hướng dẫn nó qua bản lộ trình có tên là “Vòng đời phát triển phần mềm”.
Phần lớn các dự án phần mềm ngày nay hoặc tuân theo cách thức “cổ điển” hay “hiện đại tuỳ theo giáo dục và đào tạo người phát triển. Giữa những năm 1970 tới 1990, công nghiệp phần mềm hội tụ chủ yếu vào cách cổ điển vì hầu hết phần mềm vào thời đó đều tương đối nhỏ và đơn giản hơn. Tuy nhiên chất lượng của những phần mềm đó không rất tốt với nhiều lỗi. Dịch chuyển từ “Cách cổ điển” sang “Cách hiện đại” bắt đầu vào cuối những năm 1980 khi chính phủ Mĩ muốn cải tiến chất lượng phần mềm trong các hệ thống nhúng của quân sự bằng việc đòi hỏi rằng mọi công việc phần mềm cho chính phủ đều phải tuân theo các chuẩn nghiêm ngặt. Điều này được biểu lộ bằng ngôn ngữ lập trình Ada và khuôn khổ của nó cho phương pháp và công cụ chung như DOD-STD-2167.
Việc thiết lập Viện Kĩ nghệ phần mềm Software Engineering Institute (SEI) tại Đại học Carnegie Mellon vào cuối những năm 1980 là nỗ lực để cải tiến chất lượng phần mềm trong toàn nước Mĩ. Việc phát triển và áp dụng Mô hình trưởng thành năng lực cho phần mềm Capability Maturity Model for Software (CMM) và nhiều mô hình qui trình xuất hiện về sau đã làm thay đổi cách mọi người phát triển phần mềm ở Mĩ rồi ở các nước khác.
Trong thời kì chuyển tiếp, có bất đồng chính giữa những người được đào tạo theo “Cách cổ điển” và “Cách hiện đại”. Nhóm này coi việc tuân theo “qui trình” phá huỷ tính sáng tạo cá nhân. Nhóm kia coi không tuân theo qui trình là hỗn độn và mất kiểm soát. Có nhiều tranh cãi và tranh luận giữa những người phát triển cho tới khi có bằng chứng từ công nghiệp chứng minh rõ ràng rằng qui trình được chuẩn hoá có thể cải tiến năng lực của dự án để quản lí chi phí, lịch biểu và lỗi. Ngay cả khi công ti bắt đầu chấp nhận “Cách hiện đại”, các đại học vẫn còn dạy “Cách cổ điển” cho nên sinh viên bị lẫn lộn. Họ được đào tạo để làm bất kì cái gì họ có thể làm (dạng tự do) để xây dựng phần mềm trong bốn năm đại học của họ nhưng khi họ làm việc trong công nghiệp, họ bị buộc phải tuân theo “qui trình” mà phần lớn họ không hiểu. Nhiều người cảm thấy không thoải mái bởi “quan liêu không cần thiết” trong nỗ lực dẫn lái theo qui trình. Điều này dẫn tới cuộc nổi dậy vào đầu những năm 2000 chống lại bất kì qui trình “nặng nề” nào như CMMI hay ISO 9000. Một nhóm những người phát triển tạo ra qui trình nhẹ cân thay thế mà bây giờ được biết tới dưới cái tên “qui trình agile” (mau lẹ).
Sự kiện là với dự án lớn và phức tạp, bạn cần qui trình có kỉ luật để đảm bảo khía cạnh chất lượng và kiểm soát. Có đủ bằng chứng để chỉ ra rằng việc tuân theo qui trình phát triển phần mềm có thể đem tới chất lượng cao hơn và sản phẩm phần mềm tốt hơn đúng thời gian, trong lịch biểu và chi phí. Tuy nhiên, với dự án nhỏ, điều chấp nhận được là có ít cách hạn chế hơn như Lập trình cực đoan, Scrum, Phát triển phần mềm thích ứng. Điều quan trọng là hiểu ích lợi của cả hai qui trình (cách hiện đại và cách mau lẹ Agile) nhưng điều cũng quan trọng là chỉ ra rằng người phát triển không nên quay lại cách thức cổ điển của dạng tự do, làm bất kì cái gì bạn thích để xây dựng phần mềm.
Tác phẩm, tác giả, nguồn
- Tác phẩm: Quản lý dự án
- Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
- Wiki hóa: https://kipkis.com