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

Tác động kinh tế của công nghệ thông tin

Hiệp hội công nghiệp thông tin và phần mềm Software and Information Industry Association (SIIA) gần đây mới đưa ra một báo cáo đo về tác động kinh tế của những ngành công nghiệp này lên nền kinh tế Mĩ và toàn cầu.
2

Đối thoại với sinh viên ở Vô Tích, Trung Quốc

Tháng trước khi tôi tới dạy ở Vô Tích, Trung Quốc, một sinh viên nói với tôi: “...Điều tốt hơn có lẽ là thầy đọc bài giảng về điều chúng em cần chứ không phải là cái gì đó quá tiên tiến mà có thể tốt ở Mĩ nhưng không tốt ở Trung Quốc.”
3

Thị trường việc làm năm 2011

Ngày nay thị trường việc làm cho khoa học máy tính và kĩ nghệ phần mềm là “nóng” nhưng thay đổi “nhanh”.
4

Qui trình đơn giản cho dự án nhỏ

Hôm qua, một sinh viên đã tốt nghiệp vài năm trước tới gặp tôi. Anh ta nói: “Em cần lời khuyên của thầy để thiết lập qui trình tốt nhằm phát triển phần mềm có chất lượng với chi phí thấp nhất có thể được."
5

Cách chọn bạn và thành công ở đại học

Khi vào đại học, một trong những điều mới đầu tiên bạn có lẽ cần là chọn bạn. Bạn là một phần của cuộc sống và tình bạn nào đó có thể kéo dài một thời gian lâu, nếu bạn cẩn thận về loại bạn mình chọn lựa. Bạn tốt có thể giúp bạn cực kì nhiều nhưng bạn xấu có thể làm hại bạn còn hơn bạn có thể hình dung.

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.

Cách giúp cho một dự án đang thất bại

Blog GS John VU - GS John Vu - 27/07/2026 11:00
Một người quản lí dự án hỏi tôi: “Dự án phần mềm của tôi không chạy tốt, tổ của tôi mệt mỏi và nản chí. Tôi phải làm gì?”

Bạn luôn đưa ra lời khuyên tuyệt vời cho người khác, ngoại trừ chính mình

Suy ngẫm - TĐ - 27/07/2026 10:00
"Tạo khoảng cách với bản thân" (self-distancing) giải thích vì sao lời khuyên bạn có thể dành cho một người bạn chỉ trong năm phút lại là điều bạn không thể tự nói với chính mình suốt cả một tháng.

Phạm Xuân Ẩn trong Mậu Thân 1968: Cuộc đấu trí từ bản cung của kẻ phản bội

Phong cách sống - Bích Phương - 27/07/2026 09:00
"Tiêu hết rồi các anh ơi!", Đại tá Tư Cang từng nhận định bi quan sau đợt 1 Tết Mậu Thân. Nhưng nguồn tin, phân tích chiến lược của ông Phạm Xuân Ẩn đã giúp Cụm H.63 nhìn ra bước ngoặt của cuộc chiến.

'Điệp viên hoàn hảo' Phạm Xuân Ẩn - Nghệ thuật xử lý thông tin và tư duy báo chí

Từ sách - Phim - Trúc Linh - 27/07/2026 08:00
Phạm Xuân Ẩn nhận thấy nghề báo và nghề tình báo có nhiều kỹ năng gần giống nhau. Một phóng viên giỏi phải tìm được sự thật bên trong tin đồn.

Tại sao học công nghệ tính toán?

Blog GS John VU - GS John Vu - 26/07/2026 11:00
Một người mẹ hỏi tôi: “Tại sao thầy cổ vũ học công nghệ tính toán? Con gái tôi sẽ tốt nghiệp phổ thông năm nay và nó quan tâm tới khu vực công nghệ. Chọn lựa của nó là gì?”

Lời khuyên cho những người đang dùng hộ chiếu chưa gắn chip

