책/시리즈

[개발 / 필독서 ] 소프트웨어 공학으로 보는 개발자 필독서 05 - Implementation

말차프라푸치노 2022. 2. 15. 11:48

4편을 못 봤다면

 

[개발 / 필독서 ] 소프트웨어 공학으로 보는 개발자 필독서 04

3편을 못 봤다면 [개발 / 필독서 ] 소프트웨어 공학으로 보는 개발자 필독서 03 2편을 못 봤다면 [개발 / 필독서 ] 소프트웨어 공학으로 보는 개발자 필독서 02 1편을 못봤다면 [개발 / 필독서 ] 소프

malchafrappuccino.tistory.com

 

지난 글에서 어떻게 코드를 짤지 디자인(=설계) 까지 맞췄다.

드디어 기다리고 기다리던 코딩의 시간이 왔다!

 

 

 

 

Implementation(구현)

코딩은 개발자의 역량에 따라 많이 갈린다.

잘하는 사람이 하면 시간도 적게 걸리고 완성도도 높다.

그에 반해 못하는 사람이 하면 오래걸릴 뿐더러 에러도 많이 발생한다.

경험이 중요하다!

 

구현에는 3가지 이슈가 있다.

  • 재사용 (Reuse)
  • 프로젝트 관리 (Configuration management)
  • 개발/실행 플랫폼 분리 (Host-target development)

 

 

 

1.1 재사용 (Reuse)

재사용은 4가지로 나눌 수 있다.

 

Object Level

가장 간단한 레벨로써 클래스가 단위이다.

프로그래밍 언어에서의 객체(Object) 재사용을 생각하면 된다.

 

Component Level

클래스를 모아서 일정 수준까지 모이면 컴포넌트라고 한다.

헤더파일을 생각해주면 된다. ex) string.h, math.h 등등

 

System Level

시스템 수준에서 가져오는 것으로 COTS 소프트웨어를 생각하면 된다.

COTS 는 Commercial-off-the-Shelf 로 돈을 내고 완성품을 구매/대여 하는 것이다.

유니티를 기반으로 게임을 만들기 위해 매달 돈을 내고 만드는 것을 생각하면 된다. 

 

Abstraction Level

디자인과 아키텍처처럼 어느 한 시스템/프로그래밍 언어에만 적용되는게 아닌 추상적인 단계의 재사용을 말한다.

ex) GOF의 디자인 패턴

 

 

 

1.2 프로젝트 관리 (Configuration Management)

깃헙을 통해 프로젝트 관리하는 것을 생각하면 된다.

 

Version management

컴포넌트 간에 다른 버전을 추적한다.

여러 명의 개발자들이 한 결과를 합친다. Merge

 

System Integration

개발자에 각 버전의 시스템에서 어떤 버전의 컴포넌트가 사용되었는지 알려준다.

 

Problem Tracking

사용자가 버그와 문제를 보고할 수 있다.

모든 개발자들이 누가 언제 버그를 고쳤는지 확인할 수 있다.

 

사실상 깃헙에서 하는 대부분의 것들이다.

그저 깃....

 

 

 

1.3 개발/실행 플랫폼 분리 (Host-target development)

개발하는 플랫폼(Host)와 실행하는 플랫폼(Target)이 다르다는 것을 생각하고 구현해야 된다는 것이다.

대부분의 소프트웨어는 컴퓨터를 통해 개발 하지만 사용되는 기계는 환경이 다르기 때문에 그것을 생각하고 구현을 해줘야 한다! 

 

 

 

 

 

2.  구현에 있어서 중요한 것

앞서 설명한 것들은 소프트웨어 공학이라는 학문을 위해 설명한 것이라 조금 딱딱하다.

조금 더 쉽게 생각해서 구현에서 중요한 것을 꼽으라면 코딩 실력과 협업 능력이라고 할 수 있다.

개발자는 코딩실력으로 모든 것을 보여준다고 해도 과언이 아니다.

코드를 잘 짠다는 것은 구체적으로 무엇일까?

 

프로그램의 완성도와 코드의 심플함이다.

프로그램의 완성도는 기능, 성능 등 을 보면 된다.

코드의 심플함은 왜 중요할까?

아무리 뛰어난 천재라해도 현대의 프로그램을 혼자서 만들고 관리할 수 는 없다.

구글, 페이스북과 같은 프로그램을 혼자서 만들고 관리할 수가 있을까??

전세계 구글 직원은 10만명이 넘는다.

즉 그룹을 만들어서 프로젝트를 진행하게 되고 다른 사람과 코드를 공유해야한다.

원하는 기능도 동작하고 성능이 아무리 좋아도 한 사람만 코드를 이해할 수 있다면 그 코드를 더 발전시킬 수 있을까?

에러라도 발생한다면 만든 사람만 고칠 수 있다. 만든 사람이 나가기라도 한다면?

코드의 심플함은 체계적으로 프로그래밍을 하고 협업을 하기 위한 초석이다.

 

 

 

 

 

 

3. 개발자 필독서

 

클린코드 - 로버트 C. 마틴   링크     내 후기 바로가기

깔끔한 코드 작성을 위한 바이블

변수, 함수, 주석 작성법 등 어떻게 하면 더 깨끗한(=가독성 좋은) 코드를 작성할 수 있는지 설명한다.

예시가 자바로 작성되었지만 어려운 내용을 다루지는 않기 때문에 다른 프로그래밍 언어를 조금이라도 한다면 이해할 수 있다.

단 뒷 부분에 나오는 동시성 관련된 내용을 조금 어렵다. (앞에만 읽고 뒤는 나중에 읽으면 된다)

 

 

심플 소프트웨어 - 맥스 카넷-알렉산더   링크     내 후기 바로가기

클린코드와 같은 맥락의 책

어떻게 하면 간단한 소프트웨어를 만드는 지에 대해 설명한다.

클린코드가 코드 한 줄 한 줄에 집중하는 반면 이 책은 디버깅, 리팩토링 등 좀 더 포괄적인 내용을 다룬다.

작가 개인의 경험을 녹아 있기에 좀 더 편하게 읽을 수 있다. 

 

개발자의 글쓰기 - 김철수   링크

이 책도 클린코드와 같은 맥락의 책이다.

다만 한국인이 작성한 책이라는데서 큰 의의가 있다.

알다시피 외국도서들이 번역되서 들어올 때 깔끔하지 못한게 많다.

요즘은 많이 나아졌지만 그래도 한국인이 작성하는 글이 한국인이에게 가장 잘 와닿는다.

클린코드, 심플 소프트웨어 보다 읽기 편하므로 가장 먼저 읽기에 좋은 것 같다.

 

미래를 바꾼 아홉가지 알고리즘 - 존 맥코믹   링크

사실 코딩을 하면 알고리즘을 빼놓을 수는 없다.

검색 엔진에서 어떻게 결과를 찾는지, 우리가 사용하는 암호는 어떤 방식으로 동작하는지 등 실생활에서 유용하면서 많이 쓰이는 기술들의 알고리즘을 설명한다.

 

 

 

다들 열공해서 좋은 개발자가 됩시다! 😁

 

 

 

다음편 보기

 

[개발 / 필독서 ] 소프트웨어 공학으로 보는 개발자 필독서 06

5편을 못 봤다면 [개발 / 필독서 ] 소프트웨어 공학으로 보는 개발자 필독서 05 4편을 못 봤다면 [개발 / 필독서 ] 소프트웨어 공학으로 보는 개발자 필독서 04 3편을 못 봤다면 [개발 / 필독서 ] 소프

malchafrappuccino.tistory.com