Ep 01: Giới thiệu Collaborative Development Environments
Collaborative Development Environments (CDE) hay môi trường phát triển tương tác, là một chủ đề rất hot, nhưng không phải là mới của ngành Công Nghệ Phần Mềm.
Với những hiểu biết nhất định, sau đây tôi xin trình bày một số kiến thức liên quan đến CDE.
Nhen nhúm lần đầu tiên vào năm 1984 [1] khi Iren Greif và Paul tổ chức một buổi workshop tụ họp nhiều người lại để thảo luận làm sao áp dụng công nghệ trong một môi trường làm việc có tính tương tác. Đó cũng là sự bắt đầu của một chuỗi event liên quan đến CDE sau này.
Sau CSCW (computer-supported cooperative work), năm 1994, Malone và Crowston đã giới thiệu "coordination theory" định nghĩa sự phối hợp là việc quản lý giữa các hoạt động phụ thuộc lẫn nhau [2].
Và sau hơn một thời gian dài lao động miệt mài của nhiều nhà phát triển cùng với sự phát triển của công nghệ, đến 28/10/2002, Grady Booch and Alan W. Brown đã công bố bài báo "Collaborative Development Environments" [3] trong đó định nghĩa:
một môi trường ảo nơi mà tất cả các stakeholders cùng ngồi lại làm việc với nhau.
có thể bị ngăn cách bởi khoảng cách vật lý hoặc thời gian
mọi thao tác tương tác bao gồm thảo luận, chia sẻ, blah blah ... đều có thể thực hiện trên này
sử dụng Internet để tương tác.
Bên cạnh CDE, cụm từ GSD (Global Software Development), phát triển phần mềm toàn cầu, cũng được sử dụng để mô tả những ý như trên.
Khác với kiểu làm việc truyền thống, yêu cầu các thành viên trong dự án phải ngồi lại làm việc với nhau ở cùng một nơi, mọi người chia sẽ kinh nghiệm, công việc, và trao đổi với nhau một cách trực tiếp. Với xu thế phẳng hoá và sự phát triển chóng mặt của cơ sở hạ tầng mạng, việc phát triển phần mềm với đội ngũ phát triển phân tán ở nhiều nơi ngày càng trở nên phổ biến và được áp dụng ở nhiều dự án khác nhau.
Thời gian đầu, khi các CDE chưa được phát triển mạnh mẽ, để đáp ứng các nhu cầu của việc phát triển phần mềm với đội ngũ phát triển phân tán, chúng ta thường áp dụng nhiều phương pháp và công cụ khác nhau (telephone, teleconferences, email, voice mail, discussion lists, the Web, instant messaging, voice over IP, and videoconferences) để thay thế cho việc trao đổi và làm việc trực tiếp như theo cách truyền thống. Những cách này có thể hiệu quả khi giải quyết một khía cạnh nào đó của bài toán làm việc với đội ngũ phân tán, nhưng vẫn gặp phải những hạn chế nhất định:
Sự tương tác không liên tục
Sử dụng quá nhiều công cụ
Vẫn còn cảm giác rời rạc (awareness)
Khó để quản lý và gắn kết team lại với nhau
Trong bài báo của mình Jim Whitehead đã chỉ ra việc tương tác trong phát triển phần mềm phải đạt được các mục tiêu sau [4]
Establish the scope and capabilities of a project.
Drive convergence towards a final architecture and design
Manage dependencies among activities, artifacts, and organizations
Reduce dependencies among engineers
Identify, record and resolve errors.
Record organizational memory
Đây cũng là các mục tiêu mà một CDE phải đạt được. Đồng thời ông cũng phân các thành phần trong CDE và các features mà một CDE phải cung cấp
Collaboration Infrastructure
Centralized information management
Configuration control of shared artifacts
Electronic document routing and workflow
Calendaring and scheduling
Online event notification
Project resource profiling
Online voting and polling
Tools for both connected and disconnected use
Threaded discussion forum
Project dashboards and metrics
Self-publication of content
Self-administration of projects
Multiple levels of information visibility
Personalization of content
Virtual agents that can be scripted to manage daily project hygiene and other
Tóm gọn lại, một CDE mang trong mình toàn bộ các công cụ cần thiết cho việc phát triển phần mềm lấy IDE làm trung tâm và là một Web 2.0. Các công cụ mà CDE phải cung cấp bao gồm:
Version-Control Systems (Git, Subversion ...)
Issues Trackers (Bugzilla, Jira ...)
Build Tools (Gitlab CI ...)
Modelers (UML design tools)
Knowledge Centers (Wiki, FAQs ...)
Communication Tools (Chat, Video Chat, Conference ...)
Project management (Redmine ...)
[1], [2]: Javier, Genoveva, Rafael - Collaborative Development Environments
[3]: Grady Booch, Alan (2002) - Collaborative Development Environments
[4], [5]: Jim Whitehead - Collaboration in Software Engineering: A Roadmap