Kỹ nghệ phần mềm và khoa học máy tính

GS John Vu11/06/2026 12:00
Kỹ nghệ phần mềm và khoa học máy tính

Một sinh viên hỏi tôi: “Tại sao tôi cần học Kĩ nghệ phần mềm thay vì Khoa học máy tính? Sau rốt, chúng là như nhau và sau khi tốt nghiệp đằng nào chúng tôi cũng sẽ làm việc trong công nghiệp phần mềm?”

Trả lời: “Kĩ sư phần mềm và khoa học máy tính là KHÔNG như nhau. Từng lĩnh vực hội tụ vào các khía cạnh khác nhau của công nghệ tính toán và dẫn tới các nghề nghiệp khác nhau trong công nghiệp phần mềm. Trong quá khứ, phần lớn phần mềm đều nhỏ và đơn giản, cho nên hội tụ là vào “khoa học về phát triển thuật toán” hay mã hiệu quả để chạy trên máy tính. Chẳng hạn, lưu giữ thông tin hay tự động tính công thức toán học hay qui trình. Đó là lí do tại sao phần lớn các chương trình khoa học máy tính yêu cầu nhiều năm học về toán và vài ngôn ngữ lập trình. Ngày nay, phần mềm là lớn và phức tạp hơn, cho nên hội tụ là vào “kĩ nghệ quản lí qui trình” hay phát triển phần mềm hiệu quả để giải quyết vấn đề phức tạp. Chẳng hạn, một trong các nguyên lí của độ phức tạp phần mềm là: “Cứ mỗi mười phần trăm tăng lên trong độ phức tạp của vấn đề, có việc tăng một trăm phần trăm trong độ phức tạp của giải pháp phần mềm. Vấn đề càng phức tạp, giải pháp sẽ càng phức tạp hơn nhiều so với được nghĩ trước đó. Đó là lí do tại sao bạn cần “kĩ sư qui trình” để giải quyết vấn đề thay vì dựa trên “khoa học về thuật toán” để tạo ra mã hiệu quả.

Bởi vì hội tụ là vào toàn bộ qui trình phát triển, người kĩ sư phần mềm sẽ tuân theo tập các qui tắc và nguyên lí thay vì nhảy vào trong giải pháp (viết mã) nhanh chóng. Chẳng hạn một trong những nguyên nhân thông thường nhất làm cho thất bại dự án là yêu cầu không ổn định. Người kĩ sư phần mềm học về “kĩ nghệ yêu cầu” sẽ biết cách kiểm điểm, kiểm nghiệm, rồi ưu tiên hoá các yêu cầu này để đảm bảo rằng chúng được xác định tốt và đủ ổn định trước khi chuyển sang pha tiếp của thiết kế. Khi chuyển từ yêu cầu sang thiết kế, người kĩ sư phần mềm tốt đã học về “kiến trúc và thiết kế” sẽ biết rằng bên cạnh các yêu cầu được xác định, có nhiều “yêu cầu suy dẫn”. Thực ra, sẽ có nhiều “yêu cầu suy dẫn” hơn là yêu cầu nguyên thuỷ và đó là lí do tại sao pha thiết kế thường lâu hơn để đảm bảo mọi thứ được tính tới trước khi chuyển vào trong pha thực hiện.

Người kĩ sư phần mềm hiếm khi làm việc cô lập mà phần lớn trong tổ vì phát triển phần mềm bao giờ cũng là nỗ lực tổ. Tri thức và kĩ năng của từng thành viên là cốt yếu cho thành công của dự án. (Làm việc tổ bao giờ cũng được dạy trong chương trình kĩ nghệ phần mềm nhưng không được dạy trong khoa học máy tính). Bởi vì yếu tố quan trọng nhất trong giải quyết vấn đề phức tạp KHÔNG phải là công cụ, KHÔNG phải là thuật toán, KHÔNG phải là kĩ thuật mà là kĩ năng của bản thân người phát triển. Người phát triển có kĩ năng cao có thể có năng suất cao hơn (tới 30 lần tốt hơn) người phát triển thường.

