Tóm tắt tổng quan
-
Chủ đề cốt lõi
- Giới thiệu các cuốn sách và tài liệu liên quan, trong đó chính các nhà phát triển trực tiếp giải thích cấu trúc bên trong và các quyết định thiết kế của ứng dụng mã nguồn mở.
-
Những điểm chính
- Khác với kiến trúc sư, các kỹ sư phần mềm trong lịch sử có ít cơ hội được học một cách hệ thống về cấu trúc của các chương trình lớn, quan trọng.
- Vì vậy, thay vì tận dụng các ví dụ thành công sẵn có, họ dễ lặp lại những sai lầm tương tự.
- Các cuốn sách này tổng hợp cấu trúc, thành phần, cách các thành phần tương tác và những bài học rút ra trong quá trình phát triển của các dự án mã nguồn mở tiêu biểu.
- Lập trình viên mới có thể học cách tư duy của các nhà phát triển giàu kinh nghiệm, còn lập trình viên trung cấp và cao cấp có thể tham khảo các ví dụ giải quyết bài toán thiết kế phức tạp.
- Tất cả tài liệu đều được cung cấp theo giấy phép Creative Commons Attribution 3.0, và doanh thu bán sách được quyên góp cho Amnesty International.
- Cộng đồng có thể đóng góp bằng cách báo lỗi, dịch thuật hoặc viết thêm chương mới.
Mở đầu
-
Giới hạn mang tính cấu trúc trong việc học thiết kế phần mềm
- Kiến trúc sư quan sát vô số công trình trong quá trình học và đồng thời học cả các bài phê bình của chuyên gia.
- Trong khi đó, lập trình viên phần mềm có ít cơ hội để hiểu sâu các chương trình quy mô lớn.
- Nhiều lập trình viên chủ yếu tích lũy kinh nghiệm từ các chương trình do chính họ viết.
- Kết quả là, thay vì phát triển dựa trên những ví dụ thiết kế tốt trong quá khứ, họ có nhiều khả năng lặp lại những sai lầm thiết kế tương tự.
-
Mục đích của tài liệu
- Mục tiêu là cung cấp cấu trúc thực tế của các ứng dụng mã nguồn mở dưới dạng có thể phân tích được.
- Chính tác giả dự án trực tiếp giải thích cấu trúc phần mềm và bối cảnh thiết kế.
- Tài liệu giúp các nhà phát triển học được cách tư duy thiết kế của những người khác.
Nội dung chính
Trực tiếp giải thích cấu trúc của các dự án mã nguồn mở
-
Đối tượng phân tích chính
- Tổng cộng bốn cuốn sách đề cập đến nhiều ứng dụng mã nguồn mở và các chủ đề liên quan.
- Mỗi chương giải thích cấu trúc và cách thiết kế của một dự án hoặc một chủ đề kỹ thuật cụ thể.
- Tác giả là các nhà phát triển của dự án đó hoặc những chuyên gia liên quan.
-
Các câu hỏi cốt lõi của phân tích
- Những thành phần chính của chương trình là gì.
- Các thành phần tương tác với nhau như thế nào.
- Những quyết định thiết kế nào đã được đưa ra trong quá trình phát triển.
- Những bài học nào đã được rút ra trong quá trình xây dựng dự án.
AOSA Volume 1 đề cập đến cấu trúc của các ứng dụng mã nguồn mở tiêu biểu
-
Nội dung chính
- Đề cập đến nhiều dự án như Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver, Sendmail.
- Bao quát nhiều lĩnh vực như phần mềm hệ thống, công cụ phát triển, cơ sở dữ liệu, hệ thống tệp phân tán, công cụ cộng tác và công cụ trực quan hóa.
-
Ý nghĩa
- Có thể hiểu cấu trúc bên trong của các dự án mã nguồn mở từ góc nhìn của chính nhà phát triển thực tế.
- Có thể so sánh các vấn đề thiết kế và cách giải quyết lặp lại ở những lĩnh vực kỹ thuật khác nhau.
AOSA Volume 2 cung cấp các lĩnh vực kỹ thuật mở rộng và các ví dụ thiết kế
-
Nội dung chính
- Đề cập đến kiến trúc web có khả năng mở rộng, Firefox release engineering, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted, ZeroMQ.
- Bao gồm nhiều chủ đề như web, compiler, hệ điều hành, hệ thống phân tán, language runtime, framework và công cụ hạ tầng.
-
Ý nghĩa
- Cung cấp các ví dụ về cách thiết kế và vận hành những hệ thống phần mềm phức tạp.
- Hữu ích cho lập trình viên trung cấp và cao cấp khi xem xét các trường hợp ra quyết định thiết kế trong thực tế.
POSA đề cập đến các vấn đề hiệu năng của ứng dụng mã nguồn mở
-
Nội dung chính
- Đề cập đến mạng hiệu năng cao của Chrome, sự chuyển đổi từ SocialCalc sang EtherCalc, hệ thống build Ninja, tối ưu hóa XML parsing, MemShrink, hiệu năng mạng di động và xử lý dữ liệu lớn trong tin sinh học.
-
Ý nghĩa
- Cho thấy việc cải thiện hiệu năng phần mềm không chỉ là tối ưu mã, mà còn gắn với thiết kế kiến trúc, cách triển khai, môi trường mạng và phương thức xử lý dữ liệu.
- Có thể phân tích các vấn đề hiệu năng dựa trên những ví dụ thực tế.
500 Lines or Less hiện thực hóa các ý tưởng cốt lõi bằng lượng mã nhỏ
-
Nội dung chính
- Đề cập đến công cụ lập trình trực quan, hệ thống tích hợp liên tục, hệ thống build động, web crawler, cơ sở dữ liệu đồ thị in-memory, framework web hướng sự kiện, Python interpreter, OCR, bảng tính web, phân tích tĩnh, template engine và web server đơn giản.
-
Ý nghĩa
- Giải thích các nguyên lý thiết kế cốt lõi trong phạm vi mã nguồn giới hạn.
- Được xây dựng để giúp học các khái niệm hệ thống phức tạp thông qua những hiện thực nhỏ gọn.
Giấy phép và cách đóng góp được nêu rõ
-
Giấy phép
- Tài liệu này được cung cấp theo giấy phép Creative Commons Attribution 3.0 Unported.
- Có thể sử dụng tài liệu nếu đáp ứng điều kiện ghi công tác giả.
-
Cách sử dụng doanh thu
- Toàn bộ tiền bản quyền phát sinh từ việc bán sách được quyên góp cho Amnesty International.
-
Cách đóng góp
- Có thể báo lỗi.
- Có thể tham gia dịch sang ngôn ngữ hoặc định dạng khác.
- Có thể viết các chương giải thích kiến trúc của dự án mã nguồn mở mới.
- Người quan tâm đến việc dịch mới hoặc viết chương mới có thể liên hệ với những người phụ trách dự án.
Kết luận
-
Tóm lược cốt lõi
- Tài liệu này là một bộ sưu tập ví dụ giúp học một cách có hệ thống về cấu trúc bên trong và các quyết định thiết kế của ứng dụng mã nguồn mở.
- Nhà phát triển có thể hiểu không chỉ từng đoạn mã riêng lẻ mà còn cả cấu trúc tổng thể của hệ thống và lý do thiết kế đằng sau nó.
- Với lập trình viên mới, đây là điểm khởi đầu để học cách tư duy của các nhà phát triển dày dạn kinh nghiệm.
- Với lập trình viên trung cấp và cao cấp, đây là tài liệu để so sánh và phân tích các trường hợp thực tế đã giải quyết những bài toán thiết kế phức tạp.
-
Giá trị thực tiễn
- Không chỉ hữu ích với những nhà phát triển sử dụng dự án mã nguồn mở mà còn có giá trị tham khảo cho những người trực tiếp thiết kế và vận hành hệ thống.
- Giúp giảm lặp lại các sai lầm thiết kế và học hỏi từ những ví dụ thiết kế đã được kiểm chứng.
- Cho thấy việc chia sẻ tri thức dựa trên cộng đồng có thể góp phần nâng cao năng lực phát triển phần mềm.
1 bình luận
Cảm ơn.