Кіріспе
Бағдарламалық шешімдерді жоспарлау процесі
Бағдарламалық жасақтаманы жобалау – бағдарламалық жүйені іске асыру немесе өзгерту алдында оның қалай жұмыс істейтінін ұғымдау процесі. Бағдарламалық жасақтаманы жобалау сонымен қатар жобалау процесінің тікелей нәтижесін – бағдарламалық жасақтаманың қалай жұмыс істейтіні туралы түсініктерді білдіреді, ол жобалау құжаттамасы мен құжатталмаған ұғымдардан тұрады. Бағдарламалық жасақтаманы жобалау әдетте нәтижедегі жүйеге қойылған мақсаттармен басқарылады және мәселелерді шешуді, жоспарлауды қамтиды, соның ішінде жоғары деңгейдегі бағдарламалық жасақтама архитектурасы және төмен деңгейдегі компоненттер мен алгоритмдерді жобалау. Суарнау әдісімен бағдарламалық жасақтаманы әзірлеу процесінде, бағдарламалық жасақтаманы жобалау – талаптарды нақтылаудан кейін және кодтаудан бұрын орындалатын шара.
high level software architecture and low level component and algorithm design. In terms of the waterfall development process, software design is the activity of following requirements specification and before coding.
Жалпы процесс
Жобалау процесі дизайнерге бағдарламалық жүйенің әртүрлі аспектілерін оның құрылымына дейін модельдеуге мүмкіндік береді. Шығармашылық, бұрынғы тәжірибе, "жақсы" бағдарламалық жүйенің қандай екенін түсіну және сапаға ұмтылу – бұл тиімді жобалаудың табысқа жету факторылары. Дегенмен, жобалау процесі әрқашан тікелей болмайды. Бағдарламалық жүйенің дизайнын үйдің архитектуралық жоспарымен салыстыруға болады. Жоғары деңгейдегі жоспарлар үйдің толық бейнесін көрсетеді (мысалы, үйдің үш өлшемді суреті). Төменгі деңгейдегі жоспарлар әрбір егжей-тегжейді салуға бағыттайды (мысалы, су құбырларының схемасы). Сол сияқты, бағдарламалық жүйе дизайны моделі ұсынылып отырған бағдарламалық шешімнің әртүрлі көріністерін ұсынады.
Құны
Бағдарламалық жасақтаманы жобалау құжаттамасы кодтау басталмас бұрын шектеулерді, ерекшеліктерді және тіпті талаптарды түзету үшін қарастырылуы немесе ұсынылуы мүмкін. Бағдарламаланған симуляция немесе прототипті қараудан кейін қайта жобалау жүзеге асуы да мүмкін. Жоспар немесе талаптарды талдаусыз, кодтау процесінде бағдарламалық жасақтаманы жобалауға болады, бірақ бұл күрделі жобалар үшін қиынға соғады. Кодтауға дейін жеке жобалау, салалық дизайнерлер мен сарапшылардың (СМЕ) бағдарламашылармен бірлесіп жұмыс істеуіне және пайдалы әрі техникалық тұрғыдан дұрыс бағдарлама жасауына мүмкіндік береді.
Талаптарды талдау
Бағдарламалық жасақтаманы жобалаудың бір құралы – бағдарламалық жасақтаманың талаптарын талдау (SRA). SRA – бағдарламалық жасақтаманы әзірлеу процесінің бір бөлігі болып табылады және бағдарламалық инженерияда қолданылатын техникалық талаптарды тізімдейді. Талдаудың нәтижесі – шешілуге тиіс кішігірім мәселелердің анықталуы. Ал жобалау, керісінше, мүмкіндіктерге бағытталған, сондықтан бір мәселеге қатысты бірнеше жобалау нұсқасы болуы мүмкін. Ортаға байланысты, жобалау көбінесе сенімді құрылымдар негізінде жасалады немесе тиімді жобалау үлгілерін пайдаланады, сондықтан әртүрлі болуы мүмкін.
Құрылыс қағидалары
Негізгі жобалау принциптері бағдарламалық жасақтама инженеріне жобалау процесін басқаруға мүмкіндік береді. Дэвис бағдарламалық жасақтаманы жобалау үшін принциптер жиынтығын ұсынады, олар төмендегі тізімде бейімделіп, кеңейтілген: Жобалау процесі «тоннельдік көруден» зардап шекпеуі керек. Жақсы дизайнер мәселенің талаптары мен жұмысты орындауға қолда бар ресурстарды ескере отырып, балама тәсілдерді қарастырып, оларды бағалауы тиіс. Жобалау талдау моделімен байланысты болуы керек. Жобалау моделінің бір элементі көбінесе бірнеше талапқа сәйкес келуі мүмкін болғандықтан, жобалау моделінің талаптарды қалай орындағанын қадағалау үшін құрал қажет. Жобалау дөңгелекті қайтадан ойлап табуға тиіс емес. Жүйелер жобалау үлгілерінің жиынтығын пайдалана отырып құрастырылады, олардың көпшілігі бұрыннан белгілі болуы мүмкін. Мұндай үлгілерді қайта ойлап табудың орнына әрқашан таңдау керек. Уақыт тар және ресурстар шектеулі; жобалау уақытын қажет болған жағдайда қолда бар үлгілерді біріктіру арқылы жаңа идеяларды іске асыруға жұмсау керек. Жобалау бағдарламалық жасақтама мен мәселенің арасындағы «интеллектуалдық қашықтықты» азайтуы керек, яғни нақты әлемдегідей. Бағдарламалық жасақтаманың құрылымы, мүмкіндігінше, мәселе доменінің құрылымын қайталай білуі керек. Жобалау біркелкілік пен интеграцияны көрсетуі керек. Жобалау толыққанды үйлесімді болып көрінсе, ол біркелкі деп есептеледі. Мұндай нәтижеге жету үшін жобалау тобы үшін стиль және формат ережелері жобалау жұмысы басталғанға дейін анықталуы керек. Жобалау интеграцияланған деп есептеледі, егер жобалау компоненттері арасындағы интерфейстерді анықтауға көңіл бөлінетін болса. Жобалау өзгеріске бейімделуге мүмкіндік беруі керек. Келесі бөлімде талқыланатын жобалау тұжырымдары осы принципті жүзеге асыруға мүмкіндік береді. Жобалау дұрыс емес деректер, оқиғалар немесе жұмыс жағдайлары кездескен кезде де жұмсақ түрде бұзылуы керек. Жақсы жобаланған бағдарламалық жасақтама «құлап» жармауы керек; ол ерекше жағдайларды ескеретіндей етіп жасалуы керек, ал өңдеуді тоқтату қажет болса, ол әдепті түрде тоқтауы керек. Жобалау – кодтау емес, кодтау – жобалау емес. Бағдарлама компоненттері үшін егжей-тегжейлі процедуралық жобалар жасалғанда да, жобалау моделінің абстракция деңгейі бастапқы кодтан жоғары болады. Кодтау деңгейіндегі жобалау шешімдері процедуралық жобалауды кодтауға мүмкіндік беретін шағын егжей-тегжейлерді ғана қарастыруы керек. Жобалау сапасы оны жасау кезінде, кейін емес, бағалануы керек. Дамыту процесіндегі сапаны бағалауға дизайнерге көмектесетін әртүрлі жобалау тұжырымдары мен өлшемдері бар. Жобалау концептуалды (семантикалық) қателерді азайту үшін қарастырылуы керек. Жобалауды қарау кезінде шағын нәрселерге тым көп көңіл бөліп, маңызды мәселелерді жіберіп алуға бейімділік бар. Жобалау тобы жобалау моделінің синтаксисі туралы уайымдамас бұрын жобалаудың негізгі концептуалды элементтеріне (жоюлар, түсініксіздік, сәйкессіздік) назар аударғандығын қамтамасыз етуі керек.
The design process should not suffer from "tunnel vision". A good designer should consider alternative approaches, judging each based on the requirements of the problem, the resources available to do the job. The design should be traceable to the analysis model. Because a single element of the design model can often be traced back to multiple requirements, it is necessary to have a means for tracking how requirements have been satisfied by the design model. The design should not reinvent the wheel. Systems are constructed using a set of design patterns, many of which have likely been encountered before. These patterns should always be chosen as an alternative to reinvention. Time is short and resources are limited; design time should be invested in representing (truly new) ideas by integrating patterns that already exist (when applicable). The design should "minimize the intellectual distance" between the software and the problem as it exists in the real world. That is, the structure of the software design should, whenever possible, mimic the structure of the problem domain. The design should exhibit uniformity and integration. A design is uniform if it appears fully coherent. In order to achieve this outcome, rules of style and format should be defined for a design team before design work begins. A design is integrated if care is taken in defining interfaces between design components. The design should be structured to accommodate change. The design concepts discussed in the next section enable a design to achieve this principle. The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered. Well designed software should never "bomb"; it should be designed to accommodate unusual circumstances, and if it must terminate processing, it should do so in a graceful manner. Design is not coding, coding is not design. Even when detailed procedural designs are created for program components, the level of abstraction of the design model is higher than the source code. The only design decisions made at the coding level should address the small implementation details that enable the procedural design to be coded. The design should be assessed for quality as it is being created, not after the fact. A variety of design concepts and design measures are available to assist the designer in assessing quality throughout the development process. The design should be reviewed to minimize conceptual (semantic) errors. There is sometimes a tendency to focus on minutiae when the design is reviewed, missing the forest for the trees. A design team should ensure that major conceptual elements of the design (omissions, ambiguity, inconsistency) have been addressed before worrying about the syntax of the design model.
Құрылыс тұжырымдамалары
Дизайн тұжырымдамалары дизайнерге күрделі әдістерді қолдануға негіз береді. Дизайн тұжырымдамаларының жиынтығы қалыптасты, оның ішінде:
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Абстракция – Бұл белгілі бір мақсат үшін маңызды ақпаратты ғана сақтап қалу үшін, түсінік немесе байқалатын құбылыстың ақпараттық мазмұнын азайту арқылы жалпылау процесі немесе нәтижесі. Бұл маңызды ерекшеліктерді, бірақ олардың толық мазмұнын немесе түсіндірмелерін бермей көрсету.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Нақтылау – Бұл дамыту процесі. Иерархия бағдарламалау тілінің операторларына (statement) жеткенше функцияның макроскопиялық сипаттамасын кезең-кезеңімен бөлу арқылы құрылады. Әр кезеңде берілген бағдарламаның бір немесе бірнеше операторы толыққанды операторларға жіктеледі. Абстракция және Нақтылау – бір-бірін толықтыратын ұғымдар.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Модульдік – Бағдарламалық архитектура модульдер деп аталатын компоненттерге бөлінеді.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Бағдарламалық архитектура – Бұл бағдарламаның жалпы құрылымы және осы құрылымның жүйе үшін тұжырымдамалық тұтастықты қамтамасыз ету жолдары. Сапалы бағдарламалық архитектура жобаның күтілетін нәтижесіне қатысты инвестицияны тиімді қайтаруға мүмкіндік береді, мысалы, өнімділік, сапа, кесте және құн тұрғысынан.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Басқару иерархиясы – Бағдарлама компонентінің ұйымдастырылуын көрсететін және басқару иерархиясын білдіретін бағдарлама құрылымы.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Құрылымдық бөлу – Бағдарлама құрылымын көлденең және тік бөлуге болады. Көлденең бөлулер әрбір негізгі бағдарлама функциясы үшін модульдік иерархияның жеке тармақтарын анықтайды. Тік бөлу басқару мен жұмыстың бағдарлама құрылымында жоғарыдан төменге қарай бөлінуі керек екенін көрсетеді.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Деректер құрылымы – Бұл деректердің жеке элементтері арасындағы логикалық қатынастың бейнеленуі.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Бағдарламалық процедура – Әрбір модульді жеке өңдеуге бағытталған.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Ақпаратты жасыру – Модульдердегі ақпаратқа мұқтаж болмаған басқа модульдердің қол жеткізе алмайтындай етіп, модульдер сипатталып, жобалануы керек.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Грейди Буч өзінің объектілік моделінде абстракцияны, инкапсуляцияны, модульдеуді және иерархияны бағдарламалық жасақтаманың негізгі принциптері ретінде атап көрсеткен. Осы төрт негізгі принциптерді білдіретін PHAME (Иерархия, Абстракция, Модульдеу және Инкапсуляциялау принциптері) аббревиатурасы кейде қолданылады.
Abstraction Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically to retain only information that is relevant for a particular purpose. It is an act of Representing essential features without including the background details or explanations. Refinement It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a step wise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts. Modularity Software architecture is divided into components called modules. Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. Good software architecture will yield a good return on investment with respect to the desired outcome of the project, e. g. in terms of performance, quality, schedule and cost. Control Hierarchy A program structure that represents the organization of a program component and implies a hierarchy of control. Structural Partitioning The program structure can be divided horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the program structure. Data Structure It is a representation of the logical relationship among individual elements of data. Software Procedure It focuses on the processing of each module individually. Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. In his object model, Grady Booch mentions Abstraction, Encapsulation, Modularisation, and Hierarchy as fundamental software design principles. The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.
Құрылыс мәселесі
Бағдарламалық жасақтаманы жобалауда көптеген аспектілерді қарастыру қажет. Әрбір фактордың маңыздылығы бағдарламалық жасақтаманың құрылу мақсаты мен күтілетін нәтижелерге сай болуы керек. Осы аспектілердің кейбіреулері:
Үйлесімділік – Бағдарламалық жасақтама басқа өнімдермен өзара іс-қимыл үшін жасалған өнімдермен жұмыс істей алуы тиіс. Мысалы, бағдарламалық жасақтама өзінің бұрынғы нұсқасымен кері үйлесімді болуы мүмкін. Кеңейтілімділік – Бағдарламаның негізгі архитектурасын үлкен өзгерістерге ұшыратпай, жаңа мүмкіндіктерді қосуға болады. Модульділік – Нәтижесіндегі бағдарламалық жасақтама жақсы анықталған, тәуелсіз компоненттерден тұрады, бұл оны күтіп ұстауды жеңілдетеді. Компоненттерді біріктіріп, қажетті бағдарламалық жүйені құру алдында оқшауланып сынауға және іске асыруға болады. Бұл бағдарламалық қамтамасыз етуді әзірлеу жобасында жұмысты бөлуге мүмкіндік береді. Қатеге төзімділік – Бағдарлама компоненттердің істен шығуына төтеп беруге және олардан қалпына келуге қабілетті. Жөндеуге қолжетімділік – Ақауларды жою немесе функционалдық өзгерістерді оңай жүзеге асыру шамасы. Модульділік пен кеңейтілімділік жоғары жөндеуге қолжетімділіктің нәтижесі болуы мүмкін. Сенімділік (бағдарламалық қамтамасыз етудің беріктігі) – Бағдарлама белгілі жағдайларда белгілі бір уақыт аралығында қажетті функцияларды орындай алуы тиіс. Қайта пайдалану мүмкіндігі – Бұрыннан бар бағдарламалық жасақтаманың кейбір немесе барлық аспектілерін басқа жобаларда аз немесе мүлдем өзгеріссіз пайдалану мүмкіндігі. Беруділік – Бағдарлама стресстік жағдайларда жұмыс істей алуы немесе күтпеген немесе жарамсыз кірісті қабылдауға төтеп беруі керек. Мысалы, оны жадтың жетіспеуіне төзімділікпен жобалауға болады. Қауіпсіздік – Бағдарлама жауыздық әрекеттер мен ықпалдарға қарсы тұруға және олардан қорғануға қабілетті. Пайдаланушыға ыңғайлылық – Бағдарламалық жасақтаманың пайдаланушы интерфейсі оның мақсатты пайдаланушылары үшін қолдануға оңай болуы тиіс. Параметрлердің бастапқы мәндері көптеген пайдаланушылар үшін жақсы таңдау боладындай етіп таңдалуы керек. Өнімділік – Бағдарлама өз міндеттерін пайдаланушы үшін қанағаттанарлық уақыт ішінде орындауы керек және көп жадты қажет етпеуі тиіс. Портативтілік – Бағдарлама әртүрлі жағдайлар мен орталарда қолданылуы тиіс. Өлшемділік – Бағдарлама деректердің көлемі немесе қосымша мүмкіндіктер немесе пайдаланушылар санының артуына оңай бейімделуі керек.
Құрылыс үлгілері
Бағдарламалық жасақтаманы жобалаушы бұрын басқалар қарастырып, тіпті шешкен дизайнның кейбір аспектілерін анықтауы мүмкін. Қайта ортақ проблеманы шешу жолын сипаттайтын шаблон немесе үлгі – дизайн үлгісі деп аталады. Мұндай үлгілерді қайта қолдану бағдарламалық жасақтаманы әзірлеу жылдамдығын арттырады.
Құрылыс ретінде код
Бағдарламалық жасақтамаға қатысты "дизайн" терминін қолданудың қиындығы, кейбір жағдайларда бағдарламаның бастапқы коды – осы бағдарламаның өзінің дизайны болып табылады. Осыған орай, "бағдарламалық дизайн" – дизайнның дизайнын жасау дегенді білдіреді. Эдсгер В. Дикстра осы семантикалық деңгейлердің қабаттасуын компьютерлік бағдарламалаудың "радикалды жаңалығы" деп атады, ал Дональд Кнут TeX құрамындағы тәжірибесін бағдарламаны іске асырмастан бұрын жобалауға тырысудың нәтижесіздігін көрсету үшін пайдаланды.