10 Mar, 2021
Qui trình là gì ?
Một sinh viên viết cho tôi: “Em không hiểu thuật ngữ “Qui trình” và tại sao chúng ta cần tuân theo qui trình trong phát triển phần mềm? Cải tiến liên tục là gì?”
Đáp: Qui trình là một trình tự có tổ chức các hoạt động để hoàn thành cái gì đó. Chẳng hạn: Dự án phần mềm. Trong trường hợp này, dự án là việc áp dụng tài nguyên vào qui trình đó. Tài nguyên là con người, công cụ và kĩ thuật mà bạn áp dụng khi tuân theo qui trình. Thuật ngữ “con người” cũng chỉ ra kĩ năng và kinh nghiệm của thành viên tổ. Trình tự là trật tự theo đó mọi sự được hoàn thành. Thuật ngữ “trật tự” nghĩa là bạn phải tuân theo nó “từng bước một” tương ức theo qui tắc. Chẳng hạn, bạn phải hiểu yêu cầu trước khi bắt đầu thiết kế; chỉ khi thiết kế được hoàn thành thì bạn mới có thể bắt đầu viết mã v.v.
Qui trình được đại diện bởi ba yếu tố: Hiệu quả: Mối quan hệ giữa việc dùng tài nguyên và kết quả được hoàn thành. Thời gian chu kì: “Tốc độ” của qui trình, tức là, thời gian cần để hoàn thành một qui trình. Và Chất lượng: Chất lượng của qui trình như được xác định bởi người dùng như đáp ứng yêu cầu, không có lỗi v.v. Tổ hợp của ba yếu tố này xác định ra năng lực của tổ hay tổ chức. Cải tiến liên tục là việc thay đổi hay nâng cấp từ năng lực mức thấp hơn lên năng lực mức cao hơn.
Không có đào tạo đúng, người phát triển phần mềm sẽ làm bất kì cái gì họ muốn chỉ để làm cho công việc của họ được thực hiện. Vì phát triển phần mềm là hoạt động “làm việc theo tổ”, không phải là hoạt động cá nhân, điều quan trọng là mọi thành viên tổ đều tuân theo những qui tắc nào đó như tuân theo “Qui trình được xác định” cho dự án đó. Người quản lí dự án phải nhận diện “Qui trình được xác định” trong bản kế hoạch dự án và giám sát các hoạt động để đảm bảo rằng các thành viên tổ tuân theo nó để có được kết quả mong muốn như hiệu quả, chất lượng và tốc độ.
Một trong những vấn đề chính trong đào tạo khoa học máy tính là sinh viên có xu hướng làm việc cô lập. Điển hình, từng người được trao cho một vấn đề để giải quyết, một chương trình để viết mã, và từng người được cho điểm tương ứng theo thành tích cá nhân. Khi sinh viên đi làm, từng người sẽ tiếp tục làm bất kì cái gì có thể để làm cho việc làm của họ được thực hiện, giống như khi họ còn trong trường. Không có hiểu biết về làm việc tổ bằng việc tuân theo qui trình, nhiều dự án sẽ không chuyển giao được phần mềm cho khách hàng trong lịch biểu và có chất lượng. Nhiều dự án thường chậm và có chất lượng kém. Chúng thất bại vì thiếu sự phối hợp và làm việc tổ điều cho phép các thành viên tổ làm việc cùng nhau. Chúng thất bại vì một số thành viên vội vàng viết mã mà không thực sự hiểu các yêu cầu. Chúng thất bại vì có quá nhiều thay đổi trong dự án điều thường tới trễ và không có qui trình giải quyết thay đổi. Chúng thất bại vì người quản lí dự án không biết cách lập kế hoạch, tổ chức hay ước lượng thời gian, lịch biểu và nỗ lực được cần để hoàn thành dự án.
Qui trình được xác định là bản lộ trình cho dự án. Nó yêu cầu các thành viên tổ tuân theo “con đường” từng bước một. Từng bước phải có vai trò và trách nhiệm được xác định rõ ràng cho từng thành viên tổ. Khi thay đổi xảy ra, bản lộ trình nhận diện rõ ràng ai làm cái gì để cho tổ có thể làm cho công việc của họ được thực hiện có hiệu quả, chất lượng và đáp ứng lịch biểu dự án (tốc độ).
—-English version—-
What is a process?
A student wrote to me: “I do not understand the term “Process” and why do we need to follow a process in software development? What is continuous improvement?”
Answer: A process is an organized sequence of activities to complete something. For example: A software project. In this case, a project is the application of resources to that process. Resources are people, tools and techniques that you apply when following a process. The term “people” also indicates the skill and experience of the team members. A Sequence is the order in which things are accomplished. The term “order” means you must follow it “step by step” according to a rule. For example, you must understand the requirements before start designing; only when design is completed then you can start coding etc.
A process is represented by three factors: Efficiency: The relationship between resource use and accomplished results. Cycle Time: The “speed” of the process, i.e., the time it takes to complete a process. And Quality: The quality of the process as defined by users such as meet requirements, have no defects etc. The combination of these three factors defines the capability of a team or an organization. A continuous improvement is the changing or upgrading from lower capability to higher capability.
Without proper training, software developers will do whatever they want just to get their works done. Since software development is a “Teamwork” activity, not individual activity, it is important that all team members follow certain rules such as following a “Defined process” for that project. The project manager must identify the “Defined process” in the project plan and monitor activities to ensure that team members are following it to get the desired results such as efficiency, quality and speed.
One of the major issue in computer science training is students have a tendency to work in isolation. Typically, each is given a problem to solve, a program to code, and each is graded according to individual achievement. When students go to work, each will continue to do whatever possible to get their jobs done, just like when they are in school. Without an understanding about teamwork by following a process, many projects will fail to deliver software to customers within schedule and with quality. Many projects are often late and with poor quality. They fail because the lack of coordination and teamwork that allows team members to work together. They fail because some members hurry to code without really understand the requirements. They fail because there are too many changes in the projects that come late and there is no process to handle changes. They fail because project managers do not know how to plan, to organize, or to estimate the time, schedule and effort needed to complete the project.
A defined process is a roadmap for the project. It require team members to follow the “road” step by step. Each step has a clearly defined roles and responsibilities for each team member. When changes happen, the roadmap clearly identify who is doing what so the team can get their works done with efficiency, quality and meeting project schedule (Speed).