{"id":5209,"date":"2023-07-26T12:38:46","date_gmt":"2023-07-26T12:38:46","guid":{"rendered":"https:\/\/zebro.space\/?p=4936"},"modified":"2024-12-26T10:40:04","modified_gmt":"2024-12-26T10:40:04","slug":"5-principles-for-software-development-to-go-to-the-moon","status":"publish","type":"post","link":"https:\/\/zebro.tudelft.nl\/?p=5209","title":{"rendered":"5 Principles for Software Development to go to the Moon"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;Overview&#8221; _builder_version=&#8221;4.16&#8243; background_color=&#8221;#091744&#8243; background_image=&#8221;https:\/\/zebro.tudelft.nl\/wp-content\/uploads\/2019\/06\/gaming-02.png&#8221; background_position=&#8221;top_center&#8221; custom_padding=&#8221;43px|0px|54px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; box_shadow_style__hover=&#8221;none&#8221; box_shadow_style__hover_enabled=&#8221;none&#8221; box_shadow_color__hover=&#8221;rgba(0,0,0,0.3)&#8221; box_shadow_color__hover_enabled=&#8221;rgba(0,0,0,0.3)&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;5px|0px|0|0|false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text disabled_on=&#8221;on|off|off&#8221; _builder_version=&#8221;4.21.0&#8243; text_font=&#8221;Lato||||||||&#8221; text_text_color=&#8221;#9fa5d6&#8243; text_font_size=&#8221;18px&#8221; text_line_height=&#8221;2em&#8221; header_font=&#8221;||||||||&#8221; header_3_font=&#8221;|700||on|||||&#8221; header_3_font_size=&#8221;44px&#8221; header_3_letter_spacing=&#8221;3px&#8221; header_3_line_height=&#8221;1.2em&#8221; text_orientation=&#8221;center&#8221; background_layout=&#8221;dark&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;|0px||||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h3><span data-contrast=\"auto\" class=\"TextRun SCXW26324797 BCX0\"><span class=\"NormalTextRun SCXW26324797 BCX0\">5 <\/span><span class=\"NormalTextRun SCXW26324797 BCX0\">P<\/span><span class=\"NormalTextRun SCXW26324797 BCX0\">rinciples of <\/span><span class=\"NormalTextRun SCXW26324797 BCX0\">S<\/span><span class=\"NormalTextRun SCXW26324797 BCX0\">oftware <\/span><span class=\"NormalTextRun SCXW26324797 BCX0\">E<\/span><span class=\"NormalTextRun SCXW26324797 BCX0\">ngineering<\/span><\/span><span class=\"EOP SCXW26324797 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:259}\">\u00a0<\/span><br \/><span style=\"font-size: 18px; color: #9fa5d6; font-weight: 500;\">26 JULY 2023 | Sorana Stan<\/span><\/h3>\n<p>[\/et_pb_text][et_pb_text disabled_on=&#8221;off|on|on&#8221; _builder_version=&#8221;4.21.0&#8243; text_font=&#8221;Lato||||||||&#8221; text_text_color=&#8221;#9fa5d6&#8243; text_font_size=&#8221;18px&#8221; text_line_height=&#8221;2em&#8221; header_font=&#8221;||||||||&#8221; header_3_font=&#8221;|700||on|||||&#8221; header_3_font_size=&#8221;44px&#8221; header_3_letter_spacing=&#8221;3px&#8221; header_3_line_height=&#8221;1.2em&#8221; text_orientation=&#8221;center&#8221; background_layout=&#8221;dark&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;|0px||||&#8221; hover_enabled=&#8221;0&#8243; inline_fonts=&#8221;Lato&#8221; global_colors_info=&#8221;{}&#8221; locked=&#8221;off&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h1>5 Principles of Software Engineering<\/h1>\n<p>26 JULY 2023 | Sorana Stan<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.4&#8243; custom_padding=&#8221;27px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_image src=&#8221;https:\/\/zebro.tudelft.nl\/wp-content\/uploads\/2023\/07\/PA266737-scaled-1.jpeg&#8221; alt=&#8221;IGLUNA Lunar Zebro rover Switzerland&#8221; title_text=&#8221;zebros&#8221; align=&#8221;center&#8221; disabled_on=&#8221;off|off|off&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;76%&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;|0px||||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;-26px||-35px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_text][et_pb_text _builder_version=&#8221;4.17.4&#8243; text_font=&#8221;Lato||||||||&#8221; text_text_color=&#8221;#9fa5d6&#8243; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;2em&#8221; header_font=&#8221;||||||||&#8221; header_3_font=&#8221;||||||||&#8221; header_3_text_color=&#8221;#ffffff&#8221; background_layout=&#8221;dark&#8221; custom_margin=&#8221;27px||29px|||&#8221; custom_padding=&#8221;28px||8px|||&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2><b>1. Failure is Not an Option: Building fault-tolerant software <\/b><\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;2em&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>It is a lot of work to get something to the Moon and back. Therefore, the first crucial design principle is to construct a robust robot. The Zebro should be able to survive the harsh conditions of the lunar surface, including the extremely low temperatures, the moon dust, and the intense radiation.<\/p>\n<p>How can the team achieve this goal and what actions must be taken? The first step is to make sure the system has no central weak spot from the very beginning of the design process. This ensures that the rover will continue to function and relay data to Earth even if a single component fails.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2><b>2. Step by Step: Going Up the Testing Levels<br \/><\/b><\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;2em&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Testing is of great importance to ensure that every line of code is performing as expected. It is especially essential in a student project like Lunar Zebro, as learning is just as important as developing a fully functional rover.<\/p>\n<p>In Lunar Zebro, we use a technique known as a V-model to ensure thorough testing of all layers of complexity. This means that we start with low-level testing and go up to more complex tests as needed. While the software is being produced, it is subjected to a series of tests known as unit tests. Since it does not take much effort and provides a foundation for additional testing, this is done as frequently as possible. More complicated tests are conducted at higher tiers of the V-model. Integration tests are another name for these kinds of higher-tier tests. The software development team uses integration tests to verify the functionality of sensors like the radiation sensor. This is less common because it requires more effort; however, it can be worthwhile as it provides the team with the assurance that the entire system is operating as expected.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2><b>3. Good Documentation<br \/><\/b><\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;2em&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Software developers may not particularly enjoy writing documentation, and many outsiders may view such efforts as useless or unnecessary. In fact, the opposite is true. Good documentation is essential to guiding a team to a satisfying and productive outcome.<\/p>\n<p>In a big team, such as Lunar Zebro, it should be very clear to the team what direction they should take. This is especially important given the complexity of the system, which encompasses many different branches of engineering and many different teams with constantly rotating members. Since all information and choices are handed around in the form of documentation, project structure and organization are inextricably linked to documentation. Lack of documentation has the greatest impact on a team when people leave, and new students must take over the workload. When there is no record of earlier efforts, it is difficult to determine whether or not any mistakes were made, which can affect further developments of Zebro.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2><b>4. Scrum and Sprint<br \/><\/b><\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;2em&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Being organised in a big team is always a challenge! The scrum process allows us not only to share ideas with the team but also to detect issues and adapt to them during the project. The team works in sprints, which are time periods of one week to complete a certain feature or task.<\/p>\n<p>An adoption of Scrum is used within the Software department of Lunar Zebro to incrementally build software. Weekly Scrum meetings make sure that all students can<\/p>\n<p>show off any progress made, point out topics to be discussed, such as design choices, as well as inform if they are blocked by a third party (such as being in need of a hardware component).<\/p>\n<p>ALTEN, an international technology and IT consultancy company provided Scrum training as well as Test Driven Development (TDD) and Behavioral Driven Development (BDD) training which helps the team to stay up to date with the development tools and techniques out there.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2><b>5. Enjoying the Process and its Challenges<\/b><b><\/b><\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;2em&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span data-contrast=\"auto\" class=\"TextRun SCXW223138962 BCX0\"><span class=\"NormalTextRun CommentStart CommentHighlightPipeClicked CommentHighlightClicked SCXW223138962 BCX0\">So far, we have only talked about challenges and how we overcome them, but what about having fun?<\/span><span class=\"NormalTextRun CommentHighlightPipeClicked SCXW223138962 BCX0\"> In a team composed primarily of students<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> who are doing the work voluntarily,<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> having the opportunity to get hands<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">&#8211;<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">on experience while also enjoying what you<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> are<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> doing is <\/span><span class=\"NormalTextRun CommentStart CommentHighlightPipeRest CommentHighlightRest SCXW223138962 BCX0\">necessary<\/span><span class=\"NormalTextRun CommentHighlightPipeRest SCXW223138962 BCX0\">. <\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">The team puts a lot of effort <\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">into<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> the project every day, and we are always happy to learn that the <\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">excit<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">ement translates to<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> some of<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> our partners<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">, such as A<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">rjan <\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">Smit<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> from <\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">ALTEN<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\">:<\/span><span class=\"NormalTextRun SCXW223138962 BCX0\"> <\/span><span class=\"NormalTextRun CommentStart CommentHighlightPipeRest CommentHighlightRest SCXW223138962 BCX0\">&#8220;<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW223138962 BCX0\">As an <\/span><span class=\"NormalTextRun CommentHighlightRest SCXW223138962 BCX0\">ALTEN<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW223138962 BCX0\"> consultant, I get a lot of energy <\/span><span class=\"NormalTextRun CommentHighlightRest SCXW223138962 BCX0\">from<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW223138962 BCX0\"> sharing my experience and knowledge with the students and team members.<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW223138962 BCX0\"> The project members don&#8217;t just tap into the experience but also challenge ideas and proposals making it also for a seasoned engineer a learning experience and very interesting.<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW223138962 BCX0\">&#8220;<\/span><\/span><span class=\"EOP CommentHighlightPipeRest SCXW223138962 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/zebro.tudelft.nl\/wp-content\/uploads\/2023\/07\/DSC_1892-scaled-1.jpg&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Lato||||||||&#8221; text_font_size=&#8221;16px&#8221; text_line_height=&#8221;2em&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span data-contrast=\"none\">In conclusion, building fault-tolerant software in Lunar Zebro is a complex task that requires robust design, thorough testing, good documentation, and effective organizational practices. By embracing these principles, our team of enthusiastic students makes progress every day while also having fun and enjoying the process and its challenges!<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Through CHILL-ICE (Construction of a Habitat Inside a Lunar-Analogue Lava-tube) Analogue Astronaut Mission 2021, we have gone to the Moon and back!<\/p>\n","protected":false},"author":6,"featured_media":4283,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"2880","footnotes":""},"categories":[2],"tags":[],"class_list":["post-5209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=\/wp\/v2\/posts\/5209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5209"}],"version-history":[{"count":1,"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=\/wp\/v2\/posts\/5209\/revisions"}],"predecessor-version":[{"id":5258,"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=\/wp\/v2\/posts\/5209\/revisions\/5258"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=\/wp\/v2\/media\/4283"}],"wp:attachment":[{"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zebro.tudelft.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}