اصل1: طراحي برنامهها به صورت ماژولار
يكي از فوايد اين امر انعطاف پذيري در توسعه اين اجزا بر روي بسترهاي مختلف ميباشد با تبعيت از اين اصلاين امكان براي توسعه دهندگان و طراحانايجاد ميگردد تا ماژولها را با زبانهاي برنامهنويسي مختلف و حتي در چارچوبهاي مختلف پيادهسازي نمايند كه اين امر خود ميتواند باعث افزايش كارايي نرمافزارها به علت استفاده از چارچوبها و زبانهاي بهينه با توجه به ماهيت سازمانباشد. از نكات قابل توجه دراين مورد بحث نحوه برقراي ارتباط اين اجزا با يكديگر ميباشد كه بايد به راحتي و در قالب استانداردها معمول امكانپذير باشد زيرا در غير اين صورت باعث ايجاد مشكلات فراوان در سيستم ميشوند لازم به ذكر است پيادهسازي در قالب اجزاي جدا از هم باعث ايجاد سرعت بيشتر توسعه نرمافزار به علت استفاده از اين اجزا در قسمتهاي ديگر برنامه يا برنامههاي ديگر ميباشد. ماژولار نوشتن برنامهها باعث ميشود كه اعمال تغييرات در برنامهها با مشكلات كمتري مواجه شود.
اصل2: توسعهپذيري و مقياسپذيري
هنگام طراحي هميشه اين ديد را داشته باشيد که در آينده نه چندان دور امكان درخواست تغيير وجود دارد به همين دليل طوري برنامهريزي و طراحي نماييد كه با كمترين تغييرات در ساختار و طراحي خود بتوانيد به درخواست تغيير، پاسخ دهيد. نكته جالب توجه اين است كه هنگام طراحي و پيادهسازي هيچ فردي فكر نميكند كه اصلا امكان تغيير در روندها و روالها بوجود بيايد اما تجربه ثابت كرده است هرچند هم كه شما تمام مسايل را پيشبيني نمودهايد باز هم در زمان نه چندان دوري مجبور ميشويد تغييري در طراحي و يا مدل پياده سازي خود ايجاد نماييد. با توجه به مسايل ذكر شده مدلي طراحي و پيادهسازي نماييد كه بتوانيد با كمترين تغيير در ساختار طراحي و پياده سازي خود تغييرات بوجود آمده يا نيازهاي جديد را با سرعت و دقت بالا پاسخ دهيد همچنين باعث ناخواني كد برنامه و يا طراحي برنامه نگرديد.
اصل3: طراحي ماژولها با قابليت استفاده مجدد در ساير پروژهها
يكي از نكات قابل توجه در مورد توليد نرمافزار بحث زمان و هزينه انجام كار ميباشد كه تاثير قابل توجهي بر روي تصويب انجام يا عدم انجام يك پروژه در سازمانميگذارد. يكي از روشهاي كاهش هزينه و زمان انجام يك پروژه نرمافزاري ماژولار طراحي و پيادهسازي نمودن قسمتهاي مختلف برنامه ميباشد با استفاده ازاين ديدگاه شما ماژولهايي طراحي وپيادهسازي نمودهايد كه به راحتي قابل استفاده در قسمتهاي ديگر پروژه و يا حتي در پروژههاي ديگر ميباشد نكته قابل توجه اين است كه همه پروژهها داراي تعدادي عمليات و فرآيند مشترك ميباشند كه از آن جمله ميتوان به بحث اجازه و تعيين سطح دسترسي و گزارشگيري اشاره نمود با استفاده از چنين ديدگاهي به راحتي ميتوان ماژول گزارشگيري يا مديريت كاربراني توليد نمود كه به راحتي در تمام پروژه بشود از آن استفاده نمود واين خود باعث كاهش زمان و هزينه پروژه و همچنين بالا رفتن كيفيت كار با توجه به تصحيح و بهينه نمودن ماژولها در پروژههاي مختلف ميشود.
اصل4: طراحي مستقل از بستر توسعه
يكي از مسايلي كه هنگام طراحي و پيادهسازي بايد به آن توجه قابل توجهي داشته باشيد مستقل از بستر بودن ميباشد زيرا هميشه اين امكان وجود دارد كه سختافزار، سيستم عامل و ساير بسترهاي كامپيوتري كه برنامه بر روي آن نصب ميباشد تغيير نمايد با توجه به مطلب ذكر شده اگر شما كاملاً وابسته به اين مسايل طراحي و پيادهسازي كرده باشيد ديگر برنامه شما كار نخواهد و براي تغيير آن بايد زمان و هزينه زيادي خرج نماييد به همين دليل بايد تا آنجا كه امكان دارد از چارچوبهاي و پروتكلهاي استاندارد براي طراحي و پيادهسازي استفاده نمود تا در صورت تغيير بستر با كمترين تغيير بتوان برنامه را با محيط جديد هماهنگ نمود براي رسيدن به چنين هدفي بايد هنگام انتخاب ابزارها و چارچوبها دقت فراواني شود و ابزار و چارچوبهايي انتخاب گردد كه انعطافپذيري لازم براي كار كردن در محيطهاي مختلف را داشته باشند.
اصل5: کاربر پسند بودن واسط كاربر گرافيكي
يكي از فاكتورهاي اصلي در موفقيت يا عدم موفقيت يك پروژه نرمافزاري واسط كاربر گرافيكي آن ميباشد خيلي از پروژه نرمافزاري بوده كه به علت عدم داشتن يك واسط گرافيكي مناسب حتي با وجود معماري و ساختار بسيار قوي با مشكلات فراوان در اجرا مواجه شده اند زيرا كاربران تنها چيزي را كه ميبينند واسط كاربر نرمافزار ميباشد و از طريق آن با نرمافزار ارتباط برقرار مينمايند حال هر قدر كاربر راحتر بتواند با آن ارتباط برقرار نمايد و نيازمنديها خود را برطرف نمايد تاثير مثبت بيشتري بر روي هرچه بهتر اجرايي شدن برنامه و موفقيت پروژه ميگذارد البته لازم بذكر است عكساين مطلب نيز صادق است به همين دليل هنگام طراحي واسط كاربر بايد دقت زيادي شود تا آنجا كه امكان دارد كاربر با كمترين استفاده از كليدها و موس به نياز خود پاسخ دهد شايان ذكر است برحسب ماهيت هر نرمافزار به نكات خاصي در طراحي واسط كاربر آن بايد دقت شود
اصل6: قابليت دسترسي به برنامهها بايد از طريق واسط كاربريهاي متفاوت
امروزه با توجه به روند رو به رشد توليد وسايل و تجهيزات جديد الكترونيكي مختلف كه امكانايجاد ارتباط با كامپيوتر واينترنت را فراهم ميسازند بايد توجه خاصي در طراحي و پياده سازي برنامهها براي پشتيبانياين گونه وسايل و تجهيزات داشت زيرا يكي از فاكتورهاي مهم در موفقيت يك پروژه اين ميباشد كه کاربران بتوانند با حداقل امكانات و با استفاده از تمام تجهيزات خود با نرمافزار شما ارتباط برقرار نمايد و بتوانند نيازهاي خود را برطرف سازند امروزه يكي از اهداف، تسهيل زمينه ايجاد ارتباط جامعه هدف با نرمافزارها خدماتي ميباشد با توجه به ماهيت خدماتي شركت، همچنين پراكندگي جغرافيايي کاربران آنها توجه به اين نكته حايز اهميت ميباشد با توجه به مسايل ذكر شده پشتيباني وسايل و تجهيزاتي مانند دستگاههاي PDA، موبايل وغيره امري اجتناب ناپذير ميباشد.
اصل7: استفاده از متدولوژيهاي توليد نرمافزار در طول چرخه حيات نرمافزار
يكي از مواردي كه هنگام توليد يك نرمافزار بايد به آن دقت شود بحث متدولوژي توليد است در حقيقت متدولوژي چارچوبي است كه فرآيند توليد نرمافزار در قالب آن شكل ميگيرد متدولوژي گامهاي لازم براي با موفقيت به پايان رسيدن يك پروژه را مشخص مينمايد استفاده از متدولوژي باعث ميشود كه فرآيند با توجه به سليقه افراد مشخص نشود و سمت و سو پيدا نكند در حقيقت متدولوژيها بهترين تجارب هستند كه در طول ساليان بدست آمده است يكي از نكات مهم دراين قضيه، مستند سازي در قالب يك زبان عموميميباشد همانطور كه ميدانيد مستند سازي يكي از مسايل مهم در چرخه توليد نرمافزار ميباشد كه كمك فراواني به بحث پشتيباني و گسترش با موفقيت سيستمها دارد نكته ديگراينكه با انتخاب يك متدولوژي براي توليد نرمافزار ميتوان در قالب متدولوژي بر كار پيمانكار نظارت نمود واين امر كار مديريت پروژه را تسهيل مينمايد.
اصل8: استفاده از استانداردهاي كدنويسي
يكي از نكات مهم در بحث پيادهسازي نرمافزارها نحوه نگارش و تعريف متغيرها، تابعها و غيره ميباشداين امر بخصوص در مورد پروژههاي بزرگ و يا حساس كه تعداد قابل توجهي نيروي انساني در آن کار ميکنند بيشتر اهميت پيدا ميكند زيرا هر فرد داراي سليقه و ديد خاص خود براي نگارش ميباشد و اگر قرار باشد هر فرد سليقه خود را اجرا نمايد خوانايي كد برنامه بسيار كاهش پيدا ميكند مشكلاتاين امر وقتي بيشتر نمود پيدا ميكند كه قرار باشد فرد ديگري غير از نگارنده اوليه بخواهد كار را ادامه دهد.اين مساله هنگام پشتيباني و بروز رساني نرمافزارها بيشتر قابل لمس ميباشد به همين دليل توصيه ميشود يك استاندارد مشخص براي امر تهيه و در اختيار توسعه دهندگان گذاشته شود تا همه موظف به اجراي آن شوند و از اعمال سليقه خودداري گردد.
اصل9: قابل مديريت بودن نرمافزارها
بحث قابل مديريت بودن نرمافزارها يك مورد اختياري نيست بلكه يك امر ضروري ميباشد بحث قابل مديريت بودن نرمافزارها بدين معني ميباشد كه نرمافزارها بايد داراي روالها، فرآيندها و دستورالعملهايي باشند كه بتوان از طريق آنها از شرايط جاري نرمافزار اطلاع پيدا كرداين امر كمك بسياري به حل مشكلات پيش آمده در نرمافزار ميكند زيرا در صورت دريافت پيغام مناسب از سوي برنامه ميباشد كه مسئول مربوطه ميتواند گام صحيحي در برطرف نمودن مشكل بردارد كه اين خود منجر به كاهش زمان پاسخگوي ميشود البته نحوه اعلام و مدل اعلام بايد كاملا استاندارد باشد از طرف ديگر بايد دستورالعملهاي مشخصي براي پاسخ دادن به موارد اعلام شده وجود داشته باشد تا مسئول مربوطه بتواند در كمترين زمان ممكن و با كمترين پيچيدگي مشكل را برطرف سازد البته بهترين مدلاين كار اعلام به وقوع پيوستن يك مشكل قبل ازپيشامد توسط نرمافزارها ميباشد.
اصل10: استفاده از بانكهاي اطلاعاتي با كارايي بالا و مستقل از بستر توسعه
بانكهاي اطلاعاتي يكي از اجزاي اصلي بيشتر نرمافزاري ميباشند كه نقش قابل توجهي در كارايي يا عدم كارايي نرمافزارهاايفا ميكنند به همين دليل انتخاب و استفاده از يك بانك اطلاعاتي مناسب بسيار حائز اهميت ميباشد از نكاتي كه بايد هنگام انتخاب يك بانك اطلاعاتي در نظر گرفت سرعت ذخيره و بازيابي اطلاعات، پشتيباني، توانمنديهاي فني، نيروي متخصص، هزينه و مستقل از بستر بودن وغيره ميباشد البته با توجه به ماهيت كار ميتواند هر يك از پارامترها نقش و ارزش بيشتر و يا كمتري پيدا نمايد امروزه بانكهاي اطلاعاتي كارآمدي در بازار موجود ميباشد كه داراي استانداردهاي بالاي فني هستند و ميتوان با توجه به نياز برنامه يكي از آنها را انتخاب نمود.
اصل11: اطلاعات بعنوان يكي از اساسيترين نيازها براي تصميمگيري
وجود اطلاعات كامل و جامع در سازمانپايه و اساس تصميمگيريهاي مناسب مديران ارشد ميباشد به همين دليل اهميت دادن به اين امر و جمعآوري اطلاعات در قالب يك ساز و كار مشخص ميتواند كمك بسزايي در بهتر و سريعتر تصميم گرفتن مديران ارشد گردد در حال حاضر بيشتر اطلاعات سازماندرقالب اطلاعات الكترونيكي بر روي بانكهاي اطلاعاتي مختلف كه توسط سيستمهاي گوناگون توليد شده است موجود ميباشند بايد ترتيبي اتخاذ نمود تااين اطلاعات پراكنده با نظم خاصي جمع آوري و برحسب نياز و موضوع كنار يكديگر قرار گيرد، سپس با استفاده نرمافزارها و تكنيكهاي جاري اين اطلاعات را در قالبهايي كه مديران و تصميمگيران سازماننياز دارند ارائه داد تا تصميمگيريها با سهولت بيشتري انجام پذيرد. البته اين امر هم باعث سهولت انجام كار و هم تصميمگيري دقيق و كاملتر ميشود.
اصل12: استفاده از زبانهاي برنامهنويسي كارآمد و مستقل از بستر توسعه
زبانهاي برنامهنويسي يكي از اصليترين ابزار پياده سازي ميباشند كه نقش بسزايي در كارايي محصول نهايي ايفا ميكنند به همين دليل انتخاب و استفاده از زبانهاي پيادهسازي كارا بسيار با اهميت ميباشد نكاتي كه در مورد انتخاب يك زبان برنامهنويسي بايد مورد توجه قرار داد عبارتند از سرعت و زمان اجراشدن، پشتيباني، قابليتهاي فني، هزينه، نيروي متخصص، مستقل از Platform بودن و غيره، كه با توجه به ماهيت پروژه هركدام از موارد ذكر شده ميتوانند نقش برجستهتري داشته باشند. زبانهاي برنامهنويسي به خودي خود باعث افزايش كارايي نرمافزار نميشوند بلكه فقط ابزاري براي هرچه بهتر و سريعتر پيادهسازي شدن معماريها و طراحي معمارها و طراحان سيستم ميباشند.