Chương trình khoa học máy tính hội tụ nhiều vào viết mã hiệu quả (thuật toán) cho nên chất lượng hầu hết là về khiếm khuyết phần mềm. Tuy nhiên, chương trình kĩ nghệ phần mềm xác định chất lượng theo cách khác. Chất lượng là vấn đề thiết kế tốt chứ không chỉ là viết mã tốt. Nếu dự án yêu cầu chất lượng cao thì điều đó phải được xem xét sớm trong vòng đời phát triển phần mềm. Chất lượng là tuyển tập các thuộc tính như hiệu năng, tính dùng được, tính khả chuyển, tính tin cậy, tính hiệu quả, tính kiểm thử được, tính hiểu được và tính sửa đổi được. Kĩ nghệ phần mềm cũng tin rằng chất lượng không cùng những điều như thoả mãn của người dùng, đáp ứng yêu cầu hay đáp ứng các mục tiêu chi phí và lịch biểu mà chúng là tất cả có liên quan. Thực tại, thoả mãn của người dùng = sản phẩm chất lượng + đáp ứng yêu cầu + được chuyển giao khi cần + chi phí thích hợp.

Chương trình khoa học máy tính hội tụ vào phát hiện và loại bỏ khiếm khuyết. (Phần lớn những người phát triển dành đại thể 40 phần trăm thời gian của họ cho kiểm thử). Lập trình và kiểm thử là yếu tố quan trọng trong chương trình khoa học máy tính. Chương trình kĩ nghệ phần mềm hội tụ nhiều vào chất lượng của qui trình phát triển bởi vì họ tin rằng chất lượng của sản phẩm phần mềm tuỳ thuộc vào qui trình phát triển tạo ra sản phẩm đó. Bằng việc hội tụ nhiều vào từng pha, loại bỏ khiếm khuyết ở từng pha thì đến cuối bạn sẽ có ít khiếm khuyết phải giải quyết. Thay vì mất nhiều thời gian cho kiểm thử, kĩ sư phần mềm hội tụ nhiều vào giám định, kiểm điểm ở từng pha. (Thực ra, không có chỉ một cách tiếp cận tốt nhất tới loại bỏ  khiếm khuyết phần mềm. Tổ hợp của nhiều cách tiếp cận, như giám định, kiểm điểm, và kiểm thử là cần thiết).

Mặc dầu với cả hai chương trình sinh viên tốt nghiệp sẽ bắt đầu trong nghiệp phần mềm ở những vị trí tương tự như người lập trình, người kiểm thử, và lãnh đạo kĩ thuật. Qua thời gian, phần lớn sinh viên tốt nghiệp khoa học máy tính sẽ làm việc nhiều về phía kĩ thuật hội tụ vào các thuật toán phức tạp, phương pháp khoa học, phương pháp hình thức v.v.. Phần lớn sinh viên tốt nghiệp kĩ nghệ phần mềm sẽ làm việc ở phía quản lí hội tụ vào quản lí dự án, kiến trúc hệ thông, quản lí nhóm dự án, và cải tiến qui trình.

English version

Software Engineering and Computer Science

A student asked me: “Why do I need to study Software Engineering instead of Computer Science? Afterall, they are the same and after graduate, we will work in the software industry anyway?”

Answer: “Software Engineer and Computer Science are NOT the same. Each field focuses on different aspects of computing technology and lead to different careers in the software industry. In the past, most software are small and simple, so the focusing is on the “Science of algorithm development” or efficient code to run on computers. For example, storing information or automate a mathematic formula or process. That is why most Computer Science programs require many years of mathematics and several programming languages. Today, software are larger and more complex, so the focusing is on the “Engineering of process management” or efficient software development to solve complex issues. For example, one of the principle of software complexity is: “For every ten percent increase in problem complexity, there is an increase of one hundred percent in software solution complexity. The more complex the problem, the solution will be much more complex than previously thought. That is why you need to “Engineer the process” to solve the problem rather than relying on the “science of algorithm” to create efficient code.

Because the focus is on the entire development process, a Software Engineer will follow a set of rules and principles rather than jumps into a solution (write code) quickly. For example one of the most common causes of projects failure is unstable requirements. A Software Engineer who studies “Requirement Engineering” will know how to review, validate, then prioritize these requirements to ensure that they are well defined and stable enough before moving on to the next phase of design. When move from requirements to design, a good Software Engineer who studies “Architect and Design” will know that beside the defined requirements, there are many “derived requirements.” As a matter of fact, there will be more “derived requirements” than the original requirements and that is why the design phase is often take longer to ensure everything is taken into consideration before moving into the implementation phase.

