خاطره‌اي از زنده‌ياد استاد كارولوكس

  • یوسف مهرداد بی‌بالان

«دو سال پیش برای داوری پایان نامه ای اینجا بود و موقع رفتن از ایشان خواستیم به جای گرفتن آژانس تا دانشکده فنی ایشان را برسانیم.

در راه میگفت آن اوایل که من به ایران آمدم خواستند مثلا من رو تحویل بگیرن، بردند و رییس فلان بخش در فلان جا کردند. اتاقی بود که قرار بر مستقر شدن چندین نفر در آن بود که من میز اول را انتخاب کردم. از طرف بخش اداری آقایی آمد گفت: جناب دکتر اینجا که نمی شود! شما رییس هستید و شان و مقامی دارید و باید بروید آن ته! روی آن میز آخر آنجا بنشینید! مجبور به قبول شدم و رفتم! آن ته، در دیگری بود که آن هم به اتاق راه داشت و البته بسته بود. مدتی گذشت و بنا به تغییر چیدمان آن طبقه مجبور شدند در اول را ببندند و دری که من کنار آن مینشستم را باز کنند، باز من شده بودم نفر اول بعد از درب ورود! همان آقای قبلی آمد گفت جناب دکتر شما باید بروید آن ور، آن ور سالن ( همان جا که من اول ورود انتخاب کرده بودم) بنشینید! برای شما بد است اینجا، شما رییس هستید، شان و مقامی دارید!!! من خنده ام گرفته بود که ریاست من را این “در” تعیین میکرد! فقط این “در”! »

مرجع: نغمه ی سکوت
با سپاس فراوان از شبنم صبجگاهی

گزیده:
چه كسي جاي او را پر خواهد كرد؟

درگذشت پروفسور کارو لوکس

  • یوسف مهرداد بی‌بالان

کارو لوکس یا لوکاس (۱۳۲۸ در اصفهان – ۱۷ تیر ۱۳۸۹ در تهران) یک دانشمند از ارمنیان ایرانی و از پژوهشگران به‌نام سیستم‌های هوشمند در ایران بود.

در سال ۱۳۲۸ خورشیدی در اصفهان زاده شد. وی مدرک کارشناسی ارشد مهندسی برق را از دانشگاه تهران (۱۹۷۳ میلادی) دریافت کرد و در سال ۱۹۷۶ میلادی مدرک دکترای خود را از گروه مهندسی برق و علوم کامپیوتر دانشگاه برکلی با گرایش مهندسی کنترل دریافت کرد.

زمینهٔ پژوهش‌های او پیش‌بینی سری‌های زمانی، مدل‌های عاطفی و منطق فازی است. او در سال ۱۳۸۵ خورشیدی به عنوان چهره ماندگار شناخته شد. وی همچنین به عنوان او پدر علم رباتیک ایران شناخته می‌شود.

کارو لوکس در ۱۷ تیر ۱۳۸۹ درگذشت.

مرجع: ویکی پدیا

گزیده:
از شمار دو چشم یک تن کم
از شمار خرد هزاران بیش

بیست و یک قانون برنامه نویسی (برای خندیدن)

  • یوسف مهرداد بی‌بالان

As any experienced computer programmer knows, there are unwritten laws that govern software development. However there are no penalties for breaking these laws; rather, there is often a reward. Following are 21 Laws of Computer Programming:
1. Any given program, once deployed, is already obsolete.
2. It is easier to change the specification to fit the program than vice versa.
3. If a program is useful, it will have to be changed.
4. If a program is useless, it will have to be documented.
5. Only ten percent of the code in any given program will ever execute.
6. Software expands to consume all available resources.
7. Any non-trivial program contains at least one error.
8. The probability of a flawless demo is inversely proportional to the number of people watching, raised to the power of the amount of money involved.
9. Not until a program has been in production for at least six months will its most harmful error be discovered.
10. Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.
11. The effort required to correct an error increases exponentially with time.
12. Program complexity grows until it exceeds the capabilities of the programmer who must maintain it.
13. Any code of your own that you haven’t looked at in months might as well have been written by someone else.
14. Inside every small program is a large program struggling to get out.
15. The sooner you start coding a program, the longer it will take.
16. A carelessly planned project takes three times longer to complete than expected; a carefully planned project takes only twice as long.
17. Adding programmers to a late project makes it later.
18. A program is never less than 90% complete, and never more than 95% complete.
19. If you automate a mess, you get an automated mess.
20. Build a program that even a fool can use, and only a fool will want to use it.
21. Users truly don’t know what they want in a program until they use it.

Reference: 21 Laws of Computer Programming

Quote:
It’s better to wait for a productive programmer to become available than it is to wait for the first available programmer to become productive. Steve McConnell

Seven Principles of Software Testing

  • یوسف مهرداد بی‌بالان

While everyone knows the theoretical limitations of testing, in practice we devote considerable effort to this task, and would consider it foolish or downright dangerous to skip testing.
Other verification techniques, such as static analysis, model checking and proofs, have great potential, but it is unlikely they will ever fully remove the need for testing. In the meantime we need to understand the scope and limitations of tests, and perform them right.
The seven principles that follow emerged from experience of studying testing and developing automated testing tools (AutoTest, CDD) over the past few years.

Principle 1: Definition of software testing
To test a program is to try to make it fail.

Principle 2: Tests versus specs
Tests are no substitute for specifications. One can derive tests from specifications, not the other way around.

Principle 3: Regression testing
Any failed execution must yield a test case, to remain permanently part of the project’s test suite.

