본문 바로가기

전체 글

(139)
결합도(Coupling)와 응집도(Cohesion) 모듈화(Modularization) 소프트웨어 개발에서 코드를 각 기능별로 나누는 것 프로그램이 효율적으로 관리될 수 있도록 시스템을 분해하고 추상화함으로써 소프트웨어 제품의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 용이하게 하는 기법 모듈(Module) 기능별로 나누어진 모듈화의 결과 소프트웨어 내의 프로그램 또는 작업 단위 독립성 모듈은 주어진 기능만을 독립적으로 수행하며 다른 모듈과 적게 연관되어야 함 모듈의 결합도와 응집도로 측정 결합도는 낮고, 응집도가 높을수록 독립성이 높음 독립성이 높을수록 좋은 모듈 해당 모듈을 수정해도 다른 모듈에 미치는 영향이 감소하기 때문 결합도(Coupling) 서로 다른 모듈 간 상호 의존하는 정도 또는 두 모듈 사이의 연관된 관계 낮을수록 좋음 ..
[데이터베이스] 데이터베이스 설계 단계 데이터베이스 설계 순서 1. 요구 조건 분석 - 데이터베이스의 용도 파악 실제 세계에서 어떤 시스템을 구축할 것인지에 대한 요구사항 수집 요구사항에 대해 어떤 데이터들이 필요한지, 어떤 기능들이 필요한지 분석 서비스에 필요한 데이터와 해당 데이터의 관계 파악 수집된 정보를 바탕으로 요구 조건 명세서를 작성 2. 개념적 설계 - DBMS에 독립적인 개념적 구조 설계 요구사항을 기반으로 개념적 데이터 모델을 작성 -> 개념적 모델링이라고 함 보통 E-R 다이어그램을 많이 사용 이러한 결과물을 개념적 구조 또는 개념적 스키마라고 함 E-R 다이어그램 개체(Entity) 단독으로 존재하는 객체를 의미하며, 동일한 객체는 존재하지 않음 E-R 다이어그램에서 사각형으로 표현(게시글, 사용자) 속성(Attribute..
[데이터베이스] 이상 현상(Anomolay) 이상 현상(Anomolay) 좋은 관계형 데이터베이스를 설계하는 목적 중 하나가 정보의 이상 현상이 생기지 않도록 고려해서 설계하는 것이다. 이상 현상은 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말한다. 종류로는 갱신 이상(Modification Anomolay), 삽입 이상(Insertion Anomolay), 삭제 이상(Deletion Anomolay)이 있다. 예시 테이블 삽입 이상(Insertion Anomolay) 특정 데이터가 존재하지 않아 중요한 데이터를 데이터베이스에 삽입할 수 없을 때 발생 예시 테이블에서 기본키는 학번이기 때문에 새로운 행을 삽입하기 위해서는 기본키인 학번이 필수이다. 새로 행을 삽입하였지만, 학생이 존재하지 않기 때문..
Java Study : 12주차 - 프로그래머스 문제풀이 https://school.programmers.co.kr/learn/courses/30/lessons/42862?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.Arrays; class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = n - lost.length; Arrays.sort(lost); Arrays.sort(reserve); //여벌 체육복을 가져온 학생이 도난을 당한 경우 for(int i=0; i
Java Study : 12주차 - 학점 산출 프로그램 만들기 필요한 클래스 학생(Student) 클래스 학번, 학생 이름, 필수 과목, 수강한 과목 점수 리스트 속성 필요 과목(Subject) 클래스 과목 이름, 과목 고유 번호, 학점 산출 방식, 수강 신청한 학생 리스트 속성 필요 점수(Score) 클래스 학번, 과목, 점수 속성 필요 클래스 사이의 관계 클래스 정의하기 학생 클래스 package school; import java.util.ArrayList; public class Student { private int studentId; //학번 private String studentName;//이름 private Subject majorSubject;//중점 과목 //학생의 성적 리스트 //addSubjectSocre() 메서드가 호출되면 리스트에 추가 ..
CS Study : 11주차 - 프로세스 동기화 프로세스 동기화 프로세스 동기화는 두 개 이상의 프로세스가 공유된 데이터에 동시 접근하면 데이터 중복이 발생할 수 있기 때문에 데이터 일관성을 유지하기 위한 매커니즘이다. Race Condition(경쟁 상태) 여러 프로세스들이 동시에 데이터에 접근하는 상황에서, 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이 달라질 수 있는 상황을 말한다. 대표적으로 세 경우에서 경쟁 상태가 발생할 수 있다. 1. 커널 모드로 인터럽트가 발생하는 경우 커널 모드의 수행이 끝나지 전에는 인터럽트를 받지 않도록 하는 방법으로 문제를 해결할 수있다. 2. 프로세스가 시스템 콜을 호출해서 커널 모드로 수행 중인데 문맥 교환이 발생하는 경우 두 프로세스의 주소 공간에선느 데이터를 공유하지 않지만, 시스템 콜을 수행하는 동안에..
CS Study : 11주차 - Synchronous(동기) / Asynchronous(비동기) Synchronous(동기) 동기 방식은 클라이언트(Client)인 내가 동작시킨 어떠한 특정 실행 흐름 안에서 서버(Server)라고 통칭하는 모든 것들에 대해서 요청(Request)을 보냈을 경우, 이에 대한 응답(response)이 오고 난 것을 확인한 후에 다음 동작을 하는것을 말한다. 순차적이고 직렬적으로 주어진 일을 처리하는 것이다. Asynchronous(비동기) 비동기 방식은 클라이언트(Client)인 내가 동작하고 있는 어떠한 프로그램의 실행 흐름 안에서 서버(Server)의 총칭에 대하여 요청(Request)을 보낼 경우, 이에 대한 응답(response)이 오는 것을 따로 확인하지 않고 다음 동작을 하는 것을 말한다. Blocking(블록) 어떤 함수를 호출 했을 떄, 원하는 작업들을..
iOS Study : 12주차 - 얼굴앱 만들기 얼굴의 두개골을 그려낼 커스텀 UIView 생성 FaceUIView.swift import UIKit //UIView의 서브 클래스인 FaceView //얼굴의 두개골을 그려내기 위해 커스텀한 UIView class FaceView: UIView { override func draw(_ rect: CGRect) { //얼굴 반경 let skullRadius = min(bounds.size.width, bounds.size.height) / 2 //bounds = 나의 좌표시스템 안에서 그릴 직사각형 //얼굴 중심 let skullCenter = CGPoint(x: bounds.midX, y: bounds.midY) //startAngle, endAngle은 라디안으로 표기하기 때문에 π로 표시 / clo..