전공 수업 CS/Software Engineering
[소프트웨어 공학] 데브옵스(DevOps) | 데브옵스 엔지니어가 하는 일은?
데브옵스(DevOps) Development + Operations의 합성어 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 의미한다. 데브옵스 DevOps 엔지니어는 무슨 일을 할까? 소프트웨어를 만드는 조직에는 크게 프로그램을 구현하는 ’개발부서‘와 출시 후에 유지보수를 담당하는 ‘운영부서‘가 있다. 개발부서는 오류가 발생했을 때 버그를 수정하거나, 사용자들의 요구를 반영하여 빠르게 새로운 기능을 제공하고자 할 것이다. 하지만 운영부서는 이와 다르게 서비스의 안정성과 빠른 성능을 유지하는 데 집중한다. 따라서 개발부서는 잦은 업데이트를 통해 서비스를 개선하려고 한다면, 운영부서는 최대한 변화를 최소화하여 현재 잘 작동하고 있는 서비스의 안정성을 확보하는 ..
[소프트웨어 공학] 클린코드 & 시큐어 코딩
전문가들이 표현한 '클린코드' `한 가지를 제대로 한다.` `단순하고 직접적이다.` `특정 목적을 달성하는 방법은 하나만 제공한다.` `중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기 이 세가지가 비결` `코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하는 것` #클린코드란? 코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 함 즉, 가독성이 좋아야 한다. #가독성을 높인다는 것은? 다른 사람이 코드를 봐도, 자유롭게 수정이 가능하고 버그를 찾고 변경된 내용이 어떻게 상호작용하는지 이해하는 시간을 최소화 시키는 것... 클린코드를 만들기 위한 규칙이 있다. #1.네이밍(Naming) 변수, 클래스, 메소드에 의도가 분명한 이름을 사용한다. int elapse..
[소프트웨어 공학] 클린코드와 리팩토링
클린코드와 리팩토링은 의미만 보면 비슷하다고 느껴진다. 어떤 차이점이 있을지 생각해보자 #클린코드 클린코드란, 가독성이 높은 코드를 말한다. 가독성을 높이려면 다음과 같이 구현해야 한다. 네이밍이 잘 되어야 함 오류가 없어야 함 중복이 없어야 함 의존성을 최대한 줄여야 함 클래스 혹은 메소드가 한가지 일만 처리해야 함 얼마나 코드가 잘 읽히는 지, 코드가 지저분하지 않고 정리된 코드인지를 나타내는 것이 바로 '클린 코드' public int AAA(int a, int b){ return a+b; } public int BBB(int a, int b){ return a-b; } 두 가지 문제점이 있다. public int sum(int a, int b){ return a+b; } public int sub..
[소프트웨어 공학] 애자일(Agile)
#등장배경 초기 소프트웨어 개발 방법은 계획 중심의 프로세스였다. 마치 도시 계획으로 건축에서 사용하는 방법과 유사하며, 당시에는 이런 프로세스를 활용하는 프로젝트가 대부분이었다. #하지만 지금은? 90년대 이후, 소프트웨어 분야가 넓어지면서 소프트웨어 사용자들이 '일반 대중들'로 바뀌지 시작했다. 이제 모든 사람들이 소프트웨어 사용자들의 대상으로 되면서 트렌드가 급격하게 빨리 변화하는 시대가 도달했다. 이로써 비즈니스 사이클(제품 수명)이 짧아졌고, SW 개발의 불확실성이 높아지게 되었다. #새로운 개발 방법 등장 개발의 불확실성이 높아지면서, 옛날의 전통적 개발 방법 적용이 어려워졌고 사람들은 새로운 자신만의 SW 개발 방법을 구축해 사용하게 된다. 창의성이나 혁신은 계획에서 나오는 것이 아니라고 생..