تبلیغات
آکنده
آکنده ،،،،
در اندیشه پرواز هم نباش، پرنده هم مردنی است

reusability[توسعه نرم‏افزار , ]

reusability  در كوتاهترین شكل قابل فهم "قابل استفاده مجدد بودن" معنی میدهد. این فارسی عجب زبان توپی است وقتی میخواهید یك مفهوم را به كار ببرید به جای اینكه نام آن مفهوم را ذكر كنید، شرحش را بیان میكند.(مثلاً تو انگلیسی برای مفهومی كه در ادامه میخواهم توضیح بدهم چنین آن را شرح میدهد : "be able to be used again" و اگر بخواهند از نام آن مفهوم استفاده كنند همان resusability را بكار میبرند.)
البته اگر دوست دارید از یك واژه ای مانند "بازكاربردی بودنی" استفاده كنید تا موجب انبساط خاطر همكارانتان شوید.
قابل استفاده مجدد بودن به این موضوع اشاره میكند كه فرایند انجام كاری را تدوین میكنیم و یا محصولی را  ایجاد میكنیم، طوری تدوین كنیم و یا تولید كنیم كه اگر دوباره در آینده احتیاج داشتیم همان كار را انجام دهیم و یا همان محصول را داشته باشیم، از همان تدوین فرایند قبلی و یا از همان محصول قبلی استفاده كنیم.
قابل استفاده مجدد بودن یك مفهوم مهندسی است كه مختص مهندسی نرم افزار نیست یعنی یك مهندس كسی است كه در انجام كارهایشان قابل استفاده مجدد بودن را در نظر میگیرد. البته توجه داشته باشید كه استفاده مجدد از یك محصول تقریباً مختصص مهندسی نرم افزار است و در سایر رشته ها من نمونه ای سراغ ندارم.

برای مثال یك شركت خودروسازی برای تولید هر خودرو از روشی مشابه برای خودروهای قبلی استفاده میكند، یعنی یكبار روش تولید خودرو(در این مثال تولید خودرو فرایند ما است.) را تدوین و مشخص میكند و سپس برای تولید بقیه خودروها از همین روش استفاده میكند.

در نرم افزار به دلیل ماهیتش، محصول تولید شده نیز میتواند قابل استفاده مجدد باشد. به محصولات تولید شده قابل استفاده مجدد asset(من دارائی نامجسم ترجمه میكنم) میگویند. با این حساب این یك وظیفه مهندس نرم افزار میشود كه طوری طراحی كند كه محصول تولید شده قابل استفاده مجدد باشد. و بدین ترتیب مفهموم component ها شكل میگیرند، component اجزا یك نرم افزار هستند كه یك ویژگی مهم آنها قابل استفاده مجدد بودن است.
مفهوم قابلیت استفاده مجدد دربرنامه نویسی، در قدم اول منجر به پیدایش برنامه نویسی procedural شد، همانطور كه میدانید در این روش به جای اینكه كدی كه یك رفتار را ارائه میكند هر بار كه به آن رفتار احتیاج پیدا شد از اول نوشته شود، یك بار نوشته میشود و هر بار كه رفتار مورد نیاز بود آن تكه كد فراخوانی میشود، به این تكه كد method یا procedure میگویند.
مفهوم قابلیت استفاده مجدد دربرنامه نویسی، در قدم اول دوم درمفاهیم شیگرائی ارائه شد. اگر خواستید بعداً بیشتر توضیح میدهم.
و سوم اثر از مفهوم قابلیت مجدد در بحث نسبتاً جدیدتر AOP است. اگر خواستید بعداً بیشتر توضیح میدهم.

.نكته آخر: اینكه یك سازمان علاوه بر فرایند ها و محصولات دارای عنصر سومی است به نام دانش كه دانش همواره قابل استفاده مجدد است و بحث زیادی درباره آن ندارم.

تاریخ فرستادن:چهارشنبه 28 تیر 1385، نویسنده: فرشید کزازی (همیشه همینه)
تعداد بازخوردها: ، شما هم دیدگاه خود را ارائه کنید

