مولفه های وب معنایی

در شکل زیر می توان به وضوح و به صورت سلسه مراتبی مولفه های وب معنایی را مشاهده کرد.

مولفه های وب معنایی
مولفه های وب معنایی

برای دریافت اطلاعات سری به اینجا بزنید.

تاریخچه زبان های شی گرای مدلسازی

در این تصویر می توان به وضوح تاریخچه زبان های شی گرای مدلسازی را مشاهده کرد.

البته باید اضافه کنم که اخرین نسخه UML ورژن ۲٫۵ هست که در سال ۲۰۱۲ ارایه شد.

OO Modeling language History
OO Modeling language History

 

پشته معماری وب سرویس ها

در این شکل پشته معماری وب سرویس ها رو می تونید ببینید. فقط ببخشید کیفیت بالا نیست.

برای دیدن توضیحات مفصل تر یه سری هم به اینجا بزنید. چیزای خوبی دستگیر میشه.

وب سرویس ها در معماری سرویس گرا

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

نقش وب سرویس ها در معماری سرویس گرا
نقش وب سرویس ها در معماری سرویس گرا

نسخه انگلیسی تصویر در اینجا قابل مشاهده است.

Web 3.0 چیست ؟

Web 3.0 در واقع ادامه روند توسعه Web 2.0 است. Nova Spivack که یکی از مدیران کمپانی Radar Netwroks است مفهوم Web 3.0 را هوش مصنوعی ، اتصال داده ها ، مفاهیم ، برنامه های کاربردی و در نهایت مردم تعریف می کند. در زمانی که برخی Web 3.0 را Semantic Web یا همان وب معنایی تعریف می کنند ؛ Spivack وب معنایی را تنها یکی از چندین و چند تکنولوژی و ترندهای Web 3.0 میداند که این مفهوم را تشریح می کند. وی همچنین گفته است :

Web 3.0 مجموعه ای است از استانداردهایی که فضای اینترنت را به یک دیتابیس عظیم مبدل می کند.

Nova Spivack
Nova Spivack

اما Tim Berners- Lee مفهوم Web 3.0 را وب معنایی عنوان می کند. او را می شناسید ؟ بنیان گذار دنیای وب است. بدون تیم هرگز وب وجود نداشت. اینترنت مدیون اوست.

Tim Berners- Lee
https://www.internethalloffame.org/sites/default/files/inductees/Berners-Lee_Tim.jpg

کمتر کسی هست که در دنیای وب تحقیق کرده باشد و او را نشناسد.

Dale Dougherty
Dale Dougherty

Dale Dougherty خالق وب ۲٫۰ می باشد.

مقاله خوبی هم از .expertsystem منتشر شده است که ۵ ویژگی کلیدی وب ۳٫۰ را نام برده است :

  • وب معنایی
    • این مفهوم قرار است تکنولوژی های وب را بهبود ببخشد بدین صورت که از طریق جست و جو و تجزیه و تحلیل بر اساس درک معنایی کلمات به تولید ، اشتراک گذاری و تولید محتوی بپردازد.
  • هوش مصنوعی
    • توضیح این مورد برای من که یک دانشجو و علاقه مند به حوزه وب هستم هم فوق العاده است ؛ در وب ۳٫۰ رایانه ها می توانند اطلاعات را مثل ما انسان ها درک کنند (یادی کنیم از آلن تیورینگ ؛ پدر هوش مصنوعی) تا اطلاعات جست و جوی ما را سریع تر و مرتبط تر پیدا کنند ؛ بلی رایانه ها قرار است باهوش تر باشند تا نیازهای ما انسان ها را درک کنند.
  • گرافیک سه بعدی
    • طراحی سه بعدی به صورت گسترده در دستور کار قرار خواهد گرفت ؛ در وب ۳٫۰ راهنمای موزه ها ، بازی های رایانه ای ، تجارت الکترونیک و … نمونه هایی هستند که طراحی سه بعدی استفاده خواهند کرد.
  • اتصال
  • حضور کامل در همه جا در یک وقت (Ubiquity)
    • محتوی از طریق برنامه های متعدد قابل دسترس خواهد بود. همه ابزارها به اینترنت متصل خواهند بود و سرویس در همه جا قابل دسترسی است.

به + و +  هم سری بزنید که اطلاعات خوب و مفیدی را جمع آوری کرده اند.

گریدی بوچ

گريدي بوچ (Grady Booch) یکی از مشهورترین صاحب نظران در مورد مدل شی گرا در دنیای نرم افزار است.

عمده شهرت بوچ بخاطر همکاری اش در UML است. یک سوال مطرح میکنم تا به اهمیت کار بوچ پی ببرید.

دنیای پروژه های نرم افزاری را بدون UML (زبان مدل سازی یکپارچه) تصور کنید ! می توانید ؟ تصورش برای من بسیار سخت است. معروفترین کتابش هم Object Oriented Analysis and Design است که مدل مخصوص خود را در آن مطرح کرده است. روش بوچ یک نوع روش مدل سازی Object است.

مدل بوچ
مدل بوچ

در مدل فوق کلاس های تجرید ، فلش های همکاری ، ارث بری ، تجمیع و بهره مندی را مشاهده می کنید.

 

ضرورت معماری سازمانی

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

  • از وجود یک استراتژی بلند مدت محروم می شویم
  • از وجود یک Technical map محروم می شویم
  • به نیازمندی های پروژه بی توجهی می کنیم
  • زمان زیادی صرف پیاده سازی پروژه خواهد شد که از خوصله خارج است
  • هزینه زیادی صرف پروژه خواهد شد که مقرون به صرفه نخواهد بود
  • نسل های مختلفی از استایل ها و سیستم ها در پروژه حضور خواهند داشت
    • البته این مورد گاها مزیت محسوب می شود و از ان بعنوان جامعیت یاد می شود Comprehensive
  • عدم قابلیت توسعه پروژه در فازهای مختلف Lack of development

اما چه جاهایی معماری ضرورت دارد ؟

  • زمان که پروژه ما دارای ابعاد گسترده ای باشد
  • زمانی که دچار High Complexity در پروژه باشیم
  • زمانی که نیازمندی های غیر معمول (استثنایی) در پروژه داشته باشیم.
  • زمانی که پروژه طول عمر داشته باشد و برای مدت طولانی استقرار داشته باشد.
  • زمانی که بخواهیم در برابر تغییرات پروژه Flexibility داشته باشیم و از خشکی خارج شویم.

مهمترین دلایل حضور فرآیند معماری سازمانی را می توان موارد ذیل بر شمرد :

  • ایجاد دیدگاهی تازه و سر زنده نسبت به IT در ارگان ها
  • پیشرفت تکنولوژی و نیاز ارگان ها به زنده ماندن در عصر اطلاعات با سیستم های پویا
  • E-Government

اما چه کسی این فرآیند مهم را مستقیما رهبری خواهد کرد ؟

Chief Information Officer یا همان بقول خودمانی CIO

ایده نگارش مطالب کلیدی فوق برگرفته از اسلایدهای کلاسی درس معماری سازمانی دکتر فریدون شمس (پدر معماری سازمانی ایران) در دانشکده مهندسی کامپیوتر دانشگاه شهید بهشتی است.

مروری سریع بر اسکرام

مقدمه

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

بررسی لغوی معنای اسکرام[۱]

اسکرام در لغت به فعالیتی اشاره دارد که در خلال بازی راگبی صورت می گیرد و در معنی به شور و مشورت جهت انجام کاری اشاره دارد.[۲]

پیدایش [۳]

در ۱۹۸۶ توسط هیروتاکا تاکوچی[۴] و ایکوجیرو نوناکا[۵] به مثابه یک راهبرد جدید در تولید نرم افزارهای تجاری که باید دو فاکتور انعطاف پذیری[۶] و سرعت[۷] را با خود به همراه داشته باشند ارائه شد. این متدولوژی که نخستین بار در ژاپن [۸]  ابداع شد در ۱۹۹۱ توسعه داده شد و ۱۹۹۵ بصورت یک متدولوژی رسمی مطرح و پیاده سازی شد.

چیستی [۹]

اسکرام یک چارچوب است یا یک متدولوژی ؟ مبدع آن تاکید زیادی بر استفاده از لفظ چارچوب دارد اما برخی دیگر از صاحب نظران از لفظ متدولوژی را ارجح می دانند. مایک کان [۱۰]  تعریف خوبی را ارائه داده است بدین صورت که اسکرام یک چارچوب می باشد و بجای اینکه جزئیات دقیق و کاملی را در مورد چگونگی انجام پروژه ارائه دهد این مسئولیت را به خود تیم واگذار می کند [۱۱]  نکته ی مهم و در خور تامل در رابطه با اسکرام این است که بجای حل مشکلات بیشتر سعی در نمایاندن و شفاف کردن آنها دارد. برای روشن شدن موضوع به کلام کن شوئبر و جف سادرلند در راهنمای اسکرام می پردازیم :

“Scrum employs an iterative, incremental approach to optimize predictability and control risk” [12]

بدین معنی که این چارچوب از رویکردی تکراری افزایشی[۱۳] جهت بهینه سازی پیش بینی و کنترل ریسک بهره می برد. اما در چرایی ایجاد این چارچوب آمده است که :

“Scrum is an Agile Framework for Completing complex projects”[14]

بعضا چنین عنوان می شود که اسکرام فقط در پروژه های کوچک استفاده می شود اما وقتی بهتر بررسی می کنیم می بینیم کمپانی های بزرگی همچون گوگل[۱۵] یاهو[۱۶] و مایکروسافت [۱۷]  از این چارچوب استفاده می کنند پس این تفکر که اسکرام خاص پروژه های کوچک است تفکری است غلط و نابجا. در همین رابطه باید گفت اسکرام خاصیت تقسیم پذیری پروژه ای بزرگ به پروژه ای کوچک را داراست که می توان بصورت همزمان و موازی این پروژه را انجام داد.[۱۸]

نقش ها

غالب نقش ها در اسکرام عبارتند از :

  • [SM[19: وظیفه نگهداری فرآینده را برعهده دارد.
  • [۲۰]PO: نماینده بیزینس [۲۱]  و ذی نفعان [۲۲] پروژه است.
  • [۲۳]TM: عضوی است از تیمی که حداکثرهفت نفر می باشند اما اندازه پنج تا نه نفر ترجیج داده میشود که وظیفه تحلیل طراحی پیاده سازی تست و … را بر عهده دارند. [۲۴]

 

نکته مهم این است که نقش های اسکرام جز در سه قالب فوق نمی گنجند و اعضاء نمی توانند چندین سمت داشته باشند.

PO مسئولیت تعیین هدف و فلسفه آن را روشن می سازد ولی به چگونگی رسیدن تیم به هدف کاری نخواهد داشت.

از جمله نقش های که TM ها بر عهده دارند می توان به برنامه نویس [۲۵]  تحلیل گر [۲۶]  مدیر پایگاه داده [۲۷]  و … اشاره داشت.

دو  ویژگی متمایز تیم های اسکرام که دیگر تیم ها فاقد آن هستند خود رهبری [۲۸]  و  [۲۹]Cross-Functionality می باشد.

پروسه کاری

از آنجایی که اسکرام بصورت ترکیبی از دو متدولوژی Iterative و Incremental می باشد محصول بصورت تدریجی و در قطعه های زمانی پیوسته تکمیل می گردد. این دوره های زمانی را Sprint می نامیم. غالبا هر Sprint در بازه زمانی دو تا چهار هفته زمان می برد تا تکمیل شود و تعیین بازه چون بخشی از جزئیات است و همانطور که در بالا اشاره شد اسکرام جزئیات را به دستان تیم می سپارد پس تیم تعیین کننده بازه زمانی است. Product Backlog ها مجموعه نیازمندی هایی با اولویت بالا هستند که می بایست تکمیل شوند. گزینه هایی (وظایف) [۳۰]  از Product Backlog ها که می بایست در یک Sprint تکمیل شوند با نام Sprint Backlog شناخته می شوند. در واقع Sprint ها مجموعه ای هستند از Task های لازم الاجرا. نکته مهم اینست که این گزینه ها پس از توافق با  [۳۱]PO  در جلسات به هیچ وجه قابل تغییر نیست  و حتما می بایست انجام شوند. چون از متدولوژی های افزایشی و تکراری در Sprint ها بهره می جوییم در طی اجرای هر Sprint محصول ما کامل و کامل تر می شود.[۳۲]

از جمله سوالات مهمی که در Daily Meeting ها ما بین اعضای تیم و PO صورت می گیرد موارد ذیل است : [۳۳]

  • از دیدار قبل تا کنون چه فعالیت هایی انجام داده اید؟ [۳۴]
  • با چه موانعی مواجه هستید ؟ [۳۵]
  • از حالا تا جلسه آینده چه برنامه هایی مد نظر دارید ؟[۳۶]

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

راجر اس پرسمن در رابطه با اسکرام چنین می گوید :

“Scrum incorporates a set of process patterns that emphasize project priorities, compartmentalized work units, communication, and frequent customer feedback”[37].

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

 

بصورت خلاصه اگر بخواهیم مراحل پیاده سازی اسکرام را بیان کنیم باید هفت مرحله را طی کنیم تا عملیاتی شدن این چارچوب را شاهد باشیم :

مرحله اول : تهیه Product Backlog که تمام خواسته های صاحب محصول را پوشش می دهد و در طی یک یا دو جلسه در پی ملاقات حضوری با مشتری تکمیل خواهد شد. مرحله دوم فازبندی پروژه می باشد که یک به چندین Task تبدیل خواهد شد. مرحله سوم جلسات برنامه ریزی اسپرینت ها خواهند بود که اهداف و چگونگی رسیدن به اهداف بحث می شود و می توان از Scrum Board [38] استفاده کرد. مرحله چهارم هم تهیه سند اسپرینت [۳۹] می باشد. مرحله پنجم Scrum Execution نام دارد که اعضای تیم فعالیت هایشان را با Scrum Board بروزرسانی می کنند.

 

مرحله ششم تحویل اسپرینت می باشد که می تواند بخشی از تحویل تکمیلی یک فاز یا تمام یک فاز باشد. مرحله هفتم ارایه گزارش اسپرینت هست و مرحله پایانی بازنگری اسپرینت[۴۰] می باشد که پایان اسپرینت می باشد و بعد از این اسپرینت جدید آغاز شده و بازگشت به مرحله سوم صورت میگیرد و این تناوب تا اتمام و نگهداری پروژه ادامه پیدا می کند.[۴۱]

[۱] scrum

[۲] . حمید خورسند رحیم زاده , محمد حیدری مقدمه ای بر مهندسی نرم افزار

[۳] Wikipedia

[۴] Hirotaka Takeuchi

[۵] Ikujiro Nonaka

[۶] Flexibility

[۷] Speed

[۸] Japan

[۹] What

[۱۰] Mike Cohn

[۱۱] Mike Cohn Blog

[۱۲] scrum guide

[۱۳] iterative incremental

[۱۴] Scrum Alliance

[۱۵] Google

[۱۶] Yahoo

[۱۷] Microsoft

[۱۸] فریدون شمس علیئی مهندسی نرم افزار پیشرفته

[۱۹] Scrum Master

[۲۰] Product Owner

[۲۱] Business

[۲۲] Stakeholders

[۲۳] Team Member

[۲۴] Wikipedia

[۲۵] Programmer

[۲۶] Analyzer

[۲۷] Database Administrator

[۲۸] Self-Organize

[۲۹] denoting or relating to a system whereby people from different areas of an organization work together as a team

[۳۰] Task

[۳۱] Product Owner

[۳۲] مهدی تاچیک, مدیریت اسکرام به زبان ساده

[۳۳] حمید خورسند رحیم زاده , محمد حیدری مقدمه ای بر مهندسی نرم افزار

[۳۴] What did you do since the last meeting?

 

[۳۵]What obstacles are you encountering?

[۳۶] What do you plan to accomplish by the next meeting?

[۳۷] R.S. PressMan , an Approach to Software Engineering

[۳۸] تخته ایست شامل سه بخش ToDo Doing و Done

[۳۹] Sprint Backlog

[۴۰] Sprint Retrospective

[۴۱] منصور جوادی, اسکرام به زبان ساده