SlideShare a Scribd company logo
1 of 26
Confidential
Software Right
Right Software
Oleksandr Ivanov Lead Software Engineer
November, 2018
Doing the
Doing the
vs
Confidential
Intro
Confidential
Architecture - I
I2CPIO SPI USB
HAL
DRV
BL
I2CPIO SPI USB
Embedded
Software
Confidential
Architecture - II
PIO
LCD
PWM
LAN
ADC
SPI
I2C
timer
DAC
DMA
USB
PIO
DMA
I2Stimer
DMA
Confidential
Mechanics
Confidential
Mechanics - I
l1l2
F1
F2
Confidential
Mechanics - II
m2
m3
m4
m5
m7
m8
m9
m10
m11
m13
m12
m14
m15
m16m1
m6
Confidential
Mechanics - III
m2
m3
m4
m5
m7
m8
m9
m10
m11
m13
m12
m14
m15
m16m1
m6
Confidential
Software
Confidential
Software - I
Software knot
l1l2
F1
F2
U2 U3
U1
InOut
In
dependsdepends
Mechanical knot
Confidential
Software - II
m2
m3
m4
m5
m7
m8
m9
m10
m11
m13
m12
m14
m15
m16m1
m6
Confidential
Software - II
m2
m3
m4
m5
m7
m8
m9
m10
m11
m13
m12
m14
m15
m16m1
m6
U1
U2 U3
U7U6U5U4
U8 U9
U1
0
U1
1
U1
2
U1
3
U1
4
U1
5
Confidential
Software - II
PIO
LCD
PWM
LAN
ADC
SPI
I2C
timer
DAC
DMA
USB
PIO
DMA
I2Stimer
DMA
U1
U2 U3
U7U6U5U4
U8 U9
U1
0
U1
1
U1
2
U1
3
U1
4
U1
5
Confidential
Software - III
PIO
LCD
PWM
LAN
ADC
SPI
I2C
timer
DAC
DMA
USB
PIO
DMA
I2Stimer
DMA
U1
U2 U3
U7U6U5U4
U8 U9
U1
0
U1
1
U1
2
U1
3
U1
4
U1
5
Confidential
Verification
Confidential
Simple Unit
Software unit Mechanical unit
Confidential
Verification
Software unit Mechanical unit
?
Confidential
Verification
Confidential
Integration Patterns
Confidential
Units
Software unit Lego® unit
Confidential
Patterns - I
I-pattern relations I-pattern call directions
Confidential
Patterns - A
A-pattern relations A-pattern call directions
Confidential
Patterns - Y
Y-pattern relations Y-pattern call directions
Confidential
Patterns – U and M
U-pattern M-pattern
Confidential
Q&A
Confidential
Thank You
Oleksandr Ivanov Lead Software Engineer
November, 2018

More Related Content

Similar to Doing the Software Right vs. Doing the Right Software

Standalone_USB_Transfer_Device_ijariie2074.pdf
Standalone_USB_Transfer_Device_ijariie2074.pdfStandalone_USB_Transfer_Device_ijariie2074.pdf
Standalone_USB_Transfer_Device_ijariie2074.pdf
Shashank Jadhav
 
NXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdf
NXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdfNXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdf
NXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdf
ssuser57b3e5
 
Rockwell Automation (Alleb-Bradley Products )
Rockwell Automation (Alleb-Bradley Products )Rockwell Automation (Alleb-Bradley Products )
Rockwell Automation (Alleb-Bradley Products )
VIVEK YADAV
 
Combining safety and conventional interfaces for interlock PLCs v1 IPZ
Combining safety and conventional interfaces for interlock PLCs v1 IPZCombining safety and conventional interfaces for interlock PLCs v1 IPZ
Combining safety and conventional interfaces for interlock PLCs v1 IPZ
Riccardo Pedica
 
Tutorial dec0604(print24) Programming a PIC
Tutorial dec0604(print24) Programming a PICTutorial dec0604(print24) Programming a PIC
Tutorial dec0604(print24) Programming a PIC
Muhammad Khan
 

Similar to Doing the Software Right vs. Doing the Right Software (20)

Standalone_USB_Transfer_Device_ijariie2074.pdf
Standalone_USB_Transfer_Device_ijariie2074.pdfStandalone_USB_Transfer_Device_ijariie2074.pdf
Standalone_USB_Transfer_Device_ijariie2074.pdf
 
Advanced view pic microcontroller projects list pic microcontroller
Advanced view pic microcontroller projects list   pic microcontrollerAdvanced view pic microcontroller projects list   pic microcontroller
Advanced view pic microcontroller projects list pic microcontroller
 
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdfAdvanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
 
IRJET- Survey on Nodemcu and Raspberry Pi: IoT
IRJET- Survey on Nodemcu and Raspberry Pi: IoTIRJET- Survey on Nodemcu and Raspberry Pi: IoT
IRJET- Survey on Nodemcu and Raspberry Pi: IoT
 
