تبليغاتX
سماموس
 
  صفحه اصلی |  تماس با نویسنده  

 معماری سازمانی سرویس گرا (SOEA)

شنبه سی و یکم شهریور 1386
آقای مهندس طاهری‏راد عزيز آدرس وبلاگی را که متعلق به آقای امیر رضا مهجوریان يکی از دانشجويان جناب آقای دکتر شمس است، برايم گذاشته بودند که مطالب جالبی در مورد SOA در خود دارد.
يادم رفته بود آن را در وبلاگ قرار دهم. از دوست خوبم آقای طاهری‏راد عزيز بسیار سپاسگذارم.
آدرس وبلاگ: معماری سازمانی سرویس گرا (SOEA)

گزیده: لغت نامه مهندسين در جلسات كارفرما
- تا چند دقيقه ديگر به اين موضوع مى رسيم. يعنى: فراموشش كنيد، الان به اندازه كافى مشكل داريم!
- ثابت شده كه .... يعنى: من فكر مى كنم كه .....!

  ساعت 20:50 به قلم مهرداد       

 The Limits of Software - Part IV - The Impact of Economics

پنجشنبه بیست و نهم شهریور 1386

Developing software costs money. Barry Boehm, in his classic work on software engineering economics, based upon 20 years of empirical evidence, concludes that the performance of a project can be predicted according to the following equation
Performance @ ComplexityProcess * Team * Tools 
Where
• Performance Effort or time
• Complexity Volume of human-generated code
• Process Maturity of process and notation
• Team  Skill set, experience, and motivation
• Tools  Software process automation

From this equation, we can observe that the complexity of a system can either be amplified by a bad process or dampened by a good process and that the nature of a team and its tools are relatively equal contributors to the performance of a project.
Developing software costs money, and so for any sustainable business activity, any investment in software development must provide a good return on that investment. Thus, we might dream up suspicious uses of software that have no or marginal economic value (such as selling dog food over the Internet), but to do so will ultimately end in economic collapse. Alternatively, we might dream up meaningful uses of software, and to the degree we can develop that software efficiently and use that software as a strategic weapon in our business, and to do so will yield business success.

گزیده: (لغت نامه مهندسين در جلسات كارفرما)
- بقيه نتايج در گزارش بعدى ارائه مى شود... يعنى: بقيه نتايج را تا فشار نياوريد نخواهيم داد!
- بعلت اهميت تئورى و عملى اين موضوع... يعنى: به علت علاقه من به اين موضوع!
- حالا ما آماده ايم صحبتهاى شما را بشنويم... يعنى: شما هر چه مى خواهيد صحبت كنيد كه البته تاثيرى در كارى كه ما انجام خواهيم داد ندارد!

  ساعت 19:30 به قلم مهرداد       

 The Limits of Software - Part III- The Problems of Functionality (Continue)

سه شنبه بیست و هفتم شهریور 1386

A further complication is the fact that, for industrial-strength software, there are typically a large number of stakeholders who shape the development process, most of whom are completely unimpressed by the underlying technology for technologies sake. These stakeholders will bring to the table a multitude of hidden and not-so-hidden economic, strategic, and political agendas that often warp the development process through the presence of competing concerns.

For software that matters, the requirements of a system will typically change during its development, not just because of reasons of technology churn or resilience, but also because the very existence of a software development project alters the rules of the problem.
Seeing early products such as design documents and prototypes and then using a system at each executable release are all forcing functions that lead users to better understand and articulate their real needs.

At the same time, this process helps developers master the problem domain, enabling them to ask better questions that illuminate the dark corners of a system’s desired behavior.

Because a large software system is a capital investment, we cannot afford to scrap an existing system every time its requirements change (or for that matter, to absorb considerable amounts fo scrap and rework).

Planned or not, large systems tend to evolve continuously over time, a condition that is often incorrectly labeled software maintenance. To be more precise, it is maintenance when we correct errors; it is evolution when we respond to changing requirements; it is preservation when we continue to use extraordinary means to keep an ancient and decaying piece of software in operation. Unfortunately, experience suggests that an inordinate percentage of software development resources are spent on software preservation.

گزیده:

Will you love me for the rest of my life?
No, I'll love you for the rest of mine.             - From Phenomenon

  ساعت 14:4 به قلم مهرداد       

 The Limits of Software - Part II- The Problems of Functionality

سه شنبه بیست و هفتم شهریور 1386

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"

  ساعت 13:56 به قلم مهرداد       

 The Limits of Software - Part I - The Problems of Design

