CS/소프트웨어공학 5

SOLID

[SE.A02] SOLID1. SOLID 로버트 마틴이 객체지향프로그래밍 및 설계의 다섯 가지 기본 원칙을 소개한 것이다. 원칙을 지킴으로써 코드 수정 및 구조 변경을 유연하게 할 수 있다. SOLID 는 함수와 데이터 구조를 클래스로 배치하는 방법과 이들 클래스를 서로 결합하는 방법을 설명한다. SOLID 의 5 대 원칙을 나열하면 다음과 같다. - SRP(Single Responsibility Principle) 단일 책임 원칙 - OCP(Open/Closed Principle) 개방-폐쇄 원칙 - LSP(Liskov Substitution Principle) 리스코프 치환 원칙 - ISP(Interface Segregation Principle) 인터페이스 분리 원칙 - DIP(Dependency ..

No Silver Bullet - Essence and Accident in Software Engineering 논문 요약

[SE.A.01] “No Silver Bullet —Essence and Accident in  Software Engineering 에 대한 요약 [Summary of No Silver Bullet —Essence  and Accident in Software Engineering]”  1. 서론 “한 번에 완벽한 해결책은 없다.” 늑대인간은 친숙한 모습에서 무서운 모습으로 예상치 못하게 변하는 특징이 있다. 은총알은 늑대인간을 한 번에 무너뜨릴 수 있는 무기이다. 친숙한 소프트웨어 프로젝트도 간단해보이지만 일정이 어긋나고, 예산이 부족하고, 결함이 생기면 공포스러운 괴물의 모습으로 변하는 특징을 가진다. 그래서 은총알처럼 소프트웨어의 비용을 빠르게 낮춰줄 하드웨어가 필요하다. 하지만 저자는 향후 10..

[소프트웨어공학] Use Case Diagram - Generalization, Include, Extend Relation

1. Use Case 2. Relation - Generalization 화살표 방향: 구체적인 actor or use case -> 추상적인 actor or use case (1) actor간 Generalization - 자식 actor는 부모 actor의 동작과 모든 use case를 상속 받는다. - 하위 actor는 특정한 하나 이상의 use case가 있다.(상위 actor한테 상속 받은 use case가 있을 테니까) (2) use case간 Generalization - base use case는 구현되지 않는다. (-> 대신 구체화된, 파생된 use case가 있음) - Substituability(대체 가능성): runtime에서 base use case는 파생된 use case 중 하..

[소프트웨어공학] Chapter 02 - Software Process Models

1. The Software Process - 소프트웨어 프로세스는 소프트웨어 시스템을 개발하는데 필요한 구조화된 활동. == 즉, 소프트웨어를 개발하려면 무엇을 해야하는가? - 명세 Specification: 시스템이 해야할 일을 명확하게 정의 - 설계 및 개발 Design and implementation: 시스템의 구성 조직을 정의하고 구현 - 검증 Validation: 고객이 원하는대로 잘 만들어졌는지 - 발전 Evolution: 고객의 요구사항 변화에 맞춰 소프트웨어를 수정 => 소프트웨어 프로세스 모델은 원하는 기능을 만들어내기 위한 일련의 흐름이다. => 소프트웨어 프로세스 모델은 추상적이다. 왜? -> 시간의 한계, 계획서의 복잡도 증가로 인해 모든 것을 표현할 수는 없음 2. Softwa..

[소프트웨어공학] Chapter 01 - Introduction to SE

1. 소프트웨어란? - 실행 시 원하는 기능, 함수, 성능을 제공하는 명령어 - 프로그램이 정보를 조작할 수 있도록 하는 데이터 구조 - 프로그램의 작동 및 사용법에 관한 문서 - 소프트웨어는 제조(manufacture) 되는 게 아님. 개발(develop), engineer 된다. - 소프트웨어는 마모(wear out) 되는 게 아니라 악화(deteriorate)된다. - 업계는 component 기반 구축으로 변화하고 있지만 대부분의 소프트웨어는 고객 맞춤형으로 개발된다. => custom 해서 사용 2. Legacy Software 소프트웨어는 왜 변화해야만 하는가? - 새로운 컴퓨팅 환경이나 기술의 변화에 맞춰 변경되어야 함. - 새로운 비즈니스 요구사항을 충족해야 함. - 소프트웨어는 나만 쓰는..