Tôi nhận được một email mà người gửi hỏi: “Khác biệt giữa qui trình phần mềm và qui trình được xác định là gì? Khác biệt giữ qui trình được xác định và qui trình cá nhân là gì?”

Theo định nghĩa, “Qui trình phần mềm” là trình tự các bước mà người kĩ sư phần mềm PHẢI TUÂN THEO để làm công việc của mình (cái gì và cái gì tiếp) nhưng KHÔNG xác định cách làm nó. Chẳng hạn bạn phải thiết kế trước viết mã và viết mã trước kiểm thử. Nó KHÔNG cho bạn biết cách thiết kế hay cách viết mã.

“Qui trình được xác định” là trình tự các bước đã được làm tài liệu ĐƯỢC YÊU CẦU bởi một công ti trong thực hiện một việc làm. Chẳng hạn công ti yêu cầu mọi người phần mềm phải tuân theo vòng đời thác đổ và mọi kĩ sư phải bắt đầu dự án bằng yêu cầu trước khi thiết kế và thiết kế trước viết mã v.v. Nếu bạn bỏ qua trình tự này và bắt đầu với viết mã thì bạn vi phạm qui trình được xác định của công ti. Qui trình được xác định cung cấp cho kĩ sư phần mềm trình tự các bước cho mọi công việc mà người phần mềm phải tuân theo như lập kế hoạch, theo dõi, và quản lí mọi công việc phần mềm một cách đúng đắn và đầy đủ. Bằng việc tuân theo qui trình được xác định, người kĩ sư phần mềm biết cái gì cần làm và cái gì cần làm tiếp đó. Người kĩ sư phần mềm cũng có thể đo công việc của mình, theo dõi tiến độ của mình theo mục đích dự án để chắc chắn rằng người đó đang làm nó tương ứng với người khác trong dự án nên họ có thể phối hợp công việc của mình để tạo ra sản phẩm phần mềm tương ứng.

“Qui trình cá nhân” là trình tự được CHI TIẾT HOÁ các bước hướng dẫn cho người kĩ sư phần mềm làm công việc RIÊNG của người đó. Nó thường dựa trên qui trình đã được thiết lập như Qui trình được xác định nhưng được SỬA ĐỔI tương ứng với kinh nghiệm cá nhân riêng của người đó. Qui trình cá nhân cung cấp cho các cá nhân khuôn khổ để cải tiến công việc của họ và để nhất quán làm công việc chất lượng cao. Người kĩ sư phần mềm TẠO RA qui trình chi tiết RIÊNG CỦA MÌNH dựa trên dữ liệu người đó thu thập (đo) và làm điều chỉnh tương ứng. Đây là cách RIÊNG của người đó tuân theo “Qui trình được xác định”. Chẳng hạn nếu người đó đi theo qui trình phần mềm cá nhân riêng của mình và thấy nó tạo ra nhiều lỗi hơn thì người đó phải thay đổi nó cho tới khi nó cho người đó sản phẩm chất lượng tốt hơn.

—-English version—-

Software process

I receive an email where the sender asked: “What is the difference between a software process and a defined process? What is the difference between a defined process and a personal process?”

By definition, a “Software process” is the sequence of steps that a software engineer MUST FOLLOW to do his work (What and What is next) but does NOT define how to do it. For example you must design before coding and coding before testing. It does NOT tell you how to design or how to code.

A “Defined process” is a documented sequence of steps REQUIRED to do a job by a software company. For example the company requires that all software people must follow the waterfall life cycle and all engineers must start the project with requirements before design and design before coding etc. If you ignore the sequence and start with coding than you are in violation of company’s defined process. A defined process provides the software engineer with a sequence of steps for all the works that software people must follow such as planning, tracking, and managing all software works correctly and completely. By following the defined process, the software engineer knows what to do and what to do next. The software engineer can also measure his work, tracking his progress against the project goals to make sure that he is doing it in correspondent with others in the project so they can coordinating their work to produce a software product accordingly.

A “Personal process” is a more DETAILED sequence of steps that guide the software engineer to do his OWN work. It is usually based on an established process such as the Defined process but MODIFIED according to his own personal experience. A personal process provides individuals with a framework for improving their work and for consistently doing high-quality work. The software engineer CREATES HIS OWN  detailed process based on the data that he collects (Measurements) and make adjustment accordingly. This is his OWN way of follow the “Defined process”. For example if he follow his own personal process and found out it creates more defects than he must change it until it gives him better quality product.