A Software Engineer rarely works in isolation but mostly in team as software development is always a team efforts. The knowledge and skills of each team member are critical to the project success. (Teamwork is always taught in Software Engineering program but not in Computer Science). Because the most important factor in solving complex problem is NOT the tools, NOT the algorithms, NOT the techniques but rather the skills of the developers themselves. A highly skilled developers can be more productive (up to 30 times better) than a mediocre developers.

Computer science program focuses a lot on efficient code (Algorithm) so quality is mostly about software defects. However, Software Engineering program defines quality differently. Quality is a matter of good design than of good coding. If a project requires high quality then it must be considered early in the development life cycle. Quality is a collection of attributes such as performance, usability, portability, reliability, efficiency, testability, understandability, and modifiability. Software Engineering also believe that quality is not the same as satisfying users, meeting requirements, or meeting cost and schedule targets but they are all related. Actually, user satisfaction = quality product + meets requirements + delivered when needed + appropriate cost.

Computer science program focuses on detection and removal of defects. (Most developers spends roughly 40 percent of their time in testing). Programming and Testing are the important factors in the Computer Science program. Software Engineering program focuses more on the quality of the development process because they believe that the quality of the software product depends on the quality of the process that creates the product. By focusing more at each phase, remove defects at each phase then in the end you will have less defects to deal with. Instead of more time on testing, software engineers are focusing more on inspections, reviews at each phase. (In reality, there is no single best approach to software defect removal. A combination of several approaches, such as inspections, reviews, and testing, is necessary).

Although both programs graduates will start in the software industry in similar positions such as programmers, testers, and technical leaders. Over time, most Computer Science graduates will be working more on the technical side focusing on sophisticated algorithms, scientific methods, formal methods etc. Most Software Engineering graduates will be working on the management side focusing on project management, system architect, portfolio management, and process improvement.

 


Gửi bình luận
(0) Bình luận
1

Trước khi tốt nghiệp

"Một số bạn sinh viên bảo em rằng không có việc làm có sẵn cho sinh viên tốt nghiệp đại học như em nhưng thầy giáo của em lại nói rằng có nhiều. Em KHÔNG biết tin ai, đôi khi em tự hỏi mình liệu em có chọn đúng lĩnh vực học tập hay không."
2

Tài liệu kiểm thử

Một độc giả gửi cho tôi một email sau khi đọc bài “Người kiểm thử mới cần gì?” Người đó viết “Trong nghề của tôi như người kiểm thử, tôi chưa bao giờ thấy bất kì tài liệu kiểm thử nào. Người kiểm thử bao giờ cũng bận rộn, không có thời gian cho bất kì cái gì khác. Người kiểm thử có cần làm tài liệu không? Tài liệu kiểm thử có quan trọng không? Xin làm ơn giải thích.”
3

Cơ hội nghề nghiệp

Công nghệ thông tin (CNTT) là lĩnh vực lớn nơi mọi người có thể xây dựng chuyên môn nghề nghiệp riêng của họ theo nhiều cách.
4

Người kiểm thử mới cần làm gì?

Tôi nhận được một email từ một sinh viên: “Em sẽ tốt nghiệp trong Khoa học máy tính năm nay và tìm việc làm. Có thể là em sẽ bắt đầu làm người kiểm thử phần mềm. Có khác biệt giữa trường học và công nghiệp liên quan tới kiểm thử phần mềm không? Kiểm thử thực tế được thực hiện trong công ti phần mềm thế nào? Thầy có ‘lời khuyên thực hành’ nào không?”
5

Kế hoạch hiệu năng kiểm thử

Ngày nay hầu hết các công việc CNTT được khoán ngoài nhiều nhất đều trong kiểm thử phần mềm.

Giáo sư và việc dạy

Một người bạn bảo tôi: “Tôi không biết điều gì xảy ra cho sinh viên đại học của tôi ngày nay. Dường như là nhiều người KHÔNG muốn học cái gì cả. Chúng ta đã lớn lên trong thời khó khăn khi việc vào đại học là đặc quyền. Ngày nay sinh viên không biết họ được may mắn thế nào để có cơ hội tốt như thế.”

Tại sao vào đại học

Một sinh viên hỏi tôi: “Tại sao tôi cần vào đại học? Tại sao tôi phải học nhiều lớp trong bốn năm để làm việc trong công nghiệp phần mềm khi tôi có thể học lớp lập trình trong vài tháng và vẫn có khả năng tìm được việc của người lập trình?”

