+ Ví dụ, nếu chúng ta muốn hiện thực 1 hệ thống ghi tên thuốc, chúng ta có thể mua 1 gói đã được sử dụng tại các bệnh viện, nó có thể rẻ hơn và nhanh hơn khi sử dụng các phần mềm đó so v
Trang 1CHƯƠNG 7: THIẾT KẾ CHI TIẾT
* Chủ đề:
_ Thiết kế hướng đối tượng sử dụng UML
_ Mẫu thiết kế;
_ Phát triển mã nguồn mở;
_ một số vấn đề khác
1:Thiết kế và hiện thực - trang 3
_ Thiết kế và hiện thực phần mềm là 1 giai đoạn trong quá trình công nghệ phần mềm mà tại đó hệ thống phần mềm thực thi được phát triển
_ Hoạt động thiết kế và hiện thực phần mềm là bất biến
+ Thiết kế phần mềm là hoạt động sáng tạo trong đó bạn xẽ định nghĩa các thành phần của phần mềm và mối quan hệ giữa chúng, dựa trên yêu cầu của người đặt hàng + Hiện thực phần mềm là một quá trình hiện thực các thiết kế của chương trình 2: Xây dựng và mua (build and buy) - trang 4
_ Trong phạm vi rộng lớn của các lĩnh vực, chúng ta hiện nay có thể mua các hệ thống để thích ứng và phù hợp với yêu cầu của người dùng
+ Ví dụ, nếu chúng ta muốn hiện thực 1 hệ thống ghi tên thuốc, chúng ta có thể mua 1 gói đã được sử dụng tại các bệnh viện, nó có thể rẻ hơn và nhanh hơn khi sử dụng các phần mềm đó so với việc phát triển 1 hệ thống ngôn ngữ lập trình thông thường
_ Khi bạn phát triển 1 ứng dụng theo cách này, quá trình thiết kế sẽ trở nên liên quan với việc sử dụng cấu hình của hệ thống như thế nào để cung cấp các yêu cầu cho hệ thống
3: Quá trình thiết kế hướng đối tượng - trang 5
_ Cấu trúc của quá trình thiết kế hướng đối tượng bao gồm phát triển một số mô hình
hệ thống khác nhau
_ Chúng yêu cầu nhiều phép thử cho phát triển và bảo trì của các mô hình đó, nếu cho 1 mô hình nhỏ thì phương pháp này không đem lại hiệu quả về chi phí
_ Tuy nhiên, cho 1 chương trình lớn phát triển bởi nhiều nhóm thiết kế mô hình thì đây là một cơ chế để trao đổi, giao tiếp với nhau giữa các nhóm rất hiệu quả và quan trọng
4: Các bước của 1 quá trình (process) - trang 6:
_ Có một loạt các quá trình thiết kế hướng đối tượng khác nhau mà phụ thuộc vào tổ chức sử dụng quá trình
_ Hoạt động chung trong các quá trình bao gồm:
+ Xác định ngữ cảnh và các thức của việc sử dụng hệ thống
+ Thiết kế kiến trúc hệ thống
+ Xác định nguyên lý của hệ thống đối tượng
+ Phát triển mô hình thiết kế
+ Đặc tả giao diện đối tượng
_ Quá trình minh họa ở đây sử dụng thiết kế cho
5:Ngữ cảnh và tương tác hệ thống - trang 7
_ Hiểu được mối quan hệ giữa hệ thống đang được thiết kế và môi trường bên ngoài của nó là bản chất cho việc quyết định làm thế nào để cung cấp các chức năng do hệ thống yêu cầu và làm thế nào để cấu trúc của hệ thống có thê giao tiếp với môi trường của
Trang 2nó
_ Hiểu được ngữ cảnh sẽ giúp bạn tạo được ranh giới của hệ thống Tạo ranh giới hệ thống giúp bạn quyết định được cái đặc trưng nào được hiện thực trong hệ thống đang được thiết kế và các đặc trưng nào được kết hợp trong hệ thống
6: Mô hình ngữ cảnh và mô hình tương tác - trang 8
_ Mô hình ngữ cảnh hệ thống là một mô hình cấu trúc mà biểu diễn các hệ thống khác trong môi trường của hệ thống đang được phát triển
_ Mô hình tương tác là một mô hình động mà biểu diễn làm thế nào để hệ thống tương tác với môi trường của nó như cách mà nó được sử dụng
7:Mô tả use case của báo cáo thời tiết (example usecase) - trang 11
System Trạm khí tượng thủy văn ( weather station) KH: ws
Use case Báo cáo thời tiết
Actors (đối
tượng)
Hệ thống thông tin thời tiết và trạm khí tượng thủy văn
Description Ws gửi tổng kết của dữ liệu thời tiết mà họ thu thập được từ các thiết bị
trong giai đoạn thu thập thông tin cho hệ thống thông tin thời tiêt Dữ liệu gửi là max, min, trung bình group và nhiệt độ không khí.max, min
và giá trị trung bình áp suất, max, min, và giá trị trung bình của tốc độ gió, lượng mưa trung bình và hướng gió được thu thập ngay lập tức cứ sau khoảng 5 giây
Stimulus (kích
thích, tác động)
Hệ thống thông tin thời tiết xây dựng đường giao tiếp giữa vệ tinh với
ws và yêu cầu chuyển giao dữ liệu
Response Dự liệu tổng hợp được gửi đến hệ thống thông tin thời tiết
Comment(ghi
chú)
Ws thường được yêu cầu báo cáo 1 lần/ giờ nhưng tần số có thể khác từ
1 trạm so với các trạm khác và có thể được bổ xung trong tương lai
8: Thiết kế kiến trúc - trang 12
_ Một khi tương tác giữa hệ thống và môi trường của nó đã được hiểu rõ, bạn có thể
sử dụng thông tin này để thiết kế kiến trúc hệ thống
_ Bạn xác định các thành phần chính tạo nên hệ thống vào mối tương tác giữa chúng, sau đó có thể tổ chức các thành phần sử dụng 1 mẫu kiến trúc như là mô hình lớp và mô hình client-server
_ trạm khí tượng thủy văn được phân chia thành các hệ thống con độc lập mà giao tiếp bằng cách phát các thông điệp trong cơ sở hạ tầng chung
9: Kiến trúc cấp cao của trạm khí tượng thủy văn ( ws) - trang 13
10 Kiến trúc của hệ thống chọn lọc dữ liệu - trang 14
11: Sự định nghĩa lớp đối tượng - trang 15
_Nhận dạng đối tượng class là 1 phần rất khó của thiết kết hướng đối tượng
_ Sự nhận dạng đối tượng là 1 quá trình lặp đi lặp lại Bạn không có khả năng nhận được đúng nó ngay lần đầu tiên
12: Phương pháp tiếp cận để xác định vấn đề - trang 16 (cái này không hiểu)
_ Sử dụng giản đồ tiếp cận dựa vào ngôn ngữ tự nhiên mô tả hệ thống
_ Dựa vào identification xác định những vấn đề trong các lĩnh vực của ứng dụng _ Xử dụng hành vi tiếp cận và xác định đối tượng dựa vào những gì tham gia vào hành vi
Trang 3_ Sử dụng kịch bản dựa vào phân tích Các đối tượng, thuộc tính, phương thức trong
mỗi kịch bản được xách đinh
13: Mô tả trạm khí tượng thủy văn ( weather station) - trang 17
_ Weather station là 1 gói phần mềm điều khiển công cụ chọn lọc dữ liệu, biểu diễn
các quá trình xử lý dữ liệu và truyền dữ liệu cho các quá trình xử lý dữ liệu tiếp theo Các
công cụ bao gồm nhiệt kế không khí, nhiệt kế đất, máy đo gió, cánh quạt gió, thước đo
lượng mưa Dữ liệu được thu thập định kì
_ Khi có 1 lệnh được phát ra để truyền dữ liệu thời tiết thì WS sẽ xử lý và tổng hợp
các dữ liệu về khí hậu đã thu thập được, dữ liệu tổng hợp này sẽ được truyền tới máy tính
lập biểu đồ khi nhận được 1 yêu cầu
14: Các lớp đối tượng của WS - trang 18
_ Sự định nghĩa các lớp đối tượng trong hệ thống WS có thể dựa trên phần cứng của
nó và dữ liệu trong hệ thống
+ Nhiệt kế đất(địa nhiệt), máy đo sức gió, máy đo áp suất
Phạm vi ứng dụng của các đối tượng đó là các đối tượng phần cứng quan
hệ với các thiết bị của hệ thống
+ WS: Giao diện cơ bản của WS đối với môi trường của nó (trong slide câu này
không có động từ => dịch ra không có nghĩa) Do đó, nó phản ánh sự tương tác được
xác định trong mô hình use-case
+ Dữ liệu thời tiết: là sự tóm gọn dữ liệu từ các thiết bị
Weather station
Identifier
reportWeather()
reportStatus()
powerSave(instruments)
removeControl(commands)
reconfigure(commands)
restart(commands)
shutdown(instruments)
Ground Thermometer(địa
nhiệt)
Gt_ident (định danh của
thiết bị)
Temperature
Get()
Test()
15: Mô hình thiết kế - trang 20
_Mô hình thiết kế biểu diễn các đối tượng, các lớp đối tượng và mối quan hệ giữa các
thực thể
_ Mô hình tĩnh (static model) mô tả cấu trúc tĩnh của hệ thống trong giới hạn của các
lớp đối tượng và các mối quan hệ
_ Mô hình động mô tả các tương tác động (tương tác thay đổi được) giữa các đối
tượng
16: Ví dụ về mô hình thiết kế - trang 21
Weather data airTemperatures groundTemperatures windSpeeds
windDirections(hướng gió) pressures(áp suất)
rainfall collect() summarize() Anemometer(đo sức gió)
An_ident windSpeed windDirection Get()
Test()
Barometer(máy đo áp suất) Ba_ident
pressure height Get() Test()
Trang 4_ Mô hình hệ thống con biểu diễn liên kết luận lý của các đối tượng vào trong hệ thống con gắn liền với nó
_ Sequence model biểu diễn sequence(thứ tự) các tương tác của đối tượng
_ State machine model: biểu diễn làm thế nào mà các đối tượng riêng thay đổi trạng thái của nó để trả lời lại các sự kiện (response to events)
_ Ngoài ra còn có các mô hình khác là use-case model, aggregation model,
generalisation model (toàn mấy mô hình lạ, ai bít chỉ giáo, pm qua face: An Vo Hoang) 17: Mô hình hệ thống con - trang 22
_ Biểu diễn làm thế nào mà cách thiết kế được tổ chức thành các nhóm có liên quan một cách logic của các đối tượng
_ Trong UML, có các gói biểu diễn bằng cách sử dụng các gói - 1 cấu trúc tóm gọn
Đó là mô hình logic Cách tổ chức thực tế của các đối tượng trong hệ thống có thể khác nhau
18: Sequence Model - trang 23
_ Sequence model biểu diễn thứ tự của các đối tượng tương tác diễn ra
+ các đối tượng được sắp xếp theo chiều ngang dọc theo top của mô hình + Thời gian được biểu diên theo chiều dọc do đó các mô hình được đọc từ trên top xuống bottom
+ Các tương tác được biểu diễn bằng các mũi tên có nhãn Các mũi tên khác nhau biểu diễn các loại tương tác khác nhau
+ Hình chữ nhật dài (thời gian nó được sử dụng trong tương tác) biểu diễn thời gian khi đối tượng là đối tượng kiểm soát trong hệ thống
19: Ví dụ - trang 24
Trang 5
20:Sequence Diagram for Engage Foreign Character Use Case
20: giản đồ trạng thái (state diagram) - trang 28
_Biểu đồ trạng thái đƣợc sử dụng để biểu diễn làm thế nào mà các đối tƣợng trả lời lại các yêu cầu về dịch vụ khác nhau và kích hoạt chuyển đổi trạng thái bởi các yêu cầu
đó
_ Biểu đồ trạng thái là mô hình cấp cao ( high - level model) rất hữu ích của hệ thống hoặc hành vi của thời gian chạy 1 đối tƣợng (object's run-time behavior)
_ Bạn không nhất thiết phải cần 1 biểu đồ trạng thái cho toàn bộ các đối tƣợng trong
hệ thống Nhiều đối tƣợng trong hệ thống rất đơn giản và 1 biểu đồ trạng thái chỉ thêm vào các chi tiết không cần thiết cho việc thiết kế
21: Weather station state diagram - trang 29
Trang 622: Đặc tả giao diện - trang 30
_ Các giao diện của đối tượng phải được đặc tả vì thế mà các đối tượng và các
thành phần khác có thể thiết kế song song với nhau
_ Các đối tượng có thể có vài giao diện là các quan điểm do hệ thống cung cấp _ UML sử dụng class diagram cho đặc tả giao diện nhưng java cũng có thể được
sử dụng
23:Weather station interfaces - trang 31:
24: Các mẫu(mô hình) thiết kế - trang 32
_ Một mẫu thiết kế là 1 cách để sử dụng lại các kiến thức trừu tượng về 1 vấn đề và giải pháp của nó
_ Một mẫu là 1 sự mô tả của vấn đề và bản chất của giải pháp của vấn đề đó
_ Mẫu thiết kế nên đủ trừu tượng để được tái sử dụng trong các bản chỉnh sửa khác
nhau
_ Mẫu mô tả thường sử dụng các đặc điểm hướng đối tượng như là thừa kế, đa hình 25: Các phần tử mẫu(mô hình) - trang 33
_ Tên (định danh)
_ Mô tả vấn đề
_ Mô tả giải pháp
_ Kết quả - hệ quả
+ Kết quả và giá trị của việc áp dụng mẫu
Trang 726:Mô hình quan sát - trang 34
_Tên: quan sát;
_ Sự mô tả:
+ Tách các hiển thị của đối tượng trạng thái từ các đối tượng của chính nó; _ Mô tả vấn đề
+ Được sử dụng khi nhiều hiển thị của trạng thái được yêu cầu
_ Mô tả giải pháp
_ Kết quả - hệ quả
27: Mô hình quan sát tt - trang 35
Sự mô tả Chia hiển thị của các trạng thái của các đối tượng từ các đối tượng của
chính nó và cho phép thay đổi các hiển thị được cung cấp Khi các đối tượng trạng thái được thay đổi, mọi hiển thị được tự động thông báo và update để đáp ứng sự thay đổi
Mô tả vấn đề Trong nhiều trường hợp, bạn phải cung cấp đa hiển thị của thông tin
trạng thái, ví dụ như là 1 hiển thị đồ thị và hiển thị bảng Không phải toàn
bộ các vấn đề đều được biết đến khi thông tin được đặt tả chi tiết Tất cả các biểu diễn thay thế có thể hỗ trợ tương tác và khi các trạng thái được thay đổi toàn bộ các hiển thị có thể được update
_ Mô hình này có thể được sử dụng trong tất cả các trường hợp, nơi mà
có nhiều hơn 1 cái khuông mẫu hiển thị cho thông tin trạng thái được yêu cầu và nó không cần thiết cho các đối tượng phải duy trì trạng thái thông tin để biết về đặc tả khuông mẫu hiển thị được sử dụng
Mô tả giải
pháp
_ Gồm 2 đối tượng trừu tượng, chủ đề và quan sát (subject and observer)
và hai đối tượng cụ thể đó là chủ đề cụ thể và đối tượng cụ thể (ConcreteSubject vs ConcreteObject) nó kế thừa các thuộc tính của các đối tượng quan hệ trừu tượng Các đối tượng trừu tượng bao gồm các thao tác chung được áp dụng vào tất cả các trường hợp Các trạng thái được hiển thị được duy trì trong ConcreteSubject, kế thừa những thao tác
từ chủ đề cho phép nó thêm, xóa các quan sát (Observer) (Mỗi Observer tương ứng với 1 hiển thị) và kết quả của 1 thông báo khi trạng thai có sự thay đổi
_ ConcreteObserver duy trì bản sao của 1 trạng thái của ConcreteSubject
và hiện thực phương thức update() giao diện của Observer, nó cho phép các bản sao này được giữ trong các bước ConcreteObserver hiển thị tự động các trạng thái và các thay đổi khi trạng thái được update
Kết quả - hệ
quả
_ Các subject chỉ biết các Observer trừu tượng và không thể biết chi tiết của các lớp cụ thể Do đó có mắt xích tối thiểu giữa các đối tượng
_ Thay đổi các subject có thể là nguyên nhân của tập các liên kết Observer được sinh ra, một số trong số chúng có thể không cần thiết 28:Mô hình UML của mẫu Observer - trang 38
Trang 829: Các vấn đề thiết kế - trang 39
_ Để sử dụng các mẫu (mô hình) trong thiết kế của bạn, bạn cần nhìn nhận rằng bất
kì vấn đề thiết kế nào bạn đang đảm nhiệm đều có 1 cái mẫu kết hợp được với nó có thể ứng dụng vào
+ Nói với một vài đối tượng rằng trạng thái của các đối tượng khác có thể thay
đổi (mẫu Observer)
+ Dọn dẹp các giao diện cho một số các đối tượng liên quan mà thường được
phát triển theo từng bước
+ Cung cấp một phương pháp chuẩn để truy cập các phần tử trong 1 chọn lọc,
không kể làm thế nào mà việc chọn lọc được hiện thực.(Iterator pattern)
+ Cho phép việc có thể mở rộng chức năng của các lớp hiện hành trong thời gian chạy (Decorator pattern)
30: Tái sử dụng ( reuse) - trang 40
_ Từ những năm 1960 đến những năm 1990, phần lớn các phần mềm mới được phát triển từ những thứ linh tinh bằng cách viết toàn bộ code trong 1 ngôn ngữ lập trình cấp
cao
+ Chỉ sử dụng lại những gì quan trọng hoặc phần mềm là tái sử dụng của các
chức năng và các đối tượng trong các thư viện ngôn ngữ lập trình
_ Chi phí và áp lực tiến độ là những yếu tố có ảnh hưởng đến việc phương pháp này trở nên không hợp lý, đặc biệt là các hệ thống thương mại và hệ thống cơ sở internet
_ Phương pháp tiếp cần phát triển dựa vào vòng sử dụng của phần mềm tồn tại từng bước nổi lên và ngày nay được sử dụng chung cho các phần mềm kinh doanh và khoa học 31: Các cấp độ của việc tái sử dụng - trang 41
_ Cấp trừu tượng:
+ Ở cấp này bạn không thế sử dụng lại phần mềm ngay lập tức nhưng sử dụng
kiến thức trừu tượng đã ứng dụng thành công trong thiết kế phần mềm của bạn
_ Cấp đối tượng
+ Ở cấp độ này bạn sử dụng lại được phần mềm ngay lập tức từ 1 thư viện tốt
hơn sơ với việc bạn tự viết lại code
_ Cấp thành phần:
+ Các thành phần là sự chọn lọc của các đối tượng và các lớp đối tượng mà bạn
sử dụng lại trong các hệ thống ứng dụng
_ Cấp hệ thống:
Trang 9+ Ở cấp độ này bạn sử dụng lại toàn bộ hệ thống ứng dụng
32: Chi phí tái sử dụng - trang 42
_ Giá trị của thời gian bỏ ra trong việc tìm kiếm phần mềm cho việc tái sử dụng và đánh giá và cả trường hợp không có cái mà bạn cần
_ Nếu có, chi phí của việc mua phần mềm sử dụng lại được Đối với hệ thống lớn chi phí có thể rất là cao
_ Các chi phí của việc thêm vào và hiệu chỉnh các thành phần của phần mềm hoặc hệ thống có thể sử dụng lại được để phản ánh ( đáp ứng ) lại các yêu cầu của hệ thống mà bạn đang phát triển
_ Các chi phí của việc tích hợp các phần tử của phần mềm có thể sử dụng lại được với các phần tử khác trong hệ thống.( nếu bạn đang sử dụng phần mềm từ những nguồn khác nhau) và với code mới mà bạn đang phát triển cho phần mềm
33: Các công cụ nền tảng hỗ trợ phát triển - trang 43
_ Là sự tích hợp giữa compiler và chỉnh sửa hệ thống theo cú pháp cho phép bạn tạo, chỉnh sửa và compile code
_ Hệ thống debug ngôn ngữ
_ Các công cụ chỉnh sửa đồ họa ví dụ như công cụ chỉnh sửa mô hình UML
_ Công cụ kiểm tra (testing) ví dụ như JUnit có thể tự động chạy một tập các testcase trong một phiên bản mới (new version) của chương trình
_ Các công cụ hỗ trợ project có thể giúp bạn tổ chức lại code cho các project phát triển khác nhau
34: Tích hợp các môi trường phát triển ( IDEs) - trang 44
_ Các công cụ phát triển phần mềm thường được nằm trong một group để tạo ra1 tích hợp môi trường phát triển ( Integrated Development Evironment - IDE)
_ Một IDE là 1 tập các công cụ hỗ trợ phần mềm hỗ trợ các mặt khác nhau của việc phát triển phần mềm trong một số sườn và giao diện người dùng chung
_ Các IDE được tạo ra để hộ trỡ phát triển trong một số ngôn ngữ lập trình đặc biệt như java IDE ngôn ngữ có thể được phát triển rất đặc biệt hoặc có thể đặc trung cho mục đích chung của IDE với công cụ hỗ trợ ngôn ngữ đặc biệt
35: Các yếu tố triển khai của hệ thống hoặc của thành phần - trang 45
_ Nếu 1 thành phần được thiết kế cho 1 kiến trúc phần cứng đặc biệt hoặc dựa vào một số hệ thống phần mềm khác, nó rõ ràng phải được triển khai trên 1 nền tảng đã được cung cấp các yêu cầu phần mềm và hỗ trợ phần cứng
_ Các hệ thống có tính sử dụng cao có thể yêu cầu các thành phần được triển khai trên nhiều hơn 1 nền tảng Điều này có nghĩa rằng trong trường hợp nền tảng bị lỗi (failure), thì một hiện thưc thay thế của phần tử được sử dụng
_ Nếu có 1 cấp giao tiếp cao giữa các thành phần, nó thường phán đoán để triển khai chúng trong nền tảng tương tự hoặc trên các nền tảng mà các tính chất vật lý gần giống với các cái khác Điều này giúp giảm delay giữa thời gian 1 message được gửi bởi 1 thành phần và nhận được bởi 1 thành phần khác
36: Phát triển mã nguồn mở - trang 46
_ Phát triển mã nguồn mở là 1 phương pháp tiếp cận tới phát triển phần mềm mà trong đó code nguồn của 1 hệ thống phần mềm là public và những tình nguyện viên được mời tham gia vào quá trình phát triển
_ Nguồn gốc của nó là các phần mềm miễn phí Với chủ trường code nguồn có thể không có quyền sở hữu nhưng luôn luôn được sử dụng cho người dùng kiểm tra và bổ
Trang 10xung nếu họ muốn
_ Phần mềm mã nguồn mở mở rộng ý tưởng này bằng cách sử dụng internet bằng cách tuyển mộ thêm một lượng lớn các tình nguyện viên phát triển mới Nhiều người trong số họ cũng là người dùng của code này
37: Các hệ thống mã nguồn mở - trang 47
_ Sản phẩm mã nguồn mở nổi tiếng nhất là linux, nó được mở rộng sử dụng với 1 hệ thống server và ngày càng trở thành 1 máy tính để bàn
_ Những sản phẩm mã nguồn mở quan trọng khác là Java, server web Apache và mySQL hệ quản lý cơ sở dữ liệu
38: Các vấn đề của mã nguồn mở - trang 48
_ Các sản phẩm đang phát triển có nên sử dụng các thành phần mã nguồn mở
không ?
_ Phương pháp tiếp cận mã nguồn mở có nên được sử dụng cho phát triển phần mềm ?
39: Kinh doanh mã nguồn mở - 49
_ Càng ngày càng nhiều các công ty sản phẩm đang sử dụng mã nguồn mở tiếp cận cho việc phát triển
_ Mô hình kinh doanh của họ không đáng tin cậy để bán 1 sản phẩm phần mềm nhưng lại hỗ trợ cho việc bán sản phẩm đó
_ Họ tin rằng việc mở rộng kinh doanh mã nguồn mở phổ biến sẽ cho phép phần mềm được phát triển 1 cách rẻ hơn, nhanh hơn và sẽ tạo ra sự phổ biến đối với người dùng phần mềm này
40: Giấy phép mã nguồn mở - trang 50
_ Nguyên lý cơ bản của sự phát triển mã nguồn mở là nguồn code có thể sử dụng tự
do, nó không có nghĩa là bất cứ ai cũng có thể làm những gì họ muốn với code đó
_ Về hợp pháp thì các nhà phát triển code( kể cả công ty hoặc cá nhân) vẫn sở hữu code của họ Họ có thể đặt ra các hạn chế trong việc sử dụng phần mềm bằng cách bao gồm các điều kiện ràng buộc hợp pháp trong giấy phép mã nguồn mở
_ Một số nhà phát triển mã nguồn mở tin rằng nếu 1 thành phần nguồn mở được sử dụng để phát triển 1 phần mềm mới, sau đó hệ thống cũng có thể trở thành nguồn mở _ Một số khác sẽ cho phép code của họ được sử dụng mà không có hạn chế nào Các
hệ thống phát triển có thể độc quyền và được bán như 1 hệ thống nguồn đóng
41: Các mô hình giấy phép - trang 51
_ Giấy phép công khai( General Public License - GPL) GNU Có một giấy phép gọi
là "reciprocal" có nghĩa là nếu bạn sử dụng phần mềm mã nguồn mở được cấp giấy phép dưới dạng giấy phép GPL thì bạn phải chắc rằng đó là phần mềm mã nguồn mở
_ Giấy phép ít công khai (Lesser General Public License -LGPL) GNU là 1 loại giấy phép GPL khác, chúng ta có thể viết các thành phần liên kết với code nguồn mở mà không có xuất bản nguồn của các thành phần đó
_ Giấy phép phân phối chuẩn Berkley ( Berkley Standard Distribution - BSD) Có 1 giấy phép "non-reciprocal", nó có nghĩa là bạn không bắt buộc phải tái bản lại bất cứ thay đổi hoặc bổ xung nào để xây dựng mã nguồn mở Có thể bao gồm code trong các hệ thống có chủ quền được bán
42: Quản lý giấy phép - trang 52
_ Tạo ra 1 hệ thống nhằm duy trì thông tin về các thành phần của mã nguồn mở được download và sử dụng