본문 바로가기
728x90
반응형

Software Engineering40

Monolithic, Microservices, Nanoservices Architecture ‘모노리식 아키텍처’란 하나의 애플리케이션을 전체 시스템 안에서 독립적으로 실행할 수 있도록 설계된 소프트웨어 구성 방식을 말한다. 즉, 각각의 모듈들은 자신만의 운영체제 위에서 작동하며 다른 모듈과의 상호작용 없이도 독자적으로 구동되는 구조다. 이러한 개념으로부터 나온 마이크로 서비스 아키텍처는 기존의 단일화된 플랫폼 대신 서로 다른 종류의 컴퓨팅 환경에서도 적용될 수 있는 유연한 개발 모델을 제시한다.  또한 작은 단위의 서비스들끼리 느슨하게 결합하여 비즈니스 로직에만 집중할 수 있게 함으로써 보다 높은 품질의 결과물을 도출하도록 한다.Monolithic Architecture모놀리식 아키텍처(Monolithic Architecture)는 전통적인 애플리케이션 아키텍처로, 애플리케이션 전체가.. 2023. 5. 20.
마이크로서비스 아키텍처(Microservice architecture) 마이크로서비스 아키텍처(Microservice architecture)는 잘 정의된 인터페이스와 기능을 갖는 단일 기능 모듈을 구축하는 것에 초점을 맞춘 소프트웨어 시스템 개발을 위한 독특한 아키텍처이다.최근 몇 년간 기업들은 Agile을 위해 DevOps 및 지속적인 테스트 프로세스를 채택함에 따라 마이크로서비스는 점점 더 인기가 얻고 있다. 아마존, 이베이, 넷플릭스, 페이팔, 트위터, 우버와 같은 주요 온라인 기업들은 모놀리식(monolithic) 아키텍처를 버리고 마이크로서비스로 전환하고 있다. 모놀리식(monolithic) 아키텍처는 대형, 독립적인 유닛으로 구축된 애플리케이션으로 이루어져 있다. 전체 시스템이 깊게 연결되어 있기 때문에 이러한 애플리케이션을 쉽게 변경할 수 없다. 코드의.. 2023. 5. 20.
시스템 설계 가이드 왜 시스템 설계를 배워야 하나? 지난 20년간 대규모 웹 애플리케이션에 많은 발전이 있었다. 이러한 발전은 소프트웨어 개발에 대한 생각 방식을 재정의했다. 페이스북, 인스타그램, 트위터와 같이 우리가 매일 사용하는 모든 앱과 서비스는 확장 가능한 시스템이다. 전 세계 수십억 명이 동시에 이러한 시스템에 액세스 하기 때문에 대규모의 트래픽과 데이터를 처리할 수 있도록 설계되어야 한다. 이것이 바로 시스템 설계가 필요한 이유다. 소프트웨어 개발자로서, 시스템 설계 개념을 이해하고 적용하는 능력이 점점 더 필요하다. 초기에 시스템 설계를 학습함으로써, 소프트웨어 설계 문제를 더 자신 있게 해결할 수 있으며, 일상적인 업무에 설계 원칙을 적용할 수 있다. 레벨에 관계없이, 시스템 설계는 중요한 요소가 된다. 이.. 2023. 5. 5.
시스템 설계 시작하기 시스템 설계 시스템 설계(System design)는 특정 비즈니스 요구사항을 충족시키기 위해 소프트웨어 시스템의 아키텍처와 구성 요소를 설계하는 과정이다. 이 프로세스는 시스템의 아키텍처, 구성 요소, 모듈 및 인터페이스를 정의하고, 시스템을 구현하는 데 사용될 기술과 도구를 식별하는 작업들을 수행한다. 시스템 설계를 시작하는 몇 가지 단계는 다음과 같다. 1. 요구사항 이해: 시스템을 설계하기 전에 요구사항을 이해해야 한다. 이를 위해서 이해 관계자 및 사용자와 대화를 나누고 기존 문서를 검토하며 시스템이 지원할 비즈니스 프로세스를 분석해야 한다. 2. 시스템 아키텍처 정의: 요구사항을 명확하게 이해한 후, 시스템 아키텍처를 정의할 수 있다. 이는 시스템의 주요 구성 요소와 그들 사이의 인터페이스를 .. 2023. 5. 5.
Debugging 디버깅 디버깅(Debugging)은 소프트웨어 시스템에서 발생하는 오류 또는 버그를 식별하고 해결하는 프로세스이다. 버그로 인해 소프트웨어 시스템이 오작동할 수 있고 성능이 저하되거나 잘못된 결과를 초래할 수 있기 때문에 소프트웨어 엔지니어링의 중요한 부분이다. 디버깅은 시간이 많이 걸리고 복잡한 작업일 수 있지만 소프트웨어 시스템이 올바르게 작동하는지 확인하는 데 필수적이다. 디버깅에는 다음과 같은 몇 가지 일반적인 방법과 기법이 사용된다. 1. 코드 검사(Code Inspection) 소프트웨어 시스템의 소스 코드를 수동으로 검토하여 잠재적인 버그나 오류를 식별하는 것을 말한다. 2. 디버깅 도구(Debugging Tools) 디버거, 추적 도구 및 프로파일러와 같은 다양한 도구가 있으며, 이러한 도.. 2023. 4. 23.
화이트 박스 테스트 화이트 박스 테스트화이트 박스 테스트(White box testing) 기법은 블랙박스 테스트와 같이 기능성만을 검사하는 것이 아니라 사용된 데이터 구조, 내부 설계, 코드 구조, 소프트웨어의 동작 등 내부 구조를 분석한다. 이는 유리 상자 테스트(glass box testing), 투명 상자 테스트(clear box testing) 또는 구조적 테스트(structural testing) 등으로도 불린다. 화이트 박스 테스트는 투명 테스트(transparent testing) 또는 개방형 박스 테스트(open box testing)로도 알려져 있다. 화이트 박스 테스트는 소프트웨어 응용 프로그램의 내부 구조와 동작을 테스트하는 소프트웨어 테스팅 기법으로 테스터는 소스 코드에 접근하고 이를 이용하여 코드.. 2023. 4. 22.
블랙박스 테스트 블랙박스 테스트블랙박스 테스트는 애플리케이션의 내부 동작 방식을 알지 못하고 기능성을 검사하는 소프트웨어 테스트 방법이다. 테스터는 코드나 설계에 대한 지식 없이 외부 사용자의 입장에서 시스템에 접근하여, 입력값을 제공하고 출력값을 분석하여 시스템을 평가한다. 블랙박스 테스트의 목적은 사용자의 관점에서 소프트웨어가 기능 및 비기능적 요구사항을 충족하고 예상한 대로 동작하는지 확인하는 것이다. 이러한 유형의 테스트는 기능성, 사용성, 호환성 등 다양한 영역에서 결함을 발견할 수 있다. 블랙박스 테스트는 수동으로 수행될 수도 있고 자동화된 도구를 이용해 수행될 수도 있다. 블랙박스 테스트는 다음과 같은 방법으로 수행할 수 있다. 1. 구문 기반(Syntax-Driven) 테스트Syntax-Driv.. 2023. 4. 20.
테스트 가이드라인 소프트웨어를 테스트하는 동안 준수해야 할 테스팅 가이드라인 ● 개발 팀은 소프트웨어 테스트를 피해야 한다. 소프트웨어를 테스트하는 것은 개발 팀이 피해야 하는데, 테스트는 항상 테스팅 팀에 의해 수행되어야 한다. 개발 팀은 소프트웨어를 직접 테스트해서는 안 된다. 이는 개발자가 소프트웨어를 구축하는 데 몇 시간을 투자한 후, 무의식적으로 소프트웨어에 대해 잘 알고 있다 생각되어 시스템의 결함을 간과할 수 있기 때문이다. 테스터는 제품에 대해 파괴적인 접근을 가져야 한다. 개발자는 단위 테스트와 통합 테스트를 수행할 수 있지만, 소프트웨어 테스트는 테스팅 팀에 의해 수행되어야 한다. ● 소프트웨어에 버그가 100% 없을 수는 없다. 테스트를 통해 소프트웨어에 버그가 100% 없다는 것을 증명할 수는 없다... 2023. 4. 16.
소프트웨어 테스트의 7가지 원칙 소프트웨어 테스트는 프로그램을 실행하여 오류를 찾는 과정이다. 소프트웨어가 원활하게 작동하려면 오류가 없어야 한다. 테스트가 성공적으로 수행되면 소프트웨어에서 모든 오류를 제거할 수 있다. 소프트웨어 테스트는 시스템 사양과 사용자로부터 수집한 요구 사항을 기반으로 소프트웨어를 평가하는 과정이다. 소프트웨어 테스트는 소프트웨어 개발 생명주기(SDLC)의 각 단계에서 수행될 수 있으며, 프로그램 코드의 모듈 수준에서도 수행될 수 있다. 소프트웨어 검증과 확인은 소프트웨어 테스트에 포함되는 주요 요소다. 또한, 소프트웨어 테스트는 매우 중요하며, 그렇지 않으면 소프트웨어 버그가 위험할 수 있다.소프트웨어 테스트 유형1. 단위 테스트(Unit Testing)2. 통합 테스트(Integration Testin.. 2023. 4. 15.
요구사항 도출의 어려움 요구사항 도출의 일반적 어려움 소프트웨어 공학에서 요구사항 도출은 사용자의 요구와 기대를 수집하고 문서화하는 과정으로, 다양한 요소들로 인해 어려울 수 있다. 요구사항 도출에서의 일반적인 어려움은 다음과 같다. 1. 불명확하고 변경되는 요구사항: 요구사항이 명확하게 정의되지 않거나 모호하거나 일관성이 없거나 시간에 따라 변경될 경우, 엔지니어가 사용자나 이해관계자들의 실제 요구를 이해하고 도출하기 어려울 수 있다. 2. 다양한 이해관계자관리: 다양한 이해관계자들이 서로 다른 목표와 우선순위를 가지고 있을 경우, 서로 상충하는 요구사항을 조화시키고 우선순위를 정하는 것이 어려울 수 있다. 3. 의사소통 및 언어 장벽: 이해관계자와 엔지니어 간의 의사소통 불일치나 언어 장벽으로 인해 요구사항이 오해되거나 잘.. 2023. 4. 15.
요구사항 추출 요구사항 추출 요구 사항 추출은 경영자, 최종 사용자 및 기술 전문가와 같은 다양한 이해 관계자로부터 소프트웨어 시스템의 요구 사항과 요구 사항을 수집하고 정의하는 중요한 프로세스다. 고객의 기대치를 명확하고 포괄적으로 이해하기 위해 요구 사항을 식별, 수집, 분석 및 개선하는 작업을 수행한다. 이 프로세스는 일반적으로 설계 및 개발 단계를 위한 견고한 기반을 구축하기 위해 소프트웨어 개발 프로젝트 초기에 수행된다. 요구사항 추출의 결과는 소프트웨어 개발 팀의 기본 원칙 역할을 하는 명확하고 간결하며 잘 정의된 요구사항 명세서다. 요구사항 추출은 소프트웨어 개발에서 가장 어렵고 오류가 발생하기 쉬운 작업 중 하나다. 사용자의 진정한 요구 사항을 명확하게 이해하려면 고객과 개발자 간의 효과적인 커뮤니케이션.. 2023. 4. 9.
SRS의 품질 특성 SRS의 품질 특성 SRS(소프트웨어 요구사항 사양) 문서의 품질 특성은 다음과 같다. 1. 명확성: SRS 문서는 명확하고 이해하기 쉬워야 한다. 모호함 없이 명확하고 간결한 언어를 사용해야 하며 전문 지식이 없는 이해관계자에게 불분명할 수 있는 전문 용어를 피해야 한다. 2. 완전성: SRS 문서는 포괄적이어야 하며 소프트웨어 시스템에 필요한 모든 요구 사항을 포함해야 한다. 여 모든 기능적 및 비기능적 요구 사항뿐만 아니라 소프트웨어 개발 프로세스 중에 고려해야 하는 제약이나 제한 사항이 포함되어야 한다. 3. 일관성: SRS 문서는 내용과 구조가 일관성이 있어야 한다. 상충되거나 모순되는 요구사항을 포함하지 않아야 하며, 모든 요구사항을 논리적이고 체계적으로 제시해야 한다. 4. 정확성: SRS .. 2023. 4. 8.
728x90
반응형