رویکردی برای آنالیز متریک های فرآیند تولید نرم افزار فایل ورد (word)

برای دریافت پروژه اینجا کلیک کنید

 رویکردی برای آنالیز متریک های فرآیند تولید نرم افزار فایل ورد (word) دارای 170 صفحه می باشد و دارای تنظیمات و فهرست کامل در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد رویکردی برای آنالیز متریک های فرآیند تولید نرم افزار فایل ورد (word)  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

این پروژه توسط مرکز مرکز پروژه های دانشجویی آماده و تنظیم شده است

فهرست مطالب
چکیده    1
مقدمه    2
فصل اول: کلیات تحقیق    4
1-1بیان مسئله    5
1-2اهمیت و ضرورت تحقیق    6
1-3 اهداف تحقیق    7
1-4 پیشینه تحقیق..    6
1-5 روش کار تحقیق    9
1-6 تعاریف.    8
1-7 ساختار پایان نامه    10
فصل دوم: آشنایی با ادبیات موضوع    11
2-1 مقدمه    11
2-2 مهندسی نرم¬افزار    11
2-3 چرخه تکوین نرم¬افزار    13
2- 3- 1  چرخه حیات محصول    14
2- 3- 2 در صورت نبود چرخه حیات محصول    14
2-3-3 مراحل و فازهای چرخه حیات نرم¬افزار    17
2- 3 – 4 مدلهای چرخه حیات محصول    19
2- 3- 5 استانداردهای چرخه حیات نرم¬افزار    20
2 -4 کیفیت 29 2     2- 4- 1 مفهوم کیفیت30
2- 4- 2 کیفیت نرم افزار    30
2- 4- 3  اهمیت کیفیت نرم¬افزار    31
فصل سوم: متریک¬های نرم¬افزاری    32
3-1مقدمه    33
3- 2- 1 انواع متریک¬ها    34
3- 3 متدولوژی    39
3- 4 انواع محصولات نرم¬افزاری    41
3-5 روش¬های تولید نرم¬افزار    45
3- 6 انواع ساختارهای تشکیلاتی    46
3- 7 مستندات    48
فصل چهارم: الگوی پیشنهادی    52
4- 1 مقدمه    53
4- 2 اندازه¬گیری    54
4- 2– 1 فرآیند اندازه¬گیری    55
4- 3 اهداف الگوی پیشنهادی    57
4- 3-1  الگوی پیشنهادی    57
4- 3- 2  پیشنهاد سیکل متریک¬های نرم¬افزاری  بر طبق چرخه برنامه¬ریزی/اجرا/ بررسی/ اقدام اصلاحی    57
4- 3- 3  استاندارد  12207  ISO/IEC  به عنوان پایه الگو    62
4- 3- 4  ویژگیهای الگو    70
فصل پنجم: نتایج و ارزیابی    72
5- 1 مقدمه    73
5- 2 متریک¬های مدیریت    73
5- 3 متریک¬های ریسک    73
5- 4 وزن¬دهی به زیر متریک¬های تعریف¬شده    75
5- 5 روند ارزیابی، تحلیل و نمایش نتایج    80
5- 5-1  نمونه¬سازی سه پروژه جهت پایش متریک¬های پیشنهادی    80
5- 5- 2 نتایج بدست آمده از سه پروژه در خصوص متریک¬های ریسک    85
5- 5- 3 نتایج بدست آمده از سه پروژه در خصوص متریک¬های مدیریت    92
5- 5- 4 مقایسه سه پروژه در خصوص متریک¬های ریسک و مدیریت    93
فصل ششم: بحث و نتیجه¬گیری    94
6-1 مقدمه    95
6-2 دستاورد  پایان¬نامه    95
6-3 پیشنهادات آتی    97
پیوست الف    98
پیوست ب    116
پیوست ج    129
فهرست¬نام¬ها    159
منابع و ماخذ    166
چکیده انگلیسی167

فهرست شکل¬ها
شکل2-1: فاز¬های چرخه تولید نرم-افزار17
شکل2-2: ساختار استاندارد ایزو 12207:200828
شکل 3-1: حوزه¬های دانش مدیریت پروژه39
شکل4-1: بخش¬بندی یک فرآیند به فعالیت¬های برنامه-ریزی/اجرا/بررسی/ اقدام اصلاحی56
شکل4-2: پیشنهاد سیکل متریک¬های نرم¬افزاری بر طبق مدل برنامه¬ریزی/اجرا/بررسی/ اقدام اصلاحی58
شکل4-3: سطح اول الگوی پیشنهادی59
شکل4-4: سطح دوم الگوی پیشنهادی60
شکل4-5: سطح سوم الگوی پیشنهادی61
شکل4-6: وظایف، فعالیت اکتساب62
شکل4-7: وظایف، فعالیت عرضه63

 

