15. Detailed Design
CS/소프트웨어 공학2024. 2. 3. 19:3815. Detailed Design

Detailed Design 앞에서 그린 Analysis 다이어그램만으로는 코드를 만들 수 없다. 그래서 아래의 것들이 있어야 코드로 표현할 수 있다. Types of attributes Operation signatures Assigning responsibilities as operations Additional classes to handle user interface 함수도 리턴 타입과 매개변수 타입을 정의해야한다. 이런 모든 것을 정하는게 Detailed Design이라고 한다. Class Specification : Atrributes 클래스의 Attribute를 표현할 때는 아래의 문법으로 표현한다. ▼ name ‘:’ type-expression ‘=’ initial-value ‘{’pro..

14. Sequence Diagram (작성중)
CS/소프트웨어 공학2024. 2. 3. 14:4314. Sequence Diagram (작성중)

이전에 작성한 글을 수정하여 다시 올릴 예정입니다. 그동안에는 아래의 글에 설명이 잘 되어있는것 같아 아래의 글을 읽는것을 추천드립니다. 사실 제거 굳이 안보고 아래거 보는게 나을 거 같네요. 정리가 되게 잘 되어있어서 공부할 때 참고하기 좋았습니다. [ETC.] 시퀀스 다이어그램 작성법 & 예제 총정리 시퀀스 다이어그램이란? 시퀀스 다이어그램은 UML 다이어그램의 한 종류로 시스템이나 객체들이 메세지를 주고받으며 상호 작용하는 과정을 표현하는 행위 다이어그램입니다. 현재 구축되어 있 coding-factory.tistory.com

13. Use Case Realization
CS/소프트웨어 공학2024. 1. 31. 15:3413. Use Case Realization

Use Case Realization Design 단계에서는 use case diagram그리는 것과 Step By Step Description을 만드는 작업까지 했다. 그러나 Use Case 만으로는 코드 만드는것을 할 수는 없다. 코드를 위한 최종 목표는 Class Diagram이며, 그 중에서 제일 중요한 것은 Public Function들이 정의되는 것이다. 이는 Communication Diagram을 통해 만들어지는 Design Class Diagram이 만들어지면 해결이 된다. 그런데 Use Case Diagram에서 바로 Class Diagram으로 바로 넘어갈 수 없다. Communication Diagram을 거쳐야 Class Diagram을 만들 수 있다. 커뮤니케이션 다이어그램까지..

12. Configuration and Version Management
CS/소프트웨어 공학2024. 1. 31. 15:1912. Configuration and Version Management

Configuration management (CM) 변하는 소프트웨어를 관리하는 모든 프로세스와 툴을 CM이라고 한다. 파일을 사람이 직접 복사하고 옮기고 하는 걸로는 전체를 관리하기 힘들기에 소프트웨어를 관리하는 소프트웨어를 통하여 전체를 관리한다. System building 다 모아서 하나의 통합된 시스템을 만드는 것을 말한다. 모든 컴포넌트를 모아서 최종적인 바이너리 코드가 나오면 된다. Change management 버그 제거와 같은 요청들을 추적하고 관리한다. Release management 외부에다가 출시하는 것을 말한다. 버전이 여러개 나오는데 그걸 다 출시 하진 않고, 그 중에서 무엇을 출시 할 지를 정한다. 아래의 과정 전체가 CM이다. ▼ Multi-version systems ..

11. 다형성(Polymorphism) 예제
CS/소프트웨어 공학2024. 1. 31. 01:5911. 다형성(Polymorphism) 예제

다형성(Polymorphism) 예제 Deer 클래스 Deer 클래스를 아래와 같이 정의해보자. ▼ class Deer { private: char name[10]; // 사슴 이름 int age; // 사슴 나이 double weight; // 사슴 무게 double height; // 사슴 키 public: Deer(const char* name, int age, double weight, double height, double antlersLength); // 생성자 char* getDeerName() const; // 사슴 이름 getter int getDeerAge() const; // 사슴 나이 getter double getDeerWeight() const; // 사슴 몸무게 getter d..

10. 객체 지향 프로그래밍 (Object-Orientation Programming)
CS/소프트웨어 공학2024. 1. 31. 01:5010. 객체 지향 프로그래밍 (Object-Orientation Programming)

객체 지향 프로그래밍 (Object-Orientation Programming) 지금까지 배운 객체지향 프로그래밍은 대체로 C++ 문법에 대한 내용, 그 중에서도 상속에 대한 C++ 문법이었다. C++ 뿐만 아니라 JAVA와 같은 대표적인 OOP 프로그래밍 문법들도 배웠을 것이다. 그러나 이번에는 문법을 배우는 것이 아니라, 실제 소프트웨어 개발에 어떻게 적용되는지를 배울 것이다. 소프트웨어를 개발하는 이상적인 방법 인터페이스 컴퓨터(하드웨어)를 생각해보자. 컴퓨터를 한 회사에서 처음부터 끝까지 다 만들지는 않는다. 삼성에서 만든 컴퓨터의 스펙을 보면 아래와 같지만, 이 모든 부품을 삼성에서 다 만든 것이 아니다. 다른 회사들이 만든걸 모아서 만든 것이다. 그런데 굉장히 신기하게도 각 부품들을 다 다른 ..

System Call
CS/운영체제2024. 1. 31. 00:07System Call

개요 System Call 이란? System Call은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 정말 간단하게 다시 말하자면, System Call은 커널에 접근하기 위한 수단 혹은 도구 이다. 그렇다면 우리는 커널에 왜 접근해야하는지를, 그리고 커널에 접근하는 수단과 도구가 따로 만들어진 이유를 알면 System Call에 대해 이해할 수 있다는 것이다. System Call이 필요한 이유 커널에 왜 접근해야할까? 우리가 일반적으로 쓰는 프로그램들은 OS, 시스템의 힘을 빌려서 만들어진다. 유저 레벨의 함수들로는 고차원적인 동작을 하는 프로그램을 만드는게 사실상 불가능하다. 그렇기에 커널(kernel)의 도움을 반드시 받아야 한다...

Operating System’s Structure
CS/운영체제2024. 1. 29. 23:33Operating System’s Structure

운영체제의 구조 운영체제의 구조는 아래의 부품들의 구조와 유사하다. 운영체제의 역할이 바로 이 하드웨어들을 다루는 것이기 때문이다. ▼ 그렇기에 각 하드웨어들의 입장에서 운영체제를 볼 수 있다. 각 하드웨어들의 입장에서 본 운영체제가 바로 운영체제가 하는 일이라고 볼 수 있다. CPU의 입장 CPU는 일을 처리하는 핵심 부품이다. 그렇다면 일을 어떤 순서로 처리해야 효율적이고 공평할까? 사회의 시선으로 보면 먼저 들어온 일 부터 처리하는게 공평하지만, 효율적이라고는 하기 힘들다. 은행업무를 예시로 보자. ▼ 사회의 관점에서는 먼저 온 사람부터 업무를 봐주는게 공평하고 당연한 처사다. 번호표를 뽑았으니까 말이다. 그런데 먼저 온 사람의 업무가 2시간이 걸린다면 그건 조금 낭패다. ▼ 뒤의 사람들은 기껏해야..

9. 요구사항 문서화
CS/소프트웨어 공학2024. 1. 29. 22:469. 요구사항 문서화

개요 요구사항과 관련해서 단순히 전부 적고 끝내는 것이 아니라, 어떤 요구 사항이 언제 들어왔고 사라졌는지에 관한 세부적인 내용도 관리를 해야한다. 기능 요구사항(Functional requirements)으로는 use case diagrams를, 모든 유형의 요구사항(All types of requirements)으로는 separate requirement lists를 작성하면 된다. 위의 두 작업까지 하면 specification이 끝나고 design을 할 차례가 된다. Use Case Diagram 그리기 Use Case Diagram을 처음 보면 상당히 복잡한 형태로 그려져 있다고 느껴진다. 마치 시스템이 내부적으로 어떻게 돌아가는지 까지 다 그린 것 같은 느낌이지만, Use Case Diagra..

Operating System 개요
CS/운영체제2024. 1. 29. 22:01Operating System 개요

운영체제(Operating System) 운영체제란? 운영체제란 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층을 말한다.▼ 좁은 의미로는 커널이라고 말하고, 넓은 의미로는 커널뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념을 말한다. 운영체제의 목적 운영체제의 목적은 크게 아래의 4가지가 있다. 컴퓨터 시스템의 자원을 효율적으로 관리 프로세서, 기억장치, 입출력 장치 등의 효율적 관리 사용자 및 운영체제 자신의 보호 프로세스, 파일, 메세지 등을 관리 컴퓨터 시스템의 자원들은 실행 도중에 추가되는 것들이 아니라 시작 전에 정해진 것들이다.▼ 메모리나 저장공간, 그리고 CPU의 성능까지 컴퓨터가 켜져있는 동안에는 바뀌지 않는다. 위에 운영체제..

image