Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Introduction Software Technology, Study Guides, Projects, Research of Software Development

Introduction Software Technology

Typology: Study Guides, Projects, Research

2022/2023

Uploaded on 12/22/2023

anh-tu-mr
anh-tu-mr 🇻🇳

2 documents

1 / 221

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Partial preview of the text

Download Introduction Software Technology and more Study Guides, Projects, Research Software Development in PDF only on Docsity!

TRƯỜ NG ĐẠ I HỌ C CÔNG NGHỆ THÔNG TIN VÀ TRUYỀ N THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

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

BÀ I GIẢ NG

NHẬP MÔN CÔNG NGHỆ PHẦN MỀM

Tà i liệ u lưu hà nh nộ i bộ

TRƯỜ NG ĐẠ I HỌ C CÔNG NGHỆ THÔNG TIN VÀ TRUYỀ N THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

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

BÀ I GIẢ NG

NHẬP MÔN CÔNG NGHỆ PHẦN MỀM

Thá i Nguyên, thá ng 12 năm 2022

  • Mụ c lụ c
  • Các từ viế t tắ t
  • Mộ t số thuậ t ngữ
  • Mở đầ u
  • CHƯƠNG I: TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀ M
  • Bà i 1: Tổng quan về Công nghệ phầ n mềm (Số tiế t: 03 tiế t)
  • 1.1 Giới thiệu tổng quan về Công nghệ phầ n mềm (SE)
  • 1.2 Mộ t số khái niệm cơ bản
  • 1.3 Các lĩnh vực nghiên cứu liên quan đế n SE
  • Bà i 2: Sự phân hoá nghề nghiệp trong Công nghệ phầ n mềm (Số tiế t: 03 tiế t)
  • 1.4 Các trách nhiệm đạo đức và nghề nghiệp
  • 1.5 Nhân tố con người và sự phân hóa nghề nghiệp trong SE
  • Bà i tậ p cuố i chương
  • Chương II: QUY TRÌNH PHẦN MỀ M
  • Bà i 3: Quy trình phầ n mềm (Số tiế t: 03 tiế t)
  • 2.1 Quy trình phầ n mềm
  • 2.2 Mô hình quy trình phầ n mềm
  • Bà i 4: Lậ p kế hoạch quản lý dự án phầ n mềm (Số tiế t: 03 tiế t)
  • 2.3 Lậ p kế hoạch quản lý dự án phầ n mềm
  • 2.4 Case Study: Lậ p kế hoạch dự án phầ n mềm
  • Bà i tậ p cuố i chương
  • Chương III: KỸ NGHỆ YÊU CẦU - RE
  • Bà i 5: Giới thiệu về Kỹ nghệ yêu cầ u (Số tiế t: 03 tiế t)
  • 3.1 Tổng quan về kỹ nghệ yêu cầ u (RE)
  • 3.2 Yêu cầ u phầ n mềm
  • 3.3 Phát triển tậ p yêu cầ u
  • Bà i 6: Quản lý yêu cầ u (Số tiế t: 03 tiế t)
  • 3.4 Quản lý yêu cầ u
  • 3.5 Case study: Kỹ nghệ yêu cầ u phầ n mềm
  • Bà i tậ p cuố i chương
  • Chương IV: THIẾT KẾ PHẦN MỀ M......................................................................................
  • Bà i 7: Thiế t kế phầ n mềm (Số tiế t: 03 tiế t)
  • 4.1 Tổng quan về thiế t kế phầ n mềm........................................................................................
  • 4.2 Quy trình thiế t kế phầ n mềm
  • Bà i 8: Thiế t kế phầ n mềm (Số tiế t: 03 tiế t)
  • 4.2 Quy trình thiế t kế phầ n mềm (Tiế p theo)
  • 4.3 Case study: Thiế t kế phầ n mềm
  • Bà i tậ p cuố i chương
  • CHƯƠNG V. CÀI Đ ẶT PHẦN MỀ M
  • Bà i 9: Tên bà i: Cài đ ặt phầ n mềm (Số tiế t: 03 ti ết)
  • 5.1 Tổng quan về cài đ ặt phầ n mềm
  • 5.2 Phương pháp luậ n lậ p trình...............................................................................................
  • 5.3 Mộ t số nguyên tắ c chung trong lậ p trình
  • 5.4 Tổ chức, quản lý và chia sẻ mã nguồn
  • 5.5 Case study: Cài đ ặt phầ n mềm
  • Bà i tậ p cuố i chương
  • Chương VI: KIỂM THỬ PHẦN MỀ M
  • Bà i 10: Kiểm thử phầ n mềm (Số tiế t: 03 tiế t)
  • 6.1 Xác minh và thẩm định phầ n mềm (Verification& Validation)
  • 6.2 Tổng quan về kiểm thử phầ n mềm
  • 6.3 Quy trình kiểm thử
  • 6.4 Các mức kiểm thử phầ n mềm
  • 6.5 Kỹ thuậ t kiểm thử ph ần mềm
  • 6.6 Case study: Kiểm thử phầ n mềm
  • Bà i tậ p cuố i chương
  • Chương VII: TRIỂN KHAI VÀ BẢO TRÌ PHẦN MỀ M
  • Bà i 11: Tổng quan về Triển khai & Bảo trì phầ n mềm (Số tiế t: 03 tiế t)
  • 7.1 Giới thiệu về triển khai & bảo trì phầ n mềm
  • 7.2 Quy trình triển khai phầ n mềm
  • 7.3 Quy trình bảo trì phầ n mềm..............................................................................................
  • 7.4 Công cụ , kỹ thuậ t trợ giúp
  • 7.5 Case study: Triển khai, bảo trì phầ n mềm
  • Bà i tậ p cuố i chương:
  • Chương VIII: CÁC XU HƯỚNG MỚI TRONG CÔNG NGHỆ PHẦN MỀ M
  • Bà i 12: Các xu hướng mới trong công nghệ phầ n mềm (Số tiế t: 03 tiế t)...............................
  • 8.1 IOT (Internet of Things)
  • 8.2 Công nghệ xác thực không dùng mậ t khẩu (Passwordless Authentication).....................
  • 8.3 Công nghệ thực tại ảo (Virtual reality)
  • 8.4 Tự độ ng hóa quy trình bằng Robot (Robotic Process Automation)
  • 8.5 Công nghệ AI (Artificial Intelligence)
  • 8.6 Hệ thố ng nhúng
  • Bài tậ p cuố i chương
  • Tà i liệu tham khảo
  • Phụ lụ c
  • Các câu hỏ i thường gặp
  • Bà i tậ p thảo luậ n