فهرست جداول
جدول2-1: استاندارد¬های ایزو در مدیریت پروژه و کیفیت نرم-افزار24
جدول3-1: انواع محصولات نرم¬افزاری و ویژگی-هایشان45
جدول3-2: روش¬های تولید نرم¬افزار و ویژگی-هایشان47
جدول3-3: انواع ساختار¬های تشکیلاتی و ویژگی-هایشان49
جدول5-1: متریک¬های ریسک و وزن¬دهی به زیرمتریک-هایش77
جدول5-2: متریک¬های مدیریت و وزن¬دهی به زیر¬متریک-هایش78
جدول5-3: امتیازدهی به متریک ریسک پروژه 1 82
جدول5-4: امتیازدهی به متریک ریسک پروژه 283
جدول5-5: امتیازدهی به متریک ریسک پروژه 384
جدول5-6: امتیازدهی به متریک مدیریت پروژه 186
جدول5-7: امتیازدهی به متریک مدیریت پروژه 288
جدول5-8: امتیازدهی به متریک مدیریت پروژه 390

 
فهرست نمودار¬ها
نمودار 5-1: مقایسه 3 پروژه در امتیازدهی به متریک ریسک85
نمودار5-2: مقایسه 3 پروژه در امتیازدهی به متریک مدیریت92
نمودار5-3: مقایسه 3 پروژه در امتیازدهی به متریک¬های ریسک و مدیریت93

 
چکیده
کیفیت نرم¬افزار، شاخص حیاتی و مهمی برای تولید نرم¬افزارها است که ضمن بالا¬بردن
بهره¬وری، به ایجاد نرم¬افزارهای قدرتمند و شکست¬ناپذیر منجر می¬گردد. به طوری که می¬توان گفت تضمین کیفیت مهمترین اصل و برنامه در تولید نرم¬افزارها است.
راهکاری که به منظور تضمین کیفیت  نرم¬افزار و ارتقا آن پیشنهاد می¬گردد، مقوله¬ی اندازه¬گیری است. ما حصل فرآیند اندازه¬گیری بدست آوردن مجموعه¬ای از متریک-ها است.
متریک¬های نرم¬افزاری، کاربردی پیوسته از تکنیک¬های مبتنی بر اندازه¬گیری در فرآیند توسعه نرم¬افزار به منظور فراهم کردن به موقع اطلاعات مدیریتی معنادار به همراه بکارگیری این تکنیک¬ها در بهبود فرآیند هستند. بنابراین نیازمند استخراج متریک¬های مربوطه در راستای هدف مورد نظر هستیم.
در این پایان¬نامه، با مد نظر قرار دادن اهمیت وجود متریک¬های نرم¬افزاری، بهره¬گیری از مدل
فرآیند¬های چرخه حیات نرم¬افزار استاندارد بین-المللیISO/IEC 12207 و فرآیند اندازه¬گیری برنامه-ریزی/اجرا/ بررسی/اقدام اصلاحی، الگویی به منظور پایش فرآیند تولید نرم¬افزار ارائه شده است. همچنین نمونه زیر¬متریک¬هایی برای ارزیابی متریک¬های ریسک و مدیریت به عنوان عناصری ضروری جهت پایش فرآیند تولید نرم¬افزار ارائه و توسط تابعی مقادیر کیفی آن¬ها تبدیل به مقادیر کمی شده¬اند.
کلمات کلیدی: متریک¬های نرم¬افزاری، اندازه¬گیری، فرآیند تولید نرم¬افزار، استاندارد ایزو 12207

 

مقدمه
امروزه برای هر شرکتی که با موضوع فناوری اطلاعات و صنعت نرم¬افزار سروکار دارد، توسعه و بهبود کیفیت مراحل تولید نرم¬افزار و افزایش کارایی و بهره¬وری افراد درگیر با آن به امر مهمی تبدیل شده است. همزمان با قدرتمند شدن کامپیوترها، تقاضا برای نرم¬افزارهای قوی¬تر نیز افزایش یافته و به دلیل این که فناوری نقش بسیار حیاتی در پیشبرد کسب¬و¬کار ایفاد می¬کند، مشکلات
نرم¬افزار، مشکلات مهمی محسوب می¬شوند که بر روی عملکرد بسیاری از شرکت¬ها تاثیر گذارند. امروزه، بسیاری از شرکت¬ها دریافتند که اغلب مشکلات نرم¬افزاری، تکنیکی هستند و مهندسی
نرم¬افزار متفاوت با سایر مهندسی¬ها است؛ زیرا محصولات نرم¬افزاری فکری بوده اما محصولات سایر مهندسی¬ها و دیگر علوم ملموس و فیزیکی هستند. در مرکزیت هر مهندسی، اندازه¬گیری وجود دارد که روشی بر پایه استاندارد¬ها یا قرارداد¬های شناخته شده است. اگر به اندازه¬گیری کارایی سیستم، میزان کارآمد بودن سازمان یا شرکت یا حتی داده-هایی که مورد استفاده قرار می¬گیرند نپردازیم، مسلما امکان کنترل روند کار را نخواهیم داشت که در نتیجه، اعمالی که به منظور پیشرفت انجام می¬شوند تنها بر مبنای حدس و تخمین خواهند بود. چرا که تنها ثبت اطلاعات امروز است که امکان مقایسه را فراهم می¬آورد. همان¬طور که پاتریک هنری نیز با گفته¬ی خود، این مطلب را تایید می¬کند:
”  هیچ راهی را برای قضاوت در آینده نمی¬شناسم، مگر با استفاده از گذشته”.
اندازه¬گیری را می¬توان در سرتاسر پروژه نرم¬افزاری به هدف بهبود بخشیدن فرآیند نرم¬افزاری، کنترل کیفیت، ارزیابی بهره¬وری و کنترل پروژه به کار برد. استفاده از اندازه¬گیری به مهندس نرم¬افزار در ارزیابی محصولات فنی یاری رسانده و وی را قادر به تصمیم¬گیری تاکتیکی به موازات پیشرفت پروژه می¬سازد. در این میان، متریک-های نرم¬افزاری گستره وسیعی از اندازه¬گیری¬ها را برای
نرم¬افزارهای کامپیوتری در بر می¬گیرند. می¬توان چنین بیان نمود که تلاش جهت بهبود فرآیند¬های یک سازمان، بدون ابزار مناسب اندازه¬گیری، متریک¬های صحیح و استانداردهای عملکرد، کاری بیهوده است.
لذا ارائه الگویی مطابق با استانداردها که بتوان با استناد و استفاده از آن به کنترل و پایش فرآیند تولید نرم¬افزار پرداخته و راهی را جهت رفع مشکلات ناشی از عدم توجه به این مقوله مهم بیان نمود، ضروری است.

 