نمایشگاه الکامپ دوازدهم[عمومی , ]

با بازگشایی نمایشگاه الکامپ دوازدهم همچنان سایت نمایشگاه الکامپ به روز نشده است و اخبار مربوط به نمایشگاه دهم را نشان میدهد. راستی اگر باور ندارید میتونید به آدرس زیر مراجعه کنید: http://www.elecompfair.com/

.

.

داشتم پست میکردم که این لینک را پیدا کردم:  http://www.elecomp12.ir/farsi/index.asp

الان فکر میکنم که شاید به این دلیل سایت نمایشگاه دهم همچنان پا برجا است، تا بتوانید آن را با سایت نمایشگاه امسال مقایسه کنید و ببینید که ما ایرانی ها در طی مدت ۲ الی ۳ سال چقدر میتونیم پیشرفت کنیم. طراحی سایت قشنگتر شده است. استفاده از رنگها و فونتهای مناسب در سایت نمایشگاه دوازدهم  را مقایسه کنید با سایت نمایشگاه دهم که طراح بی سلیقه و بی ذوقش اصلا به خودش زحمت انتخاب فونت نداده و همه متنها را با یک فونت نوشته است.

حالا طراحی به کنار دقت کنید که چقدر امکانات و قابلیتهای سایت پیشرفت کرده است؟ 

حیف که ما سه سال است که در نمایشگاه الکامپ شرکت نمیکنیم.

تاریخ فرستادن:چهارشنبه 28 تیر 1385، نویسنده: فرشید کزازی (همیشه همینه)
تعداد بازخوردها: ، شما هم دیدگاه خود را ارائه کنید

روش Design By Code (قسمت سه)[توسعه نرم‏افزار , ]

من بیشتر از اینكه یه طراح و یا تحلیلگر باشم، یه برنامه نویس محسوب میشوم، و اغلب وقتی كه یك كار را انجام میدهم، اول كد مینویسم تا به نتیجه برسم و وقتی كه یكبار تمام كد را نوشتم بررسی میكنم كه آیا از بعضی از اصول كاری مورد نظرم تبعیت كرده است یا خیر؟ و در كل كاری به نام تحلیل و طراحی برای پیاده سازی انجام نمیدهم.

تو محل كارم هم روشهایی برای دور زدن طراحی كردن ها دارم، یه بار به عنوان طراحی component ای كه باید مینوشتم كه در واقع سرویسهای جهانی سازی(globalization) بود به عنوان طراحی مستند راهنمای برنامه نویسان آن component را آنطور كه در ذهنم در نظر داشتم، نوشتم و به مدیرم ارائه دادم و قرار شد كه همان را پیاده سازی كنم. برای نوشتن مستند راهنما ساختار بعضی از كلاسها را نیز نوشتم ولی متودهایش را پیاده سازی نكردم تا بتوانم تصوری از اینترفیس آن component و همچنین نحوه عملكرد آن و تعامل اشیا آن با یكدیگر بدست آورم.

یكی دیگر از عادات كاری من این است كه كل كار را یكباره انجام میدهم و در تمام مدت كدنویسی آن، برنامه را اجرا نمیكنم، این عادت خیلی از برنامه نویسها است كه وقتی كدی را مینویسند با اجرای آن سعی میكنند از صحت اجرای آن مطمئن شوند كه عادت بسیار بدی است، چون اغلب اوقات ممكن است كه در همان اجرا و به خصوص با توجه به سادگی داده هایی كه برنامه نویس برای تست اجرای برنامه وارد میكند با هیچ مشكلی مواجه نشوند، پس باید به جای اینكار در هنگام نوشتن كد تمركز خود را بر روی صحت كد متمركز كرد. بعضی از اصولی كه برای اینكار باید از آن تبعیت كرد اینها هستند:

در هر iteration ساده ترین رفتار ممكن را پیاده سازی كنید.

اصول low coupling و high cohesion و دیگر اصول class normalization را به شدت مورد توجه قرار دهید. چون همانطور كه در نرمالسازی رابطه ها در پایگاه داده بارها تجربه كرده ایم، عدم تبعیت از این نوع اصول مشكلات اساسی و وحشتناكی را به بار می آورند.

