Функционалдық дизайн: жабдық пен бағдарламалық жасақтаманы оңайлату жолы
Functional design
Функционалды дизайн: жабдықтар мен бағдарламалық құралдарды оңайлату, модульдердің біртұтас міндетін қамтамасыз ету. Тәуелсіздік, қарапайымдық, тиімділік!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Функционалдық дизайн – компьютерлік бағдарламалық қамтамасыз ету және, көбіректеп, 3D модельдер сияқты аппараттық және бағдарламалық құрылғылардың дизайнын жеңілдетуге қолданылатын парадигма. Функционалдық дизайн құрылғының әрбір модульдік бөлігінің тек бір ғана міндеті бар екенін және ол міндетті басқа бөліктерге ең аз мүмкін әсермен орындайтынын қамтамасыз етеді. Функционалдық дизайнмен жасалған модульдер әдетте төмен байланысқа ие болады.
Functional Design is a paradigm used to simplify the design of hardware and software devices such as computer software and, increasingly, 3D models. A functional design assures that each modular part of a device has only one responsibility and performs that responsibility with the minimum of side effects on other parts. Functionally designed modules tend to have low coupling.
Артықшылықтар
Іске асырудың артықшылығы - егер бағдарламалық модульдің бір ғана мақсаты болса, оны жобалау және іске асыру оңайырақ, демек, арзанырақ болады. Функционалдық тұрғыдан жобаланған бөліктері бар жүйелерді өзгерту оңай, себебі әрбір бөлік тек өзіне жүктелген міндетті орындайды. Жүйенің қызмет көрсету кезеңі, сәтті жүйенің өмірінің үштен астам бөлігін құрайтындықтан, бұл мүмкіндік өте маңызды артықшылық. Бұл жүйені түсінуді және құжаттауды да жеңілдетеді, оқыту процесін оңайлатады. Соның салдарынан функционалдық жүйенің пайдалану мерзімі ұзарады. Бағдарламалар жүйесінде функционалдық модульді қайта пайдалану ыңғайлы, өйткені ол жүйенің басқа бөліктерінде көрінетін қосымша әсерлерге (жанама әсерлерге) ие болу ықтималдығы төмен.
The advantage for implementation is that if a software module has a single purpose, it will be simpler, and therefore easier and less expensive, to design and implement. Systems with functionally designed parts are easier to modify because each part does only what it claims to do. Since maintenance is more than 3/4 of a successful system's life, this feature is a crucial advantage. It also makes the system easier to understand and document, which simplifies training. The result is that the practical lifetime of a functional system is longer. In a system of programs, a functional module will be easier to reuse because it is less likely to have side effects that appear in other parts of the system.
Техника
Функционалдық жобалауды қамтамасыз етудің стандартты тәсілі – модульдің сипаттамасын қарап шығу. Егер сипаттамада "және" немесе "немесе" сияқты сөздер қолданылса, онда жобаның бірнеше міндеті бар, демек, ол қосымша әсерлерге ұшырауы мүмкін. Функционалдық жобалауға қол жеткізу үшін міндеттерді бірнеше модульге бөлу керек.
The standard way to assure functional design is to review the description of a module. If the description includes conjunctions such as "and" or "or", then the design has more than one responsibility, and is therefore likely to have side effects. The responsibilities need to be divided into several modules in order to achieve a functional design.
Сын-пикирлер мен шектеулер
Әрбір компьютер жүйесінде функционалдық тұрғыдан таза бола алмайтын бөліктер болады, себебі олар CPU циклдарын немесе басқа ресурстарды түрлі модульдерге тарату үшін қажет. Мысалы, көптеген жүйелерде модульдерді іске қосатын "бастапқы орнату" бөлімі бар. Басқа белгілі мысалдар – үзіліс векторлық кестесі және негізгі цикл. Кейбір функциялардың мәні аралас болады. Мысалы, "көлікті гараждан жылжыту" функциясы "көлік орнын" өзгертудің қосымша әсеріне ие. Кейбір жағдайларда аралас мән үлкен топологиялық ағашқа немесе байланысты ұғымдардың графигіне дейін созылуы мүмкін. Мұндай ерекше жағдайларда, кейбір мамандар функционалдық дизайнды ұсынбайды. Оның орнына полиморфизм, мұрагерлік немесе процедуралық әдістерге басымдық беру ұсынылады.
Every computer system has parts that cannot be functionally pure because they exist to distribute CPU cycles or other resources to different modules. For example, most systems have an "initialization" section that starts up the modules. Other well known examples are the interrupt vector table and the main loop. Some functions inherently have mixed semantics. For example, a function "move the car from the garage" inherently has a side effect of changing the "car position". In some cases, the mixed semantics can extend over a large topological tree or graph of related concepts. In these unusual cases, functional design is not recommended by some authorities. Instead polymorphism, inheritance, or procedural methods may be preferred.
3D модельдеу мен симуляцияға қолданылады
Соңғы уақытта бірнеше бағдарламалық қамтамасыз ету компаниялары функционалдық дизайнды 3D модельдеу және симуляция үшін параметрлік ерекшеліктерге негізделген модельдеуші түсінігі ретінде енгізді. Олардың ойынша, бұл нақты әлемнің жобалау талаптарымен байланысты параметрлерге ие объектінің параметрлік моделі, мысалы, материалдың беріктігіне және симуляцияда оған түсетін күш мөлшеріне қарай диаметрін өзгертетін ось. Бұл механикалық және тіпті сәулеттік/құрылымдық жиналымдарды жобалау процесінде тиімділікке қол жеткізуге, сондай-ақ шекті элементтер талдауының нәтижелерін жеке объектілердің мінез-құлқымен тікелей байланыстыруға мүмкіндік береді деп күтілуде.
Recently several software companies have introduced functional design as a concept to describe a Parametric feature based modeler for 3D modeling and simulation. In this context, they mean a parametric model of an object where the parameters are tied to real world design criteria, such as an axle that will adjust its diameter based on the strength of the material and the amount of force being applied to it in the simulation. It is hoped that this will create efficiencies in the design process for mechanical and perhaps even architectural/structural assemblies by integrating the results of finite element analysis directly to the behavior of individual objects.