Các kiểu sinh viên khác nhau

Học tập đại học là đầu tư thời gian, công sức và tài chính để thu được tri thức và kĩ năng. Tuy nhiên, một số sinh viên tới đại học với mong đợi rằng họ sẽ nhận được những điều có giá trị này “một cách tự động” không mấy nỗ lực.

Steve Jobs: Nhà doanh nghiệp

Định nghĩa của tôi về nhà doanh nghiệp là “Ai đó có sở hữu tri thức duy nhất và nhận ra cơ hội kinh doanh để truyền tri thức đó vào thành sản phẩm mới và đảm nhiệm việc đó và nhận rủi ro về việc đó.” Tất nhiên, bên cạnh tri thức đặc biệt, nhà doanh nghiệp phải có đam mê mạnh, động cơ, “công nghệ tiên tiến”, và ham muốn tiếp tục học để thành công trong khu vực này.

Gian lận bài tập về nhà

Tuần trước tôi nhận được một email người gửi viết: “Người bạn tốt nhất của em đề nghị em cho anh ấy chép bài tập về nhà của em. Em không muốn mất bạn nhưng cũng không muốn anh ta gian lận. Xin thầy cho lời khuyên.”

Kiểm thử phần mềm

Kiểm thử là việc thực hiện một chương trình để tìm ra khiếm khuyết.

Việc làm tốt nhất ở Mỹ

Hôm nay tạp chí Money công bố danh sách 100 việc làm tốt nhất ở Mĩ và trong số đó việc làm công nghệ thông tin (CNTT) được xếp hạng rất cao.

Cuộc chiến về tài năng

Các công ty ở Thung lũng Silicon (San Jose) đang cạnh tranh về những kỹ sư phần mềm có kỹ năng với lương cao đáng kể và nhiều thưởng lớn.

Sức mạnh của nghỉ ngơi

Trong quyển sách “Sức mạnh của nghỉ ngơi” (tựa gốc: Rest Easy), tác giả Ximena Vengoechea bóc tách những nguyên nhân khiến con người ngày nay khó có được giây phút nghỉ ngơi thực sự.

Sự thật phũ phàng: 90% sự đau khổ là do chính mình gây

Suy ngẫm - PV - 04/07/2026 09:00
Điều tai hại nhất trên đời là tự trừng phạt bản thân vì lỗi lầm của người khác rồi lại tự hào về điều đó, gọi đó là "phẩm chất".

Sức mạnh của nghỉ ngơi

Tủ sách - FN - 04/07/2026 08:00
Trong quyển sách “Sức mạnh của nghỉ ngơi” (tựa gốc: Rest Easy), tác giả Ximena Vengoechea bóc tách những nguyên nhân khiến con người ngày nay khó có được giây phút nghỉ ngơi thực sự.

Xem xét trường sau đại học

Blog GS John VU - GS John Vu - 03/07/2026 12:00
Tuần trước, một học sinh gửi cho tôi một email: “Em sẽ sớm tốt nghiệp và xem xét vào trường sau đại học nhưng em vẫn không chắc về học cái gì hay liệu vào trường sau đại học có là quyết định đúng hay không. Em cũng không chắc liệu em có nên vào trường địa phương hay đi học nước ngoài để có bằng cấp cao. Xin thầy lời khuyên.”

Bài trắc nghiệm tâm lý của Nhật Bản! Một bức tranh nhìn ra "điều bạn ít bận tâm nhất"

Thư giãn - Thiên An - 03/07/2026 11:00
Bức tranh có phần trừu tượng dưới đây sẽ phản ánh chính xác thứ tự ưu tiên trong tâm trí bạn, từ đó gọi tên điều mà bạn ít để ý hay đặt nặng nhất.

Khi con người bắt đầu trốn khỏi smartphone: Sự trở lại của iPod và xu hướng sống “analog” giữa thời đại AI

Suy ngẫm - TĐ - 03/07/2026 10:00
 Xu hướng “quay lại với iPod” không còn là một hiện tượng nhỏ mang tính hoài niệm, mà đang trở thành một biểu hiện văn hóa rõ rệt của giới trẻ trong thời đại AI và quá tải số.

Để thanh thản khi về già

