본문 바로가기

Computer Science108

[Software Engineering] Process Improvement: CMMI Misconceptions and Symptoms of Process Failure다음과 같은 이유로 Process 자체에 너무 집착할 필요는 없다.1. 창의성을 방해한다.2. 관료주의 + 규제3. 프로토타입이 필요가 없을 수 있다.4. 대규모 프로젝트에만 유용하다.5. 빠르게 움직이는 시장에서 민첩성을 방해한다.6. 비용이 너무 많이 든다. 그리고 Process 실패에 대한 영향이 다음과 같이 존재한다.1. 지속적인 지연2. 진행 상황에 대한 관리 가시성 부재3. 품질 문제4. 팀원 사기 저하 Capability Maturity Model Integration: CMMICMMI는 카네기멜론대학교에서 개발한 Process 개선 교육 및 평가 프로그램이다. 기업은 Maturity level 등급 또는 Ca.. 2025. 2. 12.
[Database Systems] Relational Database Design Algorithms Relation Decompositionrelation schema은 database의 모든 attribute를 포함하고, 여기서 모든 attribute의 이름은 unique하다. 이 R을 D = {R_1, R_2, ..., R_m}으로 Decompose한다면, 각 R_i는 R의 subset을 포함한다. 그리고 R의 Attribute는 적어도 하나의 R_i에 포함된다. 각 R_i는 BCNF 또는 3NF가 되며, D는 R의 Decomposition이라고 불린다. 단 두개의 Attribute를 갖는 relation schema는 자동적으로 BCNF가 되지만, 문제점은 다른 Relation과 Join하였을 때 Spurious tuple이 발생할 수 있다는 것이다. 좋은 Relation database를 위한 .. 2025. 2. 9.
[Software Engineering] Project Management The Four P's for ManagementProject Management: 제품을 현실로 만드는 데 필요한 모든 작업 관리Process Management: 작업을 완료하기 위한 프레임워크 활동 및 소프트웨어 엔지니어링 작업 세트 관리People Management: 성공적인 프로젝트의 가장 중요한 요소인 인간 관리Product Management: 구축할 소프트웨어의 형상관리 및 품질관리 Management Activities- Proposal Writing계약을 따거나 작업을 수행하기 위한 제안서를 작성해야하는데 제안서에는 무엇을 어떻게 할 예정인지도 중요하지만, 왜 해야하는지에 대한 정당성도 중요하다. - Personnel Selection and Evaluation프로젝트에 적합한 인력을.. 2025. 2. 8.
[Database Systems] Normalization NormalizationNormal Forms: 바람직한 형태의 테이블Normalization: 테이블을 더 작고 더 바람직한 나누는 것Lossless Join Property: 나눠진 것을 Join했을 때, 나누기 전과 완전 동일한 속성Dependency Preservation Property: 의존성이 보존되는 것Prime Attribute: Candidate key에 속하는 attribute First Normal Form (1NF)1NF: Relation에 속한 모든 Domain이 Atomic value로만 되어있는 것. 즉, Relation의 모든 Attribute value가 Atomic value로만 되어있는 Normal formSecond Normal Form (2NF)Full Functi.. 2025. 2. 7.
[Software Engineering] Usability and User Interface Design User Interface글꼴, 색상, 로고, 메뉴, 버튼 등과 같이 화면에 나타나는 모습과 사용자가 실제로 조작하는 것들UsabilityEffectiveness: 전체 시스템의 의도된 목표가 달성되는 정도로 측정Efficiency: 의도한 목표를 달성하기 위해 지출해야 하는 자원으로 측정Satisfaction: 사용자가 전체 시스템을 수용할 수 있다고 생각하는 정도로 측정Requirements ans AnalysisEnd user로부터 요구사항을 수집하는 과정- 사용자는 시스템이 무엇을 하기를 원하는가- 이 시스템은 사용자의 일반적인 업무 흐름이나 일상 활동에 어떻게 적용될 수 있는가- 사용자는 기술에 얼마나 능숙하며, 사용자가 이미 사용하고 있는 유사한 시스템은 무엇인가- 어떤 인터페이스 모양과 스타.. 2025. 2. 6.
[Database Systems] Database Design, Functional Dependencies Informal Design Guidelines for Relation SchemasDesigning a relation database -> 주어진 애플리케이션을 위한 좋은 테이블 스키마의 집합을 정의하는 것. 각 테이블에 추가될 attribute를 결정하는 것 Rough criteria for a good table schema1. Semantics of Attributes -> 각 tuple은 real-world에 존재하는 오직 하나의 entity instance, relationship instance에 부합해야함2. Redundant Information in Tuples -> update anomaly가 일어나지 않도록3. NULL Vaules in Tuples -> 새로운 relation을 .. 2025. 2. 5.
[Software Engineering] Object-Oriented Design Concepts The 5 Basic Design Priciple for Object-Oriented Design (aka SOLID)1. SRP: Single-Responsibility Principle2. OCP: Open-Closed Principle3. LSP: Liskov Substitution Principle4. ISP: Interface Segregation Principle5. DIP: Dependency Inversion Principle The Single-Responsibility Principle (SRP)클래스는 하나의 책임만 가져야하며, 이를 변경하는 이유도 하나뿐이어야 한다.The Open-Closed Principle (OCP)소프트웨어 요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다... 2025. 2. 4.
[Database Systems] SQL (3) INSERT Statement테이블에 tuple을 추가하기 위해 사용된다. 하나의 tuple을 추가하거나, 여러 개의 tuple을 추가할 수도 있다.value들은 대응되는 CREATE TABLE에서 명시된 attribute의 순서와 같은 순서여야 한다. 넣고싶은 Attribute value만 넣을 수도 있는데, 지정되지 않은 attribute의 값들은 NULL이 되거나, DEFAULT 값을 갖는다. SELECT Statement의 결과인 tuple의 집합도 table에 추가할 수 있다. DELETE Statement테이블에서 tuple을 제거하기 위해 사용된다. WHERE 절이 없다면 무조건적으로 tuple들을 제거하는 것이기 때문에 테이블에서 모든 tuple들이 삭제된다. UPDATE Statement.. 2025. 2. 4.
[Software Engineering] Component-Level Design & Fundamental Design Concepts Component-Level DesignComponent-level design은 Architecture design이 완료된 후에 수행되는데, 이것은 각 소프트웨어 Component에 할당된 자료 구조, 처리 로직, 인터페이스 특성 및 통신 메커니즘을 정의하는 것이다. Component란 프로그램의 기능적 요소이다. 이는 "module"이라고도 불린다. UML에서는 component를 "a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces"으로 정의한다.  Step 1: Identify All Design Components1. 문제 도메인에.. 2025. 2. 2.
[Database Systems] SQL (2) Nested Queries SELECT-FROM-WHERE의 쿼리 블럭이 다른 쿼리의 WHERE절에 들어 가는 것. WHERE절 안에 있는 쿼리를 Inner query라고 하고, 이것을 감싸는 본체를 Outer query라고 한다. Comparison Operators- IN: 값 v가 집합 V에 속한다면 True, 그렇지 않다면 False- = ANY: 집합 V에 v와 같은 값이 하나라도 존재한다면 True, 그렇지 않다면 False. = 말고도 >, >=, 도 가능하다.- = ALL: 집합 V에 있는 모든 값이 v와 같다면 True, 그렇지 않다면 False, = 말고도 >, >=, 도 가능하다.  Avoiding AmbiquitiesInner query와 outer query에 같은 이름의 attr.. 2025. 2. 1.
[Software Engineering] Software Architecture Software Architecture소프트웨어의 골격이 되는 기본 구조이자, 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다. 아키텍처 설계는 그러한 서브 시스템을 식별하고 서브 시스템 제어 및 통신을 위한 구조적 프레임워크를 확립하는 초기 설계 프로세스이다. - 소프트웨어 아키텍쳐가 중요한 이유1. 초기 디자인 결정: 소프트웨어 아키텍처는 시스템의 남은 개발, 배포 및 유지보수와 관련하여 시스템을 지배하는 가장 초기의 설계 과정을 나타낸다.2. 이해관계자와의 소통: 소프트웨어 아키텍처는 시스템 이해관계자가 상호 이해, 협상, 합의 및 소통의 기초로 사용할 수 있는 시스템의 공통된 추상화를 나타낸다.3. 시스템의 이전 가능한 추상화: 유사한 품질 속성 및 function.. 2025. 1. 31.
[Database Systems] SQL (1) Data  Definition Language (DDL)메타 데이터를 정의(Create, Modify, Delete)하기 위해 사용되는 명령어의 집합Data Manipulation Language (DML)tuple들을 조작(Retrieval, Insert, Modify, Delete)하기 위해 사용되는 명령어들의 집합Schema CreationSchema: 동일한 DB 애플리케이션에 속하는 Table과 Constraint가 포함된 Construct의 집합CREATE SCHEMA 문을 사용해서 Schema를 생성할 수 있다.Table CreationCREATE TABLE 문: table name, attributes(이름, 타입), Initial constraints를 포함해서 table을 생성할 수 .. 2025. 1. 30.
[Software Engineering] UML(Unified Modeling Language) : Behavioral Diagram Use Case DiagramUse case 모델은 시스템의 요구사항을 capture하기 위해 사용되는 모델이다. Use case는 시스템이 무엇을 하도록 의도되었는지 사용자 및 기타 이해 관계자에게 전달하는 수단이다. - Actors- Use Cases- Uses Connector- Generalizationis-a 관계이다. - Include RelationshipWithdraw가 Card Identification이라는 use case를 포함하고 있어, Withdraw가 실행되면, Card Identification도 실행된다. - Extend RelationshipGet Approval은 Modify Order 실행 시, 경우에 따라 실행될 수도 있고 안될 수도 있다는 의미이다.State Mach.. 2025. 1. 29.
[Database Systems] Relational algebra Relational AlgebraRelation model에 대한 기초적인 연산 집합으로, 검색 요청을 명세하기 위해 사용된다. 검색된 결과는 relation으로 나타난다. SELECT OperationsRelation R로부터 tuples의 subset을 조건 하에 골라내는 연산 PROJECT OperationsRelation R로부터 attribute list 로만 설명되는 Column들을 선택하는 연산, 연산의 결과에 나타나는 Relation에는 중복된 tuple이 존재하지 않는다. Set OperationsUnion compatibility: 두 relation이 union되려면 attribute의 수가 같아야하고, domain이 서로 완전 동일하진 않더라도 얼추 비슷해야한다. CARTESIAN .. 2025. 1. 28.
[Software Engineering] UML(Unified Modeling Language) : Structural Diagram UML- 분산 및 동시 시스템을 위한 시각적 모델링 언어이며 실제 세계의 아이디어를 그래픽으로 표현한다.- 모델이란 불필요한 세부 사항을 걸러내어 복잡한 문제나 구조의 본질을 표현하는 추상화이다. 이를 통하여 문제를 더 쉽게 이해할 수 있도록 한다. Three Means for Modeling- Notation: 모델에서 사용되는 기호/언어- Process: 기호/언어가 사용되는 방식- Tool: 기호/언어를 사용하게 해주는 도구 UML Diagram Classification- Structure Diagrams: 모델링 되는 시스템에 '무엇이 반드시 있어야' 하는지 강조- Behavior Diagrams: 모델링 되는 시스템에 '무엇이 반드시 일어나야' 하는지 강조- Interaction Diagram.. 2025. 1. 27.