هرگز كاری را به آینده موكول نكنید، كل یك تكه از كد - كلاس، كامپوننت،متود،... - را به طور كامل یكجا و در یك مقطع زمانی بنویسید.

كد را مستند كنید، اگر در مورد عملكرد كدی كه خودتان نوشته اید به راحتی مستندات همراه را اضافه كنید، احتمالاً منطق مورد استفاده در كدتان غلط است و به همین دلیل نمیتوانید در مورد آن توضیح بنویسید.

من حدود 8 -9 ماه است كه بر روی یك ORM (ابزار نگاشت شیگرایی-رابطه ای) كار میكنم، در تمام مدت پیاده سازی iteration اول كارم كه به 15 هزار خط كد رسید و مدت 4 ماه طول كشید، حتی یكبار هم آن را تست نكردم و این ORM شامل مولفه های گوناگون بودند كه باید با هم كار میكردند، بعضی از آنها مربوط به پایگاه داده بودند و بعضی مربوط به ریموتینگ و دسته ای نیز مربوط به سرویسهای رابط كاربر و همچنین مولد كد(به خاطر type-safety مجبور شدم مولد كد داشته باشم.). بعد از حدود 4 ماه تصمیم گرفتم برای تست آن یك برنامه حسابداری شخصی مختصر با تقلید از Microsoft Money به طور آزمایشی بنویسم تا هم اجرای چارچوپ ORM را تست كنم و هم كارائی آن را در افزایش سرعت تولید بررسی كنم. این كار فقط حدود 2 هفته طول كشید كه البته حدود نصف آن مربوط به افزودن چیزهایی بود كه تاكنون به آنها توجه نداشتم. نمیتونید تصور كنید كه چه حسی داشتم، از اینكه بعد این مدت طولانی تونستم كدهایم را در حال اجرا میدیم فوق العاده لذت میبردم و برای خودم ذوق میكردم، از اینكه تمام مشكلاتش را تنها در مدت 1 هفته حل كردم فوق العاده خوشحال بودم، حتی یك شب تا صبح از فرط خوشحالی خوابم نبرد.

راستی هیچ دقت كردید با وجود اینكه اسم وبلاگم را random انتخاب كردم ولی به غرورم میخورد.)

الان دارم یك مستند در مورد CAB میخونم، خیلی دوست دارم كه در مورد پیچیدگی(complexity) و سادگی(simplicty) و ساده ارائه كردن(simplexity) دیدگاهم را ارسال كنم.

به امید خدا تا فردا...

تاریخ فرستادن:سه شنبه 27 تیر 1385، نویسنده: فرشید کزازی (همیشه همینه)
تعداد بازخوردها: ، شما هم دیدگاه خود را ارائه کنید

 

درباره فرشیدکزازی

 
 

هیچ چیز قابل گفتنی درباره خودم وجود نداره.
کاری داشتید به farshidkazazi@gmail.com پیام بفرستید.

 

 

درباره آکنده

 
 

این وبنوشت دربردارنده دیدگاهها و گفتنیها و نوشتینهای من است و من هرچی که دلم بخواهد میام و اینجا مینویسم و چون فعلاً نرم افزار کار میکنم، زمینه تخصصی آن بیشتر به آن گرایش دارد.

** اسم وبنوشت هیچ معنای خاصی ندارد، اولین کلمه ای بود که موقع ثبت نام به ذهنم رسید.

دسته بندی نگاره ها:
عمومی (7)
توسعه نرم‏افزار (13)

 

 

وبنوشتهای دیگر

 
  زیر چتر باران
واژگان مدیریت دانش
 

 

ابزارها

 
 
جستجو در بلاگ


برای دریافت نگاره ها از طریق email با وارد کردن آدرس email نام‏ نویسی کنید:
بایگانی گذشته
مرداد 1385 (2)
تیر 1385 (3)
اردیبهشت 1385 (1)
بهمن 1384 (4)
آذر 1384 (1)
آبان 1384 (4)
مهر 1384 (5)