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

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.
2

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?”
3

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.”
4

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.
5

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.

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.

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

Blog GS John VU - GS John Vu - 11/06/2026 12:00
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?”

Không thấy vui kể cả dịp 'lẽ ra phải vui', dấu hiệu cảnh báo trầm cảm dai dẳng

Kỹ năng - Việt Linh - 11/06/2026 11:00
Không buồn đến mức suy sụp nhưng cũng chẳng thể vui, nhiều người âm thầm sống trong trạng thái mệt mỏi kéo dài mà không biết đó là trầm cảm dai dẳng.

Sau tuổi 50, khôn ngoan thì đừng nói 5 câu này với họ hàng

Suy ngẫm - SA - 11/06/2026 10:00
Sau tuổi 50, sống sao cho thấu đáo là một dạng khôn ngoan.

Đối thủ của Gia Cát Lượng gánh nỗi oan khuất nghìn năm không rửa sạch

Phong cách sống - Linh Lan - 11/06/2026 09:00
Ông là vị tướng có tài năng quân sự kiệt xuất, hào hoa, cởi mở, khí phách hơn người nhưng nghìn năm qua mang tiếng xấu là kẻ hẹp hòi, luôn đố kỵ với Gia Cát Lượng.

Thế giới trong giọt nước

Tủ sách - FN - 11/06/2026 08:00
“Bạn có biết là cả thế giới rộng lớn cũng có thể nằm gọn trong một giọt nước bé xíu không?”

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

Blog GS John VU - GS John Vu - 10/06/2026 12:00
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ế.”

Con người trong quy trình - Vì sao bạn không nên để AI chạy tự động hoàn toàn?

Kỹ năng - Vân Anh - 10/06/2026 11:00
AI đang giúp doanh nghiệp làm việc nhanh hơn ở nhiều khâu, nhưng càng dùng AI nhiều, doanh nghiệp càng cần xác định rõ vai trò của con người trong quy trình.

Muốn không bị AI đào thải hãy áp dụng ngay bí quyết sinh tồn này từ năm 1920

Suy ngẫm - Băng Băng - 10/06/2026 10:00
Một thế kỷ trước, thế giới từng chao đảo vì ô tô và radio hệt như cách trí tuệ nhân tạo đang làm mưa làm gió ngày nay. Lịch sử thực ra đang lặp lại.

Chuyện đời ít ai hay của người tạo ra Gmail, AdSense và câu nói nổi tiếng nhất lịch sử Google

Phong cách sống - Long Văn - 10/06/2026 09:00
Mấy chục năm qua, nhân loại đã khóc cười, lo sợ, mừng rỡ và stress toàn phần cùng Gmail. Nhưng câu chuyện về cha đẻ của nó thì không phải ai cũng rõ.

Xin đừng làm mẹ khóc - Quà tặng của mẹ

Từ sách - Phim - Lại Thế Luyện - 10/06/2026 08:00
"Con của tôi đâu?”. Người mẹ trẻ hỏi trong nỗi mừng vui sau một cuộc vượt cạn mệt nhọc. Với khuôn mặt rạng ngời, chị đón lấy đứa trẻ từ tay vị bác sĩ. Thế nhưng, nụ cười bỗng tắt lịm trên môi chị khi nhìn thấy cấu tạo tai ngoài của đứa bé không như những đứa trẻ khác.

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

Blog GS John VU - GS John Vu - 09/06/2026 12:00
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?”

Người dùng hay AI là “tác giả”? Cuộc chiến bản quyền thời đại trí tuệ nhân tạo bắt đầu nóng lên

Kỹ năng - Nghiêm Khiết - 09/06/2026 11:00
Nội dung do AI tạo ra, bản quyền thuộc về ai?

CEO Nokia nói “Chúng tôi không làm gì sai cả” trước khi công ty sụp đổ: Tài liệu nội bộ chứng minh Nokia đã sai quá nhiều mà không biết

Suy ngẫm - Nguyễn Hải - 09/06/2026 10:00
Không phải các thiếu sót về công nghệ hay ý tưởng kinh doanh, đây mới chính là sai lầm nghiêm trọng nhất đã đánh gục Nokia khi iPhone xuất hiện.

Chàng trai chăn bò đổi đời bằng 1 video tạo trend khiến nước Mỹ nổi bão vừa lâm bệnh hiểm nghèo

Phong cách sống - Mộc Cam - 09/06/2026 09:00
Tình trạng hiện tại của nhân vật này đang nhận được nhiều sự quan tâm.

Làm chủ AI - Thương lượng để nâng mức đãi ngộ

Từ sách - Phim - FN - 09/06/2026 08:00
Dù bạn đang tìm việc ở vị trí tương đương hay muốn thăng tiến lên vị trí cao hơn, hoặc đơn giản chỉ muốn tìm hiểu mức lương cho công việc tương tự ở một công ty khác, thì việc hiểu rõ mức lương phù hợp với vai trò và kinh nghiệm hiện tại của mình là điều vô cùng quan trọ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