728x90
반응형

컴퓨터(Computer Science) 205

프로젝트 계획(10-1) 아키텍쳐 설계 원리 [소프트웨어공학]

이번엔 설계 원리에 대해서 다뤄보도록 하겠씁니다. 우선 설계에 근거하여 구축한 시스템이 요구를 잘 만족하였을 때 그 설계가 바르다고 할 수 있다. 설계 작업의 목표는 시스템을 위하여 설계 하나를 만드는 것이 아니라 시스템을 개발하는 조건이나 운용될 환경 조건의 제약 안에서 가능한 여러 설계 중에서 최적의 설계안을 발견하는 것이다. 그렇게 하려면 설계를 평가할 수 있는 특성과 기준을 정해야 하는데 사실 정량적으로 평가할 수 있는 것이 가장 좋지만 소프트웨어 특성상 정량적 평가가 어렵다. 그래서 다른 2가지를 평가하는데 그것이 바로 1. 효율성(efficiency) 시스템이 사용하는 자원이 적정하고 효과적임을 의미한다. 2. 단순성(simplicity) 이해하기 쉬운 설계를 작성하는 것, 즉 유지보수성에 직..

프로젝트 계획(10) - 아키텍쳐 설계 [소프트웨어공학]

이번에는 아키텍쳐라는 것을 배워보자. 아키텍쳐는 (architecture) 해석하면 알 수 있듯이 무슨 구조인가?? 즉, 뼈대 같은 것들을 말할 것 같다?? 배워보자 우리는 앞서 요구 분석 작업을 했다. 그 요구 분석 작업을 통하여 무엇을 개발할 지 결정했고 그 이후에 도메인 영역의 문제에 집중해서 모델링 했다. 설계 단계로 넘어가면서 솔루션 영역의 과제들 예를 들어 소프트웨어의 내부 구조, 자료와 사용자 인터페이스를 어떻게 만들 것인지 정해야 한다. 다시 말해서 요구 분석 명세서에 기술된 기능을 여러가지 제한 요건에 맞도록 설계하는 일이 필요하다 건축 설계를 예로 들었지만 소프트웨어 설계도 마찬가지다. ** 설계는 일반적으로 창조작인 작업이라고 할 수 있다 ++ 그렇다고 체계적인 접근이 없는 것은 아니..

Integer Arithmetic 사칙연산 [컴퓨터구조]

Artihmetic Operation에 대해서 알아볼 것이다. Addition, Subtraction, Multiplication, Division 물론 Integer 기준으로 먼저 진행해볼 것이다. 덧셈이다. 어렵지 않다. 그냥 두 수를 더하면 된다. 여기서는 자리수가 바뀌는 것을 carry라고 표현했다. Overflow에 대한 설명도 했는데 Overflow는 표현할 수 있는 값의 범위를 넘어가서 정상적이지 않은 값이 되는 것을 말한다. 일반 사람들은 -로 값을 벗어나면 언더플로우 +로 값을 벗어나면 오버플로우라고 하는데 사실 둘다 오버플로우다. 사실 표현할 수 없는 것은 해당 bit로 표현할 수 없기 때문이지 즉 메모리 부족이 원인이다. 숫자의 부호가 중요한 것이 아니다. 오버플로우는 부호가 같은 수..

Diffie-Hellman Key & 취약점 [컴퓨터보안]