Tủ sách - FN - 03/07/2026 08:00
Giai đoạn nghỉ hưu là thời điểm mà mỗi chúng ta bắt đầu phải đối diện với nhiều thay đổi về thể chất, tâm lý lẫn giao tiếp gia đình, xã hội. Vậy làm sao để ta có thể sống hạnh phúc, thanh thản khi về già?

Cô giáo làm "tấm đệm sống" cứu người già trên thang cuốn

Truyền cảm hứng - 03/07/2026 08:00
Vào ngày 17/6 tại ga tàu điện ngầm Mạch Cao Kiều, tuyến số 1 (Nam Kinh, Trung Quốc), cô Lưu, một giáo viên tiếng Anh đã dũng cảm cứu hai người cao tuổi bị ngã trên thang cuốn. Dù bị thương nặng, cô vẫn kiên quyết từ chối tiền viện phí vì "không muốn tạo gánh nặng kinh tế cho ông bà".

Người kiểm thử phần mềm

Blog GS John VU - GS John Vu - 02/07/2026 12:00
Ngày nay, nhiều thứ được kiểm soát bởi phần mềm và chất lượng phần mềm trở thành vấn đề số một.

Thủ thuật Gmail: Cách đơn giản giúp giảm lượng email không mong muốn

Kỹ năng - Quang Huy - 02/07/2026 11:00
Bài viết dưới đây hướng dẫn cách loại bỏ các email không mong muốn khỏi hộp thư Gmail, giúp hòm thư gọn gàng và dễ quản lý hơn.

Carnegie: Những người không chuẩn bị cho ngày mai sẽ không có tương lai.

Suy ngẫm - Hang - 02/07/2026 10:00
Dương Lan nói rằng cuộc sống hạnh phúc không tự nhiên mà có. Chúng ta phải học cách đầu tư và tiết kiệm để có đủ vốn đảm bảo cho tương lai. Ở độ tuổi trung niên, người ta phải gánh vác những trách nhiệm nặng nề. Tiền tiết kiệm chính là sự tự tin để bạn vượt qua giông bão và sức mạnh để biến nghịch cảnh thành cơ hội.

Phí sau bức ảnh bikini tuyệt đẹp của Monroe và sự lừa dối đau lòng

Phong cách sống - PV - 02/07/2026 09:00
Năm 1951, Marilyn Monroe 25 tuổi đã chụp bức ảnh tuyệt đẹp này bên ngoài một studio ở Hollywood. Trong ảnh, cô để tóc xoăn vàng óng, mặc bộ bikini gợi cảm tôn lên hoàn hảo vóc dáng của mình. Ánh nắng dịu nhẹ chiếu rọi làn da trắng mịn, mái tóc bay trong gió, đôi mắt sáng ngời, nụ cười rạng rỡ, và Monroe toát lên vẻ quyến rũ chết người.

Để hiểu một người - Thước đo tâm trạng, công cụ giúp thực hành “quyền được cảm nhận”

Từ sách - Phim - TĐ - 02/07/2026 08:00
Chuyên gia nghiên cứu cảm xúc Marc Brackett đã phát triển một công cụ giúp cải thiện khả năng nhận diện cảm xúc, gọi là "thước đo tâm trạng".

Cơ hội nghề nghiệp

Blog GS John VU - GS John Vu - 01/07/2026 12:00
Công nghệ thông tin (CNTT) là lĩnh vực lớn nơi mọi người có thể xây dựng chuyên môn nghề nghiệp riêng của họ theo nhiều cách.

Chiến lược đơn giản giúp bạn chiến thắng trong dài hạn: Bài học từ lý thuyết trò chơi 

Kỹ năng - TĐ - 01/07/2026 11:00
 Với tư cách cá nhân hay tập thể, mỗi chúng ta đều có khả năng không chỉ thay đổi hoàn cảnh của chính mình mà còn thay đổi hoàn cảnh của người khác, thậm chí là của cả thế giới.

21 dấu hiệu cho thấy một người thông minh và biết cách thao túng người khác

Suy ngẫm - PV - 01/07/2026 10:00
Những người nói năng gay gắt, ôm mối hận thù và thù địch sẽ gặp bất hạnh và nghèo khó. Giàu có mang lại hạnh phúc, vì vậy hãy tránh than phiền và nói xấu người khác. Hãy nhớ rằng rắc rối bắt nguồn từ miệng.
HẠT GIỐNG TÂM HỒN
2019 Bản quyền thuộc về hatgiongtamhon.com.vn. Phát triển bởi ONECMS