یکشنبه بیست و پنجم شهریور 1386

The difficulty of design, therefore, lies in choosing which design and architectural patterns we should use to best balance the technical, economical, business, political, and emotional forces that swirl around every software-intensive system. To put it in terms of the laws of software, this general problem of design is probably NP-complete: there likely exists some absolutely optimal design for any given problem in context, but pragmatically, we have to settle for good enough. As we as an industry gain more experience with specific genres of problems, then we collectively begin to understand a set of design and architectural patterns that are good enough and that have proven themselves in practice for each particular domain. Thus, 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. However, designing a new version of a new kind of system with new kinds of forces is fundamentally hard, because we really don’t know the best way to break it into meaningful parts. The best we can do is to create a design based upon past experiences, plagiarize from parts that worked in similar kinds of situations, and iterate until we get it good enough.

Reference: The Limits of Software, Grady Booch, IBM Fellow, September 2004

گزيده:

“Let our advance worrying become advance thinking and planning.” -
Winston Churchill

  ساعت 12:23 به قلم مهرداد       

 چالشهای پيش رو در آموزش مهندسی نرم‏افزار

یکشنبه هجدهم شهریور 1386

Barry Boehm در سخنرانی‏ای با عنوان نگاهی به مهندسی نرم‏افزار در قرن بیستم و بیست و یکم، مطلبی با عنوان چالشهای پيش رو در آموزش مهندسی نرم‏افزار به نکات جالبی اشاره می‏کند.
- به روز نگهداشتن  مستمر و مداوم مطالب آموزشی
- پيش‏بينی جهت‏گیری‏های آینده و آماده‏سازی دانشجويان برای آن
- جداسازی اصول لاتغيير از تجربه‏ها و آموخته‏ها
- متناسب‏سازی پروژه‏های کوچک دانشجویی با نيازهای بزرگ و پيچيده صنعت
- انجام و یا مشارکت در انجام تحقيقات و  ارائه نتايج آنها در دوره‏های آموزشی
- کمک به دانشجويان برای آن که ياد بگيرند چگونه ياد بگيرند.
- آموزش مداوم‏ شاغلان صنعت

فکر می‏کنيد خلأ کداميک از نکات اشاره شده در آموزش فعلی مهندسی نرم‏افزار در کشورمان به چشم می‏خورد؟ منتظر پاسختان هستم (شايد بهتر باشد در اين مورد مباحثاتی داشته باشيم).

گزيده:

There are three types of people in this world: those who make things happen, those who watch things happen and those who wonder what happened.
- Mary Kay Ash

  ساعت 10:59 به قلم مهرداد       

 CMMI

جمعه شانزدهم شهریور 1386

از هفته ديگر دوره Rational Unified Process در شرکت فراتر از دانش شروع می‏شود. يکی از موضوعاتی که می‏خواهم تأکيد بيشتری روی آن داشته باشم، CMMI  است. اين امر بهانه‏ای شد تا در این مورد مطلبی بنويسم که در ادامه آمده است.

