전체 글 30

Lecture 10: 설계 - 3

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.정적 모델링정적 모델링 - 구조적 다이어그램클래스 다이어그램: 클래스와 클래스가 가지는 속성, 클래스 사이의 관계 표현오브젝트 다이어그램: 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현컴포넌트 다이어그램: 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현 (파일들 끼리의 연결)▶ 정적 모델링 - 구조적 다이어그램클래스 다이어그램클래스 다이어그램시스템 입장에서 클래스들 간의 관계를 나타낸 것으로, 클래스의 정적인 정의와 관계를 표현한다.이때, 객체가 아닌 클래스는 본질적으로 정적(Static)이다. (시간과 조이 개임되지 않기 때문) Use case diagram을 설..

Lecture 09: 설계 - 2

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.UML 모델링이란?UML (Unified Modeling Language)객체 지향 프로그램 설계를 표현하기 위해 사용하는 표기법, 즉 도표 그리는 방법이다. (절차 지향은 UML과 관련 X) 이는 설계 단계 뿐만 아니라 요구분석, 구현 단계에서도 사용 가능하여,개발자간 의사소통(요구분석 -> 설계 -> 구현)을 원활하게 이루어지게 하기 위하여 표준화한 모델링 언어이다.(실제 언어는 X) 여기서 모델링은 중요한 개념과 특성, 개념들 사이의 관계를 파악해 다이어그램으로 정형화하는 것을 의미,즉 UML을 사용하면 시스템을 가시화, 명세화, 문서화할 수 있다. ※ 요구 분석 때 만드는 Use Case diagram도 UML 중 하나이다..

Lecture 09: Arithmetic for Computers - 1

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Arithmetic Operation▶ MIPS code▶ ALU (Arithmetic and Logical Unit) ALU사칙 연산을 담당하는 하드웨어이다. (덧셈, 뺄셈, 곱셈 - 덧셈의 연속, 나눗셈 - 뺄셈의 연속)입력 2개: 연산할 레지스터 2개에 대응하는 각각의 값들Opcode: 어떤 연산을 할지 결정출력 2개: 연산 결과를 저장할 레지스터, Overflow 확인 위한 StatusAddition and Subtraction1. Addition (binary)▶ Addition▶ carry (올림수) carry: 올림수 2. Subtraction (binary)▶ Subtraction: A - B (뺄셈)▶ Subtract..

Lecture 08: 설계 - 1

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.소프트웨어 설계(Design)란? 설계개발될 제품에 대한 의미있는 공학적 표현프로그램 구현에 들어가기 전에 소프트웨어를 구성하는 뼈대를 정의해 구현의 기반을 만드는 것설계자는 다양한 제약 조건을 만족시킬 수 있는 최적의 설계안을 만들고, 설계를 평가할 기준도 정량적으로 명시해야 한다. 좋은 설계가 되기 위한 조건'설계서'는 '요구분석 명세서'의 내용을 모두 포함해야 한다.유지보수가 용이하도록 추적이 가능해야 한다.변화에 쉽게 적응할 수 있어야 한다. ex) 새로운 함수와의 연동시스템 변경으로 인한 영향이 최소화되도록 국지적(한정적)이어야 한다. ex) 모듈화'설계서'는 읽기 쉽고 이해하기 쉽게 작성되어야 한다.설계만 잘 되면 구현..

Lecture 08: Instructions - Language of the Computer - 5

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Translating and Starting a ProgramTranslation hierarchy for C language (번역 계층)▶ Translation hierarchy for C language 어셈블러는 0과 1로 단순히 변환하는데,이때 파일을 obj 파일이라고 한다. (0과 1로 이루어진 파일) 그리고 이러한 obj 파일을 여러 개 연결하여 하나의 소프트웨어, 실행 가능한 exe 파일을 링커가 만들고,이렇게 만들어진 exe를 더블 클릭해서 사용자가 사용하겠다고 하면, 로더는 이 파일을 메모리 (RAM)에 올려 놓는다. 1. CompilerHigh-level language code -> assembly languag..

