۱۳۹۱/۰۴/۰۴

آموزش مهندسی نرم افزار و UML - جلسه اول


آموزش مهندسی نرم افزار و UML
جلسه اول:
اولین قدم در تولید و توسعه نرم افزار داشتن یک نگرش سیستمی به بسته یا محصول نرم افزاری می باشد.
 اما چرا ما باید نرم افزار را به عنوان یک سیستم در نظربگیریم ؟
جواب این سئوال را باید از تعریف تئوری سیستم و خصوصیاتی که یک سیستم دارا می باشد استخراج کنیم.
تئوری سیستم  ها
  دانشی برای سهولت کار با سیستم ها و بررسی دقیق این مفهوم است ؛ در واقع تئوری سیستم ها روشی برای شناخت محیط اطراف یا روشی برای شناخت  دنیای واقع می باشد .
از تعریف فوق می توان نتیجه گرفت :
برنامه نویسان برای ساخت برنامه هایی که با نیاز کاربران همسو باشد ، نیاز به شناخت محیطی دارند که کاربران در آن فعالیت می کنند پس برای شناخت محیط باید با دید سیستمی به مسئله نگاه کرد.
خصوصیات مهم سیستم :
1.     محیط – Environment: هر سیستم در یک محیط قرار دارد.

2.     مرز – Boundary : سیستم های موجود در یک محیط توسط مرز ها از یکدیگر جدا می شوند.

3.     ورودی و خروجی – I/O : هر سیستم ورودی هایی را از محیط می گیرد و خروجی هایی را به محیط پس می دهد.
4.     واسط – Interface : امکان محاوره سیستم ها در یک محیط را فراهم می کند.
5.     زیر سیستم – Sub System : هر سیستم می تواند حاوی چندین زیرسیستم باشد . زیر سیستم ها تمام خصوصیت های یک سیستم را دارا می باشند.
6.     مکانیزم کنترلی – Controller : مهمترین بخش یک سیستم می باشد. مکانیزم کنترلی در واقع کنترل کننده تمامی فعالیت های انجام شده توسط یک سیستم است . ورودی ها از طریق مکانیزم کنترلی دریافت می شود و بر اساس آن خروجی هایی به محیط پس داده می شود.
نتیجه گیری :
با توجه به خصوصیاتی که در مورد سیستم ها مطرح شد به راحتی می توانیم دلیل علاقه مندی برنامه -نویسان به نوع نگرش سیستمی را در یابیم ، و جود محیط پیرامون یک سیستم و نحوه تبادل اطلاعات این سیستم با سایر سیستم ها در این محیط ، شکستن یک سیستم به چند زیر سیستم برای راحتی مسئله و پیاده سازی آسانتر آن و نیز وجود اینترفیس ها برای برقراری محاوره ای استاندارد بین زیر سیستم های یک سیستم و همچنین وجود ورودی هاو تصمیم گیری براساس ورودی هاو تولید یک خروجی همه و همه از نکات مورد توجه برنامه نویسان در تولید یک بسته نرم افزاری هستند که هماهنگی کاملی با مفاهیم تئوری سیستم ها دارند. 

۱۳۹۱/۰۲/۱۳

IEnumberable چیست؟

هر چند پست خیلی کوتاه است اما اصل مطلب را بیان می کند.
ببینید ما یه چیزی داریم به نام Extension Method
ما میتوانیم یک کلاس استاتیک داشته باشیم.
و سپس داخلش یک متد Static داشته باشیم.
و اون متد Static رو به صورت زیر بنویسیم :

