일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- machine learning
- C++
- Python
- condition
- BOJ
- docker
- Clone
- VUE
- git
- C#
- loop
- leetcode
- TypeScript
- nginx
- 앙상블
- npm
- AI
- webpack
- property
- vuetify
- 보안
- dotenv
- bash
- type
- vue.js
- JavaScript
- security
- scss
- generic
- var
- Today
- Total
목록Development/Software Architecture (4)
ice rabbit programming
OOP로 프로그래밍할 때에는 코드 작성 전에 클래스 모델링을 진행하는 편이 좋다. 학부생 때 다들 그려봤을 클래스 다이어그램을 이용할 수 있다. 클래스 다이어그램의 구성 요소는 아래와 같다. 클래스 : 자료 타입 그 자체를 나타냄 연관 관계 : 클래스 인스턴스 사이의 관계를 나타냄 속성 : 클래스와 그 인스턴스 내에서 발견되는 단순 자료 오퍼레이션 : 클래스와 그 인스턴스에 의해 수행될 함수 일반화 : 클래스를 상속 구조로 그루핑 첨언하자면 클래스와 인스턴스는 붕어빵 틀과 붕어빵의 관계인데, 여기서는 더 자세히 다루지는 않겠다. 클래스 다이어그램에서 클래스는 박스로 표현하며 그 안에 이름을 적는다. 그 아래에 속성과 타입을 적고, 그 아래에 오퍼레이션을 적는다. 예시로 보면 아래와 같다. 위 이미지에 더..
소프트웨어를 설계하고 구현할 때, 보통은 어떠한 서비스를 만들겠다는 목적을 가진다. 조직이라면 기획에서 요청이 올 수도 있고, 개인 프로젝트라도 방향성을 잡고 들어가기 마련이다. 이를 위해서 요구 사항을 문서화하고, 그걸 분석하고 설계하는 과정을 거친다. 요구 분석 과정 요구 분석 과정을 'what'에 관점을 두는 편이 좋다. 요약하면 아래와 같은 과정을 가진다. 도메인 분석 : 문제의 배경과 성격, 범위를 파악 요구 추출 : 사용자가 소프트웨어에 대하여 무엇이 필요한지 도출 분석 및 명세화 : 도출된 요구사항을 문서로 정리 검토 : 사용자가 요구하는 것인지 검토(수정이 필요한 경우 요구 추출로 되돌아감) 도메인 분석 도메인(Domain)은 보통 해당 분야의 비즈니스나 기술 등을 일컫는다. 개발자는 기술..
OOP(Object Oriented Programming), 객체지향 패러다임은 문제를 해결하기 위한 계산을 객체(object)를 기본으로 수행하는 방법이다. 아마 학부 수업을 듣다 보면 real world의 개념을 가져오는 설명을 많이 들었을 것이다. 객체지향 이전에 많이 쓰이던 절차지향 프로그램은, 무엇을 수행한다는 것에 초점을 맞추고 진행하기 때문에, main 함수에서 실행 트랜잭션, 그리고 각 기능들로 이어지는 flow가 이어진다. 반면에 객체지향은 클래스 간의 상속 및 관계, 클래스 내의 멤버변수/멤버함수를 통해 프로그램 구조가 이루어진다. 객체는 클래스의 인스턴스이고, 하나의 개체라고 보면 된다. 가장 많이 예를 드는 것이 붕어빵 틀이 클래스이고, 그 틀로 찍어낸 붕어빵이 객체이다. 조금 더 ..
21세기도 벌써 20%가 지난 현재, 프로그래머는 개발 스킬도 중요하지만 그 외적인 요소들도 무시할 수 없다. 형상 관리(Git), 빌드 및 배포(CI/CD), 설계 등 프로세스 전반에 대해 이해가 있어야 한다. 이 카테고리에서는 학부 시절에 듣지 못했던 소프트웨어 공학을 자료를 참고하며 혼자 정리해보려 한다. 소프트웨어 소프트웨어 공학에 앞서 소프트웨어란 무엇일까? 소프트웨어와 하드웨어의 경계가 모호하긴 하지만, 뭉뚱그려 다음과 같이 표현할 수 있겠다. - 프로그램과 프로그램의 개발, 운용, 보수에 필요한 관련 정보 일체 즉, 프로그램 이외의 정보도 중요하며, 점점 발달해가고 복잡해짐에 따라 설계가 중요하게 대두되었다. 설계가 취약하면 구조가 점점 악화되고, 결국 손쓸 수 없는 지경에 이르기 때문이다...