Phương pháp khoa học không phải là một điều gì rất cụ thể mà nó mang tính hệ thống, trực tiếp và khá dễ để sử dụng và học hỏi thậm chí đối với những người không phải là các nhà khoa học
Trang 1LỚP CAO HỌC KHÓA 6
Công nghệ thông tin với sự tự do, sáng tạo và chia sẻ
HVTH: Phạm Nguyễn Trường An
MSHV: CH1101062
GVHD: HOÀNG VĂN KIẾM
Báo cáo cuối kỳ
PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
Trang 2Mục lục
A.KHOA HỌC VÀ NGHIÊN CỨU KHOA HỌC 5
I.Khái niệm và phân loại: 5
a.Phân loại theo nguồn gốc hình thành khoa học: 5
b.Phân loại theo mục đích ứng dụng khoa học 6
c.Phân loại theo mức độ khái quát hóa của khoa học 6
d.Phân loại theo kết quả họat động chủ quan của con người 6
e.Phân loại theo cơ cấu của hệ thống tri thức hoặc chương trình đào tạo 6
f.Phân loại theo đối tượng nghiên cứu của khoa học 7
II.Nghiên cứu khoa học 7
a.Đặt vấn đề, mục đích, hoặc câu hỏi nghiên cứu 7
b.Những giả định 7
c.Danh mục tài liệu 8
d.Trình tự 8
e.Tầm quan sát, dữ liệu, kết quả 8
f.Kết luận 8
III.Đề tài nghiên cứu khoa học 9
a.Khái niệm đề tài 9
b.Đối tượng nghiên cứu và phạm vi nghiên cứu 9
c.Mục đích và mục tiêu nghiên cứu 9
B.PHƯƠNG PHÁP LUẬN SÁNG TẠO VÀ ĐỔI MỚI TRONG KHOA HỌC 9
I.Khái niệm, đối tượng, mục đích và ý nghĩa 9
II.Những nội dung chính 10
a.Vấn đề khoa học 10
b.Các phương pháp phát hiện vấn đề khoa học 10
c.Phương pháp giải quyết vấn đề khoa học về phát minh, sáng chế 11
d.Các phương pháp giải quyết vấn đề tổng quát .13
C.ÁP DỤNG CÁC NGUYÊN TẮC SÁNG TẠO VÀO NHỮNG VẤN ĐỀ CỤ THỂ TRONG CÔNG NGHỆ THÔNG TIN 14
I.Sự giải phóng của ngành phần mềm và bùng nổ sáng tạo trong công nghệ thông tin 15
Trang 3a.Giai đoạn 1: Phần mềm là gắn liền với phần cứng 15
b.Giai đoạn 2: Định hình nền công nghiệp với sự trỗi dậy của máy tính cá nhân 16
c.Sự trỗi dậy của phần mềm mã nguồn mở và câu chuyện Tái ông thất mã 17
II.Áp dụng các nguyên tắc sáng tạo trong xây dựng phần mềm 19
a.Nhu cầu thực tế 19
b.Phân tích các giải pháp đã có và tìm ra vấn đề: 20
c.Xác định lại vấn đề 21
III.Sáng tạo, phát triển từ những công cụ đã có: 23
a.Giao thức bittorrent 23
b.SHA-1 Hash và file checksum 25
c.Giao diện người dùng 27
IV.Chi tiết thiết kế, mô tả hoạt động 29
a.Kết cấu chương trình 29
V.Giao diện chính 31
a.Bộ thư viện lõi 35
b.Cơ chế send file 37
VI.Một số mẹo dùng trong lúc cài đặt chương trình 38
a.Background 38
b.Synchronous socket programming 39
c.Thread synchronization 40
Cách lấy external IP 42
d.Lấy Icon của file – task 43
e.Cách dừng một thread 44
f.Cách ngăn không cho hệ thống vẽ lại chương trình 44
D.TÀI LIỆU THAM KHẢO: 46
Trang 4A.KHOA HỌC VÀ NGHIÊN CỨU KHOA HỌC
I Khái niệm và phân loại:
Khoa học là quá trình nghiên cứu nhằm khám phá ra những kiến thức mới, học thuyết mới… về tự nhiên và xã hội Những kiến thức hay học thuyết mới nầy, tốt hơn,
có thể thay thế dần những cái cũ, không còn phù hợp
Khoa học bao gồm một hệ thống tri thức về qui luật của vật chất và sự vận động của vật chất, những qui luật của tự nhiên, xã hội, và tư duy Hệ thống tri thức này hình thành trong lịch sử và không ngừng phát triển trên cơ sở thực tiễn xã hội Phân biệt ra 2 hệ thống tri thức: tri thức kinh nghiệm và tri thức khoa học
Có nhiều hướng phân loại khoa học: theo nguồn gốc (lý thuyết, thực nghiệm, thực chứng…), theo mục đích ứng dụng (mô tả, phân tích, tổng hợp, sáng tạo…), theo mức độ khái quát (cụ thể, trừu tượng, tổng quát…), theo tính tương liên (liên ngành,
đa ngành…), theo cơ cấu hệ thống tri thức (cơ sở, cơ bản, chuyên ngành…), theo đối tượng nghiên cứu (tự nhiên, kỹ thuật, xã hội nhân văn, công nghệ, nông nghiệp, y học…)
a Phân loại theo nguồn gốc hình thành khoa học:
Khoa học lý thuyết (sciences théorique)
Khoa học thuần túy (scieces pures, sciences de pure érudition)
Khoa học thực nghiệm (sciences empiricales,sciences expérimentales)
Khoa học thực chứng (sciences positives)
Khoa học quy nạp (sciences inductives)
Khoa học diễn dịch (sciences déductives)
Trang 5b Phân loại theo mục đích ứng dụng khoa học
Khoa học mô tả (sciences descriptives)
Khoa học phân tích (sciences analytiques)
Khoa học tổng hợp (sciences synthétiques)
Khoa học ứng dụng (sciences appliquées)
Khoa học hành động (sciences de l’action)
Khoa học sáng tạo (sciences créatrices)
c Phân loại theo mức độ khái quát hóa của khoa học
Khoa học cụ thể (sciences concrètes)
Khoa học trừu tượng (sciences abstraites)
Khoa học tổng quát (sciences générales)
Khoa học đặc thù (sciences particulières)
4 Phân loại theo tính tương liên giữa các khoa học
Khoa học liên bộ môn(sciences inter-disciplinaires)
Khoa học đa bộ môn (sciences multi-disciplinaires)
d Phân loại theo kết quả họat động chủ quan của con người
Khoa học ký ức (sciences de la mémoire)
Khoa học tư duy (sciences de la pensée)
Khoa học suy luận (sciences de la raison)
Khoa học tưởng tượng (sciences de l’imagination)
e Phân loại theo cơ cấu của hệ thống tri thức hoặc chương trình đào tạo
Khoa học cơ bản (sciences de base)
Khoa học cơ sở (sciences fondamentales)
Khoa học chuyên môn (sciences de spécialisation)
Trang 6f Phân loại theo đối tượng nghiên cứu của khoa học
Khoa học tự nhiên (sciences naturelles, sciences de la nature)
Khoa học kỹ thuật (sciences techniques)
Khoa học công nghệ (sciences technologiques, sciences d’engineering)
Khoa học xã hội (sciences sociales)
Khoa học nhân văn (sciences humaines)
Khoa học nông nghiệp (sciences agricoles)
Khoa học cơ bản (sciences de la santée)
II Nghiên cứu khoa học
Nghiên cứu khoa học là một hoạt động tìm kiếm, xem xét, điều tra, hoặc thử nghiệm Dựa trên những số liệu, tài liệu, kiến thức,… đạt được từ các thí nghiệm nghiên cứu khoa học để phát hiện ra những cái mới về bản chất sự vật, về thế giới tự nhiên và xã hội, và để sáng tạo phương pháp và phương tiện kỹ thuật mới cao hơn, giá trị hơn
Phương pháp nghiên cứu khoa học nói chung gồm sáu bước cơ bản sau:
a Đặt vấn đề, mục đích, hoặc câu hỏi nghiên cứu
Đặt vấn đề hay câu hỏi nghiên cứu là phần quan trọng nhất của phương pháp nghiên cứu khoa học Mỗi một phần dự án được thực hiện để trả lời câu hỏi này Các câu hỏi nghiên cứu đôi khi được hình thành như là một tuyên bố và được gọi là “vấn đề” hoặc "báo cáo vấn đề." Mục tiêu hay những ý tưởng kiểm chứng là gì? Câu hỏi khoa học đang trả lời là gì?
b Những giả định
Giả định là một dạng dự báo, được hình thành như một tuyên bố để dẫn tới câu trả lời cho câu hỏi nghiên cứu Giải thích một cách thuyết phục các dự án sử dụng để chứng minh cho mục đích nghiên cứu Nên cố gắng trình bày kỹ về các kết luận có được thông qua đo lường Không phải lúc nào kết luận cũng phù hợp với giả thuyết
Trang 7c Danh mục tài liệu
Danh sách tất cả các vật tư, thiết bị, tài liệu được sử dụng trong nghiên cứu hoặc thử nghiệm Danh sách các tài liệu phải bao gồm các trình tự của tất cả thao tác
d Trình tự
Là mô tả chi tiết, từng bước về cách thực hiện thử nghiệm Mô tả rõ ràng cách khống chế các biến số cũng như từng bước làm thế nào lấy được kết quả cuối cùng thông qua đo lường để chứng minh hay bác bỏ giả thuyết Các tiến trình thực hiện nên được đúc kết theo một phương pháp mà theo đó người khác dễ dàng thực hiện lại Hình ảnh mô tả các thao tác được hiện rõ trên bảng hiển thị
e Tầm quan sát, dữ liệu, kết quả
Các kết quả thường là dưới hình thức một tuyên bố để giải thích hoặc diễn giải
dữ liệu Kết quả thu được ở dạng dữ liệu thô, đồ thị, kết luận rút ra từ những dữ liệu
có trước Hình ảnh cũng có thể được sử dụng ở đây
f Kết luận
Kết luận là một bản tóm tắt các nghiên cứu và các kết quả của thử nghiệm Đây
là nơi trả lời các vấn đề hay câu hỏi nghiên cứu Cần đưa ra một tuyên bố cho dù dữ liệu có hỗ trợ giả thuyết hay không Cần phải có đủ dữ liệu để chứng minh một phần hoặc phản bác toàn bộ giả thuyết Trong trường hợp này, có thể giải thích tại sao có các kết quả khác nhau Các phương pháp khoa học không phải là đúc bằng bê tông mà
nó là một hệ thống, minh bạch và khá dễ để học hỏi và sử dụng mà không nhà khoa học nào có thể sử dụng nó cho lợi ích riêng của họ
Phương pháp khoa học không phải là một điều gì rất cụ thể mà nó mang tính hệ thống, trực tiếp và khá dễ để sử dụng và học hỏi thậm chí đối với những người không phải là các nhà khoa học với các mối quan tâm khác nhau
Trang 8III Đề tài nghiên cứu khoa học
a Khái niệm đề tài
Đề tài là một hình thức tổ chức NCKH do một người hoặc một nhóm người thực hiện Một số hình thức tổ chức nghiên cứu khác không hoàn toàn mang tính chất nghiên cứu khoa hoc, chẳng hạn như: chương trình, dự án, đề án
b Đối tượng nghiên cứu và phạm vi nghiên cứu
Đối tượng nghiên cứu: là bản chất của sự vật hay hiện tượng cần xem xét và làm rõ trong nhiệm vụ nghiên cứu
Phạm vi nghiên cứu: đối tượng nghiên cứu được khảo sát trong trong phạm vi nhất định về mặt thời gian, không gian và lĩnh vực nghiên cứu
c Mục đích và mục tiêu nghiên cứu
Khi viết đề cương nghiên cứu, một điều rất quan trọng là làm sao thể hiện được mục tiêu và mục đích nghiên cứu mà không có sự trùng lấp lẫn nhau Vì vậy, cần thiết
để phân biệt sự khác nhau giữa mục đích và mục tiêu
Mục đích: là hướng đến một điều gì hay một công việc nào đó trong nghiên cứu mà người nghiên cứu mong muốn để hoàn thành, nhưng thường thì mục đích khó
có thể đo lường hay định lượng
Mục tiêu: là thực hiện hoạt động nào đó cụ thể, rõ ràng mà người nghiên cứu sẽ hoàn thành theo kế hoạch đã đặt ra trong nghiên cứu Mục tiêu có thể đo lường hay định lượng được
Trang 9B PHƯƠNG PHÁP LUẬN SÁNG TẠO VÀ ĐỔI MỚI TRONG KHOA HỌC
I Khái niệm, đối tượng, mục đích và ý nghĩa
Phương pháp luận sáng tạo và đổi mới là phần ứng dụng của Khoa học về sáng tạo, bao gồm hệ thống các phương pháp và các kĩ năng cụ thể giúp nâng cao năng suất
và hiệu quả, về lâu dài tiến tới điều khiển tư duy sáng tạo của người sử dụng
Đối tượng mà môn học nghiên cứu và hoàn thiện là tư duy sáng tạo – quá trình suy nghĩ giải quyết vến đề và ra quyết định của mỗi người
Mục đích của môn học là trang bị cho những người học hệ thống các phương pháp và các kĩ năng cụ thể, giúp họ nâng cao năng suất, hiệu quá, về lâu dài, tiến tới điều khiển tư duy sáng tạo (quá trình suy nghĩ giải quyết vấn đề và ra quyết định) của họ
Các ích lợi: cuộc đời của mỗi người là chuỗi các vấn đề cần giải quyết, chuỗi các quyết định cần phải đưa ra Nếu như giải quyết vấn đề không tốt, đưa ra các quyết định sai, sẽ phải trả giá về thời gian, sức khỏe, phương tiện vật chất, tiền bạc, địa vị, danh tiếng…
Ý nghĩa nhân đạo và phát triển con người: phương pháp luận sáng tạo và đổi mới trong khoa học nhắm tới hoàn thiện tư duy sáng tạo cũng là nhắm tới hoàn thiện con ngừoi trong các mối quan hẹ con ngừoi với con người, con người với xã hội, con ngừoi với công cụ lao động (hiểu theo nghĩa rộng) và con người với tự nhiên
II Những nội dung chính
a Vấn đề khoa học
Vấn đề khoa học (scientific problem) còn gọi là vấn đề nghiên cứu (research problem) là câu hỏi đặt ra khi người nghiên cứu đứng trước mâu thuẫn giữa tính hạn chế của tri thức khoa học hiện có với yêu cầu phát triển tri thức đó ở trình độ cao hơn
Nghiên cứu khoa học luôn tồn tại 2 vấn đề:
Vấn đề về bản chất sự vật đang tìm kiếm
Trang 10Vấn đề về phương pháp nghiên cứu để làm sáng tỏ về lý thuyết và thực tiễn những vấn đề thuộc lớp thứ nhất
b Các phương pháp phát hiện vấn đề khoa học
Có 6 phương pháp:
1) Tìm những kẻ hở, phát hiện những vấn đề mới
2) Tìm những bất đồng
3) Nghĩ ngược lại quan niệm thông thường
4) Quan sát những vướng mắt trong thực tiễn
5) Lắng nghe lời kêu ca phàn nàn
6) Cảm hứng: những câu hỏi bất chợt xuất hiện khi quan sát sự kiện nào đó
c Phương pháp giải quyết vấn đề khoa học về phát minh, sáng chế
Có 40 thủ thuật (nguyên tắc) sáng tạo cơ bản:
1 Nguyên tắc phân nhỏ
2 Nguyên tắc “tách khỏi”
3 Nguyên tắc phẩm chất cục bộ
4 Nguyên tắc phản đối xứng
5 Nguyên tắc kết hợp
6 Nguyên tắc vạn năng
7 Nguyên tắc “chứa trong”
Trang 118 Nguyên tắc phản trọng lượng
9 Nguyên tắc gây ứng suất sơ bộ
10.Nguyên tắc thực hiện sơ bộ
11 Nguyên tắc dự phòng
12.Nguyên tắc đẳng thế
13.Nguyên tắc đảo ngược
14.Nguyên tắc cầu (tròn) hoá
15.Nguyên tắc linh động
16.Nguyên tắc giải “thiếu” hoặc “thừa”
17.Nguyên tắc chuyển sang chiều khác
18.Nguyên tắc sử dụng các dao động cơ học
19.Nguyên tắc tác động theo chu kỳ
20.Nguyên tắc liên tục tác động có ích
21.Nguyên tắc “vượt nhanh”
22.Nguyên tắc biến hại thành lợi
23.Nguyên tắc quan hệ phản hồi
24.Nguyên tắc sử dụng trung gian
25.Nguyên tắc tự phục vụ
26.Nguyên tắc sao chép (copy)
27.Nguyên tắc “rẻ” thay cho “đắt”
28.Thay thế sơ đồ cơ học
29.Sử dụng các kết cấu khí và lỏng
30.Sử dụng vỏ dẻo và màng mỏng
31.Sử dụng các vật liệu nhiều lỗ
32.Nguyên tắc thay đổi màu sắc
33.Nguyên tắc đồng nhất
Trang 1234.Nguyên tắc phân hủy hoặc tái sinh các phần
35.Thay đổi các thông số hoá lý của đối tượng
36.Sử dụng chuyển pha
37.Sử dụng sự nở nhiệt
38.Sử dụng các chất oxy hoá mạnh
39.Thay đổi độ trợ
40.Sử dụng các vật liệu hợp thành (composite)
d Các phương pháp giải quyết vấn đề tổng quát
Tổng hợp theo không gian và thời gian
6 Các phương pháp giải quyết vấn đề trong tin học
Phương pháp trực tiếp
Phương pháp gián tiếp
Phương pháp Thử Sai
Phương pháp Heuristic
Trang 13Phương pháp Trí Tuệ Nhân Tạo
C ÁP DỤNG CÁC NGUYÊN TẮC SÁNG TẠO VÀO NHỮNG VẤN
ĐỀ CỤ THỂ TRONG CÔNG NGHỆ THÔNG TIN
Kể từ khi máy tính cá nhân (Personal Computer - PC) bùng nổ, đem đến sự tiếp cận đại chúng với ngành công nghệ thông tin thì lĩnh vực phần mềm luôn phát triển sôi động hơn phần cứng về mặt phát minh sáng tạo Không như phần cứng phải tốn chi phí đầu tư trang thiết bị để thử nghiệm, dây chuyền sản xuất và hệ thống phân phối phức tạp, phần mềm có thể được sản xuất chỉ với một máy tính cá nhân (PC) và được sao chép ra hàng trăm bản để phân phối với đến người dùng cuối thông qua mạng toàn cầu internet
Chi phí đầu tư gần như không đáng kể cho phép bất cứ một ai cũng có thể thoả chí đam mê phát minh sáng chế với lĩnh vực phần mềm và thực tế rất nhiều sản phẩm phần mềm hiện nay thu về hàng triệu đô lại được thực hiện bởi những sinh viên chưa tốt nghiệp hay thậm chí chỉ là một học sinh trung học Sự ra đời của công ty facebook
và sự nổi tiếng của trò chơi Angry bird cho ta những ví dụ trước mắt về một ngành công nghiệp nơi sự sáng tạo có thể tạo ra những sự đột phá to lớn vượt qua mọi rào cản về vốn, về kinh nghiệm
Thậm chí ngành công nghiệp phần mềm có mức độ vận động sáng tạo và chuyển hóa nhanh đến nỗi những nền tảng pháp lý về sở hữu trí tuệ vốn trước nay được xem là để bảo vệ quyền lợi của nhà phát minh sáng chế lại trở thành rào cản cho
sự tự do sáng tạo Phần này sẽ điểm qua lịch sử của ngành công nghệ phần mềm và các xu hướng phát triển phần mềm hiện tại, các tranh cãi vẫn đang tiếp diễn liên quan đến sở hữu trí tuệ đối với phần mềm Từ đó chúng ta có thể nhìn thấy một bức tranh muôn màu về việc áp dụng các nguyên lý sáng tạo vào ngành công nghiệp phần mềm cũng như làm sao thúc đẩy sự sáng tạo trong công nghệ thông tin
Trang 14Mục cuối cùng của phần này sẽ mô tả lại quá trình xây dựng một phần mềm sơ khai, chỉ tận dụng các nguyên tắc sáng tạo mà không theo một lối mòn cho trước nào.
I Sự giải phóng của ngành phần mềm và bùng nổ sáng tạo trong công nghệ thông tin
Từ thời kỳ của những cỗ máy tính siêu lớn những năm 50, đến giai đoạn bùng
nổ máy tính cá nhân, và cho đến thời kỳ chớm nở của điện toán đám mây và máy tính bảng Mục này điểm qua sơ lược lịch sử ngành công nghệ phần mềm với những sáng tạo và phát kiến đã ghi dấu vào lịch sử
a Giai đoạn 1: Phần mềm là gắn liền với phần cứng
Thập niên 60 của thế kỷ XX đánh dấu một bước thay đổi to lớn đối với ngành công nghiệp phần mềm Trước thập niên 60 không ai nghĩ đến một ngành công nghiệp phần mềm, người ta xem phần mềm như là một phần gắn liền với phần cứng máy tính Những cổ máy tính khổng lồ to bằng cả toà nhà được lập trình trước một số chức năng nhất định và thường được cho thuể sử dụng theo giờ Do thời gian làm việc với máy hạn chế, rất ít kỹ sư có khả năng cũng như điều kiện nghiên cứu phát triển phần mềm trên máy, nhà sản xuất chỉ sản xuất những phần mềm cần thiết để máy hoạt động
và không thu phí phần mềm cũng như không đầu tư phát triển phần mềm cho máy tính
Tuy nhiên sự thay đổi đột phá đầu tiên đến từ một tên tuổi không mấy xa lạ:
công ty IBM Năm 1964, như một ví dụ điển hình cho “nguyên tắc linh động” trong
40 nguyên tắc sáng tạo khoa học/kỹ thuật, IBM công bố sản phẩm System/360 Thay
vì các sản phẩm máy tính trước đây chỉ được thiết kế tối ưu cho một số công việc nhất
định, IBM tung ra một họ các máy tính với một thiết kế tương tự nhau, sử dụng chung
phần mềm nhưng có nhiều kích thước và tốc độ xử lý tính toán khác nhau
Các công ty vừa và nhỏ có thể dễ dàng trang bị một máy tính cỡ nhỏ của hệ thống System/360 cùng các phần mềm cần thiết và khi công ty phát triển họ có thể chuyển sang sử dụng một máy tính lớn hơn mà vẫn đảm bảo tương thích Sự linh động này đánh dấu một bước đột phá trong ngành công nghiệp máy tính Giờ đây máy tính từ những cổ máy khổng lồ chỉ có thể cho thuê chứ ít ai mua nổi nay đã trở nên dễ dàng tiếp cận hơn Sự thành công mày System/360 mang lại cho IBM lớn đến nỗi
Trang 15chính hãng đã thừa nhận đây là sản phẩm quan trọng nhất trong lịch sử công ty từ trước đến nay[9] Đồng thời, System/360 cũng mở ra một kỷ nguyên mới cho ngành công nghiệp phần mềm khi giờ đây phần mềm có thể chạy trên nhiều máy tính khác nhau.
Không chỉ sáng tạo đôt phá về mặt kỹ thuật, năm 1969, IBM tiếp tục đề xuất
một đột phá mới trong mô hình kinh doanh áp dụng “nguyên tắc phân nhỏ” khi chia
sản phẩm máy tính thành 3 phần riêng biệt bao gồm: Phần cứng, phần mềm và dịch
vụ Theo đó IBM sẽ tính phí riêng cho việc cung cấp phần cứng, phát triển phần mềm theo yêu cầu, tổ chức các khóa đào tạo sử dụng máy tính, dịch vụ hỗ trợ khách hàng khi có sự cố, v.v Mô hình kinh doanh đột phá này chính thức khai sinh ngành công nghiệp phần mềm và dịch vụ, mở đường cho sự bùng nổ sáng tạo không ngừng của công nghệ thông tin
b Giai đoạn 2: Định hình nền công nghiệp với sự trỗi dậy của máy tính cá
nhân
Khi mới khai sinh ngành công nghiệp phần mềm phát triển khá chậm chạp Các
hệ thống phần cứng máy tính bấy giờ vẫn còn có giá khá cao và phần mềm chỉ tương thích với một số phần cứng nhất định Điều này dẫn đến việc thị trường phần mềm khá manh múng với lượng khách hàng tương đối ít và vẫn còn lệ thuộc khá nhiều vào phần cứng Các công ty lớn vẫn xem phần mềm là một loại hình dịch vụ giá trị gia tăng cho phần cứng và chưa đầu tư đúng mức cho lĩnh vực này
Giai đoạn đầu của thập niên 70 cũng đánh dấu sự ra đời của hai nhân tố quan trọng là mạng Internet và đĩa mềm (floppy disk) Hai công cụ này cho phép phần mềm được chia sẻ và trao đổi cực kỳ dễ dàng giữa những người dùng máy tính tạo ra một kênh phân phối phần mềm độc lập không cần thông qua các công ty sản xuất phần cứng Và đặc biệt hơn internet cho phép trao đổi giữa những người đam mê máy tính (hobbyist) - những lập trình viên, những kỹ sư phần mềm tương lai Họ có thể tự mình phát triển phần mềm, chia sẻ phần mềm đó với cộng đồng người dùng trên internet và nhận được các phản hồi góp ý để cùng nhau tiến bộ
Đây chính là hạt giống ban đầu cho phong trào mã nguồn mở và các công ty sản xuất phần cứng hết sức vui vẻ chào đón các cộng đồng những người đam mê máy tính này Trước hết vì họ là những khách hàng tiềm năng và luôn sẵn sàng đó nhận sản phẩm mới, hơn nữa sự phong phú về phần mềm do những lập trình viên ban sơ này
Trang 16viết ra sẽ thúc đẩy doanh số phần cứng
Tuy nhiên môi trường phát triển và chia sẻ phần mềm dựa theo đam mê này lại gây ảnh hưởng đến doanh thu của những công ty chỉ chuyên phát triển phần mềm Công ty Microsoft thành lập năm 1975 với sản phẩm đầu tay là phần mềm Altair BASIC cho máy MITS Tuy nhiên trong khi máy MITS được bán ra hành nghìn chiếc mỗi tháng thì trong suốt cả năm ròng phần mềm Altair BASIC chỉ bán được vài trăm phiên bản Tháng 2 năm 1976, Bill Gate, viết một bức thư ngỏ cho tất cả người đam
mê máy tính (Open letter to Hobbyist) được xuất bản trên nhiều tạp chí Trong đó ông than phiền về việc có quá ít người dùng Altair BASIC thật sự trả tiền mua phần mềm này Cho rằng việc sao chép phần mềm sẽ làm nản lòng những nhà lập trình viên muốn tham gia ngành công nghiệp phần mềm vừa chớm nở, ông lên án hành vi sao chép phần mềm là bất công và trộm cắp
Bức thư của Bill Gate nhận được nhiều sự phản ứng dữ dội nhưng cũng có nhiều người tán đồng quan điểm của Bill Gate Trong những phát biểu và hướng đi
tiếp theo của mình, ông đã áp dụng triệt để “nguyên tắc chuyển sang chiều khác”,
thay vì xem phần mềm là một sản phẩm phụ trợ được bán theo phần cứng, ông xem phần mềm là một tác phẩm của lao động sáng tạo, được bảo hộ bởi quyền tác giả và tác giả phần mềm có quyền thu hoa hồng trên mỗi phiên bản copy phần mềm được phát hành
Cách tiếp cận này nhanh chóng thu hút được sự chú ý của nhiều công ty phần mềm khác và xu hướng phần mềm mã nguồn đóng dần được hình thành Theo đó phần mềm sẽ được phân phối dưới dạng mã nhị phân, độc lập với phần cứng và người dùng sẽ mua một license trong đó thường quy định rõ họ không được phép xem lén
mã nguồn, không được phân phát phần mềm cho người khác và chỉ được dùng trên một số lượng máy tính nhất định
Phương thức kinh doanh phần mềm này nhận được một sự thúc đẩy vượt bậc hơn nữa khi máy tính cá nhân của IBM ra đời Một dòng máy tính đủ rẻ để cá nhân và gia đình có thể mua được mở ra một thì trường vô cùng to lớn cho các nhà phát triển phần mềm Microsoft nhanh chóng nhảy vào thị trường cung cấp phần mềm cho máy tính cá nhân với hệ điều hành DOS và nhanh chóng xác lập được vị trí thống trị của mình trong ngành công nghiệp phần mềm còn non trẻ này
Trang 17c Sự trỗi dậy của phần mềm mã nguồn mở và câu chuyện Tái ông thất mã
Cuối thập niên 70, thị trường phần mềm chuyển hướng sang mô hình kinh doanh mã nguồn đóng do Bill Gate khởi sướng tuy mang lại một luồng sinh khí mới cho công nghệ thông tin nhưng cũng để lại một số mặt trái:
Những người đam mê tin học, những nhà tiên phong trong lĩnh vực công nghệ phần mềm cảm thấy họ bị đặt vào một tình thế bị phản bội Họ đã góp phần thúc đẩy
sự phát triển của ngành công nghiệp máy tính nhưng bây giờ họ bị cấm không được xem mã nguồn phần mềm Những phần mềm trước đây họ phát tham gia phát triển bị các công ty lớn đem về chỉnh sửa cho hoàn thiện và bán với giá không thể mua được Thậm chí một số công ty đăng ký bảo hộ phần mềm bằng hình thức “bằng sáng chế” patent có thể yêu cầu cấm việc phát triển và sử dụng những phần mềm cùng tính năng
Bức bối trước tình trạng lợi dụng luật sở hữu trí tuệ để bóp chẹt sáng tạo hòng độc quyền kinh doanh, Richard Stallman - cha đẻ của tổ chức Phần mềm tự do đã
tương kế tựu kế - sử dụng nguyên tắc “Biến hại thành lợi”, dùng chính luật sở hữu trí
tuệ để xây dựng một hành lang pháp lý cho trào lưu phần mềm nguồn mở Giấy phép công cộng phổ quát (General Public License – GPL) ra đời với phương châm của phần mềm tự do Theo đó bất kỳ người nào có một bảng copy của phần mềm cũng sẽ
sở hữu ngay quyền được tự do sửa đổi, sao chép, phân phối lai phần mềm đó với duy nhất một điều kiện: Mọi sản phẩm được phát triển tiếp theo dựa trên phần mềm đó cũng sẽ phải mang giấp phép GPL
Hành lang pháp lý vững chắc của GPL cho phép hoạt động chia sẻ phần mềm
từ một hành vi bị lên án nhầm là trộm cắp nay trở thành một hoạt động tự do dưới sự bảo vệ của luật pháp Dưới sự bảo trợ này Stallman và tổ chức phần mềm tự do bắt tay vào việc xây dựng một loạt phần mềm tự do mang giấy phép GPL để thay thế cho các phần mềm thương mại hiện có đang chuyển dần sang mã nguồn đóng, từ hoạt động này mà hệ điều hành linux ra đời và dần dần phát triển thành một sản phẩm duy nhất khả dĩ cạnh tranh được với Microsoft windows về thị phần hệ điều hành cho máy tính cá nhân
Phong trào phần mềm tự do hay mã nguồn mở tiếp tục phát triển lên một tầm mức mới với sự kiện có liên quan đến sự ra đời của world wide web Đầu thập niên
90, Microsoft phát hành trình duyệt Internet Explorer để cạnh tranh với trình duyệt Netscape Navigator của công ty Netscape Communication Tuy là một trong những
Trang 18công ty tiên phong với sự ra đời của world wide web và chiếm đến 95% thị phần trình duyệt web, Netscape nhanh chóng bị Microsoft đẩy lùi bằng con át chủ bài: Windows Sau khi Microsoft quyết định phát hành miễn phí Internet Explorer như một phần Windows vào năm 1995, thị phần của Internet Explorer nhanh chóng tăng lên 50% và dần dần đẩy Netscape Navigator vào chỗ nguy khốn Đến năm 1997 sau khi Microsoft tăng cường việc tích hợp một số chuẩn lạ vào Internet Explorer khiến cho các trang web duyệt tốt trên Internet Explorer có thể không chạy được trên trình duyệt Netscape, 90% thị trường trình duyệt web đã rơi vào tay Internet Explorer,
Trước tình thế đó, công ty Netscape communication đã có một quyết định cực
kỳ táo bạo: “Phát hành mã nguồn Netscpae Navigator dưới giấy phép mã nguồn mở” Quyết định này về sau được giải thích nhằm tránh thế độc quyền về trình duyệt web của Microsoft, một khi Microsoft nắm độc quyền trình duyệt web, họ sẽ có khả năng thao túng quá trình phát triển của giao thức HTTP và chuẩn world wide web, từ đó làm bàn đạp xâm chiếm thị trường máy chủ web và độc quyền gần như toàn bộ internet
Việc mã nguồn mở Netscape Navigator cho phép các chuyên gia về tin học có thể tiếp tục tham gia phát triển trình duyệt này dưới sự bảo trợ của giấy phép GPL và không bị Microsoft lợi dụng Sự kiện này mở ra một hướng đi mới cho mã nguồn mở,
từ chỗ là kẻ thù của doanh nghiệp thì nay mã nguồn mở trở thành một lợi thế trong kinh doanh Thay vì thu phí phần mềm thật cao doanh nghiệp sẽ tận dụng sự trợ giúp của các cộng đồng người sử dụng có đam mê và kinh nghiệm để phát triển phần mềm Phần mềm đó được mã nguồn mở để tránh sự lợi dụng đánh cắp mã nguồn từ đối thủ Với việc giảm được gánh nặng trong phát triển phần mềm, công ty có thể tập trung vào thu lợi từ cách dịch vụ kèm theo
II Áp dụng các nguyên tắc sáng tạo trong xây dựng phần mềm
a Nhu cầu thực tế.
Chia sẻ dữ liệu giữa các máy là một nhu cầu khá phổ biến trong thực tế làm việc với máy tính Nếu như trong môi trường mạng cục bộ (LAN) việc chia sẻ dữ liệu diễn ra khá dễ dàng, thì trong môi trường internet, mọi việc lại không được suôn sẻ như thế Về cơ bản, việc chia sẻ file giữa các máy đang kết nối chung trong một mạng
là không khó Tuy nhiên, do đặt cao tính bảo mật nên khả năng chia sẻ file tích hợp
Trang 19trong hệ thống thường bị chặn trong mội trường internet Để chia sẻ file người dùng thường có một số lựa chọn:
1 Chép file vào thiết bị lưu trữ ngoài rồi chạy đến chỗ máy cần nhận file
Dễ thấy phương án này không khả thi nếu hai máy cách nhau quá xa về địa lý
2 Biến máy mình thành một server chia sẻ file trên máy (vd FTP server)
Phương án này đòi hỏi nhiều kiến thức chuyên môn về công nghệ thông tin
3 Sử dụng tính năng send file có sẵn trong các chương trình chat (instant
message) Phương án này phải lệ thuộc vào nhà cung cấp dịch vụ tin nhắn tức
thời, khi dịch vụ có sự cố, tính năng send file cũng tiêu tùng theo
4 Upload file cần chia sẻ lên một server chuyên lưu trữ file Phương án
này tốn thời gian do đòi hỏi file phải được tải lên hoàn chỉnh trước khi người nhận có thể tải về
5 Sử dụng chương trình chia sẻ file qua mạng ngang hàng Đây là phương
án rất khả thi, tuy nhiên các trình chia sẻ file qua mạng ngang hàng hiện nay tương đối khó sử dụng với người dùng cuối
b Phân tích các giải pháp đã có và tìm ra vấn đề:
Với nhu cầu không ngừng gia tăng mỗi ngày của con người thì các phương án
đã nêu ở mục trước không trán khỏi những hạn chế nhất định Áp dụng các phương pháp phát hiện vấn đề đã được học, ta có thể thấy còn rất nhiều vướng mắc cần giải quyết
Áp dụng nguyên tắc thứ 4, từ thực tiễn quan sát và sử dụng các phương án đã nêu nhiều năm nay, ta nhận thấy còn một số vướng mắc:
1 Có nhiều phương án bị lệ thuộc vào một nhà cung cấp dịch vụ thứ 3 Khi tập tin được tải lên một dịch vụ chia sẻ file hay truyền qua một ứng dụng chat nào đó thì cả bên truyền và bên nhận đều phải tiếp cận được dịch vụ này Bất kỳ sự cố nào khi kết nối với nhà cung cấp dịch vụ cũng khiến việc truyền tải tập tin không thực hiện được, mặc dù người gửi và nhận vẫn có thể kết nối trực tiếp với nhau
2 Có nhiều phương án quá chuyên sâu về kỹ thuật Việc thiết lập một mạng ngang hàng hoặc một máy chủ là một mảng khá chuyên biệt trong
Trang 20công nghệ thông tin Và các công cụ để thực hiện việc này không được thiết kế dành cho người dùng ít kinh nghiệm
Áp dụng nguyên tắc thứ 5, lắng nghe những phàn nàn từ người dùng chúng ta
có thể thấy còn những điểm sau:
1 Nhiều phương án không chú trọng tính năng tạm dừng truyền tải file và
tiếp tục truyền tải khi thuận tiện A truyền cho B một file khá lớn, giữa
chừng A có việc phải đi không thể tiếp tục truyền file, khi A quay lại việc truyền file phải bắt đầu lại từ đầu Hoặc A và B đang truyền file thì mạng
có sự cố, khi sự cố được khắc phục việc truyền file phải bắt đầu lại từ đầu Người dùng rất khó chịu khi truyền những file lớn bằng các phương
án bất ổn như vậy
2 Nhiều phương án không chú trọng đến việc kiểm tra file đã truyền đi có
nguyên vẹn hay không: A send cho B một file video khá lớn, B mở ra
xem và thấy có vẻ bình thường Tuy nhiên, khi xem đến gần cuối video thì phát hiện file bị lỗi và video không hiển thị được phần cuối Lúc này
A đã đi đâu đó và không thể truyền lại tập tin Mặc dù kết nối internet ngày nay dùng giao thức TCP/IP có khả năng kiểm tra lỗi Tuy nhiên, với những sự cố phát sinh không phải trong lúc truyền mà trong lúc lưu
dữ liệu trên máy hay lúc ngắt rồi tiếp tục quá trình truyền thì giao thức TCP/IP không can thiệp được
3 Có thể phương án kiểm tra được file truyền đi có lỗi hay không nhưng
không có cách sửa lỗi: A truyền cho B một file nén, các chuẩn nén file
hiện nay có tích hợp chức năng kiểm tra tính toàn vẹn, nếu file bị lỗi sẽ không giải nén được Tuy nhiên dù file chỉ bị lỗi nhỏ nhưng B không có cách nào khác ngoài việc báo A truyền lại toàn bộ file
c Xác định lại vấn đề.
Để giải quyết các vướng mắc trên, em quyết định cố gắng tạo ra một chương trình nhỏ gọn, có khả năng send file qua mạng, nhưng hội tụ đầy đủ tính năng cần thiết Các yêu cầu mà em đặt ra cho chương trình của mình là:
1 Gọn nhẹ, đơn giản, dễ sử dụng Chương trình sẽ có dung lượng cỡ 1
MB, để thuận lợi trong việc chia sẻ vì trước khi chia sẻ file, người dùng phải
Trang 21chia sẻ chính bản thân của chương trình.
2 Có thể send một file cho nhiều người, những người đang nhận file có thể cùng send cho nhau Ý tưởng từ giao thức truyền dữ liệu bittorrent, tính năng này giúp quá trình chia sẽ dữ liệu sẽ nhanh chóng hơn Đặc biệt là khi có nhiều người cùng tham gia quá
3 Có khả năng resume sau khi bị gián đoạn Tính năng cơ bản nhưng hầu hết nhung chương trình send file thông dụnng thường “quên” đưa vào Nhờ tính năgn này, công việc chia sẽ trở nên thuận tiện và ngươi dùng có thể chủ động hơn về thời gian, nhất là với file có kích thước lớn
4 Có khả năng kiểm tra tính toàn vẹn của file sau khi send, những phần send sai sẽ bị phát hiện và send lại, không nhất thiết phải send lại toàn bộ file
5 Hỗ trợ file với kích thước không giới hạn Chỉ cần Net framework có thể
open file đó chương trình có thể send được, không có giới hạn về dung lượng
Trang 22III Sáng tạo, phát triển từ những công cụ đã có:
Không ai có thể sáng tạo tất cả mọi thứ bắt nguồn từ con số 0 nên việc khắc phục các hạn chế nêu trên cũng phải bắt nguồn từ những phương án, giải pháp, công nghệ, công cụ đã có sẵn
Ở đây phương án được chọn để cải tiến là giao thức chia sẻ file qua mạng ngang hàng bittorrent Nền tảng công nghệ được sử dụng là Windows và Microsoft NET Framework
Torrent hoạt động bằng cách chia file thành nhiều “piece” kích thước mỗi piece dao động từ 256KiB đến 4MiB Mỗi piece này được đánh số bắt đầu từ 0, SHA-1 Hash của mỗi piece cũng được tính và lưu vào một file siêu dữ liệu với phần đuôi thường là torrent Trước khi chia sẻ được dữ liệu thật, người dùng phải tìm cách chia
sẻ file siêu dữ liệu này với nhau Để máy của người dùng (peers) có thể kết nối với nhau, torrent sử dụng một server làm trung gian (tracker), server này không tham gia truyền dữ liệu mà chỉ lưu trữ thông tin về IP và port của những peers đang chia sẻ cùng file torrent đó và gửi thông tin này đến cho các peers
Trong giao thức bittorrent có 8 thông điệp (message) khác nhau, mỗi thông điệp mang một ý nghĩa riêng và không nhất thiết phải đi đồng bộ với nhau Khi nhận thông điệp, clients có thể trả lời hoặc không, và nếu trả lời cũng không nhất thiết phải theo một quy ước nào Việc sử dụng 8 thông điệp đó như thế nào là tùy vào clients
Cơ chế thoáng, không gò bó này cho phép mở ra nhiều kỹ thuật nhằm tận dụng hiệu quả giao thức bittorrent Trong 8 thông điệp đó có 4 thông điệp chính phục vụ cho việc truyền dữ liệu: