본문 바로가기
반응형

CS49

디자인 패턴 Preface 이번 장에선 복잡한 구조의 설계를 보다 쉽게 수행할 수 있도록 돕는 디자인 패턴에 대해 공부했다. 사전적 정의는 앞서 말한 것처럼 '보다 쉬운 설계를 위한 하나의 도구'라고 할 수 있지만, 이 도구가 과연 초보 개발자들에게도 유용할까? 나는 오히려 반대라고 생각한다. 만약 프로그래밍의 기초 단계만 알고 있는 초보 개발자들이 패턴을 사용하여 코딩을 하게 되면 수정하고 싶은 부분을 찾거나 원하는 출력물을 얻는 것이 오히려 복잡하게 느껴지지 않을까? 즉, 디자인 패턴을 유용하게 사용하기 위해선 어느 정도의 개발 지식과 코딩 실력이 필수적이며, 많은 경험을 필요로 한다고 생각한다. - 패턴 : 자주 발생되는 문제들을 해결하고자 할 때 일정하게 반복되는 솔루션 - 무아레 패턴(moire patter.. 2021. 6. 22.
자료 흐름 중심 설계와 데이터베이스 설계 Preface 이번 장에선 관계형 모델, 즉 관계형 테이블에 대해 공부했다. 그러나 아무리 생각해봐도 관계형 테이블을 사용하는 이유를 이해할 수 없었다. 내가 만약 실무자라면, 복잡한 관계형 테이블 대신 한눈에 들어오는 ER 모델을 선호할 것 같다는 생각이 들었다. 물론 ER 모델은 각 엔티티 타입의 세부 사항까지는 나타낼 수 없지만, 자료사전을 통해 필요한 부분의 내용을 발췌하여 사용할 수 있다. 또한, ER 모델 대신 클래스 다이어그램을 통해 세부 속성을 표현할 수도 있다. 특정 개념·도구의 사용 이유를 이해하기 위해선 다양한 시각(관점)에서의 정보가 필요한 것 같다. 1. 자료 흐름 중심 설계 - 구조적 분석의 결과를 구조적 설계로 옮기는 과정이다. - 자료 흐름 중심 설계(DFD : Data Fl.. 2021. 6. 21.
소프트웨어 설계 기법 Preface 이번 장은 프로그래밍 언어와 연관지어 이해해야 하는 개념이 생각보다 많았다. 운영체제와 자료구조, 프로그래밍 언어 등을 병행하지 않고 오로지 소프트웨어 공학만 공부하는 나에게 있어 관련 지식을 필요로 하는 개념들은 이해하기 쉽지 않았고 큰 스트레스로 다가왔다. 개발 지식을 독학하며 한 가지 느낀 점은 대학교에서 각 학기마다 전공 필수 교과목을 지정하여 수강하게 하는 이유가 있다는 것이다. 그렇기에 현재 상황에서 내가 내린 최선의 결론은 유튜브를 통해 프로그래밍 언어 공부를 병행하는 것이다. 소프트웨어 공학과 운영체제, 자료구조 공부를 마친 후 본격적으로 프로그래밍 언어를 학습할 계획이므로 체계적으로 시작하는 것이 아닌, 기본 틀을 잡는다는 생각으로 조금씩 접하다보면 이론 공부에 분명 도움이.. 2021. 6. 18.
유스케이스와 UML Preface 이번 장에선 각종 다이어그램을 통해 인터넷 쇼핑몰 사이트 구현 방법을 알아보았다. 실무에서 사용될 법한 예시들을 하나하나 자세히 살펴보며 공부하다보니 내가 실제로 하나의 웹사이트를 구축하고 있는 것 같다는 느낌이 들어 뿌듯했지만, 한 가지 의아한 부분이 있었다. 바로 '관리자의 온라인 입금 내역 확인' 부분이다. 해당 책에선 관리자가 직접 사용자의 주문에 따른 입금 내역을 확인한다고 서술되어 있다. 나 역시 직접 인터넷 쇼핑몰을 이용하며 결제를 완료한 후 일정 시간이 지나야 '입금 대기' 상태가 '결제 완료' 상태로 바뀌는 것을 확인한 경험이 있기 때문에 처음엔 대수롭지 않게 여겼다. 그러나 생각할수록 입금 내역 확인을 시스템이 아닌, 관리자가 직접 한다는 것을 이해할 수 없었다. 만약 복.. 2021. 6. 15.
객체지향 분석 기법 Preface 이번 주는 기말고사 기간이라 소프트웨어 공학 공부에 집중하지 못했다. 다음주 월요일 시험을 마지막으로 이번 학기가 종료됨에 따라 개발 공부에 박차를 가할 예정이다. 어제는 학습에 도움을 주는 친구와 함께 공부 및 블로그 업로딩의 방향성에 관한 이야기를 했다. 친구는 내가 지금껏 공부했던 내용들이 이후 더욱 정확한 정보로 대체될 수 있도록 항상 오픈 마인드를 유지해야 하며, 단지 기계적으로 내용을 암기하는 것이 아닌, '왜 그럴까?'라는 생각을 바탕으로 공부하는 자세가 필요하다고 거듭 충고했다. 개발 공부에 도전하기로 마음먹은 뒤, 처음으로 친구에게 이 이야기를 들었을 땐 "초등학교 입학 이후로 대학교 4학년을 바라보는 지금껏 줄곧 수능공부 식으로 공부했던 나에게 있어 'Why?'라는 질문을.. 2021. 6. 12.
정보 모델링 Preface 정보의 양이 경쟁력이던 시대는 이미 지났다. 지금은 올바른 정보를 추출하여 사용하는 능력, 즉 정보 변별력을 중요시하는 세상이다. 내가 1학년 때 호기심으로 들었던 한 공대 교양 수업의 교수님께서 하신 말씀이다. 당시에는 별 생각 없이 넘어갔었지만, 소프트웨어 공학을 배우며, 올바른 정보를 선택하여 사용하는 것이 특정 프로젝트에 얼마나 큰 영향을 미치는지 고민해 볼 수 있었다. 또한, 얼마 전 Q&A란에 엔티티에 관한 질문을 올렸었는데, 이번 장을 통해 엔티티의 정의와 대략적인 사용 방향을 알게 되었다. - 정보 모델 : 정보 데이터를 중심으로 시스템의 정적인 정보 구조를 나타냄 - 정보 모델링 : 엔티티(개체)들을 정의하고, 이들 사이의 연관성을 규명하는 것 - 정보(information.. 2021. 6. 5.
동적 모델링 Preface 이번 장은 이전의 내용들 보다 많은 시간이 소요됐다. 다양한 표들의 작성 방법을 익히고 각각의 차이점을 이해하는 것이 생각보다 어렵고 복잡했다. 항상 학습에 피드백을 주는 친구는 나의 하소연을 들은 후 pm을 계획하는 것이 아니라면 해당 개념 전체를 이해하려고 하기 보단 단순히 훑어보는 식으로 보는 것이 좋다고 말했다. 그러나 무슨 일이든 꼼꼼히 하고자 하는 성격 탓에 괜한 오기가 생겨 불필요한 스트레스를 받는 것 같다. 이번 일을 계기로 모든 일을 완벽히 처리하고자 하는 성격을 버리고 나에게 꼭 필요한 것들의 우선순위를 정하여 효율적이고 생산적으로 업무를 처리할 수 있는 사람으로 성장하고자 한다. 마지막으로 시간이 지나 간단한 웹사이트 혹은 어플리케이션을 구현할 수 있는 단계에 오른다면 .. 2021. 6. 3.
기능 모델링 Preface 시작은 미비하지만 끝은 창대하리라 소프트웨어 공학을 공부하다 보면, 소프트웨어 개발 과정이 생각보다 매우 체계적으로 정립되어 있다는 것을 느낄 수 있다. 각 단계의 상세한 설계부터 시작하여 그로부터 파생되는 세부적인 사항까지, 현재 나의 지식 수준으로 생각해 볼 만한 단계는 전부 기술되어 있다. 그러나 실무 현장에 있는 친구의 말을 들어보면, 언제나 예상치 못한 상황이 발생할 수 있으므로, 학문적 지식과 더불어 창의적 아이디어를 통한 문제 해결 능력을 겸비하는 것이 필요하다고 한다. 비록 지금은 기초 공사를 진행중인 단계이지만, 하루 빨리 개발자로서 실무 현장에 뛰어들어 친구의 말을 100% 이해할 수 있는 날이 오길... - 기능(프로세스) : 입력물을 받아 결과물을 내는 활동 - 구조적.. 2021. 6. 2.
요구사항 분석과 모델링 Preface 요구사항 분석의 중요성은 이전 장에서부터 꾸준히 언급되어 왔다. 그런데 이번 장을 공부하던 도중 불현듯 요구사항 분석 단계에서 칭하는 '고객'이란 누구를 의미하는 것인가에 대한 생각을 하게 되었다. 나는 불과 몇 시간 전까지만 해도 '고객'이란 당연히 일반적인 소프트웨어 사용자들을 일컫는 말이라고 생각했지만, 조금만 고민을 해보니 요구사항 분석 단계에서 사용되는 '고객'이란 단어는 일반 대중이 아닌, 발주자(스폰서)를 칭한다는 것을 알 수 있었다. 순간 '아차' 하는 생각이 들며 조금 더 깊이, 조금 더 신중히 생각해야겠다는 마음가짐을 다질 수 있었다. 추가로 '정보 모델'과 'ERM' 등 같은 장에서 언급되는 용어들끼리는 서로 연관성을 띄고 있어 한 가지 개념을 정확히 이해하면 추가적인 .. 2021. 5. 31.
프로젝트 계획 Preface 올바른 계획을 세우고 실천하는 것이 중요하다는 것은 이미 모두가 알고 있는 사실일 것이다. 나 또한 평소 계획적인 삶을 살고자 노력하는 편이다. 그렇다면 계획을 세우는 것이 중요한 이유는 무엇일까? 소프트웨어 공학에서 강조하듯 시간과 자원을 절약할 수도 있고, 뚜렷한 목표를 설정하여 성취 동기를 자극할 수도 있다. 이 외에도 계속 설명하자면 끝없는 이점을 나열할 수 있을 것이다. 우리 모두가 마음 속으로만 계획의 중요성을 되뇌는 것이 아닌, 가벼운 계획을 세우고 실천하는 것부터 시작함으로써 복잡한 세상을 조금이나마 간결하게 살아보는 것이 어떨까? - 계획은 프로젝트의 핵심 활동이다. - 프로젝트의 3대 제약 조건 ① 비용 ② 일정 ③ 품질(최근엔 '범위'로 대체시키기도 함) 1. 프로젝트 .. 2021. 5. 30.