بحث کاربر:Hanieh keshvari
از ویکیپدیا، دانشنامهٔ آزاد.
[[طراحي نرم افزاري: طراحي نرم افزاري يك برنامه يا سيستم محاسباتي،عبارت از ساختارياساختارهاي سيستمي است كه شامل اجزا نرم افزار،ويژگيها وخصوصيات آن اجزا،كه قابل رويت ومشاهده هستند،ورابطه ميان آنها مي باشد.اين اصطلاح(عبارت)همچنين بر ارائه شواهد ومدارك طراحي نرم افزاري يك سيستم نيز دلالت مي كند.ارائه مدارك وشواهد طراحي نرم افزاري،ارتباط ميان عوامل ذينفع (يامرتبط)راتسهيل مي نمايد،اطلاعات و(مدارك) تصميم گيريهاي اوليه درباره طراحي سطح بالا را ارائه مي دهد،واستفاده وبكارگيري مجدد الگوهاواجزاطراحي رادر ميان پروژه ها،ممكن وميسر مي سازد. زمينه حوزه(ومحدوده) علم كامپيوتر از ميان مسائل ومشكلات مرتبط با پيچيدگي ناشي از شكل وترتيب آرايش آن ميباشد.مسائل ومشكلات اوليه پيچيدگي ،توسط ارائه كنندگان(وطراحان)،با انتخاب ساختارهاي اطلاعاتي(يا داده ي) دقيق،ارائه الگوريتم ها،ونيز با بكارگيري مفهوم جداسازي عوامل مرتبط برطرف گرديدند.هرچند كه عبارت" طراحي نرم افزاري" يك اصطلاح نسبتا جديدي براي اين صنعت مي باشد،(اما)اصول اساسي و(زيربناي)اين حوزه بطور پراكنده(وتك توك)،به توسط مهندسين نرم افزار از اواسط دهه1980مورد استفاده قرار گرفته شد.تلاشهاي اوليه جهت تسخير (وكنترل) وروشن كردن طرح نرم افزاري يك سيستم ،مبهم وغيردقيق بودند. كه اغلب بايك مجموعه اي از نمودارهاي ( جعبه وخطا ) مشخص ميشوند . در طول دهه 1990، يك تلاش تمركز يافته اي براي تعيين وتدوين ابعاد اساسي اين رشته علمي صورت گرفت . مجموعه هاي اوليه الگوهاي طراحي ، روشها ، عمليات ، زبانهاي توصيفي ، ومنطق صوري در طول اين دوره ، ارائه گرديد . رشته طراحي نرم افزاري برايده ( نظريه ) كاهش دادن پيچيدگي ،از طريق جدا سازي ومتمايز كردن (مفاهيم ) مرتبط ، متمركز ميباشد . تا به حال هنوز هيچ توافقي بر روي تعريف دقيق "اصطلاح طراحي نرم افزاري "صورت نگرفته است . به عنوان يك رشته كامل بدون قواعد وقوانين روشن در مورد روش درست طراحي يك سيستم عمل طراحي كردن ،هنوز هم يك تركيبي از هنر وعلم ميباشد. جنبه هنري طراحي نرم افزار ،بدين علت در نظر گرفته ميشود كه يك سيستم نرم افزارتجاري ،تا اندازه اي يك شغل يا يك حرفه را حمايت (وتقويت) مينمايد . چگونه يك سيستم ،عوامل محرك ومهم يك حرفه را حمايت وتقويت مي نمايد ،از طريق سناريئهايي بصورت مقتضيات غير كاركردي يك سيستم توصيف مي شود،همچنين بعنوان ويژگيهاي كيفي شناخته ميشودوتعيين مي كنندكه يك سيستم چگونه رفتار خواهد كرد. هرسيستمي به خاطر طبيعت محركهاي حرفه اي حامي (وتقويت كننده)آن منحصر به فرد مي باشد،وهمچنين به خاطر درجه(وميزان)ويژگي هاي كيفي كه آن سيستم نمايش مي دهد ونيز مقاومت (درمقابل)خطا ،سازگاري وقابليت انطباق ،قابليت توسعه پذيري،قابليت اطمينان،قابليت تعميرونگهداري،قابليت دسترسي،امنيت ،قابليت بكارگيري وبسياري از اين گونه قابليت ها كه باهر اجراي كاري تغيير خواهد كرد . براي درنظر گرفتن ديدگاه (هاي) يوزرها در طراحي نرم افزاري ،مي توان اظهار نمود كه طراحي نرم افزاري،مسيري را ارائه مي كند جهت تعيين مراحل وانجام وظايف مورد نظر يوزرهاي نظير افراد (وعوامل) ذينفع ومرتبط با سيستم هاي نرم افزاري ،ارائه كننده نرم افزار،گروه حمايت عملياتي سيستم نرم افزاري ،متخصصان تعميير ونگهداري نرم افزار،گسترش(ياآرايش)دهنده آزمايش كننده ونيز يوزر نهايي سيستم نرم افزاري. از اين منظر،طراحي نرم افزاري عبارت است ازتركيب وادغام ديدگاههاي چندگانه اي كه يك سيستم همواره ارائه مي نمايد. اين حقيقت كه آن ديدگاه هاي متفاوت مي توانند با همديگر دريك طراحي نرم افزاري در نظرگرفته شوند به عنوان توجيه ضرورت وتوجيه ابداع طراحي نرم افزاري،قبل از بكارگيري نرم افزار در يك پروژه اي كه به زمان پاياني خود مي رسد،درنظر گرفته مي شود.
تاريخچه منشا طراحي نرم افزاري به عنوان يك مفهوم(مستقل وانتزاعي )،ابتدادر اثرتحقيقاتي ادگار ديكسترادر 1968وديويد پارناس در اوايل دهه 1970ارائه گرديد . دانشمندان تاكيد نمودند كه ساختار مواد يك سيستم نرم افزاري، تعيين گرديده،ودستيابي به ساختار صحيح (ودقيق)بسيار مهم مي باشد . مطالعه وبررسي اين حوزه (يارشته)به طوركلي دردهه 1990باتمركز يافتن آثار تحقيقاتي به روشهايي(يا الگوهايي)طراحي ،زبان هاي توصيفي طراحي،استنادوارائه مدارك وشواهدطراحي،وروشهاي رسمي (ياصوري)،گسترش يافت. نهادها وموسسات تحقيقاتي يك نقش برجسته اي را در ترفيع طراحي نرم افزاري ،ايفا نمودند. مادي شاووديويد گارلان ازكارنجي ملون درسال 1996يك كتابي با عنوان طراحي نرم افزاري :ديدگاهها در باره يك رشته علمي درحال ايجاد وگسترش نوشتند كه مفاهيم مربوطه درطراحي نرم افزاري ،مانند اجزا،اتصال دهنده ها ،روشها ومانند اين ها راارائه نمود. انستيتو ايروين از دانشگاه كاليفرنيا ،تلاشهاي تحقيقاتي نرم افزاري در اين حوزه انجام دادكه اساسا در مورد مهارتهاي طراحي ،زبانهاي توصيفي طراحي وطراحي هاي دينا ميك وپويا انجام مي گرفت. 1471-2000موسسه مهندسين الكتريسيته والكترونيك وموسسه استانداردهاي ملي امريكا عمليات توصيه شده براي توصيف طراحي تيمهاي متمركز-نرم افزاري،اولين استانداردرسمي در حوزه طراحي نرم افزاري مي باشد ،واخيرابه صورت DIS25961وكميسيون بين المللي الكترونيك/سازمان بين المللي استاندارها توسط سازمان بين المللي استانداردهاپذيرفته شده است.
طراحي ها ي توصيفي زبانهاي توصيفي طراحي زبانهاي توصيفي طراحي يا(ADLs)براي توصيف يك طراحي نرم افزاري بكار گرفته مي شوند.چند ADLsمختلف توسط سازمانهاوموسسات مختلف بكار گرفته شده اند از جمله wright(كه توسط كارنگي ملون ارائه شده)،acme(كه توسط كارنگي ملون ارائه شده)Xadl(كه توسط uciارائه شده)،darwin(كه توسط امپريال كالج لندن ارائه شده )،DAOP-ADL(كه توسط دانشگاه مالاگاارائه شده است). عناصر عمومي يك ADLعبارتنداز اجزا،اتصال دهنده ها وشكل وترتيب آن. ديدگاهها(نقطه نظرات) طراحي نرم افزاري عموما از ديدگاه هاونقطه نظراتي شكل مي گيرد كه شيوه قابل قياس با انواع مختلف كپي آبي هائيست كه در معماري (وطراحي)ساختماني تهيه مي شود.در آنتولوژي (هستي شناسي)ارائه شده توسط1471-2000موسسه مهندسين الكتريسيته والكترونيك وموسسه استانداردهاي ملي امريكا ،ديدگاهها ،نمونه هايي از نقطه نظرات هستند بطوري كه يك نقطه نظر براي توصيف طراحي موردنظر از ديدگاه يك مجموعه اي از افراد (وعوامل)مرتبط وارتباط آنها ،تشكيل مي شود(يا وجود دارد). برخي ديدگاههاي احتمالي (درواقع ،نقطه نظرات درآنتولوژي 1471)عباتنداز:
- ديدگاه كاركردي(عملياتي)/منطقي.
- ديدگاه مدون(يا كد بندي).
- ديدگاه ايجادي/ساختاري.
- ديدگاه همزماني/پردازش (فرايند)/زبان برنامه نويسي كه به بخشهاي زيادي از كد امكان نوشتن وپس استفاده توسط برنامه اصلي مي دهد،فايلي كه يك ورودي آن مساوي آدرس وداده راداردباشد.
- ديدگاه فيزيكي/گسترش(ياآرايش دادن).
- ديدگاه عملكرد /بازخورد يوزر.
چندين زبان براي توصيف طراحي هاي نرم افزاري ابداع شده است،اما هيچ گونه توافقي ،هنوز در اين مورد حاصل نشده است كه كدام مجموعه –نمادو-ديدگاه –سيستم مي بايست اختيار شود . زباني كه مي توان آن رابراي مشخص كردن،ساخت،ومستندكردن سيستم هاي نرم افزاري وغيرنرم افزاريي چون مدل هاي كاري به كار بردبعنوان يك استاندارد "براي سيستمهاي مدل"(ونه تنها براي نرم افزار)ايجادشده است ،وبنابراين براي ديدگاههاي راجع به طراحي نرم افزار ي بكار مي رود. ديگران معتقدند كه توسعه موثر نرم افزار ،متكي بر درك وشناخت محدويتهاي منحصر بفرد هر مسئله اي مي باشد،وبنابراين نمادسازيهاي جهاني ،نارسا مي باشند زيرا هركدام يك مبناي نمادسازي راارائه مي كندكه لزوما آن نماد سازي رابراي برخي كاربرد ها بلا استفاده يا خطرناك مي سازد.آنها افزايش زبانهاي برنامه ريزي وجايگزين شدن اقدامات شكست خورده (يانارسا)جهت اعمال وبكارگيري يك "زبان جهاني"براي برنامه ريزان را بعنوان يك نشانه ودليلي براين امر خاطر نشان مي سازند كه پيشرفتهاي نرم افزاري درتنوع صورت مي گيرد ونه دراستاندارهاي آن. چارچوبهاي طراحي DODAF MODAF TOGAF Zachman ساختارابتدايي پايگاه داده يا فراينديابرنامه ،بسته نرم افزاري كه پردازش كلمه،مديريت پايگاه داده،صفحه گسترده ارتباطات وگرافيك هاي تجاري رافراهم مي كند. اتحادسازماني كه كارياگروهي ازكارهاي مربوط به ساير نقاط جهان راانجام مي دهد.طراحي سيستم كامپيوتري درلايه هايي طبق كارايي وخصوصياتشان ،ظاهرواتصالات سخت افزار داخلي كامپيوتر وارتباطات منطقي بين سي پي يووحافظه ووسايل ورودي/خروجي.
تمايز از طراحي جز به جز طراحي نرم افزار ي كه همچنين بعنوان طراحي استراتژيك نيز ناميده ميشود،يك فعاليتي در ارتباط با محدوديتهاي طراحي جهاني مي باشد ازجمله الگوهاي برنامه ريزي ،مهارتهاي طراحي ،استانداردهاي مهندسي نرم افزار مبتني براجرا،ومقررات كنترل قانوني . طراحي تفضيلي(يا جزءبه جزء)كه طراحي تاكتيكي نيز ناميده مي شود،يك فعاليتي است در ارتباط با محدوديتهاي طراحي محلي ،مانندالگوهاي طراحي،اصطلاحات برنامه ريزي ،وعامل يابي مجدد. طبق فرضيه شدت (ياكثرت)/محليت،تمايز ميان طراحي استراتژيك وتاكتيكي ،بامعيار محليت تعيين ومعرفي ميشود،كه برطبق آن يك عبارت درمورد طراحي نرم افزار ي،غيرمحلي است اگروتنها اگر يك برنامه اي كه آنرا برآورده مي سازد بتواند دريك برنامه اي گسترش يابد كه نمي تواند آنرا برآورده (واجرا)نمايد.براي مثال ،سرويس گيرنده/سرويس دهنده ،طراحي (استراتژيك )است زيرا يك برنامه اي كه توسط اين روش ساخته ميشود مي تواند در يك برنامه اي گسترش داده شود كه سرويس گيرنده/سرويس دهنده نمي باشد،مثلا با اضافه كردن گره ها ي نظير به نظير . نمونه ها(مثالهاي )طراحي چند راه (روش )عمومي طراحي مدولهاي نرم افزاري وارتباطات آنها وجود دارد،ازجمله: مشتري رهبر شبكه محاسبه توزيع شده نظير به نظير تخته سياه حكم ضمني لوله وفيلترها Plugim سيستم يكپارچه مدل سه رديفي ساختاريافته(مبتني برمدول است امامعمولا در مدولها ،يكپارچه است) جزء به جزءبودن نرم افزاري(كاملا مبتني برمدول است،اما معمولا برنامه ريزي تعيين هدف شده در مدولهاست،يكپارچگي آنها تاحدي كمتر مي باشد) طراحي تعيين هدف شده طراحي تعيين جستجو شده سرويس گيرنده/سرويس دهنده از دايرةالمعارف آزاد ويكيپديا جهت يابي ،جستجو سرويس گيرنده/سرويس دهنده (يك روش)طراحي محاسباتي است كه يك سرويس گيرنده را از يك سرويس دهنده جداومتمايز مي كند،وتقريبا همواره دريك شبكه كامپيوتري اجرا مي شود. هر سرويس گيرنده يا سرويس دهنده متصل به يك شبكه مي تواند به عنوان يك نود( يا گره)نيز ناميده شود. ساده ترين نوع طراحي سرويس گيرنده سرويس دهنده تنها دونوع نود ياگره را به كار مي گيرد: سرويس گيرنده ها وسرويس دهنده ها.اين نوع طراحي گاهي اوقات دورديفي ناميده ميشود . اين نوع طراحي امكان ايجاد تمهيدات وشيوهاي جهت بكارگيري (مشترك)فايلها ومنابع را فراهم مي سازد. هرنمونه از نرم افزار سرويس گيرنده مي توانددرخواستهاي اطلاعاتي را به يك يا چند سرويس دهنده مرتبط (متصل شده)ارسال نمايد. درعوض،سرويس دهندهها مي توانند اين درخواستها را پذيرفته،آنها را پردازش نموده ،واطلاعات درخواست شده را به سرويس گيرنده باز گردانند(ارسال نمايند). هرچند كه اين روش مي تواند بنابر چند دليل براي انواع مختلفي از كاربردها مورد استفاده قرار گيرد ،طراحي اساسا به يك شكل وصورت باقي مي ماند.
درحال حاضر سرويس گيرنده ها اغلب برنامه جستجو در صفحات وب مي باشند،هرچند كه هميشه اينگونه نبوده است.
سرويس دهنده ها به طوركلي شامل وب سرويس دهندهها ،پايگاه داده سرويس دهنده،ميل سرويس دهنده مي باشند. تعامل ميان سرويس گيرنده وسرويس دهنده اغلب با استفاده از نمودارهاي دنباله دار (سريالي )توصيف مي شود. نمودارهاي دنباله اي (سريالي)با زبان مدل سازي يكپارچه استاندارد مي شوند. محاسبه توزيع شده (محاسبه توزيع شده )يك روش پردازش كامپيوتري است كه درآن بخش هاي مختلف يك برنامه به طور همزمان در دو يا چند كامپيوتر عمل مي كنند(اجرا مي شوند)كه در يك شبكه با يكديگر مرتبط مي شوند. محاسبه توزيع شده، يك نوعي از محاسبه ي موازي مي باشد .اما عبارت (اصطلاح )آخري به طور متداول تري به كار مي رود تا پردازش را معرفي كند كه در آن بخش هاي مختلفي از يك برنامه به طورهمزمان در دويا چند پردازشگري اجرا (يا بكارگرفته )شوند كه بخشي از همان كامپيوتر مي باشند. درحالي كه اين هردونوع پردازش ،مستلزم اين امر مي باشند كه يك برنامه ،در قسمتها وبخش هايي كه مي توانند به طور همزمان بكار گرفته شوند ،موازي –وتقسيم بشود، محاسبه توزيع شده همچنين مستلزم آن است كه در تقسيم بندي برنامه ،محيطهاي مختلفي در نظر گرفته شوند كه در آن ها بخش هاي مختلف برنامه مورد اجرا قرار خواهد گرفت . براي مثال ،دوكامپيوتر ،محتمل است كه سيستم هاي فايل بندي متفاوت ونيز اجزاء سخت افزاري مختلفي داشته باشند. يك نمونه محاسبه ي توزيع شده ،BOINCمي باشد ،يك شبكه اي كه در آن مشكلات ومسائل بزرگ مي تواند به چند مشكل ومسئله ي كوچكب تقسيم شوند كه در چند كامپيوتر تقسيم مي شوند. سپس ،نتايج (ودستاوردهاي )كوچك مجددادر يك راه حل (يابراي هدف)بزرگتري در كنار همديگر قرار داده مي شوند. محاسبه توزيع شده يك نتيجه ي طبيعي استفاده از شبكه هاست كه كامپيوترها را قادر به برقراري ارتباط به طور كاراتري نمايد. اما محاسبه توزيع شده متفاوت از شبكه سازي مي باشد. مورد دوم (يعني شبكه سازي)بردويا چند كامپيوتر درحال تعامل باهمديگر اطلاق مي شود كه به طور كلي براي پردازش يك برنامه ي منحصر بفرد،مشاركت نمي كنند(اما باهم درتعامل مي باشند). وب يك نمونه اي از يك شبكه مي باشد اما نمونه اي از محاسبه ي توزيعي نمي باشد. تكنولوژي ها واستانداردهاي متعددي براي بكارگيري جهت تشكيل محاسبات توزيعي وجود دارد،ازجمله آنهايي كه بعضا به طور خاص براي يك هدف ومنظور معيني طراحي وبهينه سازي شدند،مانند احضار روال از راه دور. طراحي طرح ها وطراحي هاي نرم افزاري وسخت افزاري مختلفي براي محاسبه ي توزيعي به كار گرفته مي شود. در يك سطح پايين تر ،ضروري است كه چند CPUرا با چند ترتيب شبكه اي ،به هم مرتبط (يا متصل)نماييم ،صرفنظر از اينكه آيا آن شبكه در يك تخته مدار (يا صفحه مدار )چاپ شده باشد يا از كابل ها ودستگاهايي كه به طور آزادانه با همديگر مرتبط شده اند ساخته شده باشد. در يك سطح بالاتر،ضروري است كه فرايندها (وپردازشهاي)اجرايي در آن CPUها با ترتيب هاي از سيستم ارتباطي ،به همديگر مرتبط سازيم . برنامه ريزي توزيعي به طور كلي در يكي از اين چند (روش)طراحي يا دسته بندي هاي اصلي قرار مي گيرد:سرويس گيرنده/ سرويس دهنده،3-TIER ARCHITECTURE-N_TIER ARCHITECTURE اشياء(اهداف)توزيعي،مرتبط(جفت)شدن آزادانه يا مرتبط( جفت )شدن به طور محكم.
- كدبندي سرويس گيرنده هوشمند:براي كسب وجمع آوري اطلاعات با سرويس دهنده مرتبط مي شود،سپس آنها رافرمت كرده وآن را براي يوزر نمايش مي دهد
.ورودي هاي سرويس گيرنده مي بايست وقتي كه يك تغيير دائمي را ايجاد مي كند به سرويس دهنده برگردانده شود .
- طراحي سيستم سه رديفي هوش يا آگاهي سرويس گيرنده را به يك رديف (يا لايه ي )مياني مي برد به طوري كه سرويس گيرنده هاي بدون وضعيت بتواند مورد استفاده قرار بگيرد.
اين امر گسترش (وتنظيم وآرايش)كاربرد را تسهيل مي نمايد. بيشتر كاربردهاي وب وسه رديفي مي باشند.
- طراحي Nرديفي(لايه اي)به طور كلي بركاربردهايي از وب دلالت مي كند كه پيشروي بيشتر آنها مستلزم انجام ساير خدمات شبكه هاي مرتبط به آن مي باشد .اين نوع كاربرد ،كارآمد ترين نوع براي عملكرد سرويس دهنده هاي كاربردي مي باشد.
- گروهي يا دسته اي به طور كلي برمجموعه اي از ماشين هاي كاملا تركيبي (تلفيقي)دلالت مي كند كه يك پردازش را به طور موازي اجرا مي كنند،ووظايف به طور جزئي در بخش هاي تقسيم بندي مي شود كه به طور انفرادي (تك تك )به توسط هركدام از آنها ايجاد شده است،وسپس (حاصل كاررا)به هم ديگر برمي گردانند تا نتيجه نهايي حاصل شود.
نظير به نظير يك طراحي كه هيچ گونه ماشين به خصوصي در آن وجود ندارد كه يك خدمتي را ارائه كنديا منابع شبكه را كنترل نمايد. در عوض تمام مسئوليت ها به طور يكسان (ويكنواخت)در ميان تمام ماشين ها كه نظير گفته مي شوند ،تقسيم مي شود.
طراحي نرم افزار يك طراحي سيستم هاي نرم افزاري يا طراحي نرم افزاري،مسئول (انجام موارد)زير مي باشد:
- ايجاد واسطه(يا رابطه)بين يوزر(ها )واسپانسر(ها)وتمامي (ساير)عوامل مرتبط براي تعيين نياز ها وضروريات (حاصله)جهت محقق شدن در نرم افزار .
براي سيستم هاي بزرگ حاصل از ايجاد وگسترش سخت افزار ونرم افزار (باهدف بخصوص)،طراحي نرم افزار به طور طبيعي بيشتر درارتباط با يك طراحي سيستم است تا مستقيما با يوزر(ها)،اسپانسر(ها)،يا ساير عوامل مرتبط سرويس دهنده /سرويس گيرنده مرتبط باشد. طراحي نرم افزار همچنين مي تواند براي ايجاد ارتباط مستقيم با يك طراحي سخت افزاري و/يا يك طراحي الكتريكي يا الكترونيكي ،ضروري باشد.
- ايجاد بالاترين سطح ضروريات نرم افزاري ،مبتني بر نيازهاي يوزر وساير محدوديتهاي نظير هزينه وبرنامه ريزي مي باشد .
- كسب اطمينان از اينكه اين مجموعه مقتضيات سطح بالا ،هماهنگ (سازگار)،كامل ،دقيق (صحيح)،وبه طور عملي معين و(تعريف شده)مي باشد.
- اجراي تجزيه تحليل هزينه-منفعت جهت تعيين بهترين روشها براي پاسخگويي يه ضروريات نرم افزاري ،تامين حداكثر استفاده از اجزاءخارج از(آماده به كار)يا آنهايي كه تا به حال ايجاد شده اند.
- ايجاد الگوريتم هاي تقسيم بندي(وسايرپردازشها)براي اختصاص دادن تمام مقتضيات (نرم افزاري )موجود وقابل پيش بيني در تقسيمات نرم افزاري جداگانه به طوري كه يك حداقلي از ارتباطات در بين اين قسمتها ،ودر بين يوزر وسيستم ،ضروري بشود.
- تقسيم بندي سيستم ها ي نرم افزاري بزرگ در (لايه هاي اضافي )سيستم هاي فرعي واجزايي كه هركدام از آنها مي توانند توسط يك مهندس نرم افزار يا گروهي از مهندسان ،به كارگرفته شوند.
- كسب اطمينان ازاين كه يك طراحي نرم افزاري بسيار قوي،ايجاد مي شود.
- ايجاد يك مجموعه اي از مقتضيات (وابزار)آزمون پذيرش ،همراه با طراحان ،مهندسان آزمايش كننده،ويوزر،كه تعيين شود كه تمام ضروريات نرم افزاري سطح بالا محيا شده اند به خصوص براي (ايجاد)ارتباط (يا رابطه وواسطه)انسان –كامپيوتر.
- ايجادوتهيه عواملي (محصولاتي)نظير نقشه وطرح ها،نمودارهاي رسمي،مدلهاي قابل اجرا ،يك راهنماي يوزر ابتدايي ،ونمونه هاي اوليه براي آنكه يوزر ومهندسان را دائما آماده (وبه روز) نگه داريم .
زمينه طراحي سيستم هاي بزرگ به عنوان يك راهي براي بكارگيري سيستم هاي بسيار بزرگ براي يك شخص جهت درك وشناخت وطراحي كردن آن ،ايجادشده اند. سيستم هاي داراي اين اندازه ،به سرعت رواج مي يابند،به طوري كه طراحان وروشهاي طراحي به طور فزاينده اي ،براي حل مشكلات سيستم هاي بزرگ ،مورد نياز مي باشند. يوزرها واسپانسرها مهندسان به عنوان يك گروه ،داراي يك ريپاتيشن براي درك وپاسخگويي به نيازهاي انسان نمي باشند. طراحان(يا معماران)،انتظار مي رود كه نيازهاي انسان را شناخته ودرك كنند ومحصولات مورد نياز اورا چه به طور عملي وچه نظري برآورده سازند.يك طراح خوب ،يك رابط ترجمه(روشن كننده)ميان يوزر/اسپانسرومهندسين –وحتي تنها ميان مهندسين داراي تخصص هاي مختلف مي باشد. يك طراح( معمار)خوب همچنين مراقب بينش يوزر از محصول نهايي مي باشد. تعيين اينكه يوزرها /اسپانسرها واقعا به چه چيزي نياز دارند به جاي آنكه گويند چه چيزي مي خواهند،مهندسي (وطراحي )نمي باشد-اين يك هنر است .يك طراح(معمار)،يك روش دقيق را پيگيري مي كند .اما بايوزرها /اسپانسرها با يك روش كاملا تعاملي ارتباط برقرار مي كند- تا باهمديگر لوازم ضروري براي سيستم طراحي شده را استخراج نمايند. طراح نرم افزار مي بايست دائما در ارتباط يوزر هاي نهايي قرار داشته باشد.بنابراين ،طراح مي بايست با محيط و مشكلات يوزرها آشنايي داشته باشد. (مهندسين تنها مي بايست نسبت به فضاي بالقوه طراحي،آگاهي وشناخت كامل داشته باشند. مقتضيات (ضروريات) سطح بالا يوزر/اسپانسر مي بايست طراح (معمار)را به عنوان نماينده يوزر در نظر بگيرند وتمامي ورودي را از طريق طراح ارائه نمايند. تعامل مستقيم با مهندسين پروژه به طور كلي به عنوان يك شانس (يا احتمال )گمراه كنندگي متقابل ،توصيه نمي شود. تعيين نيازهاي يوزر مي بايست با ارتباط يوزر وطراح نرم افزار (يا طراحان نرم افزار وسيستم ها)انجام شود: يوزر نيازهاي خود راارائه مي كند وطراح نيز دانش وآگاهيهاي خودرا در مورد آنچه كه در (شرايط وجود)محدوديت هاي زماني وهزينه اي ،محتمل است كه قابل اجرا باشد،را ارائه مي كند. وقتي كه نيازهاي يوزر به صورت يك مجموعه اي از مقتضيات سطح بالا ارائه مي شود نيز بهترين زمان براي نوشتن اولين حالت (يا مورد )آزمون پذيرش ،وموارد كاربردي است كه مي بايست از آن به بعد ،مرتبا همراه با مقتضيات ،تجديد(وبه روز)بشود. از اين طريق ،يوزر به طور كامل از آنچه كه به دست مي آورد،مطلع مي شود. همچنين در برابر مقتضيات غير قابل آزمايش ،عوامل گمراه كننده،ولغزشهاي احتمالي نيز ،محافظت ومراقبت مي گردد. ايجاد اولين سطح مقتضيات طراحي (مهندسي )نرم افزاري ،يك عمليات كاملا تحليلي نمي باشدومي بايست هم با طراحي نرم افزاري وهم با مهندس نرم افزار درارتباط قرار بگيرد .اگرهرگونه توافق ومصالحه اي براي رويارويي وبرطرف كردن محدوديت هاي نظير هزينه،برنامه ريزي ،قدرت ،يافضا ،صورت بگيرد،طراح مي بايست مطئمن شود كه محصول نهايي ودستاورد(يانگرش واحساس )كلي ،از هدف ومقصود يوزر، خيلي دور نباشد. مهندس مي بايست برايجاد يك طرحي تمركز نمايد كه محدوديت ها رابهينه نمايد اما يك دستاورد عملي وقابل اطميناني راتامين نمايد. طراح اساسا مسئول ساده بودن وقابل استفاده بودن محصول كار (يعني طرح )مي باشد.مهندس اساسامسئول قابل توليدبودن ومطلوبيت محصول كار مي باشد. موضوع خدمات ضروري براي يوزر ،كار (وظيفه)اصلي يك سيستم مهندسي(طراحي شده)مي باشد. بااين حال،هم چنان كه سيستم ها بزرگتر وپيچيده تر مي شوند، وهم چنان كه تاكيدآنهابراجزاء،نرم افزاري ساده دور مي شود،كاربرد دقيق اصول سنتي تشكيل نرم افزارها ،ناركارآمدتر مي گردد-كاربرد اصول كلي تر طراحي نرم افزار براي طراحي سيستم ها (وسيستم هاي فرعي)ضروري به نظر مي رسد،يك طراحي نرم افزاري هم چنين يك مدل ساده شده اي از محصول ودستاورد نهايي مي باشد-كه وظيفه ي اساسي آن تعيين ومعرفي اجزاي نرم افزاري وروابط آنها بايكديگر مي باشد به طوري كه كليت آن مي تواند هماهنگ وسازگار،وكامل به نظر برسدونيز نمايه ي دقيقي از آن چيزي مي باشد كه درذهن يوذر بوده است-بخصوص براي تعامل كامپيوتر –انسان .هم چنين مي بايست مطمئن شد كه اجزاءبا همديگر متناسب مي باشند وباروش مناسب ومطلوبي به هم مرتبط مي باشند. ضروري است كه بين طراحي دنياي يوزروطراحي نرم افزاري مهندسي تمايز قائل شويم. اولين مسائل وراه حل هاي موجود دردنياي يوزر راارائه وبيان مي كند،كه اصولادر تعاملات ورويارويي هاي انسان –كامپيوتر سيستم مهندسي شده ،مسخر گشته است . سيستم مهندسي راه حلهاي مهندسي را ارائه مي كند-چگونه مهندس براي ايجادو/يا گزينش راارائه و توصيه مي كندواجزاءزير ساختار تكنيكي راجهت حمايت وتقويت سي اچ آي ،تركيب مي نمايد . در غياب يك طراح(معمار)،يك گرايش وتمايل نه چندان مثبتي به آميخته (يادرهم وبرهم)كردن اين دوطراح وجود دارد،زيرا مهندس برمبناي نرم افزار مي انديشد،اما يوزر ممكن است برمبناي حل كردن يك مسئله رسيدن افراد از نقطه آبه نقطه ب در يك مدت زمان منطقي وباصرف يك مقدار انرژي منطقي وقابل قبول، يا دست يافتن به اطلاعات لازم براي مشتريان وكاركنان ،تفكر مي نمايد. يك طراح نرم افزاري،انتظار مي رود كه دانستني هايش را از طرح دنياي يوزر وطرح هاي مهندسي نرم افزار (كه همگي به طور بالقوه سودمند هستند)را تركيب نمايد. اولي يك فعاليت مربوط به يوزر است ،ودومي يك فعاليت مربوط به مهندسين مي باشد. محصول كار ،يك مجموعه اي از ضروريات سطح بالا مي باشدكه نيازهاي يوزر انعكاس مي دهدكه مورد استفاده مهندسين جهت تشكيل سيستم هاي نرم افزاري مي باشد. از آنجا نيازهاوضروريات در حوزه يك پروژه شكل مي گيرد ،بخصوص براي يك پروژه بزرگ (طولاني)،يك طراح (معمار)مورد نياز مي باشد كه سيستم نرم افزاري حاصله مورد قبول يوزر قرارگيرد:طراح (معمار)بهترين تضمين براي اين امر مي باشدكه هيچ گونه تغيير وتفسيري در طول مدت تامين نقطه نظرات سازگار با مطالبات يوزر ايجاد نشود . تحليل هزينه/منفعت اكثر مهندسين نرم افزار متخصص مي باشند .آنها از كاربردهاي طراحي نرم افزار مطلع بوده وبه طور محرمانه آن را تهيه مي كنند،از دانش خود براي وضعيت هاي عملي بهره مي گيرند،يعني مسائل دنياي واقعي راحل مي كنند،هزينه منفعت راه حل هاي مختلف در ويژگي هاي نرم افزاريشان را ارزيابي مي كنند،وانجام دقيق(وصحيح)عملياتي راكه طراحي كرده اند،راتامين مي نمايند.طراحان(معماران)نرم افزاري ،جامع الاطراف مي باشند.انتظار نمي رود كه آنها متخصص وكارشناس در هر روش يا تكنولوژي نرم افزاري باشند،اما اين گونه انتظار مي رود كه از هركدام ،اطلاعات (مناسبي )داشته وقادر به قضاوت كردن درمورد قابليت كاربرد آنها براي شرايط بخصوص باشند. آنها همچنين از دانش خود براي وضعيتهاي عملي بهره مي گيرند،اما هزينه/منفعت راه حل هاي مختلف را ،با استفاده از تكنولوژي هاي نرم افزاري مختلف ،ارزيابي مي كنند ،براي مثال ،اجزاءنرم افزاري موجود را دربرابر آنچه كه به طور خاص ساخته شده است ارزيابي نمود واطمينان مي يابند كه سيستم به طور كلي (يا به عنوان يك مجموعه كلي)برطبق انتظارات يوزر عمل مي نمايد . بسياري از اجزا نرم افزاري يا آنهايي كه تاكنون ساخته شده اندممكن است به طور مستقل وبراساس محدوديت هاي نظير هزينه،مسئوليت (يا عملكرد)،وغيره انتخاب شوند. در برخي موارد،طراح (معمار)مي تواند سيستم نهايي را به طور انفرادي (وبدون كمك)به كار بياندازد.يااو ممكن است هنوز هم نياز به كمك يك مهندس نرم افزار ،جهت انتخاب اجزاء،وطراحي كردن وساخت هرگونه عمليات بخصوص داشته باشد. طراحان(معماران يامهندسين)همچنين ممكن است برروي كمك متخصصان مختلف حساب كنند-(مثلا )در ايمني،علامت،ارتباطات ،نرم افزار ويژه موردنظر،گرافيك،عوامل انساني ،آزمايش وارزش يابي ،كنترل كيفيت،RMA،مديريت (وكنترل)تعاملات ،وغيره.يك سيستم طراحي نرم افزاري موثر(وكارآمد)مي بايست دسترسي سريعي به متخصصان هر حوزه ي مهمي داشته باشد. تقسيم بندي ولايه گذاري يك طراح (معمار)،يك سري عمليات ساختماني در طرح كلي را برنامه ريزي مي نمايد،واز داشتن خصوصيات مورد انتظار وسودمند بودن براي اهالي نيز كسب اطمينان مي كند. درحالي كه يك طراح(معمار)به خودي خود مي تواند براي ساخت يك خانه ،كافي باشد،اما برخي از مهندسين نيز مورد نياز مي باشند،بعلاوه،براي حل مسائل جزئي كه در هنگام طراحي ساختمان ايجادمي شوند،بسياري از مهندسين ممكن است مورد نياز قرار بگيرند. اگركار به قدر كافي بزرگ وپيچيده باشد،بخش هايي ازآن مي توانند درزمره طراحي جانبي قرار بگيرند.يعني اگر مادر حال ساختن يك مجتمع ساختماني باشيم ،ممكن است يك معمار (طراح) براي مجتمع داشته باشيم ،وبراي هرنوع ساختماني هم ،يك معمار ديگري را به عنوان بخشي از يك تيم معماري لازم داشته باشيم.معمار(طراح)مي بايست نيازهاي (ضروريات) نرم افزاري را به اجزاءعمده يا سيستم هاي جانبي اختصاص دهد كه دردورنماي (چشم انداز)يك مهندس نرم افزار ،يامديريت (وكنترل)مهندسي يا طراحي هماهنگ كننده قراربگيرد. به طور ايده ال ،هركدام از اين اجزاء/سيستم هاي نرم افزاري يك شي (ياهدف)مناسبي هستند كه مي توانند به عنوان يك جزءمكمل مورد آزمون قرار بگيرند،از كل مجزاشوند،تنها يك بستر آزمايش ساده اي را براي ارائه ورودي هاي شبيه سازي شده وخروجي (ياستاده)هاي ثبت شده،مورد استفاده قراربدهند. يعني لازم نيست كه بدانيم چگونه يك سيستم كنترل ترافيك هوايي براي طراحي وساخت يك سيستم فرعي مديريت دادها ،براي آن عمل مي كند.تنها ضروري است كه بدانيم چه محدوديتهاي وجوددارند كه تحت آنها انتظار برود كه سيستم جانبي (فرعي)عمل نمايد. يك طراح(معمار)خوب مطمئن مي شود كه سيستم ،هرچقدر هم كه پيچيده باشد،برروي مبناي نسبتا ساده وروشني براي هر لايه يا سيستم (فرعي )ساخته مي شود-كه به سادگي براي هركس قابل فهم باشد،به خصوص براي يوزر ،بدون اينكه آموزش خاصي راديده باشد.طراح(معمار)ازيك حداقلي از قوانين جهت تامين اين امر استفاده خواهد كرد كه هر تقسيم بندي به نحوي تعيين وتعريف شده وkludges،محدوده هاي كادري،ميانبرها،رامعلوم نمايديا استثنائات ومسائل جزئي را روشن نمايد. همچنان كه نيازهاي يوزر بالامي رود(گسترش مي يابند)،(ازوقتي كه سيستم آماده ومورد استفاده قرارمي گيرد)،بسيار ساده تراست كه به دنبال آن ،يك مبنا (يا ابزار)ساده اي را ايجاد نماييم تااينكه آن را در زمره استثنائات ،موارد خاص وبسياري از fine printقراردهيم. لايه بندي طراحي نرم افزاري ،براي ساده نگه داشتن آن ،به قدر كافي ،درهر لايه حائز اهميت مي باشد به طوري كه براي (بررسي)ذهني يك شخص قابل فهم باقي بماند . هم چنان كه لايه ها افزايش مي يابند ،سيستم هاي كلي در لايه هاي پاييني ،تبديل به اجزاءساده اي در لايه هاي بالايي مي شوند وممكن است كه در بالاترين لايه ،ناپديد شوند.
آزمون قبولي (پذيرش) آزمون پذيرش همواره مسئول اصلي طرح (ها)باقي مي ماند .ابزار اصلي است كه باآن طراح (معمار)به يوزر ثابت خواهد كرد كه نرم افزار به طور اساسي ومناسبي طراحي شده وتمامي طراحان ومهندسين زبردست اهداف خود رابرآورده ساخته اند. پروژهاي بزرگ تمايل به پويايي دارند،همراه با تغييراتي كه درطول راه براي يوزر ايجاد وضروري مي شود(يعني تغيير مسائل ومشكلات او)،يا از يوزر انتظار مي رود (مثلا بنابه دلايل هزينه اي وبرنامه اي).اما آزمون هاي پذيرش بايد همواره در همه اوقات در جريان باشند (واجرا شوند). آنها ابزار اصلي هستند كه با آن يوزر از چگونگي عملكرد محصول نهايي ،مطلع مي شود . آنها به عنوان هدف اصلي عمل مي كنند كه همه ي پرسنل زيردست مي بايست به سوي آن حركت نمايند. ايجادوارائه ارتباطات مناسب با يوزرها ومهندسين يك طراح سيستم هاي نرم افزار ي از طرح هاي غير رسمي ،مدل هاي طراحي نرم افزاري رسمي ،وانواع عمليات كاربردي استفاده مي كند تا درمورد راه حل هاي مختلف ونتايج آنها با يوزر يا طراح سيستم ،مهندسين ،طراحان زبر دست ،بحث وبررسي نمايد. يك حالت ابتدايي راهنماي عملي يوزر ،اغلب ارزشمند مي باشد به خصوص در ارتباط با يك الگوي اوليه . همچنين موارد عملي غالبا براي مرتبط ساختن تعامل مورد انتظار سيستم حاصله مورد استفاده قرار مي گيرد. ازيك مجموعه اي از نيازهاي (مهندسي )به عنوان ابزار ايجاد ارتباط با يوزرها به طور صريح اجتناب مي شود .يك مجموعه مقتضيات،ياويژگي ها كه به طور مناسب نوشته شده باشد،تنها براي صميميت (ايجادارتباط)مهندسي،هوشمندانه مي باشد،همانند يك قرارداد قانوني براي وكلا.]] هانيه كشوريHanieh keshvari ۱۴:۴۷، ۲ اوت ۲۰۰۷ (UTC)