Lecture 07: Instructions - Language of the Computer - 4

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Compilde MIPS Code ExamplesCompiling steps1. Allocate registers to program variables변수마다 레지스터를 할당한다. 2. Produce code for the body of the procedure함수의 코드를 직접 컴파일, 즉 assembly code를 작성한다. 3. Preserve registers across the procedure invocation(호출)레지스터 보존 여부, 즉 callee로 가기 전, 레지스터에 저장된 값을 메모리에 저장할지 말지를 결정한다.ex) 레지스터 보존 - $s0, $ra▶ Compiling stepsCompilde MIPS Cod..

Lecture 07: 요구분석 - 2

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.(2) 요구사항 분석유스케이스 (Use Case) 다이어그램가장 중요한 분석 기법 툴로, 시스템 개발자와 고객 사이에 요구를 한눈에 이해하는 수단이 된다. (요구분석 명세서 작성의 기반)또한, 예외적인 케이스 (ex) 확장)를 개발자에게 주지시키며, 대략적인 계획을 위해 기능의 수준을 파악하는 데 용이하다. 구성시스템액터유스케이스 (Use case)관계※ 액터는 사람 뿐만 아니라 외부 시스템이 될 수도 있다. ex) 시스템 - 외부 시스템: 은행 - 보▶ Use case diagram ※ Use case diagram에는 비기능적 요소는 들어있지 않고, 나중에 명세서 작성시 추가적으로 작성한다. 특징시스템의 사용자에게 서비스를 제..

Lecture 06: 요구분석 - 1

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.소프트웨어 요구(Requirements)란?요구시스템이 무엇을 해야 하는지, 어떤 특성을 가져야 하는지를 기술한 것어떻게(How)가 아니라 무엇을(What)솔루션이 아니라 문제를▶ 분석 vs 설계 즉, 구축할 것이 뭔지를 나타낸 것이다. 요구분석의 목적이해(Understanding): 소프트웨어가 무엇을 위하여 필요한지 정확히 이해전달(Communicating): 이해한 것을 다른 개발자에게 정확히 전달컨트롤(Control): 시스템이 명세에 맞도록 제품 개발을 컨트롤요구분석소프트웨어 개발에서의 요구분석사용자를 직접 만나는 단계로,의뢰자(사용자)가 현행 시스템의 입출력 화면, 문제점, 산출물, 새로운 요구사항 등을 분석가에게 전달..

Lecture 06: Instructions - Language of the Computer - 3

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Explanation of 32 Registers32 Registers$zero: contains 0 value$a0 ~ $a3: function argument, 함수를 호출할 때 전달하는 인자$v0, $v1: return values, 최종 결과값을 전달할 때 사용$t0 ~ $t9: temporary register (do not have to preserve), 덮어쓰기 가능 (메모리에 저장 X)$s0 ~ $s7: saved registers (preserve), 덮어쓰기 불가능 (메모리에 저장)$gp: global pointer (to access static data ex) constant value)$sp: stack po..

Lecture 05: 계획 (프로젝트 관리와 계획) - 2

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.일정 계획5. 일정 계획소프트웨어를 개발하기 위해 어떤 작업이 필요한지 찾은 후, 진행할 순서를 결정하거나, 주어진 개발 기간에 소작업의 개발 개간 및 그들 간의 순서, 필요한 자원 등과 같은 일정을 계획하는 것이다.▶ 일정 계획 ※ 계획은 소프트웨어를 개발하기 위한 것이기에 개발한 이후의 과정인 유지보수 단계는 계획할 필요가 없다.▶ 일정 계획 예시 작업 순서 결정, 소작업의 개발 기간, 순서, 필요한 자원 등의 일정을 계획한다. ※ 소작업을 기능이라고 보면 된다.일정 계획 - 작업 분할 구조도 (WBS)1) 작업 분할 구조도 (Work Breakdown Structure, WBS)Top - down 형식으로, 본격적인 일정 계..