Bạn có thể hiểu đơn giản, Software Phần mềm là tập hợp của nhiều câu lệnh hoặc chỉ thị được thể hiện bằng một hay nhiều ngôn ngữ lập trình theo trật tự nhất định, nhằm tự động tiến hành
lOMoARcPSD|39474592 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO TL, BTL, ĐA/DA THUỘC HỌC PHẦN: NHẬP MÔN VỀ KỸ THUẬT TÊN CHỦ ĐỀ NGHIÊN CỨU: Tìm hiểu về phần mềm GVHD: HÀ MẠNH ĐÀO Sinh viên: TRẦN HOÀNG VŨ (T) NGUYỄN MINH QUANG TRẦN QUỐC ANH Lớp: CNTTTA01 KHÓA: 17 HÀ NỘI- NĂM 2023 1 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Mục lục 2 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Phần một: Mở đầu Con người đang sinh sống trong biển cả thông tin, trong từng giây, từng phút chúng ta đều tiếp xúc với tin tức một cách tự giác hoặc không tự giác Và xã hội càng phát triên thì cách thức con người tiếp xúc với tin tức càng thay dồi theo hướng tích cực Với những bước tiền như vũ bão những thập kỉ cuối của thế kỉ XX Công nghệ thông tin và đặc biệt là sự phát triển của các phần mềm, ứng dụng đã tạo nên một diện mạo mới cho cuộc sống con người và mở ra cho nhân loại một kỉ nguyên mới Có thể khẳng định phần mềm đang giữ một vai trò quan trọng trong sự phát triển của loài người nói chung và sự phát triển kinh tế, chính trị, xã hội của một đất nước nói riêng, Việt Nam cũng không là một ngoại lệ Việc nắm bắt được vai trò của phát triển phần mềm sẽ giúp ta có cái nhìn tổng thể trên thế giới đồng thời đưa ra giải pháp và các xu thế phát triển của nó đối với sự phát triển xã hội, nhằm hoàn thiện, nâng cao hiệu quả và chât lượng mạng lưới phần mềm ở nước ta Xuất phát từ những lí do trên, chúng tôi chọn tìm hiểu về phần mềm làm đề tài tìm hiểu của nhóm mình 3 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Phần 2: Kết quả nghiên cứu I Khái niệm và vai trò của phần mềm 1.Khái niệm - Phần mềm (tên gọi tiếng Anh: Software, viết tắt: SW hoặc S/W) là một khái niệm khá trừu tượng Bạn có thể hiểu đơn giản, Software (Phần mềm) là tập hợp của nhiều câu lệnh hoặc chỉ thị được thể hiện bằng một hay nhiều ngôn ngữ lập trình theo trật tự nhất định, nhằm tự động tiến hành các nhiệm vụ và chức năng cụ thể nào đó - Các phần mềm trên một thiết bị sẽ có sự kết nối với nhau để cùng cung cấp thông tin và phục vụ các chương trình được yêu cầu Đối với phần mềm máy tính, chúng sẽ thực hiện các chức năng bằng cách gửi trực tiếp chỉ thị đến Phần cứng - Bộ phận bắt buộc phải có thì máy tính mới thực thi được 2 Vai trò - Phần mềm máy tính là một tập hợp các hướng dẫn cho phép người dùng tương tác với máy tính, phần cứng hoặc thực hiện các tác vụ 4 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 - Không có các chương trình phần mềm, phần lớn hoạt động của máy tính sẽ trở nên vô nghĩa Ví dụ, không có phần mềm trình duyệt Internet, bạn sẽ không thể lướt web 3 Đặc điểm của phần mềm nói chung 5 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 - Phần mềm được tạo ra bằng 02 cách: Một là được tạo ra bởi con người (hay còn gọi là lập trình viên); Hai là được sinh ra bởi những chương trình khác - Phần mềm sẽ không bị “hỏng” đi giống như các sản phẩm hữu hình Trên thực tế nó sẽ xuất hiện lỗi và chỉ trải qua sự bảo trì, nâng cấp để khắc phục - Phần mềm đa số được xây dựng và lập trình dựa theo nhu cầu (đơn đặt hàng) chứ không phải lắp ráp dựa trên những bộ phận có sẵn 4 Phân loại - Phần mềm sẽ được chia ra thành nhiều loại nhằm đảm bảo mục đích và nhu cầu sử dụng khác nhau cho từng thiết bị và người dùng Có 02 loại phần mềm chính như sau: + Phần mềm ứng dụng: Có thể dễ dàng cài đặt hoặc gỡ bỏ khi đã hết nhu cầu sử dụng + Phần mềm hệ thống: Được thiết kế để quản lý hành vi của phần cứng máy tính nhằm phục vụ những chức năng cơ bản cho người dùng Bởi vậy loại phần mềm này rất đa dạng, bao gồm: Hệ điều hành, Trình điều khiển, Tiện ích, 6 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Còn một loại phần mềm nữa mà chúng tôi muốn liệt kê vào để bạn có cái nhìn tổng quan hơn về lĩnh vực này Đó là Phần mềm độc hại Có thể xếp loại này vào danh mục phần mềm “đen” chuyên được các đối tượng xấu sử dụng để tấn công vào hệ thống của bạn nhằm làm “tê liệt” các hoạt động của máy chủ 5 Ưu và nhược điểm của phần mềm Ưu điểm của phần mềm: - Giúp cuộc sống của con người trở nên thông minh và khoa học hơn - Thay vì phải làm mọi việc một cách thủ công, thuật toán của phần mềm sẽ giúp bạn giải quyết nhanh chóng nhiều vấn đề trong cuộc sống - Tính tiện dụng cao và hạn chế được nhiều rủi ro trong công việc - Bạn có thể trả tiền để nhà cung ứng lập trình một phần mềm theo đúng nhu cầu của mình - Cùng nhiều ưu điểm khác theo từng loại phần mềm khác nhau Ví dụ như phần mềm quản lý công việc sẽ giúp bạn nâng cao hiệu quả hơn khi làm việc và giao diện của loại phần mềm này cũng dễ sử dụng Nhược điểm của phần mềm: 7 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 - Có thể xảy ra lỗi và cần có đội Dev can thiệp khi cần Chẳng hạn như một phần mềm ứng dụng về giải trí, sẽ không ít lần bạn gặp phải tình trạng như bị giật, lag hay phần mềm quản lý bán hàng bỗng nhiên bị treo server - Mỗi loại phần mềm riêng sẽ có những nhược điểm riêng Chẳng hạn như một số phần mềm quản lý doanh nghiệp đi kèm với yêu cầu mức phí khá cao thì mới có thể sử dụng, 6 Mở rộng Cách phân biệt phần mềm mã nguồn đóng và phần mềm mã nguồn mở - Phần mềm mã nguồn đóng: + Phần mềm mã nguồn đóng (tên tiếng Anh: Closed Source Software): Hiểu đơn giản là dạng phần mềm phải được cấp bản quyền (trả phí hay được tặng, ) thì mới có thể sử dụng được + Loại phần mềm này sẽ được cải tiến qua các phiên bản nâng cao bởi nhà cung cấp và nó được đảm bảo về mức độ uy tín và tính chuyên nghiệp - Phần mềm mã nguồn mở + Phần mềm mã nguồn mở (tên tiếng Anh: Open Source Software): Là dạng phần mềm được công bố rộng rãi, cho phép tất cả mọi người đều có quyền truy cập, sử dụng hay tiếp tục phát triển nó 8 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 + Đa số các phần mềm mã nguồn mở đều không phải trả phí để sử dụng và phục vụ chính cho mục đích phi lợi nhuận Chẳng hạn như nhu cầu giải trí, học tập, của con người Quá trình để thiết kế ra một phần mềm - Ở phần này chúng tôi sẽ giúp bạn có cái nhìn khái quát về các bước để phát triển một phần mềm hoàn chỉnh Toàn bộ quy trình sẽ được diễn ra theo 07 bước sau: Bước 1: Tìm hiểu, phân tích và lên kế hoạch chi tiết (bao gồm thời gian thực hiện, chi phí phát sinh, nguồn nhân lực và lường trước một số rủi ro có thể xảy ra) Bước 2: Xác định rõ đối tượng và mục tiêu mà dự án đang hướng tới Bước 3: Thiết kế khung sườn (khung giao diện, kiến trúc hệ thống) Bước 4: Tập trung vào việc phát triển phần mềm theo như mục tiêu đề ra ban đầu Bước 5: Test - Kiểm tra phần mềm xem có chức năng bị lỗi hay không và fix lại nó Bước 6: Sau khi đã hoàn thiện sản phẩm, việc tiếp theo chắc chắn sẽ là “bày bán” Tiến hành triển khai lên server cho khách hàng hoặc công bố trên App Bước 7: Bảo trì, sửa chữa và nâng cấp phần mềm - Gói gọn về mặt lý thuyết, bạn sẽ cảm thấy quy trình này diễn ra có vẻ đơn giản và nhanh chóng Tuy nhiên trên thực tế có những phần mềm 9 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 phải mất đến hàng chục năm mới có thể hoàn thiện để đưa đến cho người dùng những trải nghiệm tốt nhất Phần mềm và ứng dụng khác nhau ở điểm nào? Khái niệm Phần mềm Ứng dụng chung Là tập hợp từ những chương Là một loại phần mềm được lập trình hướng dẫn và dữ liệu trình nhằm thực thi một nghiệp Khả năng thực thi vận hành phần cứng vụ nhất định nào đó Có thể thực thi hoặc có thể Cơ chế hoạt Luôn có thể thực thi động không Thông thường, phần mềm Ứng dụng sẽ hoạt động dựa trên không dựa trên hệ điều hành hệ thống Có thể hoạt động không cần Hoạt động dựa trên sự tương tác đến sự tương tác của con của con người người Tất cả ứng dụng đều là phần Phần mềm có thể không phải mềm là ứng dụng II Thực trạng về phần mềm ở Việt Nam 1 Xu hướng việc làm Phát triển phần mềm Hiện nay, nhu cầu ứng dụng công nghệ thông tin vào mọi mặt của cuộc sống để tối ưu hóa công việc đã được ưu tiên lên hàng đầu Vì vậy, sử dụng các phần mềm đã được “set up” chính là lựa chọn của nhiều cá nhân, doanh nghiệp mong muốn quản lý công việc hiệu quả, tiết kiệm thời gian 10 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Trên thế giới, mang phần mềm vào các thiết bị đã trở nên quen thuộc Tại Việt Nam, việc này lại càng trở thành xu hướng ở nhiều công ty, doanh nghiệp Hơn nữa, nhiều start-up công nghệ cũng tập trung vào triển khai phần mềm như một ứng dụng hiệu quả để giải quyết nhiều đầu việc Chính những nhu cầu trên đã khiến Phát triển phần mềm (Software Development) tại Việt Nam trở thành chuyên ngành chính, được đưa vào giảng dạy với mục đích nâng cao nhân lực công nghệ phần mềm 2.Thành tựu Visual Studio Code Visual Studio Code là một phần mềm lập trình C/C++ khá là tuyệt vời Visual Studio Code là mã nguồn có một cộng đồng hỗ trợ rộng lớn Sử dụng IntelliSense giúp bạn giải quyết tất cả các vấn đề khó Với các lệnh Git được tích hợp sẵn, debug code chưa bao giờ dễ dàng hơn với Visual Studio Code và còn nhiều tính năng khác khiến việc lập trình của bạn trở nên thuận tiện hơn rất nhiều Visual Studio Code xứng đáng đứng top trong tất cả các phần mềm lập trình C/C++ khác Ứng dụng hỗ trợ nền tảng Windows, MacOs và cả Linux Ngoài ra ứng dụng còn hỗ trợ đa dạng ngôn ngữ như Java, JavaScript, … Đây là một ứng dụng gọn nhẹ và hỗ trợ lập trình mạnh mẽ nên các lập trình viên hãy yên tâm sử dụng ứng dụng này nhé 11 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 III Giải pháp phát triển phần mềm Phát triển phần mềm được tạo ra với đa dạng các mô hình, mỗi mô hình có những đặc trưng riêng Dưới đây là các giải pháp phát triển phần mềm được ứng dụng rộng rãi nhất: 1.Mô hình thác nước (Waterfall) 12 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Mô hình Waterfall hay còn gọi là mô hình thác nước Mô hình này được thiết kế theo tầng với quá trình phát triển giống như dòng chảy thác nước Áp dụng quy trình tuần tự từ phân tích, dự báo đến hiện thực, thử nghiệm, thực hiện, hỗ trợ Cả quá trình được thiết lập, theo dõi nghiêm ngặt Được xác định trước với những tính năng được mong đợi Ưu điểm của mô hình phát triển phần mềm Waterfall là dễ dàng phát triển, quản lý Thích hợp cho các dự án có thời gian ngắn Đây là mô hình phần mềm đầu tiên được ứng dụng Tuy nhiên nhược điểm là ít linh hoạt, khó để đo lường phát triển qua từng giai đoạn 2 Mô hình phát triển và kiểm thử phần mềm Agile Agile là mô hình phát triển và kiểm thử phần mềm khá hiệu quả Ưu điểm mô hình là khách hàng có thể nhìn được kết quả sau mỗi lẫn lặp lại phát triển Từ đó có thể đưa ra nhận xét trực quan Tuy nhiên mô hình không có yêu cầu xác định nên khó khăn khi ước tính nguồn lực Khó xác định chính xác chi phí để phát triển Cơ sở của Agile chính là 13 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 các cuộc họp ngắn hàng tuần Và Sprint là một phần trong phương pháp tiếp cận scrum 3.Mô hình phát triển tiếp cận lặp (Iterative) Mô hình phần mềm Iterative hay còn được gọi là mô hình tiếp cận lặp Với Iterative, không cần phải xác định đầy đủ mọi yêu cầu khi bắt đầu dự án Chỉ cần xác định trọng tâm yêu cầu chính là được Quá trình phát triển phần mềm này bắt đầu tùy vào chức năng, yêu cầu riêng biệt Cũng có thể được mở rộng sau đó Quá trình lặp lại cho phép tạo ra được những phiên bản mới cho mọi chu kỳ của sản phẩm Thời gian lặp lại kéo dài từ 2 đến 6 tuần Bao gồm phát triển thành phần riêng biệt trong hệ thống Sau đó được thêm vào chức năng mà trước đó đã phát triẻn Ưu điểm của Iterative chính là sự linh hoạt Thời gian làm tài liệu cũng ít hơn so với khoảng thời gian thiết kế Dễ dàng hơn trong việc quản lý các rủi ro Nhược điểm của mô hình là yêu cầu tài nguyên phức tạp trong việc quản lý 4.Mô hình phát triển phần mềm Scrum 14 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Scrum là thuộc họ agile khá linh hoạt Nguyên tắc chủ đạo trong mô hình này là chia nhỏ module cần phát triển Lấy ý kiến của khách hàng, thay đổi cho phù hợp với quá trình phát triển Đảm bảo sản phẩm release có thể đáp ứng mọi vấn đề khách hàng mong muốn Mô hìn chia dự án thành các vòng lặp có tên là các sprint Mỗi sprint sẽ phải mất khoảng 30 ngày để hoàn thành Scrum thực sự rất phù hợp với những dự án cần nhiếu thay đổi Cũng là lựa chọn tốt cho những dự án yêu cầu tốc độ cao Ưu điểm của quy trình phát triển phần mềm Scrum là có thể làm rất nhiều việc Phát hiện được lỗi sớm hơn so với các phương pháp truyền thống Giúp khách hàng thấy được sản phẩm nhanh chóng và đưa ra phản hồi sớm hơn Nhược điểm của Scrum là trình độ của nhóm phải có kỹ năng nhất định Phải trang bị hiểu biết về mô hình agile Hơn nữa khó khăn hơn trong việc xác định thời gian và ngân sách 5.Mô hình xoắn ốc (Spiral) 15 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Mô hình Spiral hay còn gọi là mô hình xoắn ốc Spiral là sự kết hpwj giữa hai mô hình prototyping và mô hình thác nước Mô hình với điểm nhấn quan trọng là có thể phân tích rủi ro Bao gồm các bước thiết lập mục tiêu, đánh giá, giảm thiểu rủi ro Phát triển sản phẩm và lập kế hoạch phát triển Ưu điểm của Spiral là xác định được thời điểm thích hợp để thực hiện giai đoạn tiếp theo Công đoạn này vẫn được thực hiện theo đúng kế hoạch dù công việc giai đoạn trước chưa hoàn thành Kế hoạch được giới thiệu dựa vào dữ liệu được thống kê trong dự án trước Hoặc dựa vào kinh nghiệm của các nhà lập trình phần mềm 6.Mô hình phát triển phần mềm chữ V 16 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 V-shaped hay còn được gọi là mô hình chữ V Mô hình phát triển phần mềm này chính là bản nâng cấp của mô hình thác nước Dựa trên giai đoạn thử nghiệm liên quan đến các giai đoạn phát triển Mô hình này yêu cầu tính kỷ luật cao Giai đoạn tiếp theo chỉ bắt đầu sau giai đoạn trước Mọi giai đoạn đều được kiểm soát với quy trình hiện tại Đảm bảo cho việc chuyển đổi sang giai đoạn tiếp theo có thể thực hiện được Nhược điểm của mô hình này là khó trong việc quản lý mọi rủi ro Không thích hợp áp dụng cho các dự án thay đổi liên tục IV XU HƯỚNG PHÁT TRIỂN PHẦN MỀM HIỆN NAY 1 Thực tế ảo (VR) và Thực tế tăng cường (AR) 17 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Thực tế tăng cường (AR) và Thực tế ảo (VR) đã phát triển từ năm 2019 – 2020 Những công nghệ to lớn này hiện là một phần của cuộc sống: từ ngành công nghiệp trò chơi / giải trí đến kinh doanh cho đến cuộc sống hàng ngày như hình đại diện AR, điều hướng trong nhà AR, hỗ trợ từ xa, tích hợp AI với AR và VR, AR di động, đám mây AR, các sự kiện thể thao ảo và nhận dạng nét mặt 2.Thương mại điện tử Chúng ta đang sống trong kỷ nguyên với sự lên ngôi của smartphone và các trang thương mại điện tử Website thương mại điện tử là trang thông tin điện tử được xây dựng để phục vụ một phần hoặc toàn bộ quá trình trao đổi mua bán hàng hóa, cung ứng dịch vụ, từ việc trưng bày, giới thiệu hàng hóa cho đến thanh toán trực tuyến Hiểu đơn giản, đây là một dạng website bán hàng 18 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 Tại Việt Nam hiện có đến khoảng 60 triệu người sử dụng Internet, mạng xã hội Sự phát triển của mạng Internet đã hình thành thói quen mua sắm trực tuyến ở người dùng, họ đang dần có xu hướng chuyển sang mua sắm trên mạng thay vì đến trực tiếp cửa hàng Chính vì thế, thiết kế website thương mại điện tử, kinh doanh trực tuyến hay phát triển phần mềm thương mại điện tử hiện đang là một trong những xu hướng phát triển phần mềm rất được ưa chuộng hiện nay 3.Trí tuệ nhân tạo Trí tuệ nhân tạo AI (Artificial Intelligence) là công nghệ mô phỏng quá trình suy nghĩ và học tập của con người cho máy móc, đặc biệt là 19 Downloaded by nhim nhim (nhimbien3@gmail.com) lOMoARcPSD|39474592 các hệ thống máy tính Những ứng dụng đặc sắc của AI gồm có: hệ thống chuyên gia, nhận dạng giọng nói, thị giác máy tính (nhận dạng khuôn mặt, vật thể hoặc chữ viết) Công nghệ này được lập trình với mục đích giúp các thiết bị công nghệ thông minh có thể tự động hóa các hành vi thông minh như con người, đồng thời cũng làm thay đổi cách thức chúng ta tương tác với những ứng dụng di động Bên cạnh việc giúp ứng dụng trở nên trực quan hơn, công nghệ AI còn có khả năng đem đến trải nghiệm tốt hơn cho người dùng Với trí tuệ nhân tạo, mọi thông tin của người dùng đều được chuyển qua các thuật toán, từ đó có thể đưa ra những đề xuất thích hợp với sở thích và vị trí của họ AI sẽ hỗ trợ con người dễ dàng hơn trong việc thu thập thông tin, đặt lịch hẹn, sắp xếp lịch trình, đồng thời tối ưu hóa năng suất trong công việc 20 Downloaded by nhim nhim (nhimbien3@gmail.com)