• Thứ Năm, 23/09/2010 17:57 (GMT+7)

    Team Foundation Server 2010 có gì mới?

    Nguyễn Hoàng Hà
    Team Foundation Server kết hợp với các công cụ trong bộ Visual Studio sẽ giúp các đội phát triển phần mềm có thể áp dụng những thực tiễn tốt đã được chứng minh vào vòng đời phần mềm, từ tìm hiểu và quản lý yêu cầu khách hàng cho đến phân tích thiết kế, lập mã kiểm thử và triển khai sản phẩm v.v...

    Trong thị trường phần mềm rất cạnh tranh, các đội phát triển luôn phải tìm giải pháp xây dựng phần mềm tiết kiệm thời gian và chi phí nhất nhưng vẫn đảm bảo chất lượng. Lựa chọn được quy trình phù hợp và có các công cụ trợ giúp tốt là những nhân tố quan trọng để giải quyết thách thức đó. 

    Thực tế cho thấy, toàn bộ quá trình xây dựng một phần mềm hiện nay gồm rất nhiều hoạt động phức tạp và đã có nhiều công cụ để trợ giúp các hoạt động này. Các công cụ như Rational Rose, Visual Paradign được dùng để tạo tài liệu phân tích thiết kế (UML). Lập trình viên thường viết mã, biên dịch và gỡ rối bằng các môi trường phát triển tích hợp (IDE) như Borland C, Eclipse, Visual Studio. Các trình quản trị mã nguồn Visual Source Safe, SubVersion, CVS, Star Team giúp các thành viên trong đội quản lý và chia sẻ mã nguồn và các tài liệu của dự án. Để quản lý lỗi, họ có thể dùng Test Track Pro. Với các nhà quản trị dự án, công cụ MS Project giúp quản lý yêu cầu người dùng, phân chia đầu mục công việc, lên kế hoạch, theo dõi tiến độ dự án.


    Hình1: Kiến trúc của hệ thống Visual Studio Team Foundation Server

    Các hoạt động kể trên có liên quan với nhau trong khi các công cụ độc lập thường gặp vấn đề ở khả năng liên kết, phối hợp. Các đội thường phải mất khá nhiều thao tác để kết hợp hoạt động các công cụ như vậy. Chẳng hạn, các công cụ UML có thể sinh mã nhưng lập trình viên vẫn phải dùng IDE để tạo dự án rồi thêm mã (code). Khi tạo và chạy các ca kiểm thử, kiểm thử viên vẫn phải thực hiện nhiều thao tác thủ công để ghi lại thông số lỗi từ IDE vào trình quản lý lỗi. Từ MS Project, rất khó để từ một đầu mục công việc chẳng hạn như phát triển một môđun (module) A tìm đến chính xác ngay lập tức mã nguồn module đó. Mỗi khi lập trình viên thực hiện xong một module và họ check-in (cất) mã nguồn, chưa có cơ chế liên kết các tệp (file) mã nguồn đó với một đầu mục công việc cụ thể, do đó lập trình viên thường phải thêm động tác thông báo thủ công đến quản trị dự án để cập nhật tiến độ. Bên cạnh MS Project, các đội cũng cần thêm các tệp bảng tính để lưu thông tin chi tiết và có thể tùy biến như Team Backlog, Product Backlog, tạo Project Dashboard… Tuy nhiên để có những thông tin này cần phải thêm thao tác cập nhật từ các công cụ phát triển hoặc điền bằng tay qua các buổi họp nhóm. Những tình huống trên cho thấy chính sự phân tán và tách rời các công cụ trợ giúp khiến thông tin về toàn bộ dự án bị “chia cắt”, đội dự án gặp khó khăn và mất nhiều công sức khi cần có báo cáo chính xác tiến độ dự án cho chính mình và cho khách hàng.


    Hình 2: Các thành phần trong giải pháp ALM của Microsoft

    ALM là gì? 

    Nhược điểm của sự tách rời các công cụ ở trên cho thấy cần có bộ công cụ nhất quán, tích hợp và hỗ trợ lẫn nhau cho các quy trình phát triển phù hợp, từ đó khái niệm ALM ra đời. ALM là viết tắt của cụm từ “Application Life-cycle Management”, nghĩa là quản trị vòng đời ứng dụng. ALM mô tả các phương pháp quản trị quá trình phát triển phần mềm theo hướng tự động hóa mọi hoạt động từ đầu đến cuối. Hiểu một cách đơn giản hơn, ALM là nghiệp vụ quản trị trong công nghệ phần mềm, sử dụng các các công cụ để hỗ trợ và tích hợp các hoạt động quản trị, xây dựng kiến trúc, viết mã, kiểm thử, theo dõi (tracking) và phát hành (release) phần mềm. 

    Ngày càng có nhiều công cụ hỗ trợ ALM. Trong đó, trình quản lý phiên bản (version control) là trái tim của bộ công cụ bên cạnh các loại phần mềm hỗ trợ khác như: phân tích yêu cầu, quản trị yêu cầu, quản trị tính năng, mô hình hóa, phân tích thiết kế, quản trị dự án, quản trị thay đổi, quản trị biên dịch (build), kiểm thử, hỗ trợ triển khai, quản trị vấn đề…

    Ba yếu tố trụ cột của ALM

    • Khả năng theo dõi mối quan hệ giữa các sản phẩm (artifacts): trong suốt tiến trình phát triển phần mềm, mỗi giai đoạn luôn luôn có các sản phẩm là kết quả của các hoạt động trong giai đoạn đó. Ví dụ: giai đoạn phân tích có tài liệu phân tích nghiệp vụ, giai đoạn thiết kế có tài liệu thiết kế, giai đoạn lập mã có mã nguồn… Làm sao để quản trị mối quan hệ giữa các sản phẩm đó và biết rằng sản phẩm giai đoạn đáp ứng sản phẩm nào đó ở giai đoạn trước hay không. Các công cụ trong iải pháp ALM cùng phối hợp với nhau giúp nguời dùng dễ dàng hơn trong việc quản trị quan hệ giữa các sản phẩm này.

    • Các quá trình ở mức tự động hóa cao: với quy trình và công cụ của ALM, các giai đoạn và các bộ phận của dự án được kết nối và hoạt động nhuần nhuyễn với nhau. Chẳng hạn trong tình huống bộ phận kiểm thử phát hiện lỗi, họ dùng ngay công cụ kiểm thử lưu lại thông tin lỗi vào hệ thống quản trị. Lỗi này được những người liên quan như quản trị dự án, lập trình viên thấy ngay. Sau khi lập trình viên sửa lỗi, hệ thống tự thông báo đến cho bộ phận kiểm thử, bộ phận này kiểm tra lại nếu lỗi đã được sửa thì chấp nhận. Nếu không có ALM, các thành viên trong dự án sẽ tốn thêm nhiều thời gian và công sức cho các hoạt động như truyền thông báo lỗi, lên báo cáo lỗi, xét duyệt chấp nhận sự sửa đổi v.v.

    • Nắm bắt thông tin dự án: Trong hệ thống phần mềm trợ giúp ALM, dữ liệu của các hoạt động trong suốt quá trình phát triển phần mềm liên tục được thu thập, tổ chức và lưu tập trung trong một hệ thống duy nhất. Vì thế các báo cáo đưa ra có phạm vi bao trùm toàn bộ dự án, thông tin mang có tính nhất quán cao. Nhờ thế đội phát triển dễ dàng tạo các báo cáo có độ tin cậy cao cho khách hàng (đặc biệt là các đội gia công phần mềm) và cho chính các thành viên trong đội để họ nắm tình trạng dự án, tiến độ thực thi và có khả năng phân tích sâu sắc để đưa ra các quyết định và hành động phù hợp.

    Theo bách khoa toàn thư Wikipedia
     

    Team Foundation Server  

    Trong xu thế các bộ công cụ phát triển ngày càng tích hợp nhiều tính năng hỗ trợ bao trùm quá trình phát triển cũng như việc áp dụng ALM ngày càng phổ biến, vào tháng 3 năm 2005 Microsoft phát hành phiên bản Team Foundation Server (TFS) đầu tiên. Sau phiên hiên bản thứ hai - TFS 2008, vào giữa tháng 4/2010 vừa qua TFS 2010 đã chính thức xuất hiện. 

    Với TFS, người dùng các phiên bản Visual Studio khác nhau trong các vai trò khác nhau từ các nhà kiến trúc phần mềm, lập trình viên, kiểm thử viên cho đến nhà quản trị dự án đều có thể cùng cộng tác trong một môi trường phát triển phần mềm chung và thống nhất được tạo ra bởi TFS. Visual Studio cùng với Team Foundation Server, được biết đến với tên chung Visual Studio Team Foundation Server (VSTFS), là hai thành phần cốt lõi tạo ra một giải pháp ALM tất cả trong một để đội phát triển sử dụng ở mọi hoạt động của vòng đời ứng dụng. Trong giải pháp ALM này,

    Microsoft hướng tới cung cấp cả các quy trình phát triển lẫn công cụ phần mềm trợ giúp thực hiện quy trình. Về mặt quy trình, cả các mô hình truyền thống lẫn các mô hình linh hoạt (Agile) đều được hỗ trợ.

    Trong giải pháp ALM này, khái niệm quan trọng nhất xuyên suốt toàn bộ quy trình dự án là mục việc (work item). Mục việc là đơn vị công việc cụ thể cần tiến hành khi làm dự án. Microsoft đã định nghĩa sẵn một loạt các loại mục việc cho từng mẫu quy trình; chẳng hạn một Task là một nhiệm vụ cụ thể. Một Bug là một lỗi trong mã lập trình được phát hiện. Các mục việc được tạo ra và gán cho từng thành viên để họ biết phải làm gì và dựa vào trạng thái mục việc mà người quản trị nắm được tiến độ dự án. Có thể nói rằng mọi hoạt động, mọi giao tiếp giữa các thành viên trong dự ánđều liên quan đến mục việc.


    Hình 3: Project Dashboard

    Kiến trúc 

    Giải pháp ALM của Microsoft được xây dựng dựa trên kiến trúc 3 lớp (hình 1).  

    • Ở mức thấp nhất, lớp dữ liệu (data tier) dựa trên nền tảng cơ sở dữ liệu SQL Server. Lớp này có nhiệm vụ lưu toàn bộ dữ liệu về mục việc, mã nguồn, version-controlled (thông tin quản trị phiên bản), thông tin biên dịch (build), kho dữ liệu (data warehouse) phục vụ cho báo cáo.  

    • Mức giữa có lớp ứng dụng (application tier). Lớp này cung cấp dịch vụ cho các công cụ của người dùng cuối và điều khiển toàn bộ các hoạt động của dự án. Các dịch vụ ở lớp này có thể kể đến SQL Server Reporting Services, Team Foundation Core Services, SharePoint Services và các dịch vụ Team Foundation Windows. Lớp này cũng có Team Foundation Build (cung cấp dịch vụ biên dịch tự động) và Team Foundation Server Proxy (cung cấp chức năng đệm (cache) các tệp quản trị phiên bản mã nguồn ở lần truy cập trước nhằm cải thiện tốc độ truy xuất). Hai lớp đầu tiên là các thành phần nằm trên máy chủ của mô hình client-server.  

    • Lớp cao nhất, lớp ứng dụng khách (client interface), bao gồm tất cả các ứng dụng phía máy khách trực tiếp tương tác với người dùng cuối. Trong lớp này thành phần Team Explorer được sử dụng như một ứng dụng độc lập hoặc tích hợp với Visual Studio để cung cấp khả năng kết nối đến TFS. Người dùng cũng có thể sử dụng các ứng dụng văn phòng hết sức phổ biến (MS Project và Excel) phiên bản 2003 trở lên làm công cụ thao tác với TFS. Các mục việc có thể được xuất ra MS Project hoặc Excel để người dùng chỉnh sửa, theo dõi rồi có thể cập nhật lại vào hệ thống TFS.

    Về mặt giao thức, các trình khách kết nối đến TFS bằng http (cổng 80 hoặc 8080) vì thế mọi thành viên ở khắp nơi đều có thể làm việc chỉ cần có kết nối mạng. Bên cạnh đó, Project Portal là một cổng thông tin dưới dạng giao diện web cho phép người dùng tương tác với toàn bộ thông tin dự án trên TFS.


    Hình 4: Ví dụ về báo cáo của trong Team Foundation Server.

    Thành phần, công cụ, quy trình 

    Trong hệ thống này, thành phần phía máy chủ TFS đóng vai trò như một kho tập trung cho mọi sản phẩm (artifact) của dự án như tài liệu, mã nguồn với các phiên bản. Mối quan hệ giữa các sản phẩm được biểu diễn thông qua liên kết giữa các mục việc liên quan đến từng sản phẩm đó. Nhờ có mối liên kết này, người dùng có thể lần vết và tìm ra các thành phần của hệ thống liên quan đến nhau. Ví dụ, một lỗi phát sinh được phát hiện bởi kiểm thử viên được liên kết với một assembly cụ thể của một chức năng cụ thể trong tài liệu thiết kế nào đó… Các dịch vụ được TFS hỗ trợ bao gồm: quản trị dự án, quản trị yêu cầu, quản trị phiên bản, quản trị ca kiểm thử, tự động dịch, lên báo cáo. 

    Ở phía máy trạm, những người dùng với các vai trò khác nhau trong dự án như nhà quản trị, kiến trúc sư, lập trình viên, kiểm thử viên… có thể sử dụng rất nhiều công cụ khác nhau để kết nối và tương tác với TFS. Tất cả các công cụ phía máy trạm đều kết nối đến TFS thông qua thành phần mềm Team Explorer. Bộ công cụ phát triển Visual Studio được sử dụng thường xuyên nhất bởi các nhà kiến trúc hệ thống, lập trình viên, kiểm thử viên. Nếu những nhà quản trị dự án chỉ cần các chức năng lập lịch và theo dõi tình hình dự án thì họ có thể dùng công cụ gọn nhẹ hơn trong bộ MS Office (Excel, Project, Outlook).  

    Không chỉ các công cụ của Microsoft, TFS cũng có thể làm việc với nhiều phần mềm của hãng thứ ba khác. Ví dụ nếu lập trình viên sử dụng Eclipse để phát triển ứng dụng bằng công nghệ Java thì có thể dùng TeamPrise giúp tạo kết nối đến TFS để thực hiện các thao tác quản trị mã nguồn. 

    Bên cạnh bộ công cụ, ALM còn hướng tới hỗ trợ việc áp dụng các quy trình phần mềm dễ dàng hơn. Hai mẫu quy trình có sẵn trong các phiên bản TFS là MSF Agile và MSF CMMI. Tuy chỉ có hai mẫu quy trình được cung cấp mặc định nhưng TFS có thể dùng cho bất kỳ quy trình nào từ Thác nước, Xoáy trôn ốc, SCRUM cho đến Agile nhờ khả năng tùy biến mẫu quy trình sử dụng những mẫu từ bên thứ ba. Mỗi một mẫu quy trình được mô tả bởi một tập các tệp XML cung cấp các chi tiết kĩ thuật cho các quy trình và các phần tạo nên một cơ chế, phương pháp phát triển phần mềm. Cụ thể, mẫu quy trình cung cấp cho đội phát triển các tài liệu hướng dẫn quy trình, định nghĩa vai trò (role) các thành viên trong đội, kiểu mục việc, tài liệu mẫu và báo cáo có sẵn. Vì các mẫu được định nghĩa bằng định dạng mở (XML) nên mọi người có khả năng tùy biến và tự định nghĩa cho phù hợp. Hiện đã có các mẫu quy trình của bên thứ ba như mẫu P-Modeling.  

    Trong bối cảnh hiện tại, hầu hết doanh nghiệp phần mềm ở Việt Nam chưa có quy trình làm phần mềm thực sự hiệu quả thì việc ứng dụng và tùy biến các mẫu quy trình đó có thể giúp nhanh chóng xây dựng được quy trình phù hợp và tận dụng rất nhiều mẫu tài liệu và báo cáo có sẵn. Đây có thể là một giải pháp tiết kiệm rất nhiều thời gian và chi phí so với tự xây dựng hoặc thuê tư vấn làm quy trình sản xuất phần mềm.

    Hỗ trợ quản trị 

    Như đã đề cập ở trên, trong giải pháp VSTFS, mọi hoạt động quản trị dự án đều liên quan đến mục việc. Người quản trị lập lịch bằng cách đưa ra các mục việc và theo dõi tiến độ dự án bằng thông tin trạng thái các mục việc. Phiên bản TFS 2010 có cải tiến đáng kể về mối quan hệ các mục việc, chúng được phân loại thành các kiểu quan hệ cha-con, trước-sau. Bạn có thể định nghĩa ràng buộc trong quan hệ và tạo ra các truy vấn để xem và theo dõi trạng thái phụ thuộc và liên kết đó. Về mặt công cụ thực thi, nếu không dùng Visual Studio vì quá cồng kềnh, người quản trị có thể dùng MS Excel hoặc Project để quản lý mục việc. Người dùng có thể lập lịch hoạch định công việc rồi trình bày và theo dõi dự án bằng Excel và Project do dữ liệu từ TFS đến các công cụ này được thông suốt. Một số cải tiến trong việc tích hợp giữa MS Project và TFS: 

    Bảng 1
    Thao tácGiải thích
    Check-in và Check-outKế thừa từ Source Safe: Cất tài nguyên lên TFS và lấy xuống. Mỗi khi check-in hệ thống tạo ra một change set (đối tượng quản lý tập các thay đổi về mã nguồn dữ án).Khi check-in một file lên server, có thể có sự xung đột giữa nội dung bản nằm trên server và nội dung khi mới check-out (lấy từ server xuống) trong trường hợp sử dụng tùy chọn multi-check-out và có nhiều lập trình viên cùng sửa một file. Tính năng “Conflict Channel” được tích hợp vào trong cửa sổ Pending Changes giúp lập trình viên nhanh chóng sử dụng công cụ này với các nút “AutoMerge”, “Merge Changes in Merge Tool”, “Take Server Version” và “Keep Local Version”. Trong phiên bản VSTFS 2010, với nút “Merge Changes in Merge Tool”, người dùng có thể ngay lập tức đi đến công cụ Merge Tool chứ không cần phải qua nhiều bước và nhiều cửa sổ như ở VSTFS 2008.
    Shelve và UnshelveTương tự như check-in và check-out dùng để cất và lấy tài nguyên nhưng điểm khác là khi thực hiện shelve thì TFS không tạo ra change set. Do không liên quan đến change set nên cặp thao tác này không ảnh hưởng đến các bản build tự động, vì thế chúng thường được dùng cho các đoạn mã nguồn đang phát triển dở dang.
    Branch và MergeBranch (phân nhánh) dùng để phân nhánh tạo ra phiên bản mới. Ngược lại Merge (hợp) dùng để kết hợp hai phiên bản với nhau. Branch giúp cho các đội có thể quản lý tài nguyên nhiều phiên bản cùng lúc và cùng phát triển song song các phiên bản. Tính năng này rất hữu ích cho các đội phát triển phầm mềm đóng gói.VSTFS 2010 được bổ sung lược đồ phân cấp phiên bản branch và merge làm cho việc nắm nội dung các nhánh phiên bản trực quan và dễ dàng hơn bao giờ hết. Hơn thế nữa, người dùng có thể thực hiện các thao tác branch và merge ngay trên lược đồ này.
    LabelDùng để đánh dấu, đặt tên một phiên bản ở một thời điểm. Label rất hữu dụng khi đội phát triển cần tìm lại tài nguyên trong quá khứ phát triển.

    • Cấu trúc phân cấp và mối quan hệ trước sau giữa các mục việc: người dùng có thể định nghĩa các mục việc cha con và trước sau thông qua các kiểu liên kết. Việc thể hiện các mối quan hệ này nhất quán khi chuyển qua lại giữa TFS và MS Project. 

    • Rollups: nhờ tính phân cấp, chúng ta có thể tính các mục việc tổng thể dựa và các mục việc con trong MS Project, chẳng hạn toàn bộ thời gian cho một Task bằng cách cộng dồn thời gian các Task con. Vì thế chúng ta có cái nhìn tổng thể và làm chủ dự án tốt hơn với TFS 2010. 

    • Undo: chúng ta có thể quay lui các thay đổi trong MS Project bằng “Undo” để hủy bỏ thay đổi mà bạn đã làm trong MS Project mà vẫn phản ánh vào được TFS. Trong phiên bản trước, việc quay lui không thực thiện được do khó khăn về phối hợp dữ liệu giữa MS Project và TFS.  

    Trong phiên bản TFS mới nhất này, Project Portal được tổ chức lại thuận tiện hơn cho người dùng (hình 3). Nổi bật ở portal là Project Dashboard cho phép quan sát hầu hết thông tin quan trọng của dự án như các báo cáo quan trọng nhất, các sự kiện sắp tới, thống kê mục việc, liên kết các bản biên dịch, các bản check-in gần nhất... Project portal được xây dựng trên nền tảng Sharepoint và các thành phần thông tin trên portal này chính là các Web Part, bạn có thể tùy biến đặt các Web Part tùy ý vào portal. Một điểm mới ở phiên bản TFS 2010 là thành phần Team System Web Access đã được cài đặt mặc định và được cung cấp liên kết truy cập từ Project portal (hình 3). 

    Bảng 2
    Loại lược đồ
    Thiết kế quan niệm
    Thiết kế logic
    Thiết kế vật lý
    Lược đồ ca sử dụng
    x
     
     
    Lược đồ hoạt động
    x
     
     
    Lược đồ lớp
    x
    x
     
    Lược đồ tuần tự
     
    x
     
    Lược đồ thành phần
     
     
    x
    Các báo cáo trợ giúp quản trị trong TFS 2010 rất phong phú và hữu dụng. Có thể phân ra làm hai dạng báo cáo đó là từ SQL Reporting Services và cả báo cáo trên Excel. Thậm chí người dùng có thể tạo báo cáo bằng cách chạy các truy vấn mục việc rồi sau đó xuất thành file Excel. Đây là định dạng rất mềm dẻo và quen thuộc với nhiều người, cho khả năng thao tác tùy biến rất cao. Chính cơ chế xuất báo cáo từ nguồn dữ liệu thu thập tự động qua các hoạt động sản xuất phần mềm đã giúp xóa bỏ việc xây dựng báo cáo thủ công chẳng hạn như điền thông tin vào các file Excel bằng tay. Với khả năng xuất báo cáo đơn giản, thông tin báo cáo rõ ràng, biểu đồ trong báo cáo đẹp và trực quan, TFS giúp các nhà quản lý nắm được thông tin nhanh chóng, chính xác, đầy đủ mọi khía cạnh của dự án. Chẳng hạn, tổng số lỗi (bug) và tình trạng của chúng được thể hiện qua báo cáo Bug Progess; báo cáo Task Progess cho biết trạng thái công việc (task) tại một thời điểm còn báo cáo Task Burndown thể hiện tốc độ giải quyết công việc, xu hướng lượng việc được giải quyết (hình 4).  

    Các thông tin về phân công công việc hoặc sự thay đổi bất kỳ trong hệ thống phần mềm đang xây dựng có thể đến được với những người liên quan theo nhiều cách khác nhau. Họ có thể xem tất cả các công việc liên quan đến mình bằng các truy vấn mục việc phù hợp hoặc bằng báo cáo. Ngoài ra cơ chế thông báo tự động qua email cung cấp cơ chế rất thuận tiện để mọi người nắm bắt rõ các công việc của mình. 

    Quản trị phiên bản mã nguồn là một trong những yêu cầu bắt buộc của hệ ALM. Tính năng này giúp các đội phát triển lưu trữ, chia sẻ mã nguồn và tài liệu dự án thuận tiện và an toàn. TFS hỗ trợ các thao tác như mô tả trong bảng 1.

    Hỗ trợ thiết kế kiến trúc trong Visual Studio 2010 

    Ngày nay UML gần như trở thành ngôn ngữ chung cho các tài liệu phân tích thiết kế phần mềm. Cho đến phiên bản 2008, Visual Studio chỉ hỗ trợ một vài lược đồ kiến trúc hệ thống tuy mang tính thực tiễn cao nhưng không theo chuẩn UML. Đến phiên bản 2010, Visual Studio đã bổ sung 5 loại lược đồ quan trọng nhất của UML giúp mô hình hóa kiến trúc hệ thống theo các mức thiết kế khác nhau (xem bảng 2). 

    Như một công cụ CASE (Computer Aided Sofware Engineering), Visual Studio cũng cho phép sinh mã lập trình từ lược đồ lớp và dịch ngược từ mã sang biểu đồ lớp và biểu đồ tuần tự. Về mặt cơ sở dữ liệu, Visual Studio cũng cho phép sinh kịch bản SQL từ mô hình thực thể và ngược lại tạo mô hình thực thể từ cơ sở dữ liệu. Rõ ràng khả năng hỗ trợ phân tích thiết kế của Visual Studio đem lại sự tiện lợi về mặt tích hợp, đặc biệt cho những nhóm phát triển phần mềm sử dụng công nghệ lập trình của Microsoft.

    Kiểm thử 


    Hình 5: Quản lý môi trường kiểm thử

    Tất cả các chức năng kiểm thử trong giải pháp VSTFS đều có thể thực hiện bằng Visual Studio, điều này cho phép tương tác chặt chẽ giữa việc phát triển và kiểm thử sửa lỗi ứng dụng (hình 5).Ở mức kiểm thử module, Visual Studio cho phép sinh ra mã để thực thi ngay các Unit Test do đó rất tiết kiệm công sức để viết Unit Test. Dựa trên các Unit Test được sinh ra, lập trình viên hoặc kiểm thử viên có thể sửa đổi để tùy biến theo các nhu cầu khác nhau chẳng hạn chọn nguồn dữ liệu kiểm thử từ đơn giản là nhập ngay trong mã lập trình hoặc đọc từ file text cho đến phức tạp như truy xuất từ cơ sở dữ liệu.  

    Mức kiểm thử hệ thống, Team Lab Management cho phép quản lý môi trường kiểm thử là các máy tính thật hoặc ảo và hỗ trợ công nghệ ảo hóa Hyper-V trên Windows Serrver 2008 (hình 5). Với Team Lab Management nhà phát triển có thể quản trị tập các máy kiểm thử như một đơn vị, có thể nhanh chóng sao chép máy ảo để nhân bản môi trường kiểm thử. Có thống kê chỉ ra rằng, khoảng 30% thời gian kiểm thử tiêu tốn vào việc thiết lập môi trường máy kiểm thử vì vậy với công nghệ ảo hóa được hỗ trợ trong Team Lab Management, các đội phát triển sẽ tiết kiệm rất nhiều thời gian và tài nguyên máy tính. 

    Với việc hỗ trợ continuous integration, TFS cho phép thực thi việc build và chạy các ca kiểm thử mỗi khi lập trình viên check-in, giúp mã nguồn sau khi check-in luôn được kiểm tra kỹ lưỡng. Trong TFS 2010, một quy trình build được định nghĩa bằng file XAML (định dạng thừa kế XML nhằm khai báo giao diện, logic ứng dụng…) do đó có thể dùng Visual Studio 2010 Workflow Designer để tạo một ứng dụng Workflow Foundation để mô tả quy trình này.  

    Nếu ứng dụng có lỗi, TFS có khả năng chụp lại cấu hình môi trường kiểm thử, phiên bản mã nguồn đang gây lỗi và người dùng dựa trên đó tạo một mục việc dạng Bug (lỗi). Thông tin của Bug này giúp lập trình viên có thể dễ dàng tạo lại lỗi (reproduction) để sửa lỗi ứng dụng. Như vậy, TFS đã góp phần loại bỏ các lỗi no-repro, tức là các lỗi phát sinh khi kiểm thử trong một điều kiện nào đó nhưng sau này không thể tạo lại.

    Khả năng đáp ứng 

    TFS có khả năng hỗ trợ rất rộng về quy mô các đội làm phần mềm từ nhóm dưới 20 người cho đến khoảng 3600 người. Thực tế, TFS cũng được dùng cho rất nhiều dự án phần mềm của chính Microsoft. Số lượng người dùng kết nối đến một hệ thống TFS phụ thuộc vào hạ tầng phần cứng các máy chủ. Mô hình triển khai các lớp ứng dụng và lớp dữ liệu của TFS rất mềm dẻo nên mỗi công ty có thể lựa chọn cách triển khai phù hợp với quy mô và ngân sách.  


    Hình 6: Cơ chế nhớ đệm của Team Foundation Server Proxy.

    Ở mức độ thấp nhất, nhóm dưới 20 người cũng có thể triển khai một hệ thống TFS rất đơn giản chỉ gồm một máy chủ vật lý với cấu hình bộ xử lý 2,2GHz và RAM 1GB. Đối với các công ty có số lượng dự án và quy mô dự án lớn thì có thể chọn các cấu hình mạnh hơn và thêm nhiều máy chủ để phân tải cho cơ sở dữ liệu và các dịch vụ. Trong TFS 2010, để đáp ứng khả năng quản lý nhiều đội và chịu tải lớn của TFS, các dự án tương tự nhau (về mục đích, người dùng, tài nguyên…) có thể được nhóm thành từng Team Project Collection. Mỗi một Team Project Collection được lưu ở một cơ sở dữ liệu riêng và có một tập người dùng và quyền khác nhau. Điều này giúp việc sao lưu, phục hồi cơ sở dữ liệu và quản trị tài nguyên của mỗi tập hợp team project được độc lập. Ngoài ra, khả năng dùng nhiều máy chủ SQL Server để quản trị cơ sở dữ liệu TFS giúp các công ty có số lượng và quy mô dự án lớn thực hiện phân tải cho các máy chủ CSDL của TFS. Các công ty có nhiều đội phát triển có thể tạo cho mỗi đội một Team Project Collection độc lập, khi mỗi đội xong một dự án và bắt đầu dự án mới, họ có thể tận dụng cách phân quyền của dự án cũ. 

    Cũng như các ứng theo mô hình client-server qua internet khác, ý tưởng dùng các cơ chế nhớ đệm (cache) làm tăng tốc độ truy xuất máy chủ cũng được sử dụng trong thiết kế của Team Foundation Server (hình 6). Phần dữ liệu nặng nhất trao đổi giữa máy trạm và máy chủ thường là các file mã nguồn. Bằng cách lưu trữ các bản copy mã nguồn đã được dùng ở máy chủ tên là Team Foundation Server Proxy ở mạng nội bộ thì ở các lần truy cập file đó về sau, trình khách chỉ cần lấy file này ở máy chủ nội bộ, do đó tốc độ sẽ nhanh hơn rất nhiều so với truy cập máy chủtrên internet; nếu không tìm thấy trên máy chủ nội bộ, trình khách của TFS lại truy cập máy chủ trên internet (hình 6).

    Kết luận 

    Hiện nay, một trong những điểm yếu của nhiều đội phát triển phần mềm ở Việt Nam là khả năng làm việc nhóm. Ngoài ra có rất nhiều công ty phần mềm của chúng ta chưa đưa ra được một quy trình làm phần mềm hoặc đôi khi việc áp dụng quy trình còn mang tính miễn cưỡng áp đặt. Đó là những yếu tố thúc đẩy việc ứng dụng ALM nhằm xây dựng các quy trình phù hợp và tận dụng các công cụ hỗ trợ tự động. Có ALM, các công ty sẽ tiết kiệm được thời gian và chi phí để quản trị quy trình làm phần mềm. Tuy có thể mất một khoản chi phí đầu tư ban đầu cho giải pháp ALM nhưng các công ty có thể thu lại được hiệu quả nhanh chóng nhờ những giá trị của ALM mang lại như tốc độ phát triển phần mềm tăng nhanh, nâng cao năng suất lập trình viên, sản phẩm phần mềm làm ra chất lượng cao hơn và dễ dàng bảo vệ tối đa thành quả chất xám của công ty.  

    Bằng cách dùng Team Foundation Server kết hợp với các công cụ trong bộ Visual Studio, các đội phát triển phần mềm có thể áp dụng được những hoạt động thực tiễn tốt đã được chứng minh vào trong vòng đời phần mềm. Các hoạt động làm phầm mềm từ tìm hiểu và quản lý yêu cầu khách hàng cho đến phân tích thiết kế, lập mã kiểm thử và triển khai sản phẩm đều được hỗ trợ và cho phép thực hiện phối hợp nhịp nhàng với nhau. Với tính phổ biến của công nghệ Microsoft và những tính năng mạnh mẽ của VSTFS 2010, đây có thể là một giải pháp ALM đầy hứa hẹn.

    Tham khảo
    • Wikipedia, Application lifecycle management, http://en.wikipedia.org/wiki/Application_lifecycle_management
    • Team System Developer Center, http://msdn.microsoft.com/en-us/teamsystem/default.aspx
    • MSDN, Visual Studio Application Lifecycle Management, http://msdn.microsoft.com/en-us/library/fda2bad5(VS.100).aspx
    • Visual Studio Team System 2010 Week on Channel 9!, http://channel9.msdn.com/posts/VisualStudio/Visual-Studio-Team-System-2010-Week-on-Channel-9/
    • TFS 2010 Project Management, Bharry's WebLog, http://blogs.msdn.com/bharry/archive/2009/05/19/tfs-2010-project-management.aspx

    ID: A1008_106