Trong phần mềm, bạn sẽ phân biệt một thành phần từ một mô-đun như thế nào?Trong một dự án phần mềm, làm thế nào bạn sẽ phân biệt một Thành phần từ một Mô-đun?
Trả lời
Tôi sẽ nói rằng câu trả lời tùy thuộc vào người bạn yêu cầu.
Tôi nghĩ sự khác biệt là một trong những chi tiết và vai trò. Một thành phần phần mềm cho sự hiểu biết của tôi là một thực thể khép kín với giao diện được xác định rõ ràng (và ổn định hơn) tương tác với các phần còn lại của hệ thống, và có ý nghĩa quan trọng từ quan điểm của kiến trúc hệ thống. Một ví dụ sẽ là lớp trừu tượng truy cập dữ liệu. Một mô-đun cho tôi thà là một gói mã nguồn có thể triển khai có chứa mã chia sẻ một mục đích chung, nhưng không thực hiện bất kỳ vai trò quan trọng nào trong hệ thống (có nghĩa là thay thế nó sẽ không yêu cầu thay đổi kiến trúc tổng thể của hệ thống). . Một ví dụ sẽ là một serializer JSON trong một dịch vụ web.
Mô-đun là khả năng cung cấp chức năng phần mềm mới.
Các thành phần là các phần tử
Thành phần chỉ là một tên khác cho mô-đun, chúng giống nhau. Thông thường thành phần là thuật ngữ mà bạn có thể tìm thấy trong cuốn sách kỹ thuật phần mềm trong khi mô đun có cách sử dụng rộng rãi hơn.
Các thành phần thường được coi là các mục có thể cắm, độc lập theo một số loại đặc tả giao diện phần mềm. Một ví dụ tốt là các mục GUI chẳng hạn như hộp văn bản nâng cao và trình đơn thả xuống. Về cơ bản bất cứ điều gì đó không phải là một chương trình hoàn chỉnh, nhưng có thể được cắm vào một chương trình khác để tăng cường chức năng của nó.
Mô-đun từ đã không còn được ưa chuộng trong vài năm qua. Mô-đun là một thuật ngữ chung chung hơn, nhưng một số ngôn ngữ có nó như là một từ khóa, tức là Modula 2. VB.NET có một từ khóa mô-đun, nhưng đó chỉ là một lớp bình thường với các thành viên tĩnh, và sự hiểu biết của tôi là hầu hết các lập trình viên VB thích sử dụng từ khóa Lớp.
thành phần: mô-đun hộp đen.
Nhưng thực sự không có sự khác biệt đáng kể nào. Đừng cố tìm ý nghĩa sâu sắc ở đây.
Nói chung,
- một thành phần là một nhóm tương đối mịn hạt của các yếu tố đó phục vụ một dịch vụ cụ thể trong dung dịch .
- một mô-đun được đặt dưới dạng hạt và hoạt động như một nhóm một hoặc nhiều dịch vụ liên quan được cung cấp bởi phần mềm .
Mô-đun sẽ có khuynh hướng sử dụng nhiều thành phần để cung cấp dịch vụ trong khi thành phần có thể sẽ được xây dựng từ một số ít các lớp và các thành phần khác.
Trong mọi trường hợp, nó chủ quan và phụ thuộc vào quy mô của ứng dụng. Đối với một ứng dụng nhỏ có khả năng là một chương trình duy nhất (một mô-đun) và một số thành phần. Trong ứng dụng có kích thước trung bình có thể có một số mô-đun và nhiều thành phần. Trong một ứng dụng lớn, bạn có thể muốn giới thiệu thuật ngữ hệ thống con, mà thậm chí còn có nhiều courser hơn một module!
Thú vị - theo kinh nghiệm của tôi, các định nghĩa hoàn toàn ngược lại. Các tiêu chuẩn phát triển phần mềm có xu hướng sử dụng "thử nghiệm mô-đun" thay thế lẫn nhau với "thử nghiệm đơn vị", ví dụ. – JeffP
Thành phần được xác định ở cấp hệ thống phần mềm (như đã xem/suy nghĩ khi chạy). Chúng là những yếu tố của một hệ thống thực thi và cùng nhau tạo ra một hệ thống lớn hơn. Các thành phần/yếu tố này tương tác với nhau bằng cách sử dụng các kết nối (giao diện). Hãy tưởng tượng các hộp đen giao tiếp với nhau, không quan tâm đến việc triển khai/mã nguồn của chúng.
Mô-đun được xác định ở cấp độ ngôn ngữ lập trình (ví dụ: thiết lập 5 lớp bao gồm một mô-đun cung cấp một số chức năng). Chúng được định nghĩa ở cấp mã nguồn theo chức năng được cung cấp bởi bộ sưu tập mã đó. (ví dụ: các lớp kiên trì trong ứng dụng của bạn chịu trách nhiệm tương tác với cơ sở dữ liệu).
Lưu ý rằng, mô-đun cũng là một loại thành phần (theo phân loại và chia sẻ liên kết "là-a" với thành phần).
Tham chiếu: Len Bass, Phần mềm vòm. trong thực tế và Dr. Timothy Lethbridge lecture
- 1. Bạn sẽ tổ chức kho lưu trữ Subversion cho các dự án phần mềm trong nhà như thế nào?
- 2. cách kiểm tra dự án phần mềm?
- 3. Làm thế nào một cơ quan phần mềm có thể cung cấp các dự án phần mềm/giành chiến thắng chất lượng?
- 4. Bạn sẽ làm gì khi đột nhiên bị ném vào một dự án lớn?
- 5. Bạn có thể tạo thành một phần không phân biệt chữ hoa chữ thường không?
- 6. Làm cách nào để một thành phần tại designtime xác định thư mục dự án
- 7. Làm thế nào để lên kế hoạch cho các dự án phần mềm khổng lồ?
- 8. Dự án Blue Brain Project (và phần mềm NEURON) hoạt động như thế nào?
- 9. Làm thế nào để bạn tin tưởng các dự án nguồn mở một cách chính xác?
- 10. Làm cách nào để tham khảo thành phần WinRT gốc từ một dự án được quản lý?
- 11. NSDate với thành phần ngày từ thành phần một và thời gian từ một NSDate
- 12. Làm thế nào để xử lý các thành phần dự án cụ thể trong Delphi?
- 13. Làm thế nào để bạn tham khảo một dự án C# từ một dự án C++/CLi trong cùng một giải pháp
- 14. Làm thế nào Hạt là SVN "dự án" của bạn:. Một dự án lớn có chứa một số ứng dụng releated hoặc một "dự án' cho mỗi ứng dụng
- 15. Phân tích phát triển phần mềm
- 16. Lấy thành phần từ một JScrollPane
- 17. TortoiseXXX: biết phần mềm SCM nào được sử dụng trong một dự án phát triển cụ thể
- 18. phần mềm vá ở một tỷ dặm
- 19. Làm thế nào để bạn nói với Visual Studio loại dự án từ một dự án Visual Studio hiện
- 20. Làm thế nào để bạn xây dựng một dự án IntelliJ từ dòng lệnh?
- 21. Làm thế nào tôi có thể tham khảo một dự án từ một dự án khác trong C#?
- 22. Mô hình Kiến trúc Phần mềm có bắt đầu từ dự án được coi là một Aproach Agile không?
- 23. Định nghĩa/sự khác biệt của "phụ trợ" và "lối vào" trong một dự án/phát triển phần mềm là gì?
- 24. Phân nhánh các dự án cụ thể từ một giải pháp đa dự án
- 25. Làm thế nào để lập trình nhanh một thành phần hỗn hợp hoặc một thành phần thẻ?
- 26. Cách tính phí/ngân sách trong các dự án phát triển phần mềm nhanh?
- 27. Làm cách nào để phân tích một phần thập phân thành Rational trong Haskell?
- 28. Làm cách nào để kết hợp các bảng phân cảnh thành một dự án cocos2d 2.0?
- 29. jQuery Làm thế nào để phân biệt click() và dblcick() cho một phần tử DIV?
- 30. Sự khác biệt giữa Phần mềm Tự do và Phần mềm Mã nguồn Mở
Điều đó không đúng. Thành phần và mô-đun không chính xác giống nhau. Mặc dù, thường được sử dụng không chính xác thay thế cho nhau. – iCrus