티스토리 뷰

728x90
반응형

사내에서 사람들 간에 오가는 '말'과 '글'을 이해하기 위해서

내가 말한 용어의 뜻을 알고 말하기 위해서

 

기술 스택 지식 공유나, 문제해결 공유 가 아닌 '개발용어' 에 대한 포스팅을 작성하게 된 이유는

로마인이 되려면 로마어를 알아야 하듯이

개발자가 되려면 개발용어를 알아야하기 때문이고

뜻을 정확하게 아는 상태로 용어를 꺼내서 말하는 건지 아니면 모르는데 아는 척으로 말로 포장하는건지

되도록이면 '아는척'이 아닌, '진짜로 알고 말하는 사람'이 되고 싶어서 였습니다.

 

어제 EBS의 '당신의 문해력+' 를 시청하면서

글을 읽어서 이해했다는 착각이 빈번하고, 실제로는 글을 놓치기도 합니다.

용어를 몰라서 무슨말인지 몰라서 사전을 찾아보기도 했습니다;;;

이러한 제가 용어를 모르고, 이해했다는 착각을 경험했고

 

이전직장에서도 개발자들끼리의, 팀원들간의, 타팀과의 협업하면서 깨달은 한가지는

문해력이 정말 중요하다는 것을 깨달았습니다.

문해력의 부족으로 많이 고생을 했고, 모르는 개발용어에 익숙해지는데 시간이 걸렸습니다.

* 문해력: 글을 읽고 의미를 이해하는 능력

 

이러한 부족한 모습을 보완하기위해서

앞으로는 뜻을 알고 말하기로 모르면 사전이나 브라우저에 검색해서라도 알아가자는 마인드 를 갖기로 다짐했습니다.

 

1편의 내용은 '유지보수' 와 '리팩토링' 에 대해서 검색하고 참고해서 정리한 내용입니다.


> 소프트웨어 유지보수

'유지 보수' 라는 말에 대한 떠오르는 생각은 "버그 픽스", "버그를 찾아서 개선시키는 것" 입니다.

 

*유지보수

시스템을 항상 최상의 운전 상태로 유지하기 위한 각 장치의 시험, 조정, 수리, 복구 따위의 작업.

프로그램에 의하여 자동적으로 구성되는 경우와 유지보수자의 수작업으로 구성되는 경우가 있다.

*출처: 네이버 국어 사전

 

*유지

(명사) 어떤 상태나 상황을 그대로 보존하거나 변함없이 계속하여 지탱함.

*출처: 네이버 국어 사전

 

*보수

(보수5.1/명사) 보전하여 지킴

(보수5.2/명사) 새로운 것이나 변화를 적극적으로 받아들이기보다는 전통적인 것을 옹호하며 유지하려함.

(보수10/명사) 건물이나 시설 따위의 낡거나 부서진 것을 손보아 고침.

*출처: 네이버 국어 사전

 

사전으로 찾아보면서 '유지'와 '보수' 로 음절을 분리해서 뜻을 확인하고 생각해본 결과

'유지', '보수5' 의 관점에서 보면

기존 소프트웨어의 동작에 이상 없이 정상동작시키도록 유지하고

 

'보수10'의 관점에서 보면

레거시나 deprecated(서비스 미지원)된 낡은 부분, 동작에 불필요한 부분을 제거하는 것 

 

사전에서 서칭해본 결과, 이 둘의 뜻을 통합해서 보면

동작에 문제없이 유지시키도록 하되, 앞으로 사용하지 않는 기능이나 불필요한 부분을 제거하거나 개선하는 것  이라고 생각이 들었습니다.

 

웹사이트를 서핑해보면서 자료를 수집해서 정리하겠습니다.

참고자료들로 정리해본 결과 유지보수는 아래와 같이 표현 됩니다.

이미 구축되어진 시스템을 운영 및 관리하는 것 
소프트웨어를 직접 운용하며 잔존 버그등을 찾고 추가 개선사항을 도출 하는 것

 

유지보수의 목적은 사용자의 요구가 증가하거나 갑작스런 오류(용량, 메모리 문제) 발생 등을 대비하기 위해서 입니다.

 

유지보수(maintenance) 에는 수정/적응/향상/예방 보수로 총 4가지 종류가 있습니다.

수정보수(corrective maintenance)

소프트웨어 구축시 테스트 단계에 미처 발견하지 못한 잠재적인 오류를 찾아서 수정하는 유지보수입니다.

 

