در سال 1760 انقلاب صنعتي در اروپا آغاز و در قرن نوزدهم شكل گرفت و در ادامه آن در ابتداي قرن بيستم يعني سال 1900 مديريت به روش علمي آغاز و به ترتيب در مكاتب: نهضت روابط انساني (1930)، تفكر سيستمي (1950)، مديريت استراتژيك (1965)، نهضت بهرهوري (1970)، يادگيري سازماني (1990) و مديريت دانش (2000) روند تعالي خود را تعقيب كرده و مينمايد..
ذهن بشر استعداد بالقوهاي است كه ميتواند انواع طرز تفكرها را در خود داشته باشد. تفكر سيستمي از ابتدا در ذهنيت بشر وجود داشته اما شناخته شده نبود و بطور معمول اين تفكر خطي بود كه از آن استفاده ميشد، به عنوان مثال داستانهايي بسيار قديمي هست كه در آنها تفكر سيستمي و مفاهيم آن بطور عميقي مورد استفاده قرار گرفته است، مانند داستان فيل در اشعار مولوي، از طرف ديگر بسياري از داستانها نيز با تفكر خطي بنيان گرفتهاند.
منظور از شناخته شدن تفكر سيستمي تئوريزه شدن آن است. مثل جاذبه و قانون ارشميدس. اين دو مفهوم به عنوان واقعيت در جهان وجود داشتهاند و مردم هم بصورت ناآگاهانه از آنها استفاده ميكردهاند. اما منظور از شناخت آنها، كشف و تئوريزه شدن آنهاست. تفكر سيستمي هم هنگامي سير رشد خود را شروع كرد كه تئوريزه گرديد و سپس توسعه داده شد و براساس آن الگوهاي زندگي شكل گرفت.
در ابتدا يك زيستشناس به نام برتالانفي صحبت از سيستم را به ميان آورد. او در شناخت فيزيولوژيك بدن وجود سيستمها، اجزاء و ارتباطات آن را مطرح كرد. اما تئوريزه نشد و در حد تعليمات زيستشناسي باقي ماند.
در سال 1950 آقاي فورستر سيستم را به عنوان مقولهاي جديد مطرح ميكند. فورستر در دهه 50 چندين اختراع در كامپيوتر را به نامه خود ثبت كرده، فورستر ديناميك سيستم را گسترش ميدهد. تا در سالهاي بعد از 1950 با شتاب شگفتانگيزي نسلهاي متوالي كامپيوتر مسير تعالي خود را ادامه و تكنولوژي مخابرات و ارتباطات هم توانست به موازات تكامل كامپيوتر مرزهاي جديدي از دانش را پشت سر گذاشته و بدين ترتيب عصر فنآوري اطلاعات (IT) آغاز و تكامل يافت.
"معماري سرويس گرا" به عنوان يکي از آخرين دستآوردها در توليد نرم افزار، به نظر مي رسد، در سالهاي آتي معماري غالب صنعت فناوري اطلاعات و ارتباطات باشد. علت بوجود آمدن اين معماري، ايده اي بود که در ذهن تعدادي از معماران آن وجود داشت و آن " نرم افزار به عنوان سرويس" بود.
ادامه مطلب
طراحي نرمافزار از سالها پيش در محافل محققان و مهندسان نرمافزار مورد بحث است. معمولاً بحث در مورد اين موضوع است كه طراحي سيستم نرمافزاري بر اساس سورسكدهاي نرمافزار استوار است و دياگرامها و طرحهاي ابتدايي ميتواند در پيادهسازي نرمافزار به ما كمك كند، ولي نميتوان گفت تمامي مراحل طراحي يك نرمافزار به آن دياگرامها وابسته است. در واقع اين بحث بيان ميكند كه سورسكدهاي برنامه از دياگرامهاي UML مجزا نيست.
اگر تا به حال در تيمهاي نرمافزاري حضور داشتهايد و پروژههاي نرمافزاري پيادهسازي نمودهايد، حتماً با اشكالاتي، برخورد كردهايد. اگر خيلي خوششانس باشيد، در شروع پروژه مشتري يا همان كلاينت، اطلاعات دقيقي را از سيستمي كه نياز دارد در اختيار شما قرار خواهد داد. اگر خيلي زرنگ و باز خوششانس باشيد، در همان جلسه اول مصاحبه با مشتري ميتوانيد تصويري كلي از نرمافزاري كه قرار است تهيه شود را در فكر خود تجسم كنيد و شروع به طراحي و پيادهسازي قسمت ابتدايي برنامه نماييد. با اين حال صبر كنيد؛ انگار با مشكلي روبهرو شدهايد! بله كوچكترين تغييري از طرف مشتري تمام برنامه شما را با مشكل روبهرو ميسازد و پروژه شما دچار تغييراتي ميشود. از جمله مشكلاتي كه ممكن است براي شما پيش بيايد، ميتوان به موارد زير اشاره كرد:
- ممكن است ماجولهاي برنامه بسيار سخت طراحي شده باشند. در ابتدا برنامهنويسان كدهاي هر ماجول را بسيار منظم و قابل فهم براي ساير اعضاي تيم آماده ميكنند، ولي به مرور زمان و ايجاد تغييراتي در متن كدها، به كدهايي تبديل ميشوند كه فهميدن آنها بسيار سخت خواهد بود.
- كدهاي نرمافزار ممكن است دچار تكرارهاي غيرضروري شوند و قطعهاي از كد چندين بار در طول برنامه تكرار شود كه در نتيجه باعث سردرگمي برنامهنويسان تيم خواهد شد و طبيعتاً تغييرات در برنامه را با مشكلاتي روبهرو خواهد كرد. مثلاً تصور كنيد كه در برنامه با اشكالي روبهرو شدهايد و آن را مرتفع كردهايد، ولي وقتي برنامه را مجدداً كامپايل ميكنيد، متوجه ميشويد برنامه باز اشكال دارد. در نتيجه مجبور ميشويد تمام قسمت هايي را كه اين اشكال در آن وجود دارد، اصلاح كنيد.
- كدهاي برنامه ممكن است داراي اجزايي باشند كه جز افزودن پيچيدگي به برنامه سود ديگري نداشته باشند. اين اشكال معمولاً وقتي پيش ميآيد كه برنامهنويسان پروژه امكاناتي كه احتمال ميدهند در آينده به آن نياز است را از ابتدا در برنامه قرار ميدهند كه باعث پيچيدگي در متن برنامه خواهد شد.
- يكي از اشكالات ديگري كه ممكن است در پروژههاي نرمافزاري پيش آيد اين است كه وقتي برنامهنويسان با اشكال يا تغييري در برنامه مواجه ميگردند، بيش از يك راهحل براي آن تغيير پيدا ميكنند. برخي از اين تغييرات قالب طراحي نرمافزار را حفظ ميكند و برخي تنها با هك كردن سورسكدها اين تغيير را به وجود ميآورند و اين كار باعث بههم ريختگي و از هم گسيختگي طراحي يك نرمافرار و كدهاي آن ميشود.
- معمولاً تغييرات در برنامه باعث شكنندگي سيستم نرمافزاري ميشوند.
- معمولاً از آنجا كه هر تغيير در برنامه باعث تغييراتي در قسمتهاي مختلف برنامه ميشود، تغييرات در سيستمهاي نرمافزاري معمولاً دشوار است.
در مدل برنامهنويسي چابكانه اعضاي تيم با رعايت اصول اين مدل نرمافزاري نميگذارند اشكالات ذكرشده در سيستم نرمافزاري به وجود آيد.