Pic18f4550 microcontroller based projects _ PIC Microcontroller.pdf
Pic18f4550 microcontroller based projects _ PIC Microcontroller.pdfPic18f4550 microcontroller based projects _ PIC Microcontroller.pdf
Pic18f4550 microcontroller based projects _ PIC Microcontroller.pdf
 
Cisco Learning Report
Cisco Learning ReportCisco Learning Report
Cisco Learning Report
 
Visit report hannover messe 2017 eric lo 20170505
Visit report   hannover messe 2017 eric lo 20170505Visit report   hannover messe 2017 eric lo 20170505
Visit report hannover messe 2017 eric lo 20170505
 
NXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdf
NXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdfNXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdf
NXP'S-PORTFOLIO-FOR-ADDRESSING-IOT-SECURITY.pdf
 
Pic16f877a microcontroller based projects list _ PIC Microcontroller.pdf
Pic16f877a microcontroller based projects list _ PIC Microcontroller.pdfPic16f877a microcontroller based projects list _ PIC Microcontroller.pdf
Pic16f877a microcontroller based projects list _ PIC Microcontroller.pdf
 
Rockwell Automation (Alleb-Bradley Products )
Rockwell Automation (Alleb-Bradley Products )Rockwell Automation (Alleb-Bradley Products )
Rockwell Automation (Alleb-Bradley Products )
 
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdfAdvanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
 
Combining safety and conventional interfaces for interlock PLCs v1 IPZ
Combining safety and conventional interfaces for interlock PLCs v1 IPZCombining safety and conventional interfaces for interlock PLCs v1 IPZ
Combining safety and conventional interfaces for interlock PLCs v1 IPZ
 
Fortinet Icon Library
Fortinet Icon LibraryFortinet Icon Library
Fortinet Icon Library
 
How Schneider Electric sees Ethernet in the Industrial Environment - Part II
How Schneider Electric sees Ethernet in the Industrial Environment - Part IIHow Schneider Electric sees Ethernet in the Industrial Environment - Part II
How Schneider Electric sees Ethernet in the Industrial Environment - Part II
 
Micron projectsportfolio 2017
Micron projectsportfolio 2017Micron projectsportfolio 2017
Micron projectsportfolio 2017
 
Office Automation System using Internet of Things
Office Automation System using Internet of ThingsOffice Automation System using Internet of Things
Office Automation System using Internet of Things
 
Live in the ATM Trenches
Live in the ATM TrenchesLive in the ATM Trenches
Live in the ATM Trenches
 
Tutorial dec0604(print24) Programming a PIC
Tutorial dec0604(print24) Programming a PICTutorial dec0604(print24) Programming a PIC
Tutorial dec0604(print24) Programming a PIC
 
Ae01 system overview
Ae01 system overviewAe01 system overview
Ae01 system overview
 
Pic16f877a microcontroller based projects list _ PIC Microcontroller.pdf
Pic16f877a microcontroller based projects list _ PIC Microcontroller.pdfPic16f877a microcontroller based projects list _ PIC Microcontroller.pdf
Pic16f877a microcontroller based projects list _ PIC Microcontroller.pdf
 

More from GlobalLogic Ukraine

GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Ukraine
 

More from GlobalLogic Ukraine (20)

GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
 
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
 
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptx
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic Education
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 

Doing the Software Right vs. Doing the Right Software