(, ... بقیه متد ها public static void SampleMethod( this int
حال هر کجا بنویسیم :
Int32 i = 0
i.SampleMethod
میبینید که این متد به کلاس int تزریق شده.
حال ما کلاس Static ای داریم به نام Enumerable
و اون چندین Extension Method داره که به صورت زیر هستند :
this Ienumerable
و هر کلاسی که IEnumerable رو محقق کنه؛ عملا از اون متد ها بهره مند میشه.
اون کلاس ها ؛ Method های LINQ هستند.

برگرفته از سایت برنامه نویس

۱۳۹۱/۰۱/۰۶

کرک - قسمت سوم


ایجاد تغییرات در فایل های اجرایی :
1.     تغییر در منابع رشته ای
نرم افزار Resource Hacker

2.     تغییر در منو
نرم افزار PE Explorer

3.     تغییر در دیالوگ باکس و پنجره ها
نرم افزار   Resource Hacker,PE Explorer

4.     ایجاد تغییرات در مشخصات و ساختار فایل های اجرایی
نرم افزار PE Tools

5.     اضافه کردن Dll ها و توابع در لیست توابع ورودی
نرم افزار IDDKing

6.     اضافه کردن توابع داخلی فایل های اجرایی به لیست توابع صادر شده
نرم افزار  Export Adder

7.     اضافه کردن وتغییر Section  ها در فایل اجرایی
نرم افزار  Lord PE

8.     ایجاد تغییرات در کد های فایل های اجرایی
9.     اضافه کردن کد های جدید به فایل های اجرایی
نرم افزار Macro Assembler 

۱۳۹۱/۰۱/۰۵

کرک – قسمت دوم


در این قسمت به بررسی کد تارگت می پردازیم.
1.     Disassembler
در این مرحله ما کد کامپایل شده را به زبان اسمبلی  تبدیل می کنیم
نرم افزار W32Dasm وPE Explorer و Interactive Disassembler

2.     Decompiler
در این مرحله کدهای تولید شده توسط Disassembler به کدهای قابل فهم برای برنامه نویسان تبدیل می گردد.
نرم افزار    REC   برای برنامه های C/C++
نرم افزار Reflector  برای .NET

3.     Debugger
ابزار هایی جهت دیباگ کردن فایل های اجرایی
نرم افزار Olly Debuger

۱۳۹۱/۰۱/۰۴

کرک - قسمت اول

اولین مرحله از مراحل کرک نرم افزار مرحله جمع آوری اطلاعات از تارگت می باشد که این مرحله نیز به مراحل زیر تقسیم بندی می شود  نرم افزار مورد استفاده هر مرحله نیز ذکر می شود :

بررسی فایل های اجرایی به صورت ایستا
شناسایی نوع کامپایلر (PEiD,Language2000)
بررسی توابع ورودی (Dependency Walker) 
بررسی منابع (Resource Tuner,Resource Hacker) 
بررسی ساختار فایل های اجرایی (PEView) 
بررسی فعالیت های فایل های اجرایی در مرحله اجرا 
              بررسی جزئیات پروسه (Process Explorer, Process Viewer) 
              بررسی Dll های مورد استفاده پروسه 
               بررسی Threadها در پروسه  
            بررسی فضای حافظه برنامه  
            بررسی شماره های دسترسی 
بررسی فعالیت ها در زمینه فایل (File Monitor) 
بررسی فعالیت ها در Registery (Registry Monitor 
بررسی فعالیت ها در زمینه ارتباطات شبکه  
            بررسی کانکشن های مورد استفاده (NetState)              
             بررسی تبادل داده ها در شبکه(Ethereal) 
بررسی فعالیت ها در زمینه پورت های سخت افزاری (Serial Monitor,Usb Monitor) 
بررسی فراخوانی توابع API  (API Monitor,Smart Check,Soft Snoop(

۱۳۹۰/۱۲/۲۸

مشکل با اضافه کردن View به Model

امروز در حال کار با Entity Framework هر چقدر سعی کردم که یک View را به مدالم اضافه کنم نمی شد بعد از اینکه سرچی ردم و درست بررسی کردم دلیل این موضوع را پیدا کردم دلیل اصلی تین موضوع عدم وجود کلید اصلی در View من بود که پس از اضافه کردن یک کلید اصلی از یکی جداول که در View نقش داشتند مشکل برطرف گردید.

۱۳۹۰/۱۲/۱۲

آشنایی با Nhibernate

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

تعریف ORM یا Object Relational Mapping

در برنامه نویسی شی گرا ما با کلاس ها و اشیا و روابط بین آنها سروکار داریم حال اینکه برنامه ما یه بخش جدایی ناپذیر تحت عنوان دیتابیس دارد که ماهیت ها (Entity) در آنجا بصورت جداول و ارتباطات بین آنها می باشد برای اینکه ما بتوانیم از جداول و امثال آن در برنامه خودمان استفاده کنیم نیاز داریم تا کلاس هایی متناسب با جداول مان در برنامه داشته باشیم البته با ید ارتبا طات بین جداولمان نیز در این کلاسها گنجانده شود این دقیقا همان کاری است یک ORM برای ما انجام می دهد و عملیات نگاشت را برای ما به صورت اتوماتیک پیاده سازی می کند البته این ابزار فواید دیگری نیز برای ما به ارمغان می آورد که در ادامه با آنها آشنا خواهیم  شد.



Disqus for Dotnetinfo