우선 위키백과에 정보가 있더라 https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange 하지만 우리는 한글을 매우 사랑하기 때문에 한글로 설명하는 것을 좋아한다 ㅎ 가보자 저기 위에 그림을 먼저 풀어볼까? ++Alice와 Bob은 저번에도 설명했지만 얘는 암호할 때 맨날 나오는 애들이다. 간단한 상황을 보자. Alice는 앨, Bob는 밥이라 하겠다. 앨과 밥이 정보를 주고 받고 싶어한다. 예를 들어서 비밀 데이트를 한다고 치자. 근데 어머니가 앨이 연애하는 것을 금지해서 비밀스럽게 연락을 주고 받아야 한다. 이런경우에 앨은 만날 장소와 시간을 암호화해 밥에게 전달할수 있다. 하지만 복호화 할 때 키가 필요하기 때문에( 그 키는 공유키라고 한다..

초지능(feat. 씬커) [인공지능]

갑자기 만화보다가 생각나서 가져옴... 그리고 저기 웹툰 써있으면 저작권 침해아니라고 해서 가져왔다. ** 이론이지 정설은 아님을 알고 읽자 초지능에 대해 알아보자 영어로 Super Intelligence라고도 하는데 "레이 커즈와일" 이라는 미래학자의 말에 따르면 한 마디로 진화의 목표다. 최종 진화가 초지능이라는 이론이 있다. ** 책도 썼다. 《특이점이 온다(The Singularity Is Near)》 그 이론에 대해서 알아볼 것이다. 말에 따르면 진화는 "질서가 높은 패턴을 만들어가는 과정"이라고 했다. 그에 따라서 6단계의 진화과정을 제시했는데 진화는 이전 단계의 진화과정을 바탕으로 더 정렬된 단계로 나아가는 것으로 이루어졌다. 1단계 물리학과 화확의 패턴에서 DNA로 진화 2단계 생물학 패턴..

모델링 도구 starUML 기본 UI, 살짝 [소프트웨어공학]

기본 User Interface를 알아보고 정말 간단하게 클래스 다이어그램을 작성하는 법만 알아보자 !!정말 간단하게 1번: Class 포함 모든 것들을 만들 수 있는 TOOL BOX 누르고 워크스페이스(2번)에 올려놓기만 하면 된다 2번: workspace 정말 우리가 다이어그램을 그리는 곳이다. 3번: 각 컴포넌트들의 세부사항 조정하는 곳이다. 저기서 multiplicity도 설정할 수 있다. 4번: 클래스에 마우스를 대고 우클릭을 하면 모든 것이 가능하다 attribute, operation 추가도 가능하고 이름도 바꾸고 맘대로 다한다. 이것은 정말 기본적인 것으로 맛보기만 하려고 살짝 건드려봤다. 시퀀스도 살짝 건드리자 저기서 우클릭해서 add diagram에서 시퀀스 다이어그램을 만들자 우측에서..

프로젝트 계획(9-4) - 모델링 도구 UML, starUML [소프트웨어공학]

그렇다. 이제 모델링을 배워봤는데 모델링을 어떻게 하느냐? 궁금할 것이다 IBM의 Rational Modeler, 마이크로소프트의 Visio, ArgoUML, StarUML, NetBeans UML 플러그인 등이 있으니 쓰고 싶은거 쓰면 된다. 물론 나는 starUML 쓸 거다 ㅎㅎ 이렇게 생겼다. UML도구는 왜쓰느냐?? 3가지 이유로 쓴다. UML 도구의 기능 1. 프로젝트 관리 • 다이어그램과 코드를 모델별로 그루핑하여 프로젝트 별로 보관하고 불러냄 • 서브시스템이나 패키지별로 그루핑 • 프로젝트의 내용은 주로 하나의 파일로 관리하지만 여러 팀으로 나누어 작업하기 위하여 유닛별로 쪼개어 관리 2. 코드 및 문서 생성 • 사용자가 템플릿을 정의하고 템플릿을 이용하여 문서를 일괄 생성 • StarUML..

프로젝트 계획(9-3) - 동적 모델링 (dynamic modeling) [소프트웨어공학]

이번엔 상태 다이어그램과 액티비티 다이어그램을 알아볼 것이다. 한 번 배워보자 우선 상태 다이어그램부터 배워보자 상태 다이어그램은 객체가 가질 수 있는 가능한 상태들과 그 변화를 나타낸 것으로 외부 이벤트에 의한 자극에 대하여 객체들의 반응할 때 어떻게 상태의 변화가 일어나는지를 모델링 한 것이다. 다시 이벤트와 상태를 설명하겠다. 이벤트 : 서브시스템 또는 객체나 컴포넌트에 대하여 요청이나 관심이 일어난 것 상태 : 이벤트의 발생으로 들어가거나 빠져 나오게 되는 서브시스템 또는 객체의 조건을 추상적으로 이름 붙여 놓은 것 **UML을 이용하기 전에 미리 서브시스템이나 객체가 어떤 상태를 가질 수 있는지, 또한 그런 상태에 들어가게 하는 조건, 즉 외부 이벤트나 오퍼레이션이 무엇인지 파악해야 한다. **..

프로젝트 계획(9-2) - 동적 모델링 (dynamic modeling) [소프트웨어공학]

이번에는 동적 모델링에 대해서 알아보려고 한다. 동적 모델링이란 클래스들의 상호작용이나 클래스의 상태 변화 등 시스템 내부의 동작을 모델링하는 것을 말한다. 동적 모델에는 3가지 다이어그램이 있다. 1. 인터랙션 다이어그램 2. 상태 다이어그램 3. 액티비티 다이어그램 인터랙션 다이어그램은 사용 사례를 실현시키기 위하여 내부 클래스들이 어떻게 협동하는지 나타낸다. 인터랙션 다이어그램도 2가지 종류가 있다. 객체를 울타리 형태로 나열하고 이벤트의 발생 순서에 초점을 두고 위에서 아래로 명시하는 타입을 시퀀스 다이어그램이라 한다. 클래스를 네트워크 형태로 배치하고 객체 사이에 어떤 메세지 교환이 이루어지는지를 중점적으로 표시하는 방법이 커뮤니케이션 다이어그램이라고 한다. 2가지는 이름하고 표현 방식만 다르고..

프로젝트 계획(9-1) - 정적 모델링(static modeling) [소프트웨어공학]

전에 이어서 정적 모델링을 위한 클래스 다이어그램을 작성하려고 한다. 심볼, 규정, 규칙들을 알아봤으니까 이제 실전이다 모델링 할 때 순서없이 생각나는 대로 작업하면 당연히 품질 하락. 노동력 상승의 결과를 낳을 것이다. 그러면 순서를 정하고 작업을 시작해야 한다는 얘기다. 클래스 다이어그램 작성 순서를 알아보자 1. 클래스가 될 만한 후보를 파악 도메인 분석할 때 개념을 장 정리해야 클래스를 쉽게 찾을 수 있다. ++요구 추출 시 사용한 자료들에서도 발견할 수 있다, 2. 가장 중요한 클래스를 시작으로 연관, 상속, 속성을 추가 유사한 클래스를 묶어서 슈퍼클래스를 생성하거나 복잡한 클래스를 나누어서 서브클래스를 생성하는 방법이 있다. 각각 상향식, 하향식 관계라고 부른다. 3. 클래스의 주요 임무(re..

728x90
반응형