




























































































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
Introduction Software Technology
Typology: Study Guides, Projects, Research
1 / 221
This page cannot be seen from the preview
Don't miss anything!
ThS. Hoàng Thị Cành ThS. Nguyễn Hồng Tân ThS. Phạm Thị Thương ThS. Nguyễn Thu Phương TS. Quách Xuân Trưởng ThS. Nguyễn Thị Dung
ThS. Hoàng Thị Cành ThS. Nguyễn Hồng Tân ThS. Phạm Thị Thương ThS. Nguyễn Thu Phương TS. Quách Xuân Trưởng ThS. Nguyễn Thị Dung
Thá i Nguyên, thá ng 12 năm 2022
Computer-Aided Software Engineering – Công nghệ phầ n mềm được trợ giúp bởi máy tính 25 IDE Integrated Development Environment – Môi trường phát triển tích hợp 26 SDLC Software Development Life Cycle – Vòng đời phát triển phầ n mềm 27 CS Computer Science – Ngành khoa học máy tính 28 IS Information System – Ngành hệ thố ng thông tin 29 ACM Association for Computing Machinery – Hiệp hộ i máy tính 30 IEEE Institute of Electrical and Electronics Engineers – Hiệp h ộ i kỹ sư điện và đi ện tử 31 WIPO World Intellectual Property Organization – Tổ chức sở hữ u trí tuệ thế giới 32 WTO World Trade Organization – Tổ chức thương mại quố c tế 33 KE Knowledge Engineering – Kỹ sư tri thức 34 DBA Database Administrator – Người quản trị cơ sở dữ liệu 35 QA Quality Assurance – Người chịu trách nhiệm đảm bảo chất lượng sản phẩm 36 RE Requirement Engineering – Kỹ nghệ yêu cầ u 37 LYBSYS Library System – Hệ thố ng thư viện 38 SRS Software Requirements Specification Document – Tài liệu đặc tả yêu cầ u phầ n mềm 39 UC Use Case – Trường hợp sử dụ ng 40 SUPL Supplementary Requirements – Yêu cầ u bổ sung 41 ATM Automatic Teller Machine – Máy rút tiền tự độ ng 42 RMP Requirements Management Plan – Bản kế hoạch quản lý yêu cầ u 43 STRQ Stakeholder Requests – Các yêu cầ u từ phía đố i tác 44 FEAT FEATures – Các tính năng của sản phẩm 45 CI/CD Continuous Integration/Continuous delivery – Tích hợp và phát hành ứng dụ ng liên tụ c
46 UML Unified Modeling Language – Ngôn ngữ mô hình hoá hợp nhất 47 STLC Software Testing Life Cycle - Vòng đời kiểm thử phầ n mềm 48 UT Unit Testing – Kiểm thử đơn vị 49 SOA Service - Oriented Architecture – Kiế n trúc hướng dịch vụ 50 SVN Subversion - Hệ th ố ng quản lý phầ n tài nguyên (code, hình ảnh, video…) của mộ t dự án
Chuyên gia ứng dụ ng Là nhữ ng người chịu trách nhiệm tư vấn cho đ ộ i dự án về các loại ứng dụ ng phầ n mềm cầ n sử dụ ng 13 Chuyên gia mạng cụ c bộ Là nhữ ng người chịu trách nhiệm thiế t kế , hướng dẫn, lắ p đặt mạng cụ c bộ ; quản lý, duy trì khả năng hoạt độ ng của mạng cụ c bộ ; giám sát tài nguyên cung cấp qua mạng cụ c bộ , quản lý cấu hình và khắ c phụ c các vấn đề về mạng cụ c bộ 14 Chuyên gia đảm bảo chất lượng Là nhữ ng người chịu trách nhiệm lậ p kế hoạch đảm bảo chất lượng dự án, chịu trách nhiệm giám sát, đánh giá và quản lý các vấn đề về chất lượng liên quan đế n dự án phầ n mềm 15 Đào t ạo viên Là nhữ ng người chịu trách nhiệm tìm hiểu, n ắm bắ t các công nghệ, công cụ , kiế n thức mới và đào t ạo độ i dự án cũng như đào t ạo khách hàng sử dụ ng sản phẩm 16 Hệ thố ng phầ n mềm Là sản phẩm tích hợp nhiều phầ n mềm cộ ng thêm yế u tố phầ n cứng liên quan đế n môi trường vậ n hành 17 Hệ thố ng thông tin Là ngành nghiên cứu về các cách thức tổ chức và quản lý các hệ thố ng thông tin 18 Người hỗ trợ sản phẩm Là nhữ ng người chịu trách nhiệm làm việc với nhóm người dùng cuố i (cài đ ặt, thiế t lậ p cấu hình,…); bán hàng; trực đường dây nóng hỗ trợ khách hàng sử dụ ng sản phẩm; là ngư ời có khả năng giao tiế p tố t. 19 Kiểm soát viên Là nhữ ng người kiểm tra, giám sát quá trình triển khai dự án so với lịch biểu, lậ p báo cáo trình lãnh đạo n ếu phát hiện vấn đề, rủi ro phát sinh 20 Kỹ nghệ ngược Là quy trình phân tích hệ thố ng để xác định các thành phầ n và mố i quan hệ giữ a chúng từ đó tạo dạng biểu diễn mới của hệ thố ng ở mức độ trừ u tượng hoá cao hơn 21 Kỹ nghệ yêu cầ u Là quy trình xác đ ịnh mụ c tiêu dự án; định nghĩa; lậ p tài liệu yêu c ầu; và quản lý các yêu cầ u trong suố t tiế n trình dự án 22 Kỹ sư phầ n mềm Là nhữ ng người áp dụ ng các nguyên t ắc của công nghệ phầ n mềm vào việc thiế t kế , phát triển, bảo trì, kiểm thử, và đánh giá phầ n mềm
Kỹ sư trí tuệ nhân tạo Là nhữ ng người chịu trách nhiệm cố vấn cho độ i dự án xác định, thiế t kế và cài đ ặt trí tuệ vào các ứng dụ ng. Kỹ sư trí tuệ nhân tạo thường có trình độ chuyên môn về AI cao hơn các kỹ sư tri thức 24 Kỹ sư tri thức Tương tự như các kỹ sư ph ần mềm nhưng được chuyên môn hoá các kỹ năng để xây dựng các hệ thố ng trí tuệ nhân tạo, hệ tri thức 25 Khoa học máy tính Là ngành nghiên cứu về máy tính và các hệ thố ng tính toán, quy trình và cách hoạt độ ng của máy tính, cải thiện và nâng cao hiệu suất cho các thuậ t toán, công nghệ mới, giao tiế p giữ a máy tính và con ngư ời 26 Chuyên gia lậ p kế hoạch công nghệ Là nhữ ng người chịu trách nhiệm nắ m b ắt các xu hướng phát triển công nghệ, tư vấn lựa chọn và áp dụ ng các công nghệ thích hợp cho tổ dự án 27 Lậ p trình viên Là nhữ ng người sử dụ ng các ngôn ngữ lậ p trình và công cụ để xây dựng và bảo trì các sản phẩm phầ n mềm 28 Lậ p trình viên hệ thố ng Là nhữ ng người chịu trách nhiệm cài đ ặt, bảo dưỡng các hệ điều hành, các ứng dụ ng hỗ trợ ph ần mềm; có thể giám sát hàng trăm ứng dụ ng vậ n hành trên nền tảng, theo dõi, khắ c phụ c nhữ ng sự cố liên quan đế n phầ n mềm hệ thố ng 29 Mô hình quy trình phầ n mềm Là mộ t thể hiện đơn giản của mộ t quy trình phầ n mềm nhìn từ góc độ cụ thể 30 Người vi ết các chuẩn & kỹ thuậ t Là nhữ ng người chịu trách nhiệm xây dựng các chính sách, thủ tụ c chuẩn hoá cho tổ chức phầ n mềm phù hợp với các quy định chung về nghề nghiệp 31 Nhà phân tích & kỹ sư truyền thông Là nhữ ng người chịu trách nhiệm phân tích, thiế t kế , đàm phán và lắ p đặt các thiế t bị và phầ n mềm truyền thông; có thể làm việc trên mainframe hoặc các mạng truyền thông, kiế n thức nền tảng phải có gồm: điện tử, kỹ thuậ t, các ứng dụ ng truyền thông, khoa học máy tính và các công nghệ truyền thông. 32 Nhà tư v ấn Là nhữ ng người có sự hiểu biế t rộ ng về mọi vấn đề, có kiế n thức và kinh nghiệm thực hành, thực tế về dự án phầ n mềm. Số năm kinh nghiệm càng cao thì kiế n thức tích luỹ càng nhiều
44 Thẩm định yêu cầ u Là hoạt độ ng kiểm tra đánh giá các tiêu chí chất lượng của từ ng yêu cầ u nhằm phát hiện các vấn đề tiềm ẩn. 45 Thuộ c tính của yêu cầ u Là thông tin cầ n quản lý của yêu cầ u 46 Triển khai phầ n mềm Là quá trình lắ p/cài đ ặt thêm các tính năng mới hoặc tích hợp phầ n mềm mới vào môi trư ờng vậ n hành của người dùng, nơi các ứng dụ ng và dịch vụ khác của họ đang vậ n hành 47 Vòng đời kiểm thử phầ n mềm Gồm mộ t loạt các hoạt độ ng do các Testers thực hiện theo phương pháp có sẵn để kiểm thử sản phẩm phầ n mềm có đáp ứng được yêu cầ u đề ra hay không 48 Vòng đời phát triển phầ n mềm Là mộ t chuỗi các hoạt độ ng được thực hiện bởi các Developers để thiế t kế và phát triển thành mộ t phầ n mềm chất lượng cao 49 Yêu cầ u phầ n mềm Là mộ t phát biểu/mô tả/đặc tả về dịch vụ mà hệ thố ng cung cấp, hoặc mô tả về mộ t ràng buộ c/điều kiện/phụ thuộ c mà hệ thố ng phải thoả mãn; hoặc cũng có thể là mộ t mụ c tiêu mà hệ th ố ng phầ n mềm phải đạt được 50 Yêu cầ u chức năng Là các yêu cầ u phản ánh trực tiế p các chức năng của phầ n mềm 51 Yêu cầ u phi chức năng Là các ràng buộ c, điều kiện, phụ thuộ c, mụ c tiêu, thuộ c tính chất lượng của phầ n mềm 52 Yêu cầ u miền Là các yêu cầ u được phát biểu gắ n với các tri thức/thuậ t ngữ của miền áp dụ ng
Bài giảng Nhập môn Công nghệ phần mềm được tậ p thể giảng viên thuộ c bộ môn Công nghệ phần mềm biên soạn nhằm phục vụ cho việc giảng dạy của giảng viên và học tập của sinh viên Trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên. Tập bài giảng này được biên soạn theo nội dung đề cương chi tiết học phần Nhập môn Công nghệ phần mềm ở trình độ đại học. Nội dung tài liệu cung cấp cho sinh viên những kiến thức cơ bản liên quan đến các đối tượng chính yếu trong lĩnh vực công nghệ phần mềm như qui trình phát triển phần mềm, lập kế hoạch, quản lý, phân tích, thiết kế, công cụ và môi trường phát triển phần mềm, kiểm thử .... Đồng thời, kiến thức của môn học này làm cơ sở để sinh viên học tốt các học phần chuyên ngành ở các học kỳ tiếp theo. Để biên soạn tài liệu này, chúng tôi đã tham khảo nhiều cuốn sác h được dùng phổ biến trên thế giới về kỹ nghệ phần mềm. Cũng như sử dụng thêm các tài liệu nghiên cứu gần đây để cập nhật các phương pháp và kết quả nghiên cứu mới về lĩnh vực này như được nêu trong phần tài liệu tham khảo ở cuối cuốn tài liệu. Nội dung tài liệu gồm 8 chương: Chương 1. Tổng quan về công nghệ phần mềm Chương 2. Quy trình phần mềm Chương 3. Kỹ nghệ yêu cầu (RE) Chương 4. Thiết kế phần mềm Chương 5. Cài đặt phần mềm Chương 6. Kiểm thử phần mềm Chương 7. Triển khai và bảo trì phần mềm Chương 8. Các xu hướng mới trong công nghệ phần mềm Mặc dù tậ p thể tác giả đã rất nỗ lực dành nhiều thời gian và công sức để biên soạn, song khó tránh khỏ i các thiế u sót. Chúng tôi kính mong quý thầ y cô và các bạn sinh viên đóng góp ý kiế n để cuố n bài giảng được hoàn thiện hơn. Chúng tôi xin trân trọng cảm ơn. Thái Nguyên, Tháng 12 năm 2022 Các tác giả
chú trọng, lậ p trình tuầ n tự,..). Phát triển phầ n mềm gặp nhiều vấn đề ở giai đoạn này như:
Quá trình phân tích yêu cầ u (5% công sức): Để lại 55% lỗi, có 18% phát hiện được Quá trình thi ết kế (25% công sức): Để lại 30% lỗi, có 10% phát hiện được Quá trình mã hóa, kiểm thử và bảo trì : Để lại 15% lỗi, có 72% phát hiện được Chi cho phát triển lớn, lợi nhuậ n thấp Hì nh 1.1: Chi phí chi cho các dự án phầ n mềm củ a Bộ quốc phòng Mỹ ( 1970 ) Dẫn đến tình trạng khủng hoảng phần mềm trên toàn thế giới. o 1968: Hộ i nghị kỹ thuậ t phầ n mềm NATO Để giải quyế t vấn đề trên mộ t hộ i nghị thế giới đã được tổ chức để bàn về cách giải quyế t - Hộ i nghị kỹ thuậ t phầ n mềm NATO bàn về vấn đề khủng hoảng phầ n mềm lầ n đầ u tiên được tổ chức vào năm 1968. L ầ n thứ hai diễn ra mộ t năm sau đó. Hộ i nghị đã thiế t lậ p các hướng dẫn, các thực tiễn tố t nhất để phát triển phầ n mềm. Michael A.Jackson đã xác định nguyên nhân chính gây ra khủng hoảng phầ n mềm, đó là vi ệc sản xuất phầ n mềm thiế u chuyên nghiệp theo phương pháp thủ công. Phương pháp này không thích hợp cho việc phát triển các sản phẩm phầ n mềm lớn và phức tạp. Phương pháp thủ công thể hiện như sau:
5 1
5 2
5 3
5 Paid for but not received Delivered but not used Abandoned or reworked Used after change Used as delivered
o 1997 – C#, VB.Net & ASP.Net (Microsoft) được trình diện trong thế giới lậ p trình. o 1998 - Trường Sau đại học Hải quân Hoa Kỳ cung cấp chương trình tiế n sĩ đầ u tiên về kỹ thuậ t phầ n mềm. RUP (IBM, 1998) o 1999 - Kent Beck giới thiệu XP, mộ t kiểu phát triển phầ n mềm linh hoạt (Agile) được thiế t kế để đáp ứng nhanh chóng các yêu cầ u thay đổi của người dùng. 2000s: Các quy trình PM linh hoạt, gọn nhẹ (Light Weight Methodologies) Thiế t kế với các ngôn ngữ không còn được chú trọng, giai đoạn này tậ p trung vào: (1) hoàn thiện & cải tiế n nhữ ng gì đã đạt được trong hai thậ p kỷ trước; (2) xây dựng các quy trình phầ n mềm linh hoạt, gọn nhẹ, đáp ứng tố t hơn các yêu cầ u thay đổi của khách hàng, tăng hi ệu xuất và tính tiện ích của quy trình. Lậ p trình trí tuệ nhân tạo bắ t đầ u được quan tâm. o 2001 - Tuyên ngôn phát triển phầ n mềm Agile được xuất bản. Nó bao gồm các giá trị và nguyên tắ c của phát triển phầ n mềm Agile, tậ p trung vào việc phát triển thông qua nỗ lực hợp tác của các nhóm chức năng chéo và khách hàng. o 2006 – Scrum bản đầ y đủ bắ t đầ u được sử dụ ng phổ biế n. Scrum - mộ t quy trình nhanh sử dụ ng khuôn khổ lặp đi lặp lại và gia tăng đ ể phát triển phầ n mềm phức tạp, được giới thiệu bởi Ken Schwaber và Mike Beedle. Phương pháp này đã xu ất hiện từ năm 1995 nhưng chỉ bắ t đầ u được sử dụ ng rộ ng rãi ở nhữ ng năm 2000. o 2019 : Ngôn ngữ lậ p trình GO ra mắ t, được thiế t kế bởi các kỹ sư của Google nhằm tạo ra phầ n mềm đáng tin cậ y và hiệu quả sử dụ ng cách tiế p cậ n phát triển gọn nhẹ. Go cũng sử dụ ng mộ t tậ p hợp các gói để quản lý phụ thuộ c mộ t các hiệu quả. Rất nhiều các tổ chức sử dụ ng Go như Google, Cloudflare, Dropbox, MongoDB, Netflix, SoundCloud, Twitch và Uber. 2010s: Điệ n toán đám mây; C ách thức training; Lậ p trình mobile đa nền tảng Trọng tâm của giai đoạn này hư ớng tới công nghệ điện toán đám mây và phát triển phầ n mềm hướng dịch vụ. Việc giải quyế t nhu cầ u về nguồn lực kỹ sư phầ n mềm với phong cách học tậ p mới cũng được chú trọng. Các quy trình ph ần mềm linh hoạt tiế p tụ c được phát triển như SAFe; LeSS (Large-Scale Scrum) & DevOps Framework. Các ngôn ngữ lậ p trình đa nền tảng, lậ p trình mobile ra đời và phát triển mạnh mẽ. o 2010 - Điện toán đám mây bắ t đầ u phát triển, dẫn đế n nhu cầ u về phầ n mềm dưới dạng dịch vụ tăng và t ạo ra hướng đi mới cho các kỹ sư SE. o 2011 - Các bootcamps mã hóa bắ t đầ u phát triển. Trong vòng chưa đ ầy 8 năm, khoảng 95 bootcamps được giới thiệu. Bootcamps là mộ t cách để giảng dạy công nghệ mới nhất theo mộ t chương trình chuyên sâu được thiế t kế để giúp sinh viên đáp ứng nhu cầ u nghề nghiệp.