728x90
반응형

컴퓨터(Computer Science) 205

소프트웨어공학(3) 소프트웨어 개발 접근 방법(단계적 개발 프로세스)

개발을 하려면 어떤 순서로 하는지가 정말 중요한데 이 방법을 따르지 않으면 효율이 떨어지거나, 기간이 오래걸리거나, 품질이 낮아지는 경우가 발생한다. 4가지정도의 단계가 있다. 처음부터 살펴보자 1) 요구분석 소프트웨어 시스템이 풀어야 할 문제를 이해하기 위해서 하는 일 시스템이 어떻게 작동을 해야하느냐 보다는 시스템으로부터 무엇이 필요한가를 생각해보아야 한다. 요구분석단계의 목표는 소프트웨어 요구 명세서로 요구를 문서화 하는 일이다. 그 목표를 이루기 위해서 2가지 작업이 있는데 문제분석과 요구정리 2가지가 있다. 문제와 그 배경을 잘 이해하고 개발할 시스템의 요구를 찾아야 하고 문제를 분석한 뒤에는 요구를 문서로 정리한다. 이를 요구 명세서(requirement specification 이라고 부른다..

소프트웨어공학(2) 소프트웨어의 품질 결정 요소

소프트웨어는 비용, 일정, 품질과 같은 변수를 중요하게 여기는데 그 중에 품질 품질은 어떠한 요소가 결정하는지 알아보겠다. 사실 품질은 삼각 균형이라고 해서 기술, 인력, 프로세스가 결정한다. 그렇지만 소프트웨어가 완성된 자체를 따지자면, 다시말해서 국제표준(ISO 9126) 에 근거하여 소프트웨어의 품질에 대하여 말하자면 기능성, 신뢰성, 사용 용이성, 효율성, 유지 보수성, 이식성 까지 6 가지를 말할 수 있다. #기능성(functionality) 소프트웨어가 사용될 때 원래 정한 또는 내재된 요구를 만족시키는 기능을 제공하는 능력 요구를 다 시켜야 한다는 얘기다. #신뢰성(reliability) 소프트웨어가 정해진 수준의 성능을 유지할 수 있는 능력 사용자가 많아짐으로 프로그램이 견디지 못했다던가 ..

베이컨 암호 (Bacon's Cipher) [컴퓨터보안]

아니 검색해도 베이컨 요리법만 나와서 글 쓴다. 베이컨 암호( Bacon’s cipher) 베이컨이 1605년에 고안한 것으로 문자를 숨기기 위한 암호다. 문자를 암호화 하기 위해서는 plaintext가 필요하다. plaintext에는 5비트 즉 2진코드인 a와 b로 이루어진 코드들이 알파벳 각각에 대응 되어있다. 또한 plaintext가 2가지 종류가 있는데 서로 같은 부분도 있고 다른 부분도 있다. 원리: 암호화를 하고자 한다면 이 암호에 대해 2가지 표현을 하는데, 대문자, 소문자 표현을 한다. a 가 대문자, b가 소문자를 뜻한다. 예를 들어 설명하자면 평문: password 베이컨 문: abbbaaaaaabaaabbaaabbabaaabbabbaaaaaaabb 암호문 : AsdfQWERTYvZXC..

알베르티 암호( Alberti's Cipher) [컴퓨터보안]

알베르티 암호 1467년 이탈리아에서 만들어진 알파벳 암호 다중 문자 치환을 이용한 암호다. 장치를 이용한 암호인데 공통 핀으로 고정된 2개의 디스크를 이용하는 암호 형식이며, 작은 원판은 평문을 위한 것, 큰 원판은 암호화를 위한 것이다. 디스크는 회전할 수 있다. 작은 부분이 움직일 수 있고 큰 원은 움직일 수 없다. 각 디스크의 칸수는 24개로 동일하다. 외부의 디스크에 있는 숫자는 값이 할당된 336개의 phrases를 포함한 코드북을 위한 것이다. 이는 코드 번호를 숨기는데 효과적인 방법인데 코드 번호를 다른 글자와 구별할 수 없기 때문에 그렇다. 알파벳의 치환은 암호문의 본문에 포함된 키 문자로 제어되는 것이다. 원리 우선 movable index를 정한다고 하자. 그 키 값을 k라고 하자. ..

MIPS Addressing for 32-Bit [컴퓨터구조]

프로그래밍을 하다보면 상수가 쓰인다. 하지만 상수의 크기가 대부분 작기 때문에 고려하지 않았지만 16-bit면 충분히 표현될 줄 알았다. 32 - bit 상수도 필요하기 마련이다. 하지만 32 bit의 수를 어떻게 만들까?? 그 때 사용하는 명령어가 lui이다. lui, Load Upper immediate 즉, 상수값을 target register(rt)에 상위 16비트, 왼쪽에 복사하는 것이다. 그리고 나머지 하위 16bit는 0으로 만든다. 그렇다면 끝?? 0으로만 채워넣는 것이 아니라. or 명령어의 immedaite 타입으로 2304에 대해서 1을 채워넣는 것이다. 즉, ori 로 61^16 + 2304의 충분한 큰 값을 만들었다. **이렇게 하는 이유는32-bit의 메모리를 저장을 불러오는 것..

1번 레지스터 $at을 사용하는 때 [컴퓨터구조]

$at은 어셈블러가 알아서 사용하는 레지스터이다. 위와 같이 왼쪽 표현이 프로그래머가 짠 표현이라면 어셈블러는 우측과 같이 바꾸어준다. 이렇게 된 이유는 실제로 mov, blt를 MIPS에서 지원하지 않는 연산이지만 어셈블러는 이를 알아듣고 실제로 있는 연산으로 치환해주는 것이다. 다시 정리하자자면 MIPS process에선 지원하지 않고 MIPS assembly process에서 지원해주는 것이다.

Basic block -[컴퓨터구조]

basic block 인스트럭션의 나열 블락안에 브랜치들은 없다. 맨끝은 예외 브랜치 타겟이 되는 경우도 없다 맨처음 예외 >> 베이직 블락은 한번 인스트럭션이 수행되면 끝까지 수행된다는 뜻. 다른 곳에서 들어오거나 다른 곳으로 나가는 일이 없다는 뜻이다. 최적화를 위해 컴파일러는 베이직블락을 찾고 고성능 프로세서는 베이직블락 수행능력을 향샹시키기 위해 노력한다. 한번시작하면 끝날때까지 하기 때문에 중간에 어떤일이 벌어져도 결과가 같으면 상관이 없다는 뜻. 즉 코드의 라인의 내용이 바뀌어도 결과가 같으면 상관없다는 뜻이다. 그래서 결과가 같게 중간의 내용을 최적화 한다. 정확하게는 내가 알아보겠다.

소프트웨어공학(1) 필요성과 특징

소프트웨어야 그냥 만들면 만드는거지 뭐 공학적으로 학문을 구분하여 배워야하느냐? 라고 할 수 있는데 소프트웨어 공학의 왜 필요한지 알아보자 #소프트웨어공학의 필요성 어떠한 상품에서 소프트웨어의 비중이 높아졌다. 예를 들어서 무인자동차는 "자동차"라서 지불하는 비용보다 "무인" 이라는 소프트웨어에 지불하는 비용이 많아진 것이다. 소프트웨어의 복잡도가 나날이 복잡해진다. 위에 무인자동차처럼 소프트웨어 많은 요구사항을 만족하게 만들어야하다보니깐 어떠한 원리, 순서 없이는 개발을 하기가 어려워졌다는 것이다. 소프트웨어는 고객의 요구에 맞춰서 개발해야한다. 즉 고품질, 저비용, 단기간에 완성되기를 원한다. 그래서 어떠한 원칙하에 효율적으로 개발해야한다. 웹환경의 소프트웨어 수요가 급증했다. 온라인 쇼핑이라던가 모..

컴퓨터보안 : 일방향 해시함수

일방향 해시함수 무결성(integrity)는 보장하지만 기밀성을 보장받지 못함. 위장에 대해 보호받을 수 없음. 부인에 대해 보호받을 수 없음. 해시함수는 평문을 암호화하는 함수이다. 즉 A와 B가 같은 내용을 보냈고 같은 해시함수를 사용했다면 암호화된 텍스트도 같을 것이다. 그래서 무결성을 알 수 있다. 해시함수의 보안성을 높이는 방법 2가지 해시함수의 보안성을 높이는 방법으로 스트레칭이 있다. 스트레칭은 복잡한 연산을 반복 적용하는 것을 의미한다. 즉 암호화 해시 함수를 수천, 수만 번을 반복하는 것인데 이는 무작위 공격으로 비밀번호를 추측하는데 많은 시간을 걸리게 하는 방법이다. 반복횟수를 늘리기만 하는 것으로도 보안성을 높일 수 있다. 또한 해시 값에 솔트를 추가하느냐 아니냐에 따라 보안성이 크게..

MIPS Architecture & Operation, 구조와 연산 [컴퓨터구조]

MIPS의 구조를 보자 MIPS는 32비트의 레지스터를 가지고 있고 각 레지스터는 0-31 비트가 있다. 레지스터를 더 자세히 보자면 32-bit 레지스터를 레지스터 파일(Register File)이라고 한다. 2개의 read port와 1개의 write port가 있다. 1 clock에 2개를 읽고 1개를 쓸 수 있다는 것이다. 저기 그림과 같이 src1 data 와 src2 data를 동시에 읽을 수 있다. 32개의 레지스터 중에서 2개를 읽을 수 있으니까 32-bit짜리 데이터 2개를 읽을 수 있다. (읽을 레지스터는 src1 addr, src2 addr을 통해서 주소를 입력받아서 읽게 되어있다.) (주소는 5-bit) write는 쓰기 위한 데이터 (32-bit) 어떠한 주소에 쓰냐면 dst ad..

728x90
반응형