Makale Özeti

Visual Studio Team System platformunda kullanılan Process Template'lerin özellieştirilmesi.

Makale

Merhabalar,

Bir yazı dizisinin ilk bölümü olan bu yazımızda, Visual Studio Team System'de Process Template'in nasıl özelleştirilebileceğini inceleyeceğiz.

Öncelikle VSTS ile varsayılan olarak gelen iki process template olduğunu ve bunların;

    1- MSF for Agile Software Development - v4.0
    2- MSF for CMMI Process Improvement - v4.0
 
olduklarını bilmemiz yararlı olacaktır. Bu Process Template'ler ile ilgili ayrıntılı bilgiyi yazı dizimizin ilerleyen bölümlerinde sizlerle paylaşacağım.

Ancak şimdilik her iki template'in de, takım projelerinde izlenecek stratejinin, izlenecek yolun ve takım üyeleri arasında iletilecek tüm bilgilerin şablonu olduklarını, yani; takım projelerinin başlangıçta seçilen ve sonuna kadar yapılacak tüm işlemlerin temelini oluşturan altyapının kurulacağı hazır şablonlar olduklarını bilmemizde yarar olacaktır.

Mesela bu templatelerden MSF for Agile Software Development - v4.0 ile oluşturulan bir takım projesinde bir TASK için çıkan alanlarla, CMMI template'i için çıkan alanlar birbirlerinden farklılık göstermektedir.
 


MSF for Agile Software Development - v4.0 Template'i
 


MSF for CMMI Process Improvement - v4.0 Template'i

Peki biz kendi uygulamalarımızı geliştirirken bu template'ler dışında başka template'leri ya da  bu template'lerin bazı alanlarının değişikliğe uğramış versiyonlarını kullanamazmıyız?
       Tabiki de kullanabiliriz. Ancak bu işlemleri yapabilmek için temel seviyede de olsa XML ve XSD (Schema) kavramları hakkında bilgimizin olması yararlı olacaktır.

Öncelikle yapmamız gereken, mevcut template'lerden bir tanesini download etmektir. Bu işlem için Visual Studio içerisindeki Team Explorer bileşeninde kayıtlı TFS (Team Foundation Server) ismi üzerinde sağ tuşla açılan menüden, Team Foundation Server Settings/ Process Template Manager 'ı çalıştırmamız gerekmektedir.
 

 
Açılan aşağıdaki ekranda, değiştirmek istediğimiz template'i seçerek DOWNLOAD etmemiz gerekecektir.

Bu örneğimizde Agile Software Development Template'ini download ederek değişiklikler yapmaya çalışacağız. Bunun için download işlemini istediğimiz herhangi bir klasör içine yaparsak, ilgili klasörde, MSF for Agile Software Development - v4.0 adında bir klasör oluşacaktır. Bu klasörün içerisinde Agile Software Development Template'i için gerekli XML tabanlı dosyalar, Reporting Service için gerekli rapor template'leri, SharePoint Portal servisi için gerekli excel dosyaları, veritabanından bazı bilgileri getirebilmek için hazırlanmış Query'ler bulunmaktadır. Bu template'i seçerek oluşturulan takım projelerinde (Team Project), oluşturulacak iş parçacıklarının (Work Item), raporlama için gerekli olan rapor şablonlarının, portal için gerekli olan tüm dosyalar ve bileşenlerin Agile Software Development için ayarlandığını görebiliriz.

Bizim burada yapabileceklerimiz yeni alanlar oluşturmak veya mevcut alanların yerlerinin ve dilinin değiştirilmesi olabilir.
Özelleştirme işlemleri için aslında XML tabanlı dosyaların herhangi bir metin editörü ile düzenlenmesi yeterli olacaktır. Biz de örneğimizde öncelikle bu şekilde nasıl yapılacağını görüp, ardından bir sonraki makalemizde bu işlemlerin, bir uygulama ile bir arayüzden daha kolay yapılabilir hale geldiğini göreceğiz.