Kỹ năng - Thùy Linh - 26/07/2026 10:00
Thực hiện thao tác này sẽ giúp công dân rút ngắn thời gian làm thủ tục xuất nhập cảnh và nâng cao trải nghiệm di chuyển tại sân bay.

Càn Long chết, Gia Khánh gọi gấp lão thần về triều: Hòa Thân vừa nghe tên đã bật khóc 'Ta hết đời rồi'

Phong cách sống - Nguyệt Phạm - 26/07/2026 09:00
Khi Càn Long vừa trút hơi thở cuối cùng, triều đình tưởng chừng như nằm trong tay Hòa Thân.

Ánh lửa tình bạn - Người bạn thật sự

Từ sách - Phim - FN - 26/07/2026 08:00
“Người bạn thật sự là người bước vào cuộc sống của bạn khi cả thế giới bước ra.”– Walter Winchel

The Odyssey: Hành trình soi tỏ bản ngã mỗi người

Điện ảnh - Mai Trang - 25/07/2026 11:00
Điều khiến The Odyssey đặc biệt không nằm ở hành trình dài mười năm lênh đênh của vị vua xứ Ithaca, mà ở chỗ hành trình ấy thực chất là một chuyến đi vào nội tâm. Odysseus tưởng như đang tìm đường trở về quê hương, nhưng điều ông thực sự tìm kiếm là chính mình - con người đã bị chiến tranh, sự kiêu hãnh và những mất mát làm thay đổi.

8 dấu hiệu cho thấy tổ chức của bạn đang mắc bẫy "tư duy đồng thuận độc hại"

Suy ngẫm - QL - 25/07/2026 10:00
Ngày 28/1/1986, tàu con thoi Challenger phát nổ 73 giây sau khi phóng, giết chết toàn bộ 7 thành viên phi hành đoàn trước hàng triệu người xem trực tiếp qua truyền hình.

Ngôi làng Việt Nam dưới lòng đất lên báo Mỹ, nhiều người sửng sốt

Phong cách sống - Việt Hà - 25/07/2026 09:00
Nhà báo của CNN có dịp tới thăm địa đạo Vịnh Mốc ở Quảng Trị - nơi từng giúp hàng trăm người dân tránh bom - để tìm hiểu về cuộc sống người dân thời chiến trước kia.

Hồi ký của hy vọng

Tủ sách - FN - 25/07/2026 08:00
Sau một hành trình nhiều thử thách, có lúc gần như tuyệt vọng, Amanda Nguyen cuối cùng cũng tìm lại được hy vọng của mình. “Hồi ký của Hy Vọng” (tựa gốc: Saving Five: A Memoir of Hope) được kể qua hai tuyến truyện đan xen, mỗi chương lại chuyển qua lại giữa hiện thực và thế giới nội tâm.

Cách học tốt hơn

Blog GS John VU - GS John Vu - 24/07/2026 11:00
Ngày nay sinh viên đại học có nhiều sao lãng ngăn cản họ học tập.

Người hào phóng và cao thượng có thể vượt qua khó khăn sau khi chia tay

Suy ngẫm - Tr. Quang - 24/07/2026 10:00
Đây là một sự thật khá huyền bí: Trong một mối quan hệ, người hào phóng, vị tha và không tính toán thường sẽ có cuộc sống tốt hơn sau khi chia tay hoặc ly hôn, và người bạn đời mới của họ thường sẽ xuất sắc hơn.

Người trẻ Hàn Quốc không sợ sinh con, phải chăng họ sợ con mình trở thành ‘người thua cuộc’

Phong cách sống - Minh Ngọc - 24/07/2026 09:00
Hàn Quốc đã chi hàng chục tỷ USD để khuyến khích sinh con, nhưng ngày càng nhiều người trẻ vẫn quyết định không làm cha mẹ. Điều họ lo không chỉ là tiền bạc, mà là viễn cảnh con mình phải bước vào một cuộc đua học hành và cạnh tranh khốc liệt ngay từ khi còn nhỏ.
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