Editor's Notes

  1. О чем хотелось бы поговорить сегодня. Хотелось бы обратить Ваше внимание на ту часть программного обеспечения которую никто не видит. А именно на внутреннюю организацию или как мы часто говорим - архитектуру. Архитектура может быть удачной или не очень удачной, а может и вовсе отсутствовать. Сегодня я постараюсь провести некие аналогии с механикой, чтобы показать почему архитектуре все таки лучше быть. Ну и для того чтобы не оставлять вопрос открытым, я попробую показать несколько шаблонов, применяя которые Вы сможете немного улучшить внутренюю организацию Вашего ПО.
  2. К сожалению, очень часто встраиваемое ПО строится по принципу облачных технологий :) Я конечно же имею ввиду монолитный способ организации кода, когда нет четко выделенных модулей, все инклудят всех, “если нашел функцию - вызывай”. Люди чуть поопытнее, разделяют приложение на слои, ну хотя бы в документации и в структуре проекта на диске. При этом никто нет способа помечать разработчику вызвать функцию БЛ из ХАЛ добавив соответствующий заголовочный файл.
  3. В моем, возможно идеализированном, представлении архитектура встраиваемого ПО имеет примерно такой вид. Есть нижний слой модулей (ХАЛ) которые реализуют взаимодействие с периферией, выполняя каждый свою функцию. Есть более высокий слой (ДРВ), обеспечивающий координацию работы нижестоящих ХАЛ модулей. Есть бизнес логика, находящаяся так высоко, что до аппаратных средств просто не дотянуться. Напоминает ли что-то Вам эта диаграмма?
  4. Давайте отойдем немного в сторону и посмотрим как дела обстоят в механике.
  5. В механике есть несколько базовых компонентов или узлов. Вот один из них. Прелесть этого рычага в том, что зная длины плеч мы легко можем вычислить силы (или массы грузов) которые уравновесили бы его.
  6. Нет ничего сложного в построении целой системы рычагов подвешенных друг на друга. Пользуясь школьными знаниями физики и математики все массы грузов можно рассчитать.
  7. Но что будет если мы добавим еще одну связь? Вычисления станут несколько сложнее. А если таких связей много? Дело не в том что теперь расчет стал невозможным - он просто усложнился значительно.
  8. Вернемся к тому что мы умеем хорошо.
  9. В программном обеспечении так же есть “узлы” как и в механике. И они также состоят из простейших элементов. У нас это юниты (software units). Отсюда и берет свое название юнит тестирование. Целью юнит тестирования есть проверка каждого юнита (простейшего элемента) в отдельности. Не всего узла или модуля - а одного юнита.
  10. Пользуясь такой аналогией мы легко можем превратить нашу механическую систему в систему взаимодействующих между собой компонентов программы.
  11. Да… Масс в софте не бывает. Это конечно же периферийные модули наших микроконтроллеров.
  12. И точно так же как и в механике, дополнительные связи усложняют анализ программного обеспечения. При большом количестве дополнительных связей мы не можем идентифицировать список фич которые нужно протестировать после внесения изменений в один юнит. Так же мы сталкиваемся с целым рядом проблем при модификации кода для реализации нового функционала. Я думаю Всем вам эти трудности знакомы.
  13. Что еще мы можем взять из механики? Почему я задаю Вам и себе этот вопрос? Потому что, на мой взгляд, механика как отрасль - намного более зрелая, чем разработка ПО. Давайте посмотрим.
  14. Как мы уже сказали и в механике и в ПО есть простейшие элементы (детали машин, например, и юниты)
  15. Вы можете себе представить ситуацию, когда при производстве сложных механизмов, например автомобилей, изготовленные детали сразу бы шли на сборку без проверок и контроля качества? Вы бы ездили на таком авто? А мы (программисты) так делаем сплошь и рядом. У нас есть средство контроля качества - юнит тестирования. Но пользуемся мы им очень редко, особенно для встраиваемых приложений.
  16. Чем это плохо? У моего отца одно время был автомобиль Москвич. И он просто вынужден был проводить достаточное количество своего свободного времени за его ремонтом. Не потому что он это очень любил. А потому что контроль качества на производстве мог бы быть более строгим. Операционные системы на Ваших компьютерах обновляются каждый день не потому что Вас хотят бесплатно удивить новыми ощущениями от их использования и подарить вам незабываемый опыт. А потому что... На слайде моя субъективная оценка затрат на разработку ПО с одним и тем же функционалом при юнит тестировании перед интеграцией, после интеграции, и вообще без юнит тестирования.
  17. Чтобы немного снизить затраты на переделку и поддержку я предлагаю Вам использовать следующие паттерны интеграции юнитов. Это будет полезно даже если вы не пишете юнит тесты. Ну а если пишете - то Вы сами со временем придете к таким вариантам интеграции юнитов. По Другому просто не получится писать тесты. Если продолжать аналогию с механикой - то мы переходим к рассмотрению возможных соединений деталей. Оно может быть сварным, резьбовым, шпоночным, шлицевым .... ну я думаю нет смысла продолжать.
  18. Еще раз остановимся на детали или юните. В программировании на языке Си не стоит долго искать что же является юнитом - эта единица трансляции языка. То есть си-файл со включенными в него заголовочными файлами. И для того чтобы у юнит был независимой деталью нашей конструкции этот заголовочный файл должен быть один. Я немного путанно подвожу Вас к мысли, что юни имеет интерфейс - в хедере и реализацию в си-файле. У кубика Лего тоже есть интерфейс в виде верхних восьми возвышений и реализация в виде тела кирпичика. Чем не минимальная единица больших конструкций?
  19. Если положить два кубика Лего один на один - получится нечто похожее на букву I Так можно реализовать слои абстракции, может быть сетевую модель OSI
  20. Добавим еще один кубик и соединим со сдвигом - получим букву А Один подписчик - два сервиса
  21. Отзеркалим соединение - будет буква Y Два подписчика на один сервис.
  22. И пару рекомендаций как сохранить свои интерфейсы в чистоте если Вам нужны одни и те же типы данных или макросы в двух независимых юнитах. Эта история уже больше про организацию заголовочных файлов.