آمورش پروژه محور DevOPS و اجایل Azure Board


آموزش (Team Foundation Server)TFS

با سرویس تحت وب Azure Boards، تیم ها می توانند پروژه های نرم افزاری خود را مدیریت کنند. این مجموعه، مجموعه ای غنی از قابلیت ها از جمله پشتیبانی از فریم ورک های اجایل، Scrum و Kanban است، داشبورد مدیریتی قابل تنظیم و گزارش یکپارچه را فراهم می کند. این ابزارها می توانند رشد کسب و کار شما را مقیاس گذاری کنند. شما می توانید به سرعت و به راحتی user storyها را برنامه ریزی،مونیتورینگ و کنترل کنید. این کار را با اضافه کردن Work items بر اساس فرآیند و انواع جریان کار موجود در پروژه خود انجام می دهید.



برنامه ریزی و پیگیری کار با استفاده از Work items

برای هدایت یک تیم نرم افزاری و کنترل پروژه و Assign کردن Taskها به افراد تیم می توان از Azure استفاده کرد. پروژه مجموعه ی از کارها می باشد و مدیر پروژه باید این کارها را برنامه ریزی کرده و همزمان کارها را مونیتورینگ و کنترل نمایید. شما کارهای خود را با ایجاد انواع work itemsها و استفاده از جریان کاری برنامه ریزی و کنترل می کنید.

با ایجاد پروژه، الگو فرآیند را انتخاب کنید؟!

در هنگام ایجاد پروژه(New Project) ابتدا فرآیند کار را انتخاب نماییم (Work item process) سپس بر اساس فرآیند انتخاب شده، work itemها مرتبط با آن در پروژه نمایش داده می شوند. عمدتاً در تعریف انواع work itemها، برنامه ریزی و کنترل متفاوت هستند.

Work item process: Basic ، Agile ، Scrum ،CMMI

Work items Basic : Issues - Epics - Tasks

Work items Agile: Epic - Feature - User Storie -Task -Bug

Work items Scrum: Epic - Feature - PRODUCT BACKLOG ITEM - Task -Bug - Test Case- IMPEDIMENT

Work items CMMI : Issues - Epic - Feature -Bug -Task- Test Case -Requirement - Review - Risk - Change Request

Basic: سبکترین وزن است و در یک پیش نمایش انتخابی است.

Scrum: سبکترین وزن بعد از BASIC است.

Agile: از بسیاری از اصطلاحات روش Agile پشتیبانی می کند.

مانع هر چیزی است که تیم را از انجام کار باز می دارد و سرعت سرعت را کاهش می دهد. موانع به اشکال مختلف وجود دارد: یک عضو تیم بیمار، یک منبع از دست رفته، عدم پشتیبانی مدیریت یا حتی اتاق سرد تیم. اگر مانع انجام کار تیم شود، یک مانع است.

CMMI: که مخفف ادغام مدل قابلیت بلوغ است، بیشترین پشتیبانی را برای فرآیندهای رسمی و مدیریت تغییر ارائه می دهد.

بنابراین در هنگام تعریف پروژه در ابتدا باید با توجه به پروژه و کارهای آن یک Work item process را انتخاب کنید در نتیجه با انتخاب یک الگو فرایند، work itemها و روش های برنامه ریزی و کنترل همان الگوی فرایندی در اختیار شما قرار می گیرد.


هر زمان که شما یک پروژه را ایجاد می کنید، باید بر اساس مدل فرایندی که استفاده می کنید، یک الگوی فرآیند را انتخاب کنید. یک الگو فرآیند بلوک های ساختاری، برنامه ریزی و کنترل work items را تعریف می کند. یک الگو فرآیند، همچنین سایر سیستمهای فرعی را که از طریق Azure Board یا یک سرور آزور DevOps یا سرور Team Foundation (TFS) به آنها دسترسی پیدا می کنید، تعریف می کند.


با انتخاب یک فرآیند در پروژه در واقع شما دو چیز را انتخاب کرده اید!