منابع و ماخذ
]1[ ناصر¬مدیری، فاطمه¬کشاورز¬کوهجردی، ” مفاهیم پیشرفته در مهندسی نرم¬افزار،” شابک: 3-1-91693-600-978، 1388
]2[   ناصر¬مدیری، فاطمه¬دوامی، عصمت¬علی محمد ملایری، ” متریک¬های نرم-افزار،” شابک: 0-2-61693- 600-978، 1389
]3[ فاطمه دوامی، ” ارائه چارچوب و چرخه حیات پروسه اندازه¬گیری نرم-افزار،”پایان¬نامه دوره کارشناسی¬ارشد، دانشگاه آزاد تهران شمال، زمستان 1389
[4] Habra Naji, et al. “A Framework for the Design and Verification of Software Measurement Methods”, Elsevier, The Journal of Systems and Software 81 633–648,2008.
[5] Raffo , David M. , “Software Project Management using PROMPT: A Hybrid Metrics, Modeling and Utility Framework “ , Elsevier, Information and Software Technology 47 1009–1017, 2005.
[6] Osmudson John S., et al. “ Quality Management Metrics for Software Development” , Elsevier Science, Information & Management 40 799–812, 2003.
[7] R. Pressman, “Software Engineering: A Practitioner’s Approach 5th Edition,” McGraw-Hill Science/Engineering/Math, ISBN: 0072853182, 2001.
[8] Baker Mark D. , “ Implementing an Initial Software Metrics Program “, IEEE , 1991.
[9] Hoffman Gabriel D. , “ Early Introduction of Software Metrics “ , IEEE , 1989.
[10] Somerville, “Software Engineering,” Pearson Education, ISBN: o321210263, 1999.
[11]Day, G. “The Product Life cycle: Analysis and applications issues,” Journal of Marketing, Vol 45, autumn 1981.
[12] Carlo Mazza, Jon Fairclough, Bryan Melton, Daniel de Pablo, Adriaan Scheffer, Richard Stevens, “ Software Engineering Standards”, Prentice-Hall International(UK) Ltd. First published 1994.
[13] ISO/IEC 12207:2008, International Standard, System and software engineering-Software life cycle processes
[14] ISO/IEC 15939:2007(E), International Standard, System and software engineering-Measurement process, 2007.
[15] P. Goodman “ Software Metrics: Best Practices for Successful IT Management,” Rothstein Associates Inc., 2004.
[16] A Guide ti the Project Management Body of Knowledge(PMBOK), An American National Standard, ANSI/PMI 99-001-2008, 2008.
[17] N. Fenton, and S. Pfleeger, “Software Metrics – A Rigorous and Practical Approach,” Brooks Cole Publishing Company, ISBN: 0534954291, 1998.
[18] R. V. Solingen, E. Berghout, “The Goal/Question/Metric method – a practical guide for quality improvement of software development,” McGraw-Hill, London, England, 1999.
[19] G. Gorenflo, J.  W. Moran, “  The ABCs of PDCA for Public Health Foundation ‘ s website, 2010.
[20] Raghu Singh, “An Introduction to International Standard ISO/IEC 12207 Software Life Cycle,” FAA, Washington DC, April 26, 1999.
[21] M. Scotto, A. Sillitti, G. Succi, T. Vernazza, “ A relational approach to software metrics,”  In ACM Symposium on Applied Computing, 2004.
[22] Extreme Programming , (2007) Available from extremeprogramming.com
[23] DSDM , (2007) Available from dsdm.org
[24] Agile Alliance , (2006) Available from agilealliance.com
[25] J. Arlow and I. Neustadt. UML 2 and the Unified Process Second Edition: Practical Object-Oriented Analysis and Design. Addison-Wesley, 2005.
[26] Kruchten, Philippe, The Rational Unified Process – An Introduction, 3rd edition, Addison-Wesley, 2004 ISBN:0-321-19770-4
[27]U.S. Department of Housing and Urban Development, www. Hub.gov.

Monitoring Software Product Process Metrics

Abstract
Software  quality  is an important criteria in producing  softwares  which increases productivity and results in powerful and invincible softwares. We can say that quality assurance is the main principle and plan in software production.
Solution which is suggested for quality assurance and improvement of software is measurement. The result of measurement process is to acquire a set of metrics.
Software metrics are continuous usage of techniques based on measurement in software development process and products in order to provide timely and significant management information, with using these techniques in improvement of process and it’s products. Therefore we need derivation of respective metrics in order to achieve our goal.
Considering the importance of software metrics, utilization of international standard software life cycle process model(ISO/IEC 12207) and measurement process of Plan/Do/Check/Act in order to monitor software production cycle is presented in this thesis.
Further, presentation of sample submetrics for evaluating the risk and management metrics as essential elements for controlling software Development process and             a function has been derived for controlling qualitative values into quantitative ones.

Keywords: Software Metrics, Measurement, Software Development Process,
 ISO/IEC 12207

دانلود این فایل

برای دریافت پروژه اینجا کلیک کنید

بررسی و شناخت سیستم عامل فایل ورد (word)

برای دریافت پروژه اینجا کلیک کنید

 بررسی و شناخت سیستم عامل فایل ورد (word) دارای 254 صفحه می باشد و دارای تنظیمات و فهرست کامل در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد بررسی و شناخت سیستم عامل فایل ورد (word)  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

این پروژه توسط مرکز مرکز پروژه های دانشجویی آماده و تنظیم شده است

در بسیاری از سیستم ها هنگام اجرا دستورات ماشین، ابتدا این دستورات توسط یك ROM به یك سری دستورالعمل های ایتدایی تر به نام ریز دستور یا میكرو كد تبدیل شده و سپس توسط سخت افزار اجرا می گردند كه به این ماشین ها CISC(Complex Instruction Set Computer) گفته می شود. در بعشی از كامپیوترها به نام RISC(Reduced Instruction Set Computer) این سطح ریز برنامه نویسی وجود نداشته و دستورات زبان ماشین مستقیما توسط سخت افزار اجرا می گردند. تعداد دستورات ماشین های RISC كمتر از كامپیوترهای CISC می باشد.
سیستم عامل چیست؟
به طور كلی نرم افزارهای كامپیوتر به دو گروه تقسیم می شوند: یكی برنامه های سیستمی كه عملیات كامپیوتر را مدیریت می كنند و دیگری برنامه های كاربردی. سیستم عامل(Operation System= OS) اصلی ترین برنامه سیستمی است كه به عنوان رابط بین كاربر و سخت افزار كامپیوتر عمل می كند.
سیستم عامل دو دظیفه(یا هدف) اصلی دارد:
الف) سیستم عامل استفاده از كامپیوتر را ساده می سازد. این بدان معناست كه مثلا كاربر یا برنامه نویس بدون درگیر شدن با مسائل سخت افزاری دیسكها به راحتی فایلی را بر روی دیسك ذخیره و حذف كند. این كار در واقع با به كار بردن دستورات ساده ای كه فراخوان های سیستمی(System Calls) را صدا می زنند انجام می پذیرد. در صورت عدم وجود سیستم عامل كاربر و یا برنامه نویس می بایست آشنایی كاملی با سخت افزارهای مختلف كامپیوتر(مثل مونیتور، فلاپی، كی بورد و غیره) داشته باشد و روتین هائی برای خواندن و یا نوشتن آنها به زبانهای سطح پائین بنویسد. از این جنبه به سیستم عامل با عنوان ماشین توسعه یافته(Extended machine) یا ماشین مجازی(Virtual machine) یاد می شود كه واقعیت سخت افزار را از دید برنامه نویسان مخفی می سازد.
ب) واقعیت وظیفه دوم سیستم عامل مدیریت منابع(Resource Management) می باشد، یعنی سیستم عامل باعث استفاده بهینه و سودمند(اقتصادی) از منابع فیزیكی و منطقی سیستم می گردد. منظور از منابع فیزیكی پردازنده ها، حافظه ها، دیسكها، ماوس ها، چاپگرها، پورتها و غیره و منظور از منابع منطقی اطلاعات، فایلها و غیره هستند. یك سیستم كامپیوتری منابع نرم افزاری و سخت افزاری بسیاری دارد كه ممكن است در حین اجراء برنامه لازم باشند، سیستم عامل همانند مدیر منابع عمل كرده و آنها را بر حسب نیاز به برنامه مشخصی تخصیص می دهد. مثلا اگر دو برنامه همزمان بخواهند از چاپگر استفاده كنند، سیستم عامل اطلاعات خروجی آنها را در بافری ریخته و سپس به ترتیب و براساس اولویتی از پیش تعیین شده اطلاعات را به چاپگر می فرستد. بنابراین كار سیستم عامل این است كه بداند چه كسانی از كدام منابع استفاده می كنند، به درخواستهای جهت دریافت منابع رسیدگی كند، حسابداری استفاده می كنند، به درخواستهای جهت دریافت منابع رسیدگی كند، حسابداری استفاده از منابع را نگهداری كند و در برابر تداخل درخواستهای مختلف میانجی گری كند. پس با نگرش از بالا به پائین سیستم عامل فراهم كننده واسطه ای راحت برای كاربران است و با نگرش از پائین به بالا سیستم عامل مدیر كلیه اجزاء و منابع سیستم می باشد.
به بیانی می توان گفت هدف سیستم عامل استفاده بهینه و حداكثر از ماشین و وظیفه سیستم عامل كنترل تمامی منابع و به تعادل رساندن درخواستها و منابع موجود است.
با توجه به توضیحات فوق می توان گفت سیستم عامل مشابه دولت است یعنی مانند دولت سیستم عامل محیطی را كه درون آن سایر برنامه های بتوانند كار مفید انجام دهند، ایجاد می كند و هسته سیستم عامل به خودی خود كاری مفید و نهائی را برای كاربر انجام نمی دهد. به عبارتی دیگر سیستم عامل برنامه كنترلی است كه اجرای برنامه های كاربر و استفاده از سخت افزار سیستم را كنترل می كند.
سیستم عامل معمولا اولین برنامه ای است كه پس از بوت شدن در حافظه بار می شود. پس از بار شدن، قسمتی از سیستم عامل بطور دائم در حافظه باقی(Resident) می ماند. قسمتهای دیگر با توجه به كاربرد كامپیوتر توسط كاربر از دیسك به حافظه آورده می شود.
به قسمت اصلی سیستم عامل كه وظایف مهم آن را انجام می دهد هسته یا kernel گفته می شود. هسته سیستم عامل و معماری كامپیوتر اثر زیادی یكدیگر داشته اند. یعنی جهت سهولت كار با سخت افزارهای جدید، سیستم عامل ها توسعه یافتند در اثنای طراحی سیستم عامل ها، مشخص شد كه تغییراتی در طراحی سخت افزار می تواند سیستم عاملها را ساده تر و كارآمدتر سازد. هذ چند كه تطبیق نسلهای كامپیوتر با نسلهای سیستم عامل كار درستی نیست ولی این تطبیق كه در ادامه انجام می دهیم علت ایجاد سیستم عاملهای جدید را مشخص می سازد.
در نسل اول كامپیوترها(55-1945) كه از لامپ خلا برای ساخت آنها استفاده می شد، زبانهای برنامه نویسی(حتی اسمبلی) ابداع نشده بودند و سیستم عامل نیز اصلا وجود نداشت. روند كار به این صورت بود كه برنامه نویسان در یك فاصله زمانی مشخص حق استفاده از كامپیوتر بزرگ و گران قیمت را داشتند. آنها برنامه های خود را توسط تخته مدار سوراخدار( و بعدها توسط كارتهای پانچ) و به زبان ماشین به كامپیوتر می دادند. اكثر برنامه های محاسبات عددی معمولی مانند جداول سینوس و كسینوس بود.
سیستم های دسته ای Batch Systems
در نسل دوم، كامپیوترها(65-1955) از ترانزیستور ساخته شدند.
طریقه كار با این كامپیوترهای نسل دوم از طریق یك كنسول(Console) بود كه تنها اپراتور مخصوص كامپیوتر با آن كار می كرد و كاربران به طور مستقیم با این كامپیوترها محاوره(interaction) نداشتند. كاربر ابتدا برنامه خود را به زبان فرترن یا اسمبلی بر روی كاغذ می نوشت سپس توسط دستگاه Card punch، برنامه را روی كارت های سورخدار منتقل می ساخت. بعد این دسته كارت تهیه شده كه شامل برنامه، داده ها و كارتهای كنترل بود به صورت یك كار(Job) تحویل اپراتور داده می شد. اپراتور بعد از اتمام كار قبلی، دسته كارت جدید را به كامپیوتر می داد تا برنامه را اجراء كند در انتهل خروجی برنامه(كه غالبا چاپی بود) را به كاربر تحویل می داد. سیستم عامل در این كامپیوترهای اولیه ساده بود و وظیفه اصلی آن انتقال كنترل اتوماتیك از یك كار به كار دیگری بود. سیستم عامل همواره مقیم در حافظه بود و در هر لحظه فقط یك برنامه اجراء می شد. هنگامی كه اپراتور مشغول گذاشتن نوارها یا برداشتن كاغذهای چاپ شده بود وقت زیادی از این كامپیوترهای گران قیمت به هدر می رفت.
برای رفع مشكل فوق سیستم های دسته ای(Batch System) ابداع شد. یعنی ابتدا یك سبد پر از دسته كارتها در اتاق ورودی جمع آوری می شد، سپس كلیه آنها به وسیله دستگاه كارتخوان یك كامپیوتر كوچك و نسبتا ارزان(مثل IBM 1401) خوانده شده و بر روی یك نوار ذخیره می گردید. سپس اپراتور نوار را برداشته بر روی كامپیوتر اصلی و گران قیمت كه محاسبات را انجام می داد(مثل IBM 7094) نصب می كرد. بعد از آن برنامه ای را اجراء می كرد(یعنی سیستم عامل) تا اولین كار را از روی نوار برداشته و اجرا كند، خروجی بر روی نوار دیگری نوشته می شد. پس از اتمام هر كار سیستم عامل به صورت خودكار كار بعدی را از نوار می خواند. پس از اجراء همه برنامه ها، اپراتور نوار خروجی را برداشته و دوباره روی كامپیوتر IBM 1401 منتقل می ساخت تا عملیات چاپ خروجی ها به صورت off line  انجام شود. به این روش كار offline spooling نیز گفته می شود. بیشتر برنامه های نسل دوم به زبان فرترن و اسمبلی برای محاسبات مهندسی و علمی مثل مشتقات جزئی به كار می رفت.
یكی از معایب روش offline- spooling زیاد بودن زمان برگشت(گردش) (turnaround time) است، یعنی تاخیر مابین تحویل كار و تكمیل كار. همچنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد. تنها روش بدست آوردن اولویت این بود كه نوار كارهای مهم را ابتدا مهم را ابتدا در ماشین اصلی قرار دهند. حتی در اینصورت هم باید چندین ساعت صبر می كردند تا خروجی ها ظاهر شوند. همچنین نیاز به سخت افزار اضافی(مثل كامپیوترهای 1401) از دیگر معایب این روش بود.
پس از معایب این روش عبارت است از: 1- گردش طولانی تر كار    2- عدم وجود اولویت        3- نیاز به سخت افزار اضافی.
از مزایای سیستم offline spooling نسبت به سیستم های قبل از آن می توان موارد زیر را ذكر كرد:
1- راندمان بهتر    2- عملیات ساده تر    3- سهولت برای استفاده از راه دور
تذكر: در سیستم های اولیه CPU گرانترین جزء كامپیوتر بود و بدین جهت نیاز به بالا بردن درصد استفاده از CPU فاكتور اصلی در طراحی سیستم عاملها بود.
سیستم های چند برنامگی Multiprogramming
در نسل سوم كامپیوترها(80-1965) از مدارات مجتمع(Integrated Circuit= IC) برای ساخت كامپیوترها استفاده شد. به طور كلی برنامه ها را می توان به دو دسته تقسیم كرد: یكی برنامه ها با تنگنای محاسباتی(CPU bound یا CPU Limited) مانند محاسبات علمی سنگین كه بیشتر زمان كامپیوتر صرف محاسبات CPU می شود و دیگری برنامه ها با تنگنای I/O(I/O Limited) مانند برنامه های تجاری كه بیشتر زمان كامپیوتر صرف ورود داده ها و خروج اطلاعات می شود.
یك اشكال مهم سیستم های دسته ای این است كه وقتی كار جاری برای تكمیل یك عملیات I/O مثلا بر روی نوار گردان منتظر می شود، در این حال CPU بیكار می ماند و مجبور است صبر كند تا عملیات I/O به اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندك است ولی در برنامه های I/O Limited ممكن است حدود 80 تا 90 درصد وقت CPU به هدر برود.
برای رفع این مشكل از تكنیك multiprogramming استفاده می شود. بدین ترتیب كه حافظه به چند قسمت تقسیم شده و در هر قسمت یك برنامه مجزا قرار داده می شود. وقتی كه یك كار برای تكمیل عملیات I/O منتظر می ماند، پردازنده به كار دیگری داده می شود. اگر تعداد كارهای موجود در حافظه كافی باشد می توان CPU را تقریبا صد در صد مشغول نگه داشت. البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه ها بر همدیگر اثر سوء نداشته باشند. لذا مدیریت حافظه بحث مهمی در سیستم عامل می باشد( شكل زیر).