İlk olarak özelleştireceğimiz ilgili template'i download etmemiz gerekecektir. Download edilen bu klasör içerisinde, ProcessTemplate.xml adındanki XML tabanlı dosyayı NotePad ile açarak düzenleyebiliriz. Ya da herhangi bir XML Editör ile düzenleme işlemini gerçekleştirebiliriz.
Aşağıda ProcessTemplate.xml dosyasının original halini veTemplate'in isminin Kendi Sablonumuz açıklamalarının da değiştirilmiş halini, sonrasında da Work Item Tracking (İş parçacıkları izleme) modülünde TASK olarak geçen iş parçacığının, başlangıçta yüklenen listesine yani başlangıç task list'e yeni görevlerin eklendiğini görebiliriz.

ProcessTemplate.xml

<?xml version="1.0" encoding="utf-8" ?>
<ProcessTemplate>
  <metadata>
    <name>MSF for Agile Software Development - v4.0</name>
        <description>Choose the MSF for Agile Software Development process for projects with short lifecycles and delivery-oriented teams who can work without lots of intermediate documentation.  MSF for Agile Software Development is an iterative, scenario-driven development process for building .NET, Web, Web Service, and other object-oriented applications. It directly incorporates practices for handling quality of service requirements such as performance and security, utilizes a context-driven approach (context-based) to determine how to operate the project, explicitly calls out project risk as a success criteria for the optimal delivery of software, and incorporates all of the traditional software development roles such as the business analyst, project manager, architect, developer, tester, and release manager. This MSF process is a flexible guidance framework that helps create an adaptive system for software development. This agile methodology anticipates the need to adapt to change, and focuses on people as the most important component to the success of a project. It also emphasizes the delivery of working software and promotes customer validation as key success measures. Choose MSF for CMMI Process Improvement over MSF for Agile Software Development, if your organization is undertaking a broad quality assurance and process improvement initiative or your team needs the assistance of explicit process guidance rather than relying on tacit knowledge and experience.</description>
    <plugins>
            <plugin name="Microsoft.ProjectCreationWizard.Classification" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.Reporting" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.Portal" wizardPage="true"/>
             <plugin name="Microsoft.ProjectCreationWizard.Groups" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.WorkItemTracking" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.VersionControl" wizardPage="true"/>
    </plugins>
  </metadata>
  <groups>
            <group id="Classification"
                        description="Structure definition for the project."
                        completionMessage="Project Structure uploaded.">
                         <dependencies>
                        </dependencies>
                        <taskList filename="Classification\Classification.xml"/>
            </group>
             <group id="Groups"
                        description="Create Groups and assign Permissions."
                        completionMessage="Groups created and Permissions assigned.">
                        <dependencies>
                                    <dependency groupId="Classification" />
                        </dependencies>
                        <taskList filename="Groups and Permissions\GroupsandPermissions.xml" />
            </group>
             <group id="Portal"
                        description="Creating project Site"
                        completionMessage="Project site created.">
                        <dependencies>
                                    <dependency groupId="Classification"/>
                                    <dependency groupId="WorkItemTracking"/>
                                    <dependency groupId="VersionControl" />
                        </dependencies>
                        <taskList filename="Windows SharePoint Services\WssTasks.xml"/>
            </group>
            <group id="Reporting"
                        description="Project reports uploading."
                        completionMessage="Project reports uploaded.">
                        <dependencies>
                        <dependency groupId="Classification"/>
                        <dependency groupId="Portal"/>
                        </dependencies>
                        <taskList filename="Reports\ReportsTasks.xml"/>
            </group>
            <group id="WorkItemTracking"
                        description="Workitem definitions uploading."
                        completionMessage="Workitem definitions uploaded.">
                        <dependencies>
                        <dependency groupId="Classification"/>
                        <dependency groupId="Groups"/>
                        </dependencies>
                        <taskList filename="WorkItem Tracking\WorkItems.xml"/>
            </group>
            <group id="VersionControl"
                        description="Creating version control."
                        completionMessage="Version control task completed.">
            <dependencies>
                        <dependency groupId="Classification"/>
                        <dependency groupId="Groups"/>
                        <dependency groupId="WorkItemTracking" /> <!-- This is just to serialize execution with WIT -->
                        </dependencies>
                        <taskList filename="Version Control\VersionControl.xml"/>
            </group>
  </groups>