1- workitemهای فرآیند : برای تعریف کارها

2- WorkFlow فرآیند : برای برنامه ریزی، کنترل و مانیتورینگ


Workitemهای فرآیند Basic

انواع work itemهای فرآیند Basic
فرایند Basic سه نوع work item را برای برنامه ریزی و کنترل کار فراهم می کند.

Issues: توصیه می شود برای کنترل feature و user story و bugs ایجاد کنید.

Epics: اگر نیاز دارید که آنها را به سلسله مراتب گروه بندی کنید ، می توانید epics را تعریف کنید.

Tasks: جزئیات اضافی کار را را کنترل نمایید می توانید tasks را به یک issue اضافه کنید.

بنابراین ابتدا کارها را دسته بندی کرده و زمان تقریبی انجام کارها را تخمین می زنیم. این می شود EPIC

سپس کارهای موجود در هر epic را تعریف می کنیم. این می شود Issue

سپس کارهای تعریف شده را به کارهای کوچکتر قابل انجام شدن تقسیم می کنیم که این می شود Task

گردش کار فرآیند Basic

Basic سه نوع Work item را ارائه می دهد - epics ، issues و tasks - و گردش کار بسیار ساده است. از آنجا که کارها از وضعیت آغاز نشده(To Do) به اتمام می رسند(Done) ، وضیعت workflow را ازحالت

To Do

Doing

Done

به روز رسانی می کنید.

وقتی یک issue ، task یا epic را اضافه می کنید ، یک work item را ایجاد می کنید. به هر work item یک شناسه اختصاص می یابد. شناسه ها در پروژه های شما منحصر به فرد هستند.


epic را برای کنترل ویژگی ها یا نیازهای مهم اضافه کنید. برای ردیابی user stories ، bugs یا سایر موارد کوچکتر از کار ، از issues استفاده کنید، و از task برای ردیابی مقادیر حتی کوچکترین کارهایی که می خواهید برای ردیابی زمان چه در ساعت و چه در روز استفاده کنید.


مدیریت پروژه

مرحله 1: تعریف کارها : Work Items

مرحله 2: جریان کاری : Work Flowe

مرحله 1: workitemهای فرآیند اجایل

انواع work itemهای فرایند اجایل: فرآیند Agile چندین work item را ارائه می دهد

Epic ردیابی ابتکارات تجاری مهم

Feature ردیابی برنامه های خاص یا مجموعه کارها

User Storie ردیابی کارهایی که به اعضای تیم خاص اختصاص می دهید.

Task ردیابی مقادیر حتی کوچکترین کارهایی که می خواهید زمان را در ساعت ها یا روزها ردیابی کنید استفاده کنید.

Bug ردیابی نقایص کد تعریف کرده،

وقتی Bug،Task،,User Story، Feature، Topicو ... اضافه می کنید ، یک work item ایجاد کرده اید. به هر work item یک شناسه (ID) منحصر به فرد در پروژه های شما اختصاص داده می شود. برای برنامه ریزی و کنترل کار. توصیه می کنیم با اضافه کردن user story شروع کنید. در صورت نیاز به گروه بندی آنها به سلسله مراتب ، می توانید Featureرا تعریف کنید. اگر می خواهید جزئیات اضافی کار را کنترل کنید ، می توانید Taskها را به یک داستان کاربر اضافه کنید.

1- تعریف Feature: دسته بندی user storyها

2- تعریف User story: تعریف کارها

3- تعریف Task: تعریف جزئیات کار( به user story اضافه می کنیم).

مرحله 2: جریان کاری: جریان کاری در فرآیند Agile

جریان کاری workflow در اجایل:

نکته: جریان کار برای یک آیتم کاری (WIT) تعریف می شود.

وضعیت های جریان کار: وضیعت های جریان کار نحوه پیشرفت یک آیتم کاری را از زمان ایجاد تا بسته شدن تعریف می کنند. به عنوان مثال: چهار وضیعت اصلی تعریف شده برای پیشرفت کار در User Story (فرآیند اجایل) New ، Active ، Resolution ، Closed می باشد. همینطور که work itemها از مرحله ی New به مرحله ی کامل شده می رسند، جریان کار به وضعیت New، Active، Resolvedو Colsed بروزرسانی می کنید.

وضیعت های جریان کار برای user storyها در فرآیند چابک


کار را روی backlog و تابلوها پیگیری کنید!

اطلاعات را از طریق توضیحات ، پیوستها یا پیوندها به محتوای مشترک شبکه به اشتراک بگذارید. کار را از طریق کشیدن و رها کردن در اولویت قرار دهید. وضعیت user stories را به روز کنید.با استفاده از برد Kanban، آیتم های کاری را از وضیعت New، Active، Resolution و بسته شده اضافه و یا به روز رسانی کنید. Task را به عنوان موارد کوچکتر به User Stories اضافه کنید. با استفاده از برد Kanban وضعیت کار را به حالت جدید به روز کنید. همچنین می توانید برای پشتیبانی از پرس و جوها و فیلتر کردن، به اعضای تیم اختصاص دهید و با برچسب بزنید.


New

Active

Resolved

Closed

Backlogs

در Backlogs می توانید User Story را اولویت بندی کنید.User Storyها را می توانید از طریق کشیدن و رها کردن در بقیه تیم خود در اولویت قرار دهید.
همکاری
از طریق بخش بحث و گفتگو در فرم مورد کار با دیگران همکاری کنید. از کنترلهایmentions و #ID استفاده کنید تا سریعاً دیگران را در مکالمه یا پیوند به موارد دیگر کار کنید. انتخاب کنید موارد خاص را دنبال کنید تا هنگام بروزرسانی هشدار داده شوید.


کنترل پروژه


داشبوردی ایجاد کنید که وضعیت و روند کارهای انجام شده را کنترل کند. اعلان ها را برای ایجاد هشدار هنگام ایجاد یک مسئله یا تغییر تنظیم کنید.


اجرای Scrum :

Sprints
برنامه ریزی Sprints را با اختصاص کار انجام می دهیم. پیش بینی زمان کار که می تواند براساس برآیند تلاش باشد. تعیین کنید چه مقدار User Story در یک حداکثر سرعت انجام می شود. بخش عمده ای از مسائل و وظایف را به اعضای تیم و sprints اختصاص می دهد. با استفاده از Scrum، می توانید برنامه ریزی و زمانبندی را انجام دهید، میز کار خود را با استفاده از Sprint Burnown کنترل کنید.

5 دقیقه سریع


1- اضافه کردن work item

2- backlogها یا زمانبندی Sprint را ایجاد نمایید. کار تیم ها را در فواصل زمانی منظم برنامه ریزی و پیگیری می کنند که به آن بازه زمانی Sprint گفته می شود. شما اسپرینت ها را تعریف می کنید تا با بازه زمانی مورد نظر تیم شما مطابقت داشته باشند. بسیاری از تیم ها یک بازه زمانی دو یا سه هفته ای را انتخاب می کنند. با این حال، شما می توانید چرخه اسپرینت کوتاهتر یا طولانی تر را تعیین کنید. همچنین، شما می توانید یک زمانبندی را ایجاد کنید که شامل چندین اسپرینت است.


راهنمای شروع سریع برای برنامه ریزی Sprints
برای شروع سریع ، می توانید از Sprintهای پیش فرض، که به آن تکرار(Iteration) نیز گفته می شود، استفاده کنید ، که هنگام ایجاد پروژه شما اضافه شد. توجه داشته باشید، شما باید عضو گروه مدیران پروژه باشید تا بتوانید اسپرینت ها را اضافه کنید و تاریخ Sprint را تعیین کنید. (اگر پروژه را ایجاد کردید ، عضو هستید.) برای انتخاب یک تیم دیگر، انتخاب کننده را باز کنید و تیم دیگری را انتخاب کنید یا گزینه icon Browse all sprints را انتخاب کنید. یا ، می توانید یک کلمه کلیدی را در کادر جستجو وارد کنید تا لیستی از بقیه تیم ها برای پروژه فیلتر شود.Set sprint dates.3 را انتخاب کنید
ذخیره و بستن را انتخاب کنید.

