18 Jan, 2021
Phần mềm, hệ thống và người-tháng
Tôi nhận được một email người gửi viết: “Chương trình phần mềm khác gì với sản phẩm phần mềm? Phần mềm hệ thống khác gì với hệ thống phần mềm? Người-tháng là gì trong dự án phần mềm và làm sao tính được nó?”
Đáp: Chương trình phần mềm là tập hợp các lệnh (mã) được người phát triển tạo ra để thực hiện cái gì đó. Sản phẩm phần mềm là chương trình được phát triển tương ứng với yêu cầu được làm tài liệu để thực hiện chức năng nào đó, nó phải được kiểm thử đầy đủ để chạy trong môi trường nào đó.
Phần mềm nói chung được chia thành hai kiểu: phần mềm ứng dụng và phần mềm hệ thống. Phần mềm ứng dụng là sản phẩm phần mềm được thiết kế cho người dùng để dùng với mục đích chuyên dụng như xử lí văn bản, hệ thống cơ sở dữ liệu, tài chính v.v. Phần mềm hệ thống là sản phẩm phần mềm quản lí tài nguyên máy tính ở mức thấp, như hệ điều hành và chương trình tiện ích (trình dịch, trình nạp, trình móc nối, trình gỡ rối v.v.)
Hệ thống phần mềm là tuyển tập của nhiều chương trình tương tác (phần mềm ứng dụng và hệ thống) được thiết kế với mục đích chuyên dụng. Trong hệ thống phần mềm, mọi cái vào và cái ra phải tuân theo những qui tắc nào đó về cú pháp, ngữ nghĩa để chắc chắn rằng chúng tất cả làm việc với nhau một cách nhất quán và mọi cấu phần đều phải được kiểm thử lẫn nhau để chắc chắn rằng chúng được tích hợp đầy đủ. Để thiết kế hệ thống phần mềm, bạn phải bắt đầu bằng kiến trúc hệ thống để định nghĩa mọi cấu phần và tương tác của chúng.
Người tháng là số giờ một người có thể làm việc trong một tháng. Điển hình, người làm việc 8 giờ một ngày và năm ngày một tuần cho nên người-tuần là 8 giờ X 5 ngày = 40 giờ. Thường có 4 tuần trong một tháng cho nên người-tháng là 40 giờ x 4 = 160 giờ.
Nếu dự án được ước lượng được hoàn thành trong 6 tháng bằng một người thì ước lượng sẽ là sáu người-tháng hay 6 X 160 giờ = 960 giờ.
Với mọi dự án, nếu bạn đi tới số giờ cần để hoàn thành công việc, bạn có thể chia số đó cho 160 bạn có số người-tháng. Chẳng hạn, nếu cần 1920 giờ thì nó là công việc 12 người-tháng.
—-English version—-
Software, System and man-month
I received an email where the sender wrote: “What is the difference between a software program and a software product? What is the difference between a system software and a software system? What is a man-month in software project and how do you calculate it?”
Answer: A software program is a set of instructions (Codes) created by developers to performs something. A Software product is a program that being developed according to a documented requirements to perform certain functions, it must be fully tested to run in certain environment.
Software is generally divided into two types: Applications software and Systems software. Applications software is a software product designed for users to use for a specific purpose such as word processors, database systems, finance. etc. System software is a software product that manage the computer resources at the low level, such as the operating system and utility programs (Compilers, loaders, linkers, debuggers etc.)
A Software system is a collection of several interacting programs (Applications and System software) designed for a specific purpose. In the Software system, all inputs and outputs must follow certain rules of syntax, semantics to make sure that they all work together consistently and all components must be tested with each others to make sure that they are fully integrated. To design a Software system, you must start with a system architect to define all components and their interactions.
A man month is the number of hours a person can work in a month. Typically, people works 8 hours a day and five day a week so a man-week is 8 hours X 5 days = 40 hours. There is usually 4 weeks in a month so a man-month is 40 hours x 4 = 160 hours.
If the project is estimated to be completed in 6 months with only one person than the estimate would be six man-month or 6 X 160 hours = 960 hours.
For every project, if you come up with the number of hours needed to complete the work, you can divide that number to 160 than you have the number of man-month. For example, if it need 1920 hours than it is a 12 man-month work.