پس سیستم های چند برنامگی فقط یك پردازنده دارند و به كمك مكانیزم وقفه بین كارهای CPU- limited و I/O Limited سوئیچ می شود و به ظاهر اجرای این برنامه ها به صورت موازی و همزمان صورت می گیرد و بدین ترتیب بهره وری از سیستم افزایش می یابد.
یك شیوه برای بالا بردن راندمان CPU آن است كه تعدادی كار CPU- Limited را با I/O- Limited مخلوط كنیم. ولی در عمل امكان تقسیم بندی كارها قبل از اجراء شدنشان وجود ندارد. از طرف دیگر برنامه های ممكن است در ابتدا CPU-Limited باشد ولی در حین اجراء تبدیل به I/O-Limited گردد.
سیستم های Spooling
یكی دیگر از ویژگیهای سیستم عاملهای نسل سوم Spooling(On Line Spooling) است كه معمولا همراه چند برنامگی استفاده می شود. این كلمه مخفف عبارات(Simultaneous Peripheral Operation) می باشد. در این سیستم به جای آنكه كارتها از دستگاه كارت خوان مستقیما وارد حافظه گردند و توسط CPU پردازش شوند ابتدا كاراكتر به كاراكتر در بافری در حافظه قرار گرفته و سپس به صورت بلوكی بر روی دیسك نوشته می شوند. وقتیكه برنامه كاربر اجراء می شود و از سیستم عامل تقاضای ورودی می كند، اطلاعات ورودی به صورت بلوكی و با سرعت زیاد از دیسك خوانده می شوند. به طور مشابه هنگامی كه برنامه برای خروجی چاپگر را احضار می كند، خط خروجی در یك بافر كپی شده و سپس در دیسك نوشته می شود. پس اطلاعات خروجی از دیسك براساس ترتیب و اولویت در چاپگر چاپ می شوند. در واقع اسپولینگ عمل I/O یك كار را با عمل محاسباتی كار دیگر روی هم می اندازد(overlap). در سیستم اسپولینگ در حالیكه ورودی یك كار از دستگاه ورودی خوانده می شود، كار دیگری در حال چاپ شدن است، در همین بین حتی كار دیگری می تواند در حال پردازش و اجراء باشد. در اسپولینگ برنامه عملیات ورودی و خروجی اش را متناسب با سرعت دیسك(كه سریع است) انجام می دهد و نه متناسب با سرعت كارتخوان یا چاپگر( كه خیلی كند هستند).
بنابراین سیستم مذكور باعث استفاده بهینه از CPU و وسایل I/O می شود و سرعت عمل را بالا می برد. در این سیستم دیگر نیازی به كامپیوترهای 1401، نوارگردانهای اضافی و حمل نوارها( مانند سیستم های دسته ای) نداریم.
با توجه به توضیحات فوق مزایای سیستم اسپولینگ(نسبت به سیستم دسته ای) عبارتند از:
1- بالا بودن راندمان CPU و وسایل I/O    2- گردش سریعتر كار(turnaround time) در اینجا برعكس سیستم دسته ای لازم نیست برای كامل شدن نوارهای ورودی یا خروجی صبر كرد.    3- دسترسی با اولویت. هنگامی كه اطلاعات مستقیما از طریق كارت خوان یا نوار وارد می شوند چون دسترسی به صورت سریال است امكان ندارد كه اجرای آنها با ترتیب متفاوتی انجام گیرد، یعنی كارها الزاما به ترتیب ذخیره شدن روی نوار اجراء می شوند. اما با استفاده از دیسك، كه رسانه ای با دسترسی تصادفی و مستقیم(direct access) است می توان بین كارها زمانبندی كرده و كار با اولویت را ابتدا اجراء كرد هر چند كه قبل از همه وارد نشده باشد.    4- می توان همزمان چند مدرك ورودی یا خروجی داشت چون ورودیها و خروجیها در دیسك ذخیره می شوند.
بلوك دیاگرام یك سیستم اسپولینگ را می توان به صورت زیر ترسیم كرد:

1- سیستم ورودی: كاركترهایی كه توسط كارتخوان وارد می شود را در بلوكهائی جمع آوری كرده و راجع به آن مدارك ورودی اطلاعاتی راجع به آن مدارك(مانند محل آن بر روی دیسك، اولویت، اسم استفاده كننده) به قسمت زمانبند كار فرستاده می شود.
2- زمانبند كار(JS= Job Scheduler): این زمانبند یك لیست از كارهای موجود در ماشین و اطلاعات لازم در مورد مدارك ورودی مورد نیاز هر یك را نگه می دارد. به این لیست انبار كار یا Jobpool یا Joblist نیز گفته می شود. زمانبند كار به پردازنده كار می گوید كه كدام كار بعدی را اجرا كند. برای این منظور اطلاعاتی در مورد محل كار و مدارك ورودی آن بر روی دیسك را به پردازنده كار می دهد. همچنین اگر كارهای متعددی منتظر ورود به حافظه باشند و فضای كافی برای همگی در دسترس نباشد، زمانبند كار تعدادی از آنها را انتخاب كرده و به حافظه می آورد.
3- پردازنده كار(Job processor) كار داده شده را اجرا می كند. این پردازنده محل كامپایلرها و سایر نرم افزارهای سیستم را بر روی دیسك می داند. هنگام اجراء پردازنده كار خروجی های خود را به صورت بلوكی بر روی دیسك می نویسد و مدارك خروجی را تشكیل می دهد. پردازنده كار اطلاعاتی راجع به محل و اولویت مدارك و اولویت خروجی به زمانبند خروجی می دهد.
4- زمانبند خروجی(output scheduler) لیستی از مداركی كه باید چاپ شوند را نگه می دارد. وقتی كه چاپگر آزاد شد، این زمانبند مدرك بعدی را برای چاپ انتخاب كرده و محل مدرك بر روی دیسك را به سیستم خروجی می گوید.
5- سیستم خروجی: بلاكهای خروجی را از روی دیسك خوانده و كاراكتر به كاراكتر( یا خط به خط) آنها را به چاپگر می فرستد.
6- مدیر دیسك(Disk Manager) كه وظایف خواندن و نوشتن یك بلاك بر دیسك، تخصیص بلاك خالی روی دیسك و برگرداندن یك بلاك به مجموعه  فضای آزاد دیسك را بر عهده دارد. درخواستهای مربوطه در یك صف به نام DTQ(Disk Transfer Queue) ذخیره می گردد.
7- هماهنگ كننده: البته هر سیستم اسپولینگ یك هماهنگ كننده(Coordinator) دارد كه مسئول زمانبندی پردازش های سیستم و فراهم كردن عملیاتی كه جهت همگام كردن بكار می آیند می باشد. (هماهنگ كننده در شكل نشان داده نشده است). این عملیات توسط دو روال انجام می پذیرد:
Wait: پردازش جاری را متوقف كرده و دوباره وارد زمانبند می گردد.
Free: یك پردازش ویژه را جهت زمانبندی، آماده می كند.
نكته: بافر كردن امكان می دهد كه عمل I/O یك كار با عمل پردازش همان كار همزمان گردد در حالیكه spooling امكان می دهد عملیات I/O و پردازش چندین كار با هم همزمان گردند.
در چند برنامگی اجرای یك برنامه تا هنگام عملیات I/O ادامه پیدا می كند، سپس عمل I/O آن شروع شده و همزمان CPU اجرای برنامه دیگری را آغاز می كند. ولی در Spooling می توان چند كار را همزمان اجرا كرد.
تذكر: در سیستم های On line پردازنده مستقیما به دستگاه های I/O در ارتباط است ولی در سیستم های Off line یا ارتباط غیرمستقیم، پردازنده با دستگاه های I/O به طور مستقیم در ارتباط نیست.
سیستم های اشتراك زمانی Time- Sharing
این سیستم ها از اوایل سالهای 1970 در نسل سوم كامپیوترها معمول شدند. سیستم اشتراك زمانی در واقع تعمیم سیستم چند برنامگی است.
در سیستم های چند برنامگی كاربر ارتباطی با كامپیوتر نداشت و خطایابی برنامه ها مشكل بود چرا كه زمان برگشت نسبتا طولانی اجازه آزمایش كردنهای متعدد را نمی داد. در سیستم اشتراك زمانی كاربر به كمك ترمینال(Terminal) كه شامل كی بورد(برای ورودی) و مونیتور(برای خروجی) است با كامپیوتر به صورت محاوره ای(interactive) رابطه برقرار می سازد. كاربر مستقیما دستوراتی را وارد كرده و پاسخ سریع آن را روی مونیتور دریافت می كند. در این سیستم ها چندین كاربر به كمك ترمینالهائی كه به كامپیوتر وصل است همزمان می توانند از آن استفاده كنند. در سیستم اشتراك زمانی فقط یك پردازنده وجود دارد كه توسط مكانیزمهای زمانبندی بین برنامه های مختلف كاربرها با سرعت زیاد(مثلا در حد میلی ثانیه) سوئیچ می شود و بنابراین هر كاربر تصور می كند كل كامپیوتر در اختیار اوست. در اینجا تاكید بر روی میزان عملكرد كاربر است یعنی هدف فراهم كردن وسایل مناسب برای تولید ساده نرم افزار و راحتی كاربر می باشد و نه بالا بردن میزان كاربرد منابع ماشین. كاربر می تواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجراء و اشكال زدائی(debug) كند. سیستم های دسته ای برای اجرای برنامه های بزرگ كه نیاز محاوره ای كمی دارند مناسب است ولی سیستم های اشتراك زمانی برای مواردی كه زمان پاسخ كوتاه لازم است، استفاده می شوند. در زمانی كه كاربردی در حال تایپ برنامه اش یا فكر كردن روی خطاهای برنامه اش می باشد CPU به برنامه كاربر دیگری اختصاص یافته تا آن را اجراء كند.
در سیستم های محاوره ای دستورات به دو صورت پیش زمینه(foreground) و پس زمینه(Background) اجرا می شوند. در نوع پیش زمینه با وارد كردن دستور، تا هنگامی كه دستور اجرا و تمام نشود اعلان سیستم ظاهر نمی گردد ولی در نوع پس زمینه، پس از ورود دستور، بلافاصله اعلان سیستم ظاهر می شود تا دستور بعدی وارد گردد ولی در همین حین دستور قبلی در پشت زمینه در حال اجرا می باشد.
در این سیستم اشتراك زمانی هنگامی كه چند كاربر همگی یك برنامه(مثل كامپایلر C) را احضار می كنند هر یك دارای كپی هایی از ثباتها، فضای داده ای، فضای پشته(stack) مخصوص به خود هستند ولی قسمت كد همگی یكسان و مشترك می باشد. در سیستم اشتراك زمانی وجود یك سیستم فایل ضروری است زیرا نمی توان در هر بار اجرای كار مدارك بزرگی را توسط ترمینالها وارد كامپیوتر كرد. لذا داده ها و برنامه های كاربر می بایست در دیسك ذخیره گردند. لذا بخش مدیریت فایلها یكی از بخش های اصلی سیستم عامل می باشد. هر چند كه می توان وظایف مدیر فایل(File Manager) و مدیر دیسك(Disk Manager) را در هم آمیخت ولی منطقا این دو كاملا متفاوت هستند. مدیر دیسك مسئول توزیع فضای خالی روی دیسك و نقل و انتقالات است، حال آنكه كارهای مدیر فایل بیشتر مربوط به مدیریت فهرستها، فایلها، امنیت فایلها و كارهای مربوط به حسابداری(Accounting) است.
یكی دیگر از بخشهای مهم در سیستم اشتراك زمانی، مدیر ترمینال است كه وظیفه تعیین هویت كاربران و پذیرش آنها را بر عهده دارد.
چند برنامگی و اشتراك زمانی مباحث اصلی سیستم عاملهای امروزی و در نتیجه مباحث اصلی این كتاب می باشند. اشتراك زمانی حالت ویژه ای از چند برنامگی است كه در آن تعویض یك برنامه نه بر مبنای لحظه نیاز برنامه به عمل I/O بلكه بر مبنای یك برش زمانی انجام می پذیرد. از جمله سیستم عاملهای سنتی و مشهور كه شامل این ویژگیها می باشد سیستم عامل UNIX است. موسسه IEEE یك استاندارد به نام POSIX برای UNIX بنا نهاد. POSIX حداقل واسط فراخوان سیستمی را تعریف می كند كه سیستم های UNIX سازگار باید آن را پشتیبانی نمایند.
سیستم عاملهای كامپیوترهای شخصی و شبكه
سال 1980 تاكنون ه مدارات مجتمع با مقیاس بزرگ LSI(Large Scale Integrated Circuit) ابداع شدند، به عنوان نسل چهارم كامپیوترها شناخته می شود. در این سالها كامپیوترهای شخصی با قیمتی ارزان و كارآئی بالا و محیط گرافیكی و محاوره ای بسیار خوب به سرعت گسترش یافتند. سیستم عاملهای اولیه بر روی PC(مانند DOS) فقط تك كاربره و تك برنامه ای بودند. ولی سیستم عاملهای امروزی آن مانند Windows NT خاصیتهای چند برنامگی، چند كاربره(multiuser) و شبكه ای را دارا هستند. با توجه به هزینه اندك سخت افزار اهداف سیستم عامل در طول زمان تغییر كرده است و برای PCها به جای ماكزیمم كردن درصد استفاده CPU و وسایل جانبی، سیستم به سمت راحتی كاربر پیش می رود. به تدریج ویژگی های مهم سیستم عاملهای قدیمی در كامپیوترهای بزرگ(مانند حفاظت حافظه، محافظت فایلها، همزمانی پردازشها و…) بر روی سیستم های PC نیز پیاده سازی شده است.
هنگامی كه كامپیوترها از طریق شبكه به هم وصل شوند به آنها ایستگاههای كاری(Workstations) می گویند. در یك سیستم عامل شبكه، كاربران از وجود ماشین های مختلف در شبكه باخبرند. آنها می توانند از دور وارد یك ماشین شوند و همچنین فایلهای یك ماشین را روی ماشین دیگر كپی كنند.
هر كامپیوتر سیستم عامل محلی خودش را اجراء می كند و كاربر یا كاربران محلی مخصوص به خود را دارد.

دانلود این فایل

برای دریافت پروژه اینجا کلیک کنید