24 CASE

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

Mở đầ u

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ư:

  • Nhiều dự án chạy vượt ngân sách và tiế n độ. Ví dụ : hệ điều hành OS / 360 (là dự án lớn đầ u tiên – 1000 lậ p trình viên) => dự án kéo dài hàng thậ p kỷ từ nhữ ng năm 1960, cuố i cùng đã tạo ra mộ t trong nhữ ng hệ thố ng phầ n mềm phức tạp nhất vào thời điểm đó; Fred Brooks tuyên b ố rằng ông đã mắ c sai lầ m hàng triệu đô la khi không phát triển mộ t kiế n trúc mạch lạc trước khi bắ t đầ u phát triển hệ thố ng này.
  • Thiệt hại về tài sản: Các lỗi phầ n mềm có thể gây ra thiệt hại về tài sản. Bảo mậ t phầ n mềm kém cho phép tin tặc đánh cắ p danh tính, gây tố n kém thời gian, tiền bạc và danh tiế ng.
  • Sự số ng và cái chế t: Lỗi phầ n mềm có thể gây chế t người. Mộ t số hệ thố ng nhúng được sử dụ ng trong các máy xạ trị đã thất bại thảm hại đế n mức chúng sử dụ ng các liều bức xạ gây chế t người bệnh. Nổi tiế ng nhất trong số nhữ ng thất bại này là sự cố Therac- 25.
  • Peter G. Neumann đã lưu giữ mộ t danh sách về các sự cố và thảm họa của phầ n mềm đương thời, xem tại [8]. 1965 – 1970s: Khủ ng hoảng PM, SE được đề xướng hình thành o 1965: Khủ ng hoảng phầ n mềm Nố i tiế p các thất bại năm 1960, phát triển phầ n mềm tiế p tụ c gặp thất bại:
  • Phát triển phầ n mềm không bắ t cùng nhịp với sự tiế n bộ về công nghệ phầ n cứng.
  • Nhu cầ u ứng dụ ng công nghệ thông tin trong mọi lĩnh vực đời số ng, kinh tế , văn hoá xã hộ i ngày càng tăng, đòi hỏ i phầ n mềm ngày càng nhiều, ngày càng lớn và trở nên phức tạp; bao phủ mọi lĩnh vực kinh tế , đời s ố ng và các hoạt độ ng xã hộ i, dẫn đế n thực trạng: Phầ n mềm không đáp ứng nhu cầ u.
  • Các sản phẩm phầ n mềm không đáp ứng kịp các yêu cầ u của người sử dụ ng. Phầ n mềm tiềm ẩn nhiều rủi ro khi sử dụ ng, nhiều lỗi, chất lượng không đảm bảo (tiêu chí chất lượng giai đoạn này: chạy nhanh, giải được bài toán lớn (dùng bộ nhớ hiệu quả) vì công nghệ sử dụ ng giai đoạn này là Bóng đi ện tử (tính toán chậ m, bộ nhớ nhỏ )).
  • Dự án kéo dài, thiệt hại về tài sản, lợi nhuậ n thu được thấp, … Cụ thể [ 30 ]:  6 dự án triển khai thì 2 dự án thất bại  Trung bình thời gian thực hiện bị kéo dài 50% (cá biệt lên tới 200 – 300%)  Các dự án lớn dễ bị thất bại  3/4 các hệ thố ng lớn có lỗi khi thực thi

 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:

  • Làm theo cảm tính: Dựa vào kinh nghiệm, không có phương pháp đủ tố t
  • Phương tiện thô sơ: Chủ yế u là ngôn ngữ lậ p trình bậ c thấp
  • Làm đơn l ẻ: Do mộ t hoặc mộ t số cá nhân thực hiện Kh ắ c ph ụ c kh ủ ng hoảng ph ầ n mềm: Dự án phần mềm của US defence 0

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

