ارائه توسط: Michael Kircher, Markus Voelter
منبع:
SE Radio, Episode 53
مترجم: محمد علی بزرگ زاده
در ادامه اين مطلب گزيدهاي از مطالب مطرح شده در اپيزود اول مصاحبه سايت SE Radio با موضوع Product Line Engineering ارائه شده است.
SPL براي چه كساني مفيد است؟
توسعه به روش Sofware Product Line يا به اختصار SPL، براي كساني مفيد است كه مي خواهند تعدادي محصولات مشابه (Related Products) يا از يك رده (Product Family) توليد كنند طوريكه ويژگيهاي مشترك بين اين محصولات گسترده باشد. وقتي شما يك محصول را به روش SPL توسعه ميدهيد در ابتدا هزينه بيشتري ميپردازيد اما Reuse در توسعه محصولات بعدي، و قدرت ارائه سريع محصولات بعدي به بازار، باعث ميشود كه اين هزينه، ارزشش را داشته باشد.
چنانچه قصد توسعه Product Family نداريد، نبايد بسراغ SPL برويد زيرا توسعه به روش SPL متضمن تغيير روشها، تفكر و ابزار در كليه مراحل و فازهاي توسعه، ميباشد و حتي تغيير در ساختار سازمان نيز مطرح ميشود. اينها همه هزينه بر هستند.
اگر تغييرات در تكنولوژي و Business شما بيش از حد سريع و عميق باشد نيز، رفتن بسراغ SPL درست نيست زيرا عملاً Platform در توليد محصول بعدي، منسوخ شده است.
در SPL، حتماً Platform توليد ميشود، اگر يك سازماني به سمت توليد Platform رفته اين يك نشانه است كه احتمالاً SPL براي او مناسب است.
آشنايي با SPL
هر Platform لزوماً SPL نيست. در SPL از Config كردن Platform، محصول دلخواه توليد ميشود نه از برداشتن و سرهم كردن ماژولهاي موجود در آن. بنابراين تكنيكهايي مثل زبان Config يا Generator هايي كه محصول را از Config مورد نظر، ميسازند، مطرح ميشود.
در SPL مسأله Domain Scoping يا Domain Modeling بسيار مهم است يعني تحليل اينكه نيازهاي ردههاي مختلف مشتريان و Business ، هماكنون يا بصورت بالقوه چيست و ازميان آنها، چه نيازهايي ارزش توسعه دارد و تا چه حد از قابليت بايد، Support شود.
لازم نيست مهندسان و توسعهگران همه تحليلگر Domain باشند، خيلي از آنها اصلاً علاقهاي هم ندارند اما بايد اين فرآيند توسط فردي، بصورت مداوم، انجام شود تا تعيين شود چه قابليتهايي بايد پشتيباني شود و يا چه قابليتهايي از Platform حذف شود.
تفاوت Problem Space و Domain Space
Problem Space مربوط به مسائلي از قبيل نيازمنديها، use case ها، nonfunctional ها، سناريوها، Business Modeling و بالاخص در SPL، مسأله Domain Modeling است در حاليكه Solution Space مربوط به مسائلي از قبيل Source ها، معماري، API ها و بالاخص در SPL، موارد Framework و Configurable Component ها و DSL است. (DSL مخفف Domain Specific Language همان زبان بيان Configuration يك محصول است).
مفهوم برخي اصطلاحات در SPL
Feature: بيانگر يكي از امكاناتي است كه بايستي يا ميتواند در يك محصول از خانواده محصولات ظاهر شود (بعنوان مثال، يك هواپيما بايستي يك Feature با نام موتور داشته باشد)
Feature Model: Commonality ها و Variability هايي كه يك Feature ميتواند در محصولات مختلف داشته باشد را Model ميكند. مثلاً Hierarchy آن Feature (موتور يك هواپيما ميتواند موتور جت يا پيستوني يا ... باشد). همچنين وابستگيها و ارتباطات Feature ها با هم (اگر شما Feature الف را داشته باشيد نميتوانيد Feature ب را داشته باشيد يا اگر شما Feature الف را داشته باشيد ميبايست يكي از Feature هاي ب يا ج را داشته باشيد و ...) در واقع، Feature Model كمك ميكند كه بتوانيد يك Configuration مجاز و مناسب براي يك محصول بيابيد.
ادامه مطلب ...