موضوع خيلی ساده است: «کيفيت سيستم يا محصول به شدت تحت تأثير فرآيندی است که برای توسعه و نگهداری آن به کار گرفته شده است». انستيتو مهندسی نرم¬افزار دانشگاه کارنگی ملون (CMU-SEI به اختصار SEI) طرح مدلهای بلوغ قابليتها را با اعتقاد به اين اصل شروع کرد.  نتيجه آن چندین مدل بلوغ قابليت بود که از سال 1991 به بعد تهيه شدند مانند
•  SW-CMM(Software Engineering CMM)
• Systems Engineering CMM (SE-CMM)
• People-CMM
نکته‏ی حائز اهميت آن است که پروژه‏ها تحت تأثير سه عامل (People, Process, Tools) هستند که SEI سعی کرد در حوزه‏های ديگر غير از فرآيند نيز مدلهايی ارائه دهد.
تنوع و تعدد مدلها (علاوه بر مدلهای CMM، مدلهای ديگری نيز در صنعت وجود داشت) باعث بروز مشکلاتی شد که طرح مدل بلوغ قابليتهای يکپارچه Capability Maturity Model Integrated  یا به اختصار CMMI، برای حل مشکل مذکور پيشنهاد و از سال 1997 شروع شد و اولين نسخه آن در سال 2000  انتشار پيدا کرد.
در حقيقت انگيزه SEI از توسعه CMMI ارائه مدل بلوغ قابليتی برای پوشش کارهای مرتبط با توسعه و نگهداری محصول و سرويس که شامل حوزه‏های زير بوده و قابليت گسترش به حوزه‏های جديد را نيز داشته باشد، بود.
- مهندسی سيستم(Systems engineering)
- مهندسی نرم‏افزار(Software engineering)
- توسعه محصول و فرآيند يکپارچه (Integrated product and process development)
- تأمين منابع (Supplier sourcing)
صرف نظر از اين که مدل ارائه شده از ديدگاه تخصصي چه ويژگی‏هايي دارد، چارچوبی را برای بهبود فرآيند توسعه و نگهداری محصول و سرويس در سازمانها ارائه می‏دهد. به عنوان مثال يکی از حوزه‏های فرآيندی که بايد برای بهبود سازمان در نظر گرفت مديريت پيکربندی (Configuration Management) است که مفيد است اگر تعريف آن را با هم مرور کنيم.
هدف:
هدف از مديريت پيکربندی، شناسايی، کنترل و مميزی محصولات کاری و نگهداری يکپارچگی آنها است.
از جمله محصولات کاری می‏توان به موارد زير اشاره کرد:
• طرحها (Plans)
• نيازمندی‏ها (Requirements)
• کدهای برنامه (Code)
• طراحی‏ها (Design)
برای روشن شدن کاربرد، اجازه بدهيد مثالی عرض کنم. فرض کنيد که قرار است نامه‏ای برای يکی از مشتريان ارسال شود. ابتدا نامه توسط کارشناس، تهيه، سپس توسط مدير عامل تأييد و سپس توسط مسئول دفتر مديريت، ويراستاری، ثبت و پرينت می‏گردد. واضح است که نامه بين مدير، کارشناس و مسئول دفترمديريت چندين بار جابه‏جا گرديده تا به نسخه نهايی تبديل گردد. از طرف ديگر پس از ارسال نبايد تغيير کند. آيا نسخه¬های بينابينی (نسخه‏هايی که بين مدير، کارشناس و مسئول دفتر جابه‏جا شده است)، بايد نگهداری گردد(شناسايی و تعيين اقلام پيکربندی). در صورتی که جواب مثبت است، چگونه اين کار را انجام دهيم؟ چه کسانی مسئول کار باشند؟ (فرآيند پيکربندی) چه کسانی حق دسترسی به نامه پس از ارسال يا نسخه‏های ميانی را داشته باشد (ضوابط فرآيند پيکربندی).
سئوال مهم‏تر اين است که آيا چارچوبی برای مشخص کردن نيازهای يک سازمان يا پروژه برای نگهداری اقلام تحت کنترل (اقلام پيکربندی) وجود دارد؟ آيا مرجعی بری کارهايی که بايد انجام دهيم تا اقلام پروژه تحت کنترل باشند، وجود دارد؟  يکی از جوابها و مراجع معتبر، CMMI و حوزه فرآيندی Configuration Management آن است.

توجه داشته باشيد کهCMMI  تنها يک مدل است و نه راهکار اجرایی. بلکه بايد متناسب با هر سازمان، پياده‏سازی و عملياتی گردد.
پرواضح است که بيان تمامی ابعاد و کاربردهای CMMI در اينجا ميسر نيست، لذا توصيه می‏شود برای اطلاعات به آدرس http://www.sei.cmu.edu/cmmi مراجعه نماييد.  

گزيده:
لغت نامه مهندسين در جلسات كارفرما
كاملا انجام شده يعنى: راجع به 10 درصد كار تنها برنامه ريزى شده !
تمام انتخاب اوليه به كنار گذاشته شد. يعنى: تنها فردى كه اين موضوع را مى فهميد از تيم خارج شده است!
روى چند انتخاب بطور همزمان در حال كار هستيم. يعنى: هنوز تصميم نگرفته ايم چه كنيم!

  ساعت 15:31 به قلم مهرداد       

 OMG SysML

پنجشنبه پانزدهم شهریور 1386

the OMG Systems Modeling Language (OMG SysML) is a general-purpose modeling language for systems engineering applications.SysML supports the specification, analysis, design, verification and validation of a broad range of complex systems. These systems may include hardware, software, information, processes, personnel, and facilities.
The origins of the SysML initiative can be traced to a strategic decision by the International Council on Systems Engineering’s (INCOSE) Model Driven Systems Design workgroup in January 2001 to customize the Unified Modeling Language (UML) for systems engineering applications.
Currently it is common practice for systems engineers to use a wide range of modeling languages, tools and techniques on large systems projects. In a manner similar to how UML unified the modeling languages used in the software industry, SysML is intended to unify the diverse modeling languages currently used by systems engineers.
SysML reuses a subset of UML 2.1 and provides additional extensions needed to address the requirements in the UML for System Engineering.