Project value $M

Projects

  • 1975 – Máy tính PC đầ u tiên xuất hiện (phụ c vụ chủ yế u cho doanh nghiệp)
  • 1975+ - SQL (IBM). 1980s: K ết thúc khủ ng hoảng phầ n mềm, phân tích & thiế t kế cấu trúc hoàn thiệ n, LT HĐT ra đời Nhữ ng năm 1980 tiế p tụ c có nhữ ng thay đổi lớn trong ngành và tình trạng khủng hoảng phầ n mềm bắ t đầ u kế t thúc. Các ngôn ngữ và công cụ mới bắ t đầ u xuất hiện hướng tới kỹ thuậ t tố t hơn – phát triển phầ n mềm hướng đố i tượng. o 1980 - Ngôn ngữ lậ p trình Ada ra mắ t, được thiế t kế bởi Jean Ichbiah o 1982 - Các công cụ CASE bắ t đầ u xuất hiện trên thị trường nhằm nâng cao chất lượng của phầ n mềm, giảm chi phí và thời gian phát triển sản phẩm. o 1985 - Ngôn ngữ lậ p trình C ++ (Bjane Strousop) lầ n đầ u tiên được mắ t. C++ hỗ trợ cả 2 biểu đồ lậ p trình hướng đố i tượng và hư ớng thủ tụ c, C++ liên tụ c được cậ p nhậ t và trở thành mộ t trong các ngôn ngữ được sử dụ ng phổ biế n hiện nay. o 1987 – Pert được phát triển bởi Larry Wall, là mộ t ngôn ng ữ kịch bản Unix đa mụ c đích để tạo sinh và xử lý các báo cáo dễ dàng hơn. o 1989 - Các công ty bắ t đầ u cung cấp quyền truy cậ p vào internet, quyền truy c ập chủ yế u được cấp cho các nhà khoa học và trong quân đ ộ i. 1990s: Kỷ nguyên internet; Các quy trình phầ n mềm phát triển mạnh Thậ p kỷ này có nhiều bước tiế n lớn trong ngành như: Lậ p trình hướng đố i tượng bắ t đầ u trở nên phổ biế n, Internet ra mắ t và phát triển mạnh; mộ t số cách tiế p c ận phát triển phầ n mềm được ra đời: o 1990 - Tim Berners-Lee phát triển WorldWideWeb - trình duyệt web đầ u tiên và tạo ra HTTP, HTML, các trang web đầ u tiên. “Dữ liệu lớn – Big Data” bắ t đầ u phát triển. o 1991 - Ngôn ngữ lậ p trình Python ra mắ t lầ n đầ u tiên, và hiện nay đã trở thành mộ t trong nhữ ng ngôn ngữ lậ p trình phổ biế n nhất. Phát triển ứng dụ ng nhanh (RAD) ra đời. o 1994 : PHP (Danish-Canadian) ra mắ t, là mộ t ngôn ngữ kịch bản đa mụ c tiêu, hướng tới phát triển các website độ ng. Phương pháp phát triển hệ thố ng độ ng (DSDM) hình thành. o 1995 - Ngôn ngữ lậ p trình Java (James Gosling) được phát hành. Java là ngôn ngữ được sử dụ ng phổ biế n nhất với tên gọi “ Viết mộ t lầ n, chạ y mọi nơi ”. JavaScript ra đời và đư ợc sử dụ ng phổ biế n trong lậ p trình web. Mô hình phầ n mềm Scrum ra mắ t. o 1996 - Học viện Công nghệ Rochester giới thiệu chương trình cử nhân đầ u tiên về kỹ thuậ t phầ n mềm.

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.