적응보수(adaptive maintenance)

운영체제, 하드웨어와 같은 프로그램 환경변화에 맞추기 위해서 수행하는 유지보수 입니다.

 

향상보수(perfective maintenance)

기존 기능과 다른 새로운 기능을 추가하거나 기존 기능을 개선하기 위한 유지보수입니다.

소프트웨어 확장 및 리모델링

유지보수 활동중 가장 자원이 많이 소모되는 활동입니다.

 

예방보수(preventive maintenance)

장래에 유지보수성 또는 신뢰성을 보장하기 위한 유지보수입니다.

소프트웨어의 잠재적인 오류발생에 대비하여 미리 예방수단을 강구해두는 유지보수입니다.

 

+ 외계인코드(alien code) : 개발된지 아주 오래되고 문서화가 되어있지 않아 유지보수가 어려운 프로그램 코드

 

[참고자료]

 

소프트웨어 유지보수 - IT위키

 

itwiki.kr

 

시스템 유지 보수 및 관리란?

시스템 유지 보수란?  : 이미 구축되어진 시스템을 운영 및 관리를 하는 것을 말합니다. 이미 구축된 시스템이라고 생각할 수도 있지만 사용자의 요구가 증가되거나 갑작스런 오류(용량, 메모리

livedata.tistory.com


> 코드 리팩토링 (Code Refactoring)

- 결과의 변경없이 코드내부구조를 바꾸고 개선하는 행동

'결과의 변경 없이 코드의 구조를 재조정함' 을 뜻합니다.

가독성을 높이고 유지보수를 편하게 합니다.

다만, 리팩토링은 버그를 없애거나 새로운 기능을 추가하는 행위는 아닙니다.

사용자가 보는 외부화면(결과)은 그대로 두면서, 내부논리나 구조(코드)를 바꾸고 개선하는 유지보수 행위 입니다.

 

- 리팩토링의 목적은 '수정하기 쉬운 코드' 입니다. 

- 수정하기 쉬운 코드는 '작은단위로 모듈화' 와 '가독성이 좋은 코드' 입니다.

설계가 나쁜 시스템은 수정하기가 어렵습니다.

제대로된 설계는 어렵지만, 잘못된 설계로 수정하는 것은 더욱 어렵기 때문입니다.

'최선의 코드'는 '수정하기 쉬워야' 합니다.

'수정하기 쉽다'는 것은 '모듈화가 잘되어 있다' 와 '코드를 읽고 이해하기 쉽다' 등 으로 여러가지 의미로 내포되어있습니다.

 

- 리팩토링은 수시로 해야합니다.

- 리팩터링을 해야되는 시점은 언제일까요?

코드베이스에 기능을 새로 추가하기 직전에 , 코드가 하는일을 파악 했을 때, 비효율적인 코드를 발견했을 때 리팩터링을 해야됩니다.

 

그러나 내부동작을 분석할 필요 없는 경우나

지저분한 코드를 만났지만, 그 코드가 내가 이해할 수 없는 코드라면 리팩터링을 하면 안됩니다.

 

- 코드에서의 악취는 무엇일까요?

기이한 이름(어떤 기능을 담당하는지를 이해하지 못하는 이름), 중복코드, 긴 함수, 긴 매개변수 목록 등

그 이외 여러가지 있지만, 자세한 내용은 밑의 [참고자료] 2번째 링크를 참고하시면 되겠습니다.

 

[참고자료]

 

리팩터링 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 리팩터링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애

ko.wikipedia.org

 

어떤 개발자의 '리팩터링' 스터디한 블로그 글인데 정말 길어서 나중에 참고할때 정말 유익합니다.

'리팩터링'이라는 개발자 필독 도서도 알게되고, 리팩터링 리뷰에 대한 긴 정리글을 내용 참고겸 확인할 수 있습니다.

 

리팩터링 리뷰

(백신 접종으로 글 쓸 시간을 얻었다. 얼른 써야지...) 9월부터 시작한 리팩터링 스터디를 끝냈다. 기존에 이런 책을 읽는 스터디는 많이 헀었는데, 항상 시간이 지나면 많이 잊혀지는게 아쉬웠다

velog.io


긴글을 읽어 주셔서 감사합니다.

용어에 대한 추가 설명이나 잘못된 부분이 있으면 코멘트로 남겨주시면 반영하도록 하겠습니다. 감사합니다 :)

728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함