본문 바로가기

소프트웨어공학11

SW 개발 방법론: V-모델 소프트웨어 개발 방법론 중 하나인 V-모델에 대해서 알아보자ㅁV-모델(V-model): 소프트웨어 개발 생명 주기를 설명하는 모델 중 하나로, 전통적인 폭포수 모델의 확장 형태이 모델은 개발 과정과 테스트 과정을 동시에 계획하고 실행하는 것이 특징이다. V-모델은 각 개발 단계에 해당하는 테스트 단계가 미리 정의되어 있어, 소프트웨어 개발과 검증이 병행될 수 있도록 도와준다. V-모델의 구조는 다음과 같이 "V" 자 형태이다왼쪽 경사 (개발 단계)사용자 요구 명세서: 최종 사용자가 필요로 하는 시스템의 요구사항을 정의하는 단계입니다. 이 단계에서 시스템이 무엇을 해야 하는지를 결정합니다.시스템 요구 명세서: 사용자 요구를 바탕으로 시스템에서 구현해야 할 기술적 요구사항을 정의합니다.시스템 설계: 시스템의.. 2024. 10. 5.
MVC 패턴(Model-View-Controller Pattern) MVC패턴은 디자인 패턴 중 하나이다애플리케이션을 세 가지 주요 컴포넌트로 분리하여 관리하고 이를 통해 코드의 재사용성, 유지보수성, 확장성을 높인다구조는 쉽게 말하면, View 단과 Model 단이 있고 그 사이에 Controller 단이 껴서 중재하는 구조이다 MVC 패턴의 구성 요소Model (모델)역할: 애플리케이션의 핵심 데이터와 비즈니스 로직을 담당한다. DB와의 상호작용, 데이터의 생성, 수정, 삭제 등의 작업을 수행예시: 사용자 정보, 상품 목록, 주문 내역 등 실제 데이터와 관련된 부분View (뷰)역할: 사용자에게 데이터를 표시하는 UI 역할을 한다. 사용자 인터페이스 요소(HTML, CSS, JavaScript 등)를 생성하여 데이터를 시각적으로 표현예시: 웹 페이지의 템플릿, 대시보.. 2024. 10. 1.
[OOP] 제네릭 명명 관례 일반적으로 대문자를 사용하고 용도에 맞는 단어의 첫 글자를 사용하는 관례를 따른다  E - Element K - KeyN - NumberT - TypeV - ValueS, U, V etc. - 2nd, 3rd, 4th types      참고 및 출처: 김영한의 실전 자바 - 중급 2편https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EC%A4%91%EA%B8%89-2 2024. 9. 16.
[OOP] 실무 예외처리 수칙 트렌드 2가지 1. 처리할 수 없는 예외(시스템 오류)는 오류 메시지를 보여준다DB 접속 실패, 애플리케이션 연결 오류 같은 경우는, 고객에게 "현재 시스템에 문제가 있습니다." 라는 오류 메시지를 보여주고, 만약 웹이라면 오류 페이지를 보여주면 된다. 그리고 내부 개발자가 문제 상황을 빠르게 인지할 수 있도록, 오류에 대한 로그를 남겨둔다.    2. 현대의 애플리케이션 개발에서는 체크 예외를 거의 사용하지 않는다(= 언체크 예외만을 사용한다)현대에서는 점점 처리할 수 없는 예외가 많아지고, 또 프로그램이 복잡해지면서 체크 예외를 사용하는 것이 많이 부담스러워졌다. 따라서 언체크 예외만을 사용하며 한꺼번에 "공통 예외처리"를 한다. 해결할 수 있는 것들은 해결하고, 해결할 수 없는 것들은 공통으로 일관성있게 처리한다.. 2024. 9. 11.
[OOP] 리플렉션(reflection) ㅇ리플렉션(reflection): OOP에서 런타임에 프로그램의 구조를 검사하고 조작할 수 있는 메커니즘프로그램이 실행 중에 자신에 대한 정보를 탐색하거나, 구조를 동적으로 변경할 수 있다. 예를 들어, 클래스의 메타 정보를 기반으로 클래스에 정의된 메서드, 필드, 생성자 등을 조회하고, 이들을 통해 객체 인스턴스를 생성하거나 메서드를 호출하는 작업을 할 수 있다. 이런 작업을 리플렉션이라 한다. 또 추가로 애노테이션 정보를 읽어서 특별한 기능을 수행할 수도 있다. 최신 프레임워크들은 이런 기능을 적극 활용한다. ※ reflection은 자아성찰이라는 뜻을 갖고 있다 리플렉션의 기본 개념메타데이터 접근: 리플렉션을 사용하면 클래스, 인터페이스, 메서드, 필드 등의 메타데이터(데이터에 대한 데이터)에 접근.. 2024. 8. 23.
[OOP] 메서드 체이닝(Method Chaining) ㅇ메서드 체이닝(Method Chaining): 각 메서드가 객체 자신(또는 다른 객체)의 참조값을 반환함으로써 다음 메서드를 이어서 계속 호출하는 패턴 한 객체의 메서드를 연속적으로 호출할 수 있도록 설계된 구조이다. 메서드 체이닝은 코드의 가독성을 높이고, 코드를 간결하게 유지하는 데에 도움을 준다.  예시1) 단순히 값을 누적해서 더하는 기능을 제공하는 ValueAdder 클래스package lang.string.chaining;public class ValueAdder { private int value; public ValueAdder add(int addValue) { value += addValue; return this; // 자신의 참조값을 반환해서 메.. 2024. 8. 22.
[OOP] 불변 객체와 메서드명 관례 - withXxx() 불변 객체(Immutable Object)는 한 번 생성되면 그 상태를 변경할 수 없는 객체를 의미한다주요 특징상태 불변성: 객체가 생성된 이후에는 객체의 상태(필드 값)를 변경할 수 없다. 모든 필드는 초기화된 후에 변하지 않으며, 수정이 불가능하다.단순성: 불변 객체는 상태 관리가 단순하다. 상태가 변하지 않으므로, 복잡한 상태 변경 로직을 고려할 필요가 없다.불변 객체의 예Java의 String 클래스: String 객체는 불변 객체의 대표적인 예이다. String 객체가 생성된 후에는 해당 문자열의 내용을 변경할 수 없다. 문자열을 조작하는 메서드(예: concat, replace)는 항상 새로운 String 객체를 반환하며, 기존 객체는 변하지 않는다.래퍼 클래스 (Integer, Double,.. 2024. 8. 20.
[OOP] 정적 의존관계 vs 동적 의존관계 ㅇ정적 의존관계(Static Dependency): 컴파일 시간에 결정되며, 주로 클래스 간의 관계를 의미쉽게 이야기해서 프로그램을 실행하지 않고, 클래스 내에서 사용하는 타입들만 보면 쉽게 의존관계를 파악할 수 있다.특징:컴파일 타임: 정적 의존관계는 코드가 컴파일될 때 결정된다. 즉, 소스 코드에서 어떤 클래스가 다른 클래스를 참조하거나 사용하는 경우, 이 의존관계가 컴파일러에 의해 확인된다.명시적 선언: 클래스가 다른 클래스를 사용하는 경우, 그 클래스의 인스턴스를 생성하거나 메서드를 호출하는 코드가 명시적으로 작성된다.파일 참조: Java에서는 import 문을 통해 다른 클래스를 참조하거나 사용하는 것을 확인할 수 있다.   ㅇ동적 의존관계(Dynamic Dependency): 프로그램이 실행되.. 2024. 8. 20.
[OOP] OCP(개방 폐쇄 원칙)과 디자인 패턴 ㅇ개방 폐쇄 원칙(OCP, Open-Closed Principle): 아주 좋은 객체 지향 설계 원칙 중 하나이다 - 확장에는 열려 있어야 한다(Open for extension) 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 새로운 기능을 추가하거나 확장할 수 있어야 한다이 확장은 기존 코드를 변경하지 않고, 새로운 코드 추가를 통해 이루어져야 한다 - 변경에는 닫혀 있어야 한다(Closed for modification) 기존의 소프트웨어 엔티티는 변경되지 않아야 한다즉, 새로운 요구 사항이나 기능이 추가되더라도 기존의 코드를 수정하지 않고 기능을 확장할 수 있어야 한다 쉽게 이야기해서 "기존의 코드 수정 없이 새로운 기능을 추가"할 수 있다는 의미다. OCP는 소프트웨어를 보다 유연하게 만들어, 변.. 2024. 8. 12.