</ProcessTemplate>
<?xml version="1.0" encoding="utf-8" ?>
<ProcessTemplate>
  <metadata>
    <name>
Kendi Sablonumuz </name>
        <description>
Kendi Sablonumuz için açıklama yazabiliriz</description>
   

 

 

 



     <plugins>
            <plugin name="Microsoft.ProjectCreationWizard.Classification" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.Reporting" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.Portal" wizardPage="true"/>
             <plugin name="Microsoft.ProjectCreationWizard.Groups" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.WorkItemTracking" wizardPage="false"/>
            <plugin name="Microsoft.ProjectCreationWizard.VersionControl" wizardPage="true"/>
    </plugins>
  </metadata>
  <groups>
            <group id="Classification"
                        description="Structure definition for the project."
                        completionMessage="Project Structure uploaded.">
                         <dependencies>
                        </dependencies>
                        <taskList filename="Classification\Classification.xml"/>
            </group>
             <group id="Groups"
                        description="Create Groups and assign Permissions."
                        completionMessage="Groups created and Permissions assigned.">
                        <dependencies>
                                    <dependency groupId="Classification" />
                        </dependencies>
                        <taskList filename="Groups and Permissions\GroupsandPermissions.xml" />
            </group>
             <group id="Portal"
                        description="Creating project Site"
                        completionMessage="Project site created.">
                        <dependencies>
                                    <dependency groupId="Classification"/>
                                    <dependency groupId="WorkItemTracking"/>
                                    <dependency groupId="VersionControl" />
                        </dependencies>
                        <taskList filename="Windows SharePoint Services\WssTasks.xml"/>
            </group>
            <group id="Reporting"
                        description="Project reports uploading."
                        completionMessage="Project reports uploaded.">
                        <dependencies>
                        <dependency groupId="Classification"/>
                        <dependency groupId="Portal"/>
                        </dependencies>
                        <taskList filename="Reports\ReportsTasks.xml"/>
            </group>
            <group id="WorkItemTracking"
                        description="Workitem definitions uploading."
                        completionMessage="Workitem definitions uploaded.">
                        <dependencies>
                        <dependency groupId="Classification"/>
                        <dependency groupId="Groups"/>
                        </dependencies>
                        <taskList filename="WorkItem Tracking\WorkItems.xml"/>
            </group>
            <group id="VersionControl"
                        description="Creating version control."
                        completionMessage="Version control task completed.">
            <dependencies>
                        <dependency groupId="Classification"/>
                        <dependency groupId="Groups"/>
                        <dependency groupId="WorkItemTracking" /> <!-- This is just to serialize execution with WIT -->
                        </dependencies>
                        <taskList filename="Version Control\VersionControl.xml"/>
            </group>
  </groups>
</ProcessTemplate>

WorkItem Tracking/ workitems.xml
<?xml version="1.0" encoding="utf-8" ?>
<tasks>
<task
id="WITs"
name="WorkItemType definitions"
plugin="Microsoft.ProjectCreationWizard.WorkItemTracking"
completionMessage="WorkItemTypes created">
<taskXml>
..............................................
.............................................
















</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Migration of Work Items" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="If you are bringing an existing project into VSTS you can migrate work items such as bugs and tasks from Clearquest or a CSV file. For more information, see 'Migrating from ClearQuest' in the Visual Studio help. You should complete migration of work items before team members are granted access to the team project." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Set Check-in Policies" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Setup the business rules or policies that surround source code check-ins. For more information, see 'Check-in Policies and Notes' in the Visual Studio help." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Configure Build" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Create an initial source tree and set up the build to run on a periodic, usually daily, basis. For more information, see 'Administering Team Foundation Build' in the Visual Studio help." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Send Mail to Users for Installation and Getting started" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Send an e-mail to team members that provides information about which Team Foundation Server they should connect to, and which team project they should use so they can get started working on the team project." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Create Vision Statement" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="Microsoft.VSTS.Common.Discipline" value="Requirements" />
<FIELD refname="System.Description" value="There is process guidance available for this task. Open the link &lt;$$WSSSITE$$/$$PROJECTNAME$$/Process%20Guidance/Supporting%20Files/WriteVisionStatement.htm&gt; or in the process guidance, select the 'Index' tab from the tabs at the top of the page. On the workstreams page, select 'Capture Project Vision'. Under activities, choose the first entry, 'Write Vision Statement'. If the process guidance is not open in the web browser, open the 'Documents' folder in the Team Explorer. Inside the 'Documents' folder is a folder entitled 'Process Guidance'. Double click on 'ProcessGuidance.html' inside the Process Guidance folder to bring up the process guidance." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Create Project Description on Team Project Portal" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Change the default project description to better describe the new team project; such as describing project purpose, goals, or vision. To change the description, open the project portal, click 'Site Settings,' and then click 'Change site title and description.'" />
</WI>

