목록소프트웨어 공학 (19)
오늘부터 공부한다
클라우드 컴퓨팅이란? 클라우드 컴퓨팅은 특정한 기술이나 인터넷에 존재하는 클라우드를 사용하여 정보를 처리하는 것이다. Amazon AWS 클라우드 컴퓨팅 정의에 의하면 인터넷을 통해 IT 리소스와 애플리케이션을 원할 때 사용한 만큼만 요금을 내는 서비스다. 다시 말해. 클라우드 서비스 플랫폼에서 제공하는 컴퓨팅, 데이터베이스 스토리지. 애플리케이션 및 기타 IT 리소스를 필요에 따라 사용하고 사용한 만큼만 비용을 지불하는 것이다. 클라우드 서비스 모델 클라우드 서비스 모델의 종류는 매우 다양하다. 하지만 여기서는 가장 많이 사용하는 IaaS, PasS, SasS를 설명하겠다. IasS(Infrastructure as a Service) 가장 기본적인 클라우드 컴퓨팅 서비스. 서버와 VM(가상 머신), 저..
전에 UML 공부 할때 간단히 적은 것 같은데 설명이 부실한 것 같다. 이번에는 그림도 넣고 해서 좀 자세하게 알아보겠다. 유스케이스 다이어그램 시스템과 사용자의 상호작용을 다이어그램으로 표현한 것으로 사용자의 관점에서 혹은 시스템 서비스, 기능 등의 요소를 보여주는 것이다. 사용자는 시스템 내부에 있는 기능 중에 어떤 기능을 사용 할 수 있는지 나타내며 유스케이스 다이어 그램을 사용함으로써 고객과 개발자가 요구사항에 대한 의견을 조율 할 수 있다. 유스케이스 다이어그램의 구성요소 1) 시스템(System) 만들고자 하는 프로그램 사각형의 모양으로 유스케이스를 감싼다. 2) 액터 (Actor) 시스템의 외부에 있고, 시스템과 상호작용을 하는 사람이다. 액터 명은 위나 아래에 표시하여 액터의 역할을 작성해..
객체지향 기법의 특징은 크게 5가지가 있다. 캡슐화(Encapsulation) 캡슐하는 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶은 것이다. 1. 캡슐화 된 객체의 세부 내용이 외부에 은폐 (정보 은닉)되어, 변경이 발생 할 때 오류가 적다. 2. 캡슐화 된 객체들은 재사용이 용이하다. 3. 객체들 간의 메시지를 주고 받을 때 객체의 세부 내용은 알 필요 없으므로 인터페이스가 간단해지고, 객체간의 결합도가 낮아진다. 정보은닉(Informating Hiding) 앞서 설명한 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것이다. 1. 각 객체의 수정이 다른 객체에게 주는 영향을 최소화하는 기술이다. 2. 외부 객체가 특정 객체의 데이터..
객체지향 프로그래밍(Object Oriented Programming)은 문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 말한다. 이 방법은 오늘날 가장 많이 사용하는 대표적인 프로그래밍 방식이고 JAVA, C# 등이 대표적인 객체지향 프로그래밍 언어이다. 객채지향 프로그래밍 특징 및 장점 객체 지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관있는 처리부분(함수)과 데이터 부분(변수)를 하나로 묶어 객체(인스턴스)를 생성해 사용한다는 것이다. 그리고 객체지향 프로그래밍에서는 프로젝트를 독립적인 객체 단위로 분리해서 작업할 수 있기 때문에 여러 개발자와 협업해 규모가 큰 프로젝트를 진행할 수 있으며, 유지보수 측면도 뛰어나다. 객체지향 VS 클래스 기반 일반적으로 객체지향 프로그래밍은 객체지향 프..
논리 뷰 (logical view) 시스템의 기능적인 요구사항 시스템이 최종 사용자를 위해 해야만 하는 것을 나타낸다 구현 뷰(implementation view) 개발 환경 안에서 정적인 소프트웨어 모듈의 구성 개발자 관점에서 소프트웨어 구현과 관리적인 측면을 컴포넌트 다이어그램으로 표현 프로세스 뷰 (process view) 런타임 시의 시스템의 동시적인 면 테스크, 쓰레드, 프로세스 그리고 이들 사이의 상호작용 등의 관계를 표현 성능이나 가용성과 시스템의 비기능적인 요구사항을 고려 배치 뷰 (deployment view) 다양한 실행 파일과 다른 런타임 컴포넌트가 해당 플랫폼 또는 컴퓨팅 노드에 어떻게 매핑되는가를 보여주며, 가용성, 신뢰성, 성능, 확장성 등의 시스템의 비기능적인 요구사항 고려 물..
소프트웨어 아키텍쳐가 나오게 된 배경 - 시스템의 대형화, 기술의 복잡화 소프트웨어 아키텍쳐의 필요성 SW의 크기와 복잡도 기간과 비용이 클 수록 용이하다. (작은 프로젝트 일 수록 비효율적이다.) 아키텍쳐 패턴 1. 계층화 패턴 (Layered pattern) n-티어 아키텍쳐 패턴이라고도 불린다. 이는 하위 모듈들의 그룹으로 나눌 수 있는 구조화 된 프로그램에서 사용할 수 있다. 각 하위 모듈들은 특정한 수준의 추상화를 제공한다. 각 계층은 다음 상위 계층에 서비스를 제공한다. Presentation layer == Ul 계층 Application layer == 서비스 계층 Business logic layer == 도메인 계층 데이터 접근 계층(Data access layer) == 영속 계층(P..
프로토타입은 개발이 이루어지기 전이나 새로운 기능을 제작하기 전 테스트를 목적으로 만드는 산출물이다. 고객과 개발자는 프로토타입을 통해 제안된 기능을 검사하고 완제품 적합 여부를 결정한다. 프로토타입은 일부분 개발된 제품이다. 프로토타입은 개발자에게 적절한 설계 전략과 프로젝트의 최적의 방법 결정을 도와준다. 프로토타입 모델 프로토타입 모델은 위에서 설명한 프로토타입으로 요구사항이 완벽하지 않은 고객의 의견을 구현하는 것이다. 프로토타이핑 모델의 특징은 - 사용자 중심의 프로세스 모델 이라는 것. - 기존 폭포수모델의 피드백 수영에 대한 단점을 보완하였다는 것. - 고객의 요구사항을 상세히 파악할 수 있다는 것. - 그리고 프로토타입을 통해 고객과 의사소통을 진행 할 수 있다는 것이다.
알고리즘의 효율성 알고리즘은 시간 복잡도와 공간 복잡도를 통해 결정된다. 하지만 최근에는 저장 공간의 가격이 싸지고 많아 시간 복잡도만 신경 쓰게 된다. 시간 복잡도란? 알고리즘이 수행 될 때 연산 횟수에 따라 성능이 결정되는 것이다. 예) 정렬 알고리즘을 연산 횟수로 비교하는 것 시간 복잡도는 3가지 케이스로 나뉜다. Worst Case => 최소한 이 만큼의 성능을 내야한다. Average Case => 대체적으로 내는 성능이다. Best Case => 한 알고리즘으로 낼 수 있는 좋은 성능(최고의 알고리즘의 기준은 알 수 없다) 알고리즘 분석시 고려사항 정확성 => 정확한 연산을 했는가? 작업량 => 얼마만큼 연산을 하는가? (시간 복잡도) 메모리 => 얼마나 많은 메모리를 사용하는가? (공간 복잡..
설명 하기전에저는 이런 내용 관련 글은 처음 써본 사람입니다. 개인적으로 학습한 내용을 정리할 겸 적은 글이기에 이상하더라도 양해부탁드립니다 ㅠㅠ UNL이란? 프로그램을 만들기 전에 설계를 위해 표기하는 것이다. 다르게는 요구사항을 정의한 설계도라고 볼 수 있다. UML은 주로 객체지향 언어와 밀접한 관련이 있다. 특히 팀원간의 의사소통에서 필수적으로 이용된다. UML을 잘 작성하면 개발이 개발이 쉬워질 수 있다. UML의 종류 UML의 종류는 다양하다. 하지만 이번에는 사람들이 자주 이용하는 클래스 다이어그램과 유스케이스 다이어그램에 대해 알아볼것이다. 클래스 다이어그램 클래스 다이어그램은 시스템의 기능을 클래스들의 관계로 나타내는 것이다. 클래스란 무엇인가? 쉽게 설명하자면 동일한 속성을 가진 객체의..