Consider the requirements for the avionics of a multi-engine aircraft, a cellular phone switching system, or an autonomous robot. The raw functionality of such systems is difficult enough to comprehend, but now add all of the (often implicit) nonfunctional requirements such as usability, survivability, and adaptability, indeed, all of the forces that shape a system. These unrestrained, potentially contradictory, external requirements are what amplify the arbitrary complexity ….
This external complexity usually springs from the “impedance mismatch” that exists between the users of a system and its developers: users generally find it very hard to give precise expression to their needs in a form that developers can understand. In extreme cases, users may have only the vaguest ideas of what they want in a software system.
Moreover, developers may not even know exactly the expectations of its user base, especially in the case of emerging, rapidly changing markets.
This is not so much the fault of either the users or the developers of a system; rather, it occurs because each group generally lacks expertise in the domain of the other. Users and developers have different perspectives on the nature of the problem and make different assumptions regarding the nature of the solution.
Actually, even if users had perfect knowledge of their needs, it is intrinsically difficult to communicate those requirements precisely and efficiently.
At one extreme, the development team may capture requirements in the form of large volumes of text, occasionally accompanied by a few drawings. Such documents are difficult to comprehend, are open to varying interpretations, and too often contain elements that are designs rather than essential requirements.
At the other extreme, there will be no stated requirements, only general visions and some specific stories, all retained in the heads of the developers. This may work for exploratory development or ultra-lightweight projects, but it is absolutely impossible to manage a development process against invisible requirements.
گزیده:
A life without love, is no life at all.
– “Ever After: A Cinderella Story”

بهروز
27 شهریور 1386 در 00:00این جمله را که خواندم designing a new version of an old kind of system is easier, because we have some idea of how to break it into meaningful parts
یاد یک موضوع افتادم که دقیقا نمی دانم کجا خواندم یا کدام استاد می گفت که نظریه ای وجود دارد که می کوید تمامی سیستم های که وجود دارند به نوعی از ابتدا وجود داشتند و ما تنها آنها را شناسایی می کنم و یا فقط آنها را توسعه می دهیم یعنی فکر کنم اینطور می گفت که ما هیچ سیستمی را خلق نکردیم و یا چیزهای شبیه به این. می خاستم اگر می شه شما در مورد این موضوع اگر وجود داشته باشد توضیح بیشتری بدهد.
با تشکر و خسته نباشد
بهروز
27 شهریور 1386 در 00:00شرمنده من دیر رسیدم یک سوالم در مورد پست چالشهای پيش رو در آموزش مهندسی نرمافزار از شما داشتم من به عنوان یک دانشجو تقریبا به صورت آشکار تمام مسائل و مشکلات گفته شده در دانشگاهها به صورت آشکار مشاهده کردم و تفریبا سر این موضوع با بسیاری از اساتید مشکل داشتم. می خاستم نظر شخصی شما را به عنوان یک استاد در شرایط فعلی و زمانیکه دانشجو بودید بدانم و آیا نقصی های را که در زمان دانشجویی احساس می کردید در کلاس درسی خود چگونه پر می کنید؟ حتما جواب بدهید چون این موضوع خیلی برای خودم مهم است
مهرداد
29 شهریور 1386 در 00:00بهروز عزیز سلام،
واقعیت امر این است که در برخورد با موضوعات این چنینی نباید از یک جنبه آنها را مورد بررسی قرار داد. رفتار سیستمهای اجتماعی و آموزشی که ما و اساتیدمان نيز بخشی از آن هستيم، تحت تأثير پارامترهای متعددی هستند. بنابراین وقتی صحبت از مشکلات آموزشی میشود، اگر تنها اساتید عزیزمان به عنوان یکی از ارکان این سیستم مورد نقد و خطاب قرار بگیرند، کمی کملطفی است.
هدف از تحصيل در دانشگاه و وظيفه استاد به خصوص در سطح کارشناسی، در وهله نخست، انتقال دانش به دانشجويان نيست، چرا که دريای دانش بيکران است. هدف ايجاد بينش لازم در دانشجويان برای ادامه راهی است که در پيش دارند. هدف اين نيست که ماهی به آنها بدهيد، هدف اين است که ياد بگيرند که چگونه ماهی بگيرند. ايجاد انگيزه برای يادگيری شايد بزرگترين رسالت استاد باشد. چرا که انگيزه و تلاش دو رکن اساسی مؤفقيت هستند.
از سوی ديگر، دلايل متعددی باعث شده است که دانشجویان بیشتر شبیه به دانشآموز(دانش+آموز) باشند تا دانشجو(دانش+جو)(آن چه که استاد میگوید تنها برای نمره ياد میگيرند). خوشبختانه رشتة ما به شکلی است که دسترسی علاقمندان به منابع تحقيقاتی بسیار زياد است. اگر کسی بخواهد ياد بگيرد، واقعاً مشکلی برای يادگيری ندارد.
بگذریم. به هر حال موضوع بحث، «موضوع سیستمی» است که تمامی ارکان آن به هم پيوستهاند. امیدوارم هر چه زودتر بازدهی سیستم به آن چه که مطلوب همه باشد، برسد. هر سیستمی هم مشکلات خودش را دارد. سئوال این جاست که من به عنوان عضوی از سیستم برای تغییر آن چه کاری کردهام؟ لازم نیست، کار بزرگی انجام دهم، حتی کار کوچک، درست و به جا میتواند تأثیرات شگرفی به همراه داشته باشد.
بهروز
31 شهریور 1386 در 00:00سلام به استاد عزیز
من نیز با شما کاملا موافق هستم و اگر هر کس حتی یک قدم کوچک برای بهبود سیستم بردارد روزی خواهد رسید که سیستم به نقطه ائده ال خود خواهد رسد.