Software Design - Software Design(소프트웨어 디자인)이란 무엇인가?
https://do-my-best.tistory.com/entry/Software-Analysis-and-Design-Software-Architecture-Design
Software Design(소프트웨어 디자인) vs소프트웨어 아키텍처 (Software Architecture)
디자인은 구현방법의 문제
oop/디자인패턴/절차지향/solid
vs
구현이전단계 설계의 문제
msa
ai요약
{
- 정의: 소프트웨어 시스템이 구축되기 전에, 요구사항을 충족하기 위한 소프트웨어의 사양을 생성하는 프로세스입니다.
- 목표: 시스템을 효율적으로 구현하고, 최고 품질의 시스템과 제품을 생산할 수 있도록 하는 것입니다.
- 세부 내용: 클래스와 함수, 데이터 저장 위치, 컴포넌트 간의 통신 방식 등을 포함하여 어떻게 요구사항을 구현할지, 즉 구체적인 구현 방식을 다룹니다.
- 정의: 시스템의 주요 컴포넌트들이 어떻게 상호작용하는지에 대한 고수준의 구조 및 시스템의 전체적인 뼈대입니다.
- 목표: 소프트웨어의 근본적인 구조를 결정하고, 시스템의 품질 특성(확장성, 성능 등)에 영향을 미칩니다.
- 세부 내용: 시스템을 구성하는 주요 부분(예: 웹 애플리케이션의 프론트엔드, 백엔드)이 무엇이고, 서로 어떻게 연결되어야 하는지에 대한 큰 그림을 그립니다.
- 추상화 수준: 아키텍처는 높은 수준에서 시스템 전체를 조망하며, 디자인은 더 낮은 수준에서 구체적인 구성 요소의 세부 사항을 다룹니다.
- 범위: 아키텍처는 시스템의 전반적인 뼈대를 정의하는 반면, 디자인은 그 뼈대 안에 들어갈 구체적인 설계와 구현 방식을 결정합니다.
- 영향: 소프트웨어 아키텍처의 결정은 디자인에 영향을 주고, 디자인 결정 또한 아키텍처에 영향을 줄 수 있습니다.
- 두 개념 모두 소프트웨어 시스템의 품질과 성공적인 개발에 필수적이며, 서로 영향을 주고받는 관계입니다
}
ai요약
{
- 명확한 지침 제공: 소프트웨어의 구조와 동작을 명확하게 정의하여 개발팀이 이를 따라 구현할 수 있도록 합니다.
- 효율적인 구현: 코드를 작성하기 전에 시스템의 여러 측면을 모델링하여 코드 구현의 효율성을 높입니다.
- 품질 높은 시스템: 좋은 디자인 원칙과 기법을 적용하여 최고의 품질을 가진 시스템과 제품을 생산할 수 있도록 합니다.
- 문제 해결: 복잡한 소프트웨어 시스템이 해결해야 하는 문제를 정의하고 그 해결책을 계획하는 과정입니다.
- 요구사항 → 설계 → 코딩: 소프트웨어 개발의 순서에서 설계는 요구사항 분석 후 코딩 이전에 이루어지는 단계이며, 서로 밀접하게 연관되어 요구사항을 명확하게 합니다.
- 기본 설계와 상세 설계: 전체 시스템의 큰 구조를 정의하는 기본 설계와 각 부분의 상세한 동작 방식을 정의하는 상세 설계로 나뉩니다.
- 모델링: 소프트웨어 시스템이 구축되기 전에 여러 측면을 모델링하여 이해를 돕고 개발 효율성을 높입니다.
- 설계 원칙과 기법: 좋은 품질의 제품을 만들기 위한 원칙과 개념을 세우고, 이를 바탕으로 구체적인 실행 방안을 마련하는 것이 소프트웨어 디자인입니다.
]
"Software design"은 소프트웨어의 구조와 동작을 계획하고 정의하는 과정입니다. 소프트웨어 개발의 초기 단계에서 이루어지며, 개발자들이 구현할 소프트웨어의 아키텍처, 컴포넌트, 인터페이스, 데이터 모델 및 기타 시스템 구성 요소를 결정하는 데 도움을 줍니다.
Software design은 크게 두 가지 주요 영역으로 나뉩니다:
고수준 디자인 (High-level design):
아키텍처 설계 (Architectural design): 소프트웨어의 주요 구성 요소나 모듈과 이들 간의 관계를 정의합니다.
시스템이 어떻게 분할될지, 모듈이 어떻게 상호 작용할지를 결정합니다.
전체 시스템의 구조와 흐름을 묘사하는 방법으로써 종종 다이어그램을 사용하여 표현됩니다.
저수준 디자인 (Low-level design):
구체적인 디자인 (Detailed design): 고수준 디자인에서 식별된 각 모듈의 내부 구조와 동작을 자세히 정의합니다.
알고리즘, 데이터 구조, 인터페이스 디테일 등의 세부 사항을 포함합니다.
저수준의 디자인은 코드를 작성하기 전에 어떻게 구현될 것인지에 대한 명확한 지침을 제공합니다.
Software design 과정은 요구 사항 분석이 완료된 후에 이루어지며, 정의된 디자인은 구현 단계에서 코드로 변환됩니다. 좋은 소프트웨어 디자인은 유지 보수가 쉬운, 확장 가능하고, 효과적으로 동작하는 소프트웨어를 만드는 데 중요한 역할을 합니다.
https://jay-daily.tistory.com/235#google_vignette
2930.co.kr/소프트웨어-설계software-design-좋은-코드보다-더-중요한-구조/
https://goofcode.github.io/architecture-vs-design
https://medium.com/@kimjinu5555/architecture-vs-design-pattern-c4c430ca291a
https://velog.io/@toma/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90#%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90-%ED%8C%A8%ED%84%B4%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90
https://devocean.sk.com/blog/techBoardDetail.do?ID=164924&boardType=techBlog
https://blog.naver.com/heaves1
댓글
댓글 쓰기