گزیده:

Do you know that place between being asleep and awake, where you still remember your dreams? Thats where I'll always love, that's where I'll always wait for you. 
- Tinkerbell (Hook)

  ساعت 19:9 به قلم مهرداد       

 التماس دعا

پنجشنبه پانزدهم شهریور 1386
باخبر شدم يکی از دوستان بسیار قدیمی به بيماری سختی مبتلا شده است و با آن دست و پنجه نرم می‏کند. متأسفانه اميد به بهبودی وی، بسيار کم است. از همه خوانندگان خواهش می‏کنم برای سلامتی این دوست عزیز، با اخلاق و با معلومات دعا کنند.

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

  ساعت 19:6 به قلم مهرداد       

 What makes software so hard

شنبه دهم شهریور 1386

ماهنامه The Rational Edge در شماره اخير خود مقاله‏ای با عنوان What makes software so hard دارد که به نکات جالبی اشاره کرده است.
هر چند اين موضوع در مراجع مختلف و از ديدگاههای مختلف بررسی شده است، اما مرور آن خالی از لطف نيست.
در اين مقاله به مقايسه مهندسی نرم‏افزار با ساير حوزه‏های رايج مهندسی پرداخته است.
بخش جمع‏بندی و نتيجه‏گيری مقاله را در زير آورده‏ام.

Software is hard for a number of fundamental reasons:
    * Software projects are design projects, not production projects.
    * Because software is pure mindware, software development is more of an art or craft than a science or engineering discipline, making the "doing" disciplines of software development difficult to perform, monitor, and measure. Productivity differences between individuals are huge.
    * Software lacks laws and first principles.
    * Software lacks a measurable standard unit of work.
    * Given software's flexibility, the "supporting" disciplines of software projects -- planning, estimation, prediction and observation -- are quite difficult.
    * Moore's law makes the foundations of software ever changing -- there's no "permanent" platform to build on.
Even though it might be tempting to consider software engineering as "just another engineering discipline," and thus jump to the conclusion that software can be developed using the same business, management, and engineering principles as traditional engineering, there are some unique characteristics that make software and software development not only special, but also more difficult to estimate and monitor than traditional engineering projects.
Software development, with its inherent characteristics, existing in a very dynamic world governed only by Moore's law, will remain more art than a science for a long time to come. We can only hope to tackle the problems in software development by acknowledging that software is different, and understanding the consequences of these differences.
Any attempts to regard software development as just another form of traditional engineering will generally not deliver the desired results. Only by having a good understanding of what makes software different, can we start addressing the unique issues associated with software development. Iterative development, modeling, requirements management, and early-and-often stakeholder involvement are among the techniques available to software teams who recognize this critical difference and are looking for a new way forward.

گزيده:
لغت نامه مهندسين در جلسات كارفرما
پروژه بدليل بعضى مشكلات ديده نشده، كمى از برنامه ريزى عقب است. يعنى: تاكنون روى پروژه ديگرى كار مى كرديم!
ما تصحيحاتى روى سيستم انجام داديم تا آن را ارتقا دهيم. يعنى: تمام طراحى ما اشتباه بوده و ما از اول شروع كرده ايم!

  ساعت 19:56 به قلم مهرداد       

 تشکر و قدردانی

پنجشنبه هشتم شهریور 1386
از همه دوستانی که لطف نموده و تولد سماموس را تبریک گفتند، صمیمانه تشکر و قدردانی می‏نمایم.
نيوشا، صبا، آقای علی نوبر، علی آقای عبدالهی ازگمی، آقای بهروز بختیاری، نرگس، علی آقای اعرابی، مهدی، آقای طاهری راد، خانم کراری، حامد، آقای مسعود علی‏اکبرزاده

گزیده:
آرزو داشتم روزي ناپلئون بناپارت شوم.ناپلئون را فردي با سينه و بازواني ستبر و عضلاني مجسم مي‏كردم كه شهرت و قدرتش نيرومند و عظيم است. بعد ها وقتي دريافتم كه او قامتي كوتاه و چاق داشته است به خود اميدوار شدم، چرا كه به آساني پذيرفتم كه تواناييهاي يك فرد به داشتن هيكل ورزيده، قد بلند و بازوي عضلاني نيست، بلكه تاثيري كه بر تاريخ به جاي مي گذارد اهميت دارد. هوندا

  ساعت 21:9 به قلم مهرداد