................................................................................................
................................................................................................
<?xml version="1.0" encoding="utf-8" ?>
<tasks>
<task
id="WITs"
name="WorkItemType definitions"
plugin="Microsoft.ProjectCreationWizard.WorkItemTracking"
completionMessage="WorkItemTypes created">
<taskXml>
..............................................
.............................................

<WI type="Task">
<FIELD refname="System.Title" value="PROJEYE BAŞLARKEN TAMAMLANMASI GEREKEN İLK GÖREV" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Bu Görevle ilgili açıklamalar." />
</WI>

</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Migration of Work Items" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="If you are bringing an existing project into VSTS you can migrate work items such as bugs and tasks from Clearquest or a CSV file. For more information, see 'Migrating from ClearQuest' in the Visual Studio help. You should complete migration of work items before team members are granted access to the team project." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Set Check-in Policies" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Setup the business rules or policies that surround source code check-ins. For more information, see 'Check-in Policies and Notes' in the Visual Studio help." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Configure Build" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Create an initial source tree and set up the build to run on a periodic, usually daily, basis. For more information, see 'Administering Team Foundation Build' in the Visual Studio help." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Send Mail to Users for Installation and Getting started" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Send an e-mail to team members that provides information about which Team Foundation Server they should connect to, and which team project they should use so they can get started working on the team project." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Create Vision Statement" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="Microsoft.VSTS.Common.Discipline" value="Requirements" />
<FIELD refname="System.Description" value="There is process guidance available for this task. Open the link &lt;$$WSSSITE$$/$$PROJECTNAME$$/Process%20Guidance/Supporting%20Files/WriteVisionStatement.htm&gt; or in the process guidance, select the 'Index' tab from the tabs at the top of the page. On the workstreams page, select 'Capture Project Vision'. Under activities, choose the first entry, 'Write Vision Statement'. If the process guidance is not open in the web browser, open the 'Documents' folder in the Team Explorer. Inside the 'Documents' folder is a folder entitled 'Process Guidance'. Double click on 'ProcessGuidance.html' inside the Process Guidance folder to bring up the process guidance." />
</WI>
<WI type="Task">
<FIELD refname="System.Title" value="Set up: Create Project Description on Team Project Portal" />
<FIELD refname="System.IterationPath" value="$$PROJECTNAME$$\Iteration 0" />
<FIELD refname="System.State" value="Active" />
<FIELD refname="System.Reason" value="New" />
<FIELD refname="Microsoft.VSTS.Common.Issue" value="No" />
<FIELD refname="Microsoft.VSTS.Common.ExitCriteria" value="Yes" />
<FIELD refname="System.Description" value="Change the default project description to better describe the new team project; such as describing project purpose, goals, or vision. To change the description, open the project portal, click 'Site Settings,' and then click 'Change site title and description.'" />
</WI>

................................................................................................
................................................................................................

Yapmak istediğimiz değişikliklerin ardından bu Process Template'i tekrar TFS' a UPLOAD etmemiz gerekecektir. Bu işlem için yapılacak işlemler yine aynı aslında, DOWNLOAD işleminin yapıldığı yerde bu kez upload işlemi yapılacaktır. Böylece bu template de artık TFS üzerinde kullanıma hazır hale gelecektir.
 


 


 

 

Bu işlemleri arayüzden nasıl yapabileceğimiz ve Visual Studio Team System hakkında bilgilerimi sizlerle paylaşacağım sonraki makalelerimde görüşmek üzere.

Osman ÇOKAKOĞLU
osman.cokakoglu@netron.com.tr