تست پروژه:
پروژه های آزمایشی می توانند براساس نوع آزمون (واحد ، عملکردی ، ادغام ، عملکرد و غیره) یا پروژه مورد آزمایش (هسته ، زیرساخت ، وب) یا هر دو سازماندهی شوند.
https://github.com/ardalis/CleanArchitecture

خلاصه این صفحه:


بنابراین وقتی شما یک پروژه جدید را شروع می کنید. در ابتدا Work itemها را تعریف می کنید. اگر فریم ورک Agileرا انتخاب کرده باشیم می توانیم User storyها را تعریف کرده و درون آن Taskها را ایجاد نمایید برای دسته بندی بالاتر می توانیم User storyها را در Feature قرار دهیم.در مرحله بعد از طریق Backlogباید User storyها را در زمانبندی تعریف شده(Sprint) قرار دهیم.

معماری اطلاعات در وب سایت

<< معماری اطلاعات وب سایت به زبان ساده >>

Information Architecture 

Information Architecture relates to IT & SoftwareDesignUser Experience DesignOther IT & Software

معماری اطلاعات، اسکلت هر پروژه طراحی را تشکیل می دهد. از نظر فنی، معماری اطلاعات(IA) و تجربه کاربری(UX) به یکدیگر مرتبط هستند اما تقریباً یکسان نیستند. معماری اطلاعات خوب پایه و اساس تجربه کاربری است. هدف از طراحی IA ساختن مدلی از ساختار و چیدمان اطلاعات بر اساس اهداف کاربران است تا کاربران در هنگام بهره گیری از خدمات سازمان احساس سردرگمی و گم شدن نداشته باشند و هدف از طراحی UX ساختن مدلی تعاملی دلپذیر است تا کاربران در هنگام استفاده از خدمت یا محصول احساس راحتی و رضایت کنند.

 

کلید وازه های که باید بدانید.

نقشه سفر کاربر (User Journey Map)چیست؟

نقشه های راه سعی در ثبت تجربه ی یک کاربر در هنگام تعامل با محصولات را دارند، نقشه های سفر نوعی دفترچه هستند که کاربران احساسات، نقاط درد و لحظات شادی خود در مواجهه با قسمت های مختلف محصول را در آن یادداشت می کنند.

نقشه سفر کاربر می تواند دارای چندین سطح باشد، آنها تنها بر روی یک عنصر خاص که موجب تحریک عملکرد می شود متمرکز نیستند. بلکه حتی می توانند آنچه را که بک اند(back-end) برای ارائه اطلاعات مورد نیاز به کاربر انجام می دهد را توصیف کنند. از سوی دیگر، ممکن است بیشتر بر کاربر تمرکز داشته و احساس و اندیشه آنها در هنگام تعامل با محصول را توصیف کنند.

 User Flow چیست؟

یک User Flow تمام مسیرهای ممکن را که کاربر می تواند برای انجام یک کار طی کند را نشان می دهد(به عنوان مثال خرید از سایت).نوعی نقشه ی راه از کاربرانی می باشد که وارد وب سایت شما شده اند و مسیر های مختلفی را در سایت شما طی کرده اند. 

* ابزار ترسیم User Flow:

- نرم افزارهای رسم چارت مانند visio ، Lucid chart،

- نرم افزارهای نقشه‌ ذهنی (Mind Map) مانند:  iMindMap ، mindmeister ، XMind

 

چگونه مسیر های که کاربر در سایت ما طی کرده است را مشاهده کنیم(نقشه راه مشتری بر روی وب سایت)؟

با ابزار گوگل آنالیتیکس و سپس در بخش Audience و بعد از آن ابزار محبوب User Flow(نموداری که مشاهده می کنید به صورت پیشفرض بر اساس  کشور نمایش داده می شود.)

 

مدت زمان لازم برای خواندن مطلب 6 دقیقه

 معماری اطلاعت وب سایت چیست؟

 

در واقع می توان گفت که اولین گام اصلی در ایجاد یک وب سایت معماری اطلاعات وب سایت است چه بسا وب سایت های طراحی و پیاده سازی شده است که در انتها نه کاربرپسند بوده است و نه کارآمد و موثر.

 بنابراین بیایم در ابتدا مراجعه کنندگان خود که اولویت بالایی دارند را بشناسیم(ترسیم Personas)

و در ادامه نیازهای آن را بشناسیم و با توجه به نیازهای آنها (اگر در هر کسب و کار، هدف آن کسب و کار حل مشکلات و نیازهای کاربر نباشد آن کسب و کار موفق نخواهد شد) معماری اطلاعات را انجام دهیم

خروجی این معماری در یک کلام این است که کاربر در کمترین زمان و به راحتی بتوانید نیاز خود را در وب سایت پیدا کند(گیج و گنگ  و خسته نشود).

IA ستون فقرات اطلاعات سایت است. ناوبری به عناصر موجود در UI اطلاق می شود که به کاربران امکان می دهد به اطلاعات خاصی در سایت دسترسی پیدا کنند. در حقیقت ، معماری اطلاعات فراتر از پیمایش وب سایت است.

اگر تصمیم به استفاده از معماری اطلاعات در وب سایت خود دارید نیاز به  یک مورد مطالعاتی دارید.

1-ابتدا به مطالعه خود نام می دهید ، تصمیم می گیرید که چگونه و چه زمانی بسته خواهد شد.

نام: مطالعه در مورد معماری اطلاعات فروشگاه اینترنتی آنلاین کتاب

زمان پایان مطالعه: تعیین زمان پایان یا انتخاب تعداد افراد مشخص برای مطالعه

2- ایجاد برچسب های با توجه به نیازهای عینی مراجعه کنندگان به سایت(ایجاد Card)

نوشتن نیازهای کاربران بر روی  کارت ها و توضیح خیلی مختصر برای مثال در یک فروشگاه اینترنتی کتاب

 لیست کتاب ها: نمایش لیست کتاب ها

جستجو کتاب: امکان جستجو کتاب بر اساس نام پدیدآورنده، عنوان کتاب، دسته بندی و ...

نمایش جزئیات کتاب: نمایش اطلاعات هر کتاب (پدید آورنده - سال انتشار  و ...)

افزودن کتاب به سبد خرید: افزودن کتاب به سبد خرید

سفارش کتاب : امکان سفارش کتاب از وب سایت صورت آنلاین

پرداخت اینترنتی: پرداخت اینترنتی از طریق درگاه های اینترنتی 

ارسال کتاب: ارسال کتاب به آدرس مشخص شده

پیگیری سفارش: امکان پیگیری سفارش

2- دسته بندی برچسب ها و نام گذاری برچسب ها(مرتب سازی کارت Card Sorting)

از کتاب "مرتب سازی کارت" اثر دونا اسپنسر میتوان یاد گرفت که چگونه می توان مرتب سازی کارت را در یک وب سایت بزرگ انجام داد. مرتب سازی کارت یک روش کارآمد و آسان برای درک نحوه تفکر مردم درباره محتوا و دسته ها است. این کمک می کند تا شما چیدمان اطلاعات را به صورت انجام دهید  که به راحتی پیدا و درک شوند.

خرید کتاب

 لیست کتاب ها

نمایش جزئیات کتاب

افزودن کتاب به سبد خرید

سفارش کتاب

پرداخت اینترنتی

ارسال کتاب

پیگیری سفارش

دلایلی که رزنفلد و مورویل برای اهمیت و کارآمدی معماری اطلاعات داشتند شامل موارد زیر می باشد:

● هزینه یافتن اطلاعات

● هزینه پیدا نکردن اطلاعات

● هزینه ساختار

● هزینه نگهداری و

● هزینه آموزش

 

3- طراحی مدل اطلاعاتی با  اطلاعات دو مرحله قبل با استفاده از نرم افزارهای وایرفریمینگ

Balsamiq-wireframing

4- ارزیابی مدل اطلاعاتی(ارزیابی چیدمان اطلاعات از طریق آزمون قابل یافت‌پذیری و کاربردپذیری )

 

Findability Testing

Usability Tests

Serializing and Deserializing JSON

سناریو: ارسال یک درخواست به وب سرور (وب سرویس API) و دریافت پاسخ و نمایش مقادیر در کنترلر ASP .Net Core

آشنایی:

serialization و deserialization در داده های JSON چیست؟

سریعترین روش برای تبدیل کردن  آبجکت net. به یک فایل JSON  استفاده از JsonSerializer است. 

JsonSerializer آبجکت های net. را به معادل آن دریک JSON تبدیل می کند. با نگاشت کردن نام property آبجکت به نام property های JSON و مقادیر آن را برای شما کپی می کند.

deserialization عمل معکوس serialization می باشد.

JsonConvert
برای سناریوهای ساده ای که می خواهید به یک رشته JSON تبدیل شوید و از آن استفاده کنید ، روش های ()SerializeObject و ()DeserializeObject در JsonConvert یک بسته بندی آسان برای استفاده از JsonSerializer را ارائه می دهد.

1- ساخت یک آبجکت از کلاس Product و مقداری دهی به property های آبجکت

;()Product product = new Product

;product.Name = "Apple
;(product.ExpiryDate = new DateTime(2008, 12, 28
;product.Price = 3.99M
;{"product.Sizes = new string[] { "Small", "Medium", "Large
;(string output = JsonConvert.SerializeObject(product
فایل JSON تولید شده از کد بالا

}
  ,"Name": "Apple"
  ,"ExpiryDate": "2008-12-28T00:00:00"
  ,"Price": 3.99
  [":Sizes"
    ,"Small"
    ,"Medium"
    "Large"
  ]
{

Serializing and Deserializing JSON

 با کمک newtonsoft

Install Nuget Newtonsoft.Json

;using Newtonsoft.Json

در این سناریو یک درخواست به وب سرور ارسال شده است و پاسخ بازگشتی از وب سرور خوانده شده و با کمک متد DeserializeObject تبدیل به یک آبجکت از نوع کلاس Product شده است. و بدین صورت دسترسی به property های object و مقادیر آن امکان پذیر خئاهد شد.  


ساخت یک درخواست و ارسال آن به وب سرور

 ;"string Url = "https://sandbox-api.domain.com/api/orders/price/calc
           ;(var request = (HttpWebRequest)WebRequest.Create(Url

            ;"request.ContentType = "application/json
            ;"request.Method = "POST
            ;("request.Headers.Add("Authorization", "Bearer " + "Token
            ;("request.Headers.Add("X-Requested-With", "XMLHttpRequest

;(var jsonSer = JsonConvert.SerializeObject(param
            using (var streamWriter = new StreamWriter(request.GetRequestStream
           }
                ;(streamWriter.Write(jsonSer
                ;()streamWriter.Flush
               ;()streamWriter.Close
       
 {
دریافت پاسخ از وب سرور و تبدیل آن به آبجکت net.



;()var response = (HttpWebResponse)request.GetResponse
;(()StreamReader reader = new StreamReader(response.GetResponseStream
Read the content//
;()string result = reader.ReadToEnd
;()reader.Close
;(Product product = JsonConvert.DeserializeObject<Product>(result
;long price=product .Object.Price
 Display the status//
;string status = ((HttpWebResponse)response).StatusDescription

پدیدآورنده: محمد رضا اسدی

منابع: Newtonsoft