Fundamentals of Software Engineering Fundamental principles applicalbe to all types of software system, irrespective of the development techniques used:개발 테크닉과 관계없이 모든 종류의 소프트웨어 시스템에 적용가능한 기본 원칙은 아래와 같습니다: "System should be developed using a managed and understood development process. Of course, different processes are used for different types of software."시스템은 이해 가능하고 관리되는 개발 프로세스에 의해 개발되어야합니다...
[학교 수업]
Compilation Process Processing phase원본 C프로그램을 '#'으로 선언된 경로에 따라 수정하는 단계.(* .c → .i 확장자) Compilation phaseC프로그램을 어셈블리 언어 프로그램으로 번역하는 단계.(* .i → .s 확장자) Assembly phase어셈블리 언어 프로그램을 기계어 프로그램으로 번역하는 단계.(* .s → .o 확장자) Linking phase실행 파일을 만들기 위한 필수적인 객체들을 병합하는 단계. printf.o와 같은 객체들을 병합하는 단계입니다.(* .o → .exe 확장자) 위 단계를 그림으로 보면 다음과 같습니다: GNU Compiler Collection(* GCC) GCC를 통해 컴파일 시킬 수 있습니다.파일안에 p1.c와 p2...
0. 2024.06.09 - [학교 수업/자료구조 및 알고리즘] - 자료구조 및 알고리즘 #14 - Union-Find (Disjoint Set) and an Application 자료구조 및 알고리즘 #14 - Union-Find (Disjoint Set) and an Application1. an Application Union-Find 를 알아보기 전에 이것을 언제 사용하는지를 먼저 파악하는 것이 좋아보입니다. MST(* Minimum Spanning Tree), 최소신장트리는 Spanning Tree 중에서 사용된 간선들의 가중치 합이 최hw-hk.tistory.com위 글에서 Greedy Algorithms인 Kruskal algorithms을 통해 MST를 구하는 문제를 본 적이 있습니다. 1..
Zombies 프로세스가 종료됐지만, 여전히 시스템의 자원을 소비하는것.이때, 시스템의 자원은 PCB(* Process Control Block)이다. 해당 프로세스를 관리할 수 있는 정보들을 담고 있는 정보들로 운영체제 커널의 자료구조입니다.https://jwprogramming.tistory.com/16 PCB(Process Control Block)란?OS의 기본. Process Control Block(PCB)입니다. - 프로세스 제어 블록(Process Control Block, 줄여서 PCB)은 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조입니다. PCB는 운jwprogramming.tistory.com 해당 PCB에는 PID가 있기 때문에, Zombie가 계..
Typical Activities in Software Engineering Software Specification(= Requirement Engineering): Customers and engineers define the software to produce and constraints on its operation.소비자나 공학자가 해당 소프트웨어의 제약이나 조건들을 정의하는 단계입니다. SRS라고 불리는 System Requirement Specification 혹은 Software Requirement Specification이나 여러가지 Hardware Specification, 이전 글에서 말했던 여러가지 품질 속성들을 정의합니다. Software Development: The softw..
Software Engineering Software engineering is concerned with theories, methods and tools for professional and cost-effective software development.(* 소프트웨어 공학은 전문적이고 효율적인 소프트웨어 개발을 위한 이론들이나 방법론들, 도구들을 다루는 학문입니다.) Software costs is more to maintain than to develop(* 소프트웨어는 비용은 개발보다 유지 보수에 더 든다.) 여기서 cost-effective는 금전적인 비용뿐 아니라 인적자원의 비용등 여러가지 요소들을 포함하는 개념입니다. Software Quality Attributes라고 불리는 품질 속성..
Process Program 과 Processor 랑은 다른 개념, Process 는 실행가능한 Program의 instance 이다.(* Program: 실행가능한 file)(* Processor: CPU) 여러개의 프로그램들이 동시에 같은 시스템에서 실행 될 수 있는데, 이런 동시 실행은 context switch 를 통해 이루어진다.이때 context란 프로세스가 필요로 하는 정보들인 Program Counter(* PC)나 register, main memory들을 담은 상태 정보를 의미한다. Virtual Address Space 각각의 프로세스가 사용하는 가상의 메모리 공간.(* 아래의 이미지는 리눅스 환경에서의 프로세스의 가상 메모리 공간입니다.) 위 가상공간의 주소 값으로 보아 32bit..