Principle 4: Applying oracles
Determining success or failure of tests must be an automatic process.

Principle 4 (variant): Contracts as oracles
Oracles should be part of the program text, in the form of contracts. Determining success or failure of tests should be an automatic process consisting of monitoring contract satisfaction during execution.

Principle 5: Manual and automatic
An effective testing process must include both manually and automatically produced test cases.

Principle 6: Empirical assessment of testing strategies
Evaluate any testing strategy, however attractive it may appear in principle, through objective assessment based on explicit criteria and a reproducible testing process.

Principle 7: Assessment criteria
The most important property of a testing strategy is the number of faults (or, if faults are not directly measurable, failures) it uncovers as a function of testing time.

Reference: Bertrand Meyer

Quote:
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler (Refactoring: Improving the Design of Existing Code)

دوره جديد

  • یوسف مهرداد بی‌بالان

به پیشنهاد آقای مهندس هادی تصميم گرفته‌ام تدريس دوره‌‌اي را در شركت فراتر از دانش شروع كنم.
اين دوره كه با عنوان “متدهاي چابك” (Agile Methods) برگزار خواهد شد به كاربرد و وجه تمايز اين دسته از متدها اختصاص خواهد داشت.
اهداف كلي و مياني، چارچوب، منابع، مطالب اصلي سيلابس،كليات موردهاي مطالعاتي و ابزارها مشخص شده است.

گزيده:

A common problem in many organizations is that undisciplined “ad-hoc” teams often claim to be agile, because they’ve read an article or two about agile development, and interpret agility to mean any cool, liberated form of undocumented software creativity. These ad-hoc teams often run into trouble, and give actual agile teams a bad name.
Scott Ambler

کم لطفی به سماموس

  • یوسف مهرداد بی‌بالان

سایت «ورگ» در نقد کتاب «گیلان» درباره بی‌مهری نویسندگان این کتاب به قله سماموس مطلبی را به رشته تحریر در آورده است. مقدمه نويسنده را در اينجا آورده‌ام. ضمن تشكر از نویسنده، سركار خانم مروت و آقا نيما پيشنهاد مي‌كنم كه مطلب مذكور را مطالعه فرماييد. اگر فرصت نمی‌كنيد يا علاقه‌مند نيستيد، ديدن عكس‌ها خالي از لطف نيست.

«اما در جلد چهارم این کتاب که به تازگی چاپ شده، در بخش اول، که ‌خلاصه‌ای از سیمای طبیعی و جغرافیایی استان ارائه شده، در قسمت کوه‌های گیلان جای خالی اسم بزرگی چون کوه سماموس به چشم می‌خورد. بنابراین با توجه به اهمیت کوه سماموس به عنوان مرتفع‌ترین کوه گیلان و تاثیرات ژرفی که این کوه در معیشت و فرهنگ مردم منطقه شرق گیلان و غرب مازندران دارد و چون تاکنون مطلبی درباره جغرافیای سماموس در منابع گیلان‌شناسی و جراید آن انتشار نیافته، یادداشت ذیل را که در رابطه جغرافیای طبیعی این کوه می‌باشد ارائه می‌نماید.»

گزیده:
گيلان، گيلان، هميشه بهاره گيلان
گيلان، گيلان، مي‌ دل قراره گيلان

کتاب

  • یوسف مهرداد بی‌بالان

یکی از آرزوهای من، نوشتن تجربیات و آموخته هایم در قالب کتاب بوده و هست. انگیزه این کار با نقدهای عزیزانم در دوره ها که از نبود جزوه ای برای دوره گله مندند، بیشتر و بیشتر گردیده است.
حدود یک سال پیش با دو تن از دوستانم آقایان مهندس ایراف و شهبازیان و به پیشنهاد آنها نوشتن کتابی را شروع کردیم. با توجه به مراحل توسعه سیستمهای نرم افزاری ناگزیر از نیازمندی ها نرم افزاری شروع کردیم. تجربه بسیار آموزنده ای برایم بوده است. کاری که فکر می کردم بسیار ساده باشد، روز به روز به دشواری هایش افزوده می گردد.
اکنون پس از این مدت طولانی، دشوارترین بخش آن یعنی نوشتن بخش «نمونه پروژه» شروع شده است. عناوین بخشها و فصلها را در زیر آورده ام. خوشحال می شوم که نظرات و راهنمایی های خود را برایم ارسال فرمایید از جمله انتظارات خواننده.
بخش اول: مقدمه
فصل 1: اهميت نيازمنديها
فصل 2: تعريف نیازمندیها
بخش دوم: تحليل مسأله
فصل 3: تحليل مساله چیست
فصل 4: چالشهاي استخراج نيازمنديها
فصل 5: تكنيكهاي استخراج نيازمندي ها
فصل 6: قواعد كسب و كار
بخش 3: تعريف سيستم
فصل 7: موردهای كاربرد
فصل 8: روش تدوين مورد كاربرد
فصل 9: توصیف نيازمندي‌هاي تكميلي
بخش 4: نمونه پروژه

بخش 5: پیوست ها
پیوست 1: اشتباهات رایج
پیوست 2: چك ‌ليستها
پيوست 3: چکیده UML
پيوست 4: قالب مستندات
گزیده:
همیشه از خوبی‌های آدم‌ها برای خودت دیواری بساز. هر وقت در حق تو بدی کردند، فقط یک آجر از دیوار بردار! بی‌انصافیست اگر دیوار را خراب کنی.

برای خروج از جستجو کلید ESC را بفشارید