Trên thực tế, có nhiều biến thể về các quy trình này như nhiều công ty có. Có nghĩa là: mọi công ty đều có những quy ước khác một chút so với những công ty khác, nhưng có một số phương pháp hay nhất phổ biến thường được sử dụng ở hầu hết các nơi.
Các phương pháp hay nhất luôn hữu ích
- Tất cả mã nguồn của dự án và bất kỳ thứ gì được yêu cầu để xây dựng nó đều nằm dưới quyền kiểm soát phiên bản (còn gọi là kiểm soát nguồn). Bất kỳ ai cũng có thể xây dựng toàn bộ dự án chỉ với một cú nhấp chuột.
Hơn nữa, các tệp không cần thiết (tệp đối tượng hoặc tệp nhị phân đã biên dịch) không nên được bổ sung vào kho, vì chúng có thể được tái tạo khá dễ dàng và sẽ chỉ lãng phí không gian trong repo.
- Mọi nhà phát triển nên cập nhật và cam kết kiểm soát phiên bản một vài lần mỗi ngày. Hầu hết khi họ đã hoàn thành nhiệm vụ, họ đang làm việc và thử nghiệm nó đủ để họ biết rằng nó không chứa những lỗi nhỏ.
- Một lần nữa: bất kỳ ai cũng có thể xây dựng dự án chỉ với một cú nhấp chuột. Điều này rất quan trọng và giúp mọi người dễ dàng kiểm tra. Lợi thế lớn nếu những người không phải là lập trình viên (ví dụ: ông chủ) cũng có thể làm như vậy. (Điều này khiến họ cảm thấy có thể xem chính xác những gì nhóm đang làm việc.)
- Mọi nhà phát triển nên thử nghiệm tính năng mới hoặc sửa lỗi mà họ đã thêm trước đó những tính năng đó vào kho lưu trữ.
- Thiết lập một máy chủ để cập nhật thường xuyên (trong khoảng thời gian định trước) từ kho lưu trữ và cố gắng xây dựng mọi thứ trong toàn bộ dự án . Nếu không thành công, nó sẽ gửi e-mail cho nhóm cùng với các cam kết mới nhất đến kiểm soát phiên bản (vì cam kết nào mà nó không xây dựng được) để giúp gỡ lỗi.
Thực hành này được gọi là tích hợp liên tục và các bản dựng còn được gọi là bản dựng hàng đêm .
(Điều này không ngụ ý rằng các nhà phát triển không nên xây dựng và kiểm tra mã trên máy của chính họ. Như đã đề cập ở trên, họ nên làm điều đó.)
- Rõ ràng là mọi người nên quen thuộc với thiết kế / kiến trúc cơ bản của dự án, vì vậy nếu cần điều gì đó, các thành viên khác nhau trong nhóm không cần phải phát minh lại bánh xe. Viết mã có thể tái sử dụng là một điều tốt.
- Cần có sự giao tiếp nào đó giữa các thành viên trong nhóm. Mọi người nên biết những gì những người khác đang làm, ít nhất là một chút. Càng nhiều càng tốt. Đây là lý do tại sao dự phòng hàng ngày hữu ích trong các nhóm SCRUM.
- Kiểm thử đơn vị là một thực tiễn rất tốt giúp kiểm tra chức năng cơ bản của mã của bạn một cách tự động.
- Một phần mềm theo dõi lỗi (đôi khi được gọi là phần mềm theo dõi thời gian ) là một phương tiện rất tốt của việc theo dõi những gì đang có lỗi và những gì nhiệm vụ các thành viên trong nhóm khác nhau có. Nó cũng tốt cho việc thử nghiệm: những người thử nghiệm alpha / beta trong dự án của bạn có thể giao tiếp với nhóm phát triển theo cách này.
Những điều đơn giản này đảm bảo rằng dự án không nằm ngoài tầm kiểm soát và mọi người đều làm việc trên cùng một phiên bản mã. Quá trình tích hợp liên tục hữu ích khi có điều gì đó tồi tệ nghiêm trọng.
Nó cũng ngăn mọi người gửi nội dung không được xây dựng vào kho lưu trữ chính.
Nếu bạn muốn bao gồm một tính năng mới sẽ mất nhiều ngày để triển khai và nó sẽ chặn người khác xây dựng (và thử nghiệm) dự án, hãy sử dụng tính năng nhánh của kiểm soát phiên bản của bạn.
Nếu điều đó vẫn chưa đủ, bạn cũng có thể thiết lập nó để thực hiện kiểm tra tự động, nếu điều đó là có thể với dự án được đề cập.
Một số suy nghĩ thêm
Danh sách trên thoạt nhìn có thể rất nặng. Tôi khuyên bạn nên làm theo nó khi cần thiết : bắt đầu với kiểm soát phiên bản và trình theo dõi lỗi, sau đó thiết lập máy chủ tích hợp liên tục, nếu bạn cần. (Nếu đó là một dự án lớn, bạn sẽ cần nó rất sớm.) Bắt đầu viết các bài kiểm tra đơn vị cho những phần quan trọng nhất. Nếu vẫn chưa đủ, hãy viết thêm chúng.
Một số liên kết hữu ích:
Tích hợp liên tục , Bản dựng hàng ngày là bạn của bạn , Kiểm soát phiên bản , Thử nghiệm đơn vị
Ví dụ:
Để kiểm soát phiên bản, tôi có xu hướng sử dụng Git cho các dự án cá nhân của mình ngày nay. Subversion cũng phổ biến và chẳng hạn, VisualSVN khá dễ thiết lập nếu bạn sử dụng máy chủ Windows. Đối với khách hàng, TortoiseSVN hoạt động tốt nhất cho nhiều người. Dưới đây là so sánh giữa Git và SVN.
Đối với phần mềm theo dõi lỗi, Jira và Bugzilla rất phổ biến. Chúng tôi cũng đã sử dụng Mantis tại nơi làm việc trước đây.
Đối với phần mềm tích hợp liên tục, có Teamcity cho một (cũng đáng chú ý là CruiseControl và đối tác .NET của nó ).
Trả lời cho câu hỏi của bạn "ai là người quyết định thiết kế chính của dự án?"
Tất nhiên, đó sẽ là nhà phát triển hàng đầu.
Trong các công ty, nhà phát triển chính là người nói chuyện với nhân viên tài chính / tiếp thị của dự án và quyết định hình ảnh dựa trên khả năng tài chính của công ty, các tính năng được lên kế hoạch theo yêu cầu của người dùng và thời gian khả dụng.
Đây là một nhiệm vụ phức tạp và thường có nhiều người tham gia. Đôi khi các thành viên của nhóm cũng được yêu cầu tham gia hoặc động não về thiết kế của toàn bộ dự án hoặc các bộ phận cụ thể.