본문 바로가기

728x90

ComputerScience/Software Engineering

(26)
소프트웨어공학 - 6. Requirement, Use cases 1. Requirement - UP에서 requirements를 나타내는 모델을 FURPS+ 모델이라고 한다. - funcitional : 기능이 무엇인가 (input, output이 무엇인가?) - Usability : 사용성 - Reliability : 신뢰성 (오류율 낮은지 등) - Performance : 성능 (응답시간, 속도 등) - Supportability : 유지보수 용이한지 등 - constraints : 이 기능이 수행되어야 하는 메모리, 시간 제한, 어느 운영체제 위에서 돌아가하는지, 디자인 제약 등 - U, R, P, S, C, security 등의 성격들을 non-functional requirements라고 한다. - non-functional requirements를 만족하지..
소프트웨어공학 - 5. Iterative, Evolutionary, Agile - 소프트웨어 개발 프로세스는 소프트웨어 개발 과정에서의 activity와 relationship이다. - 이전 시간에 다양한 software development process model들도 살펴봤다. - 이번장에서는 Unified Process를 포함한 반복적 개발 프로세스에 대해 자세히 알아보자. 1. iterative, evolutionary development - "requirement를 한번에 다 수집 -> 구현 -> 테스트" 하는 것이 아니라 "일부 requirement 파악 -> design(설계) -> implementation(구현) -> test(검증) -> integration(통합)" 의 cycle을 계속 반복하며 진화하듯이 소프트웨어를 완성하는 것을 말한다. - 예를들어 만약 ..
소프트웨어공학 - 4. OOA/D(Object Oriented Analysis & Design) 1. Object Oriented Analysis & Design (OOA/D) - oop concept에 기반하여 풀고자 하는 문제의 domain들을 파악함으로써 문제 상황을 더 잘 이해할수 있도록 해준다. - 도서관 전산을 구축하는 문제상황이 있다고 하면 책이라는 object, Person이라는 대상 그리고 대여한다 등의 관계를 정의하여 programming에 활용하는 것이다. - 잘 설계된 규모있는, 지속적 유지보수, 발전 가능성이 있는 좋은 품질의 software를 기획한다면 반드시 수행하는 절차이다. - 소프트웨어 개발 프로세스를 살펴보면 requirement, analysis는 OOA, Architectural Design, Detailed Design의 경우 OOD에 해당한다. 2. OOA ..
소프트웨어공학 - 3. UML(Unified Modeling Language) 1. UML(Unified Modeling Language) overview - 모델은 만드는 일은 실제 시스템을 추상화해서 알아보기 쉽게 하기 위함이다. - 추상화란 불필요한 요소를 쳐내서 복잡도를 줄이고 핵심만 나타내는 과정이라고 보면된다. - 모델은 쉽게 프로젝트의 아이디어를 전달하기 위한 것이기 때문에 구체적인 설계등의 내용은 포함하지 않는다. - 개발자, 소비자, 기획자 모두가 함께 이해하기 쉬워야 한다. - 이런 모델링을 위한 시각 언어로 UML이 만들어졌고 사실상 산업 표준이 되었다. - 특정 개발 언어에 국한되지 않고 사양을 설명하는데 목적이 있다. - Structure diagram : 시스템안에 존재해야 하는 것들은 무엇인가? - Behavior diagram : 시스템에서 어떤 일이 ..
소프트웨어공학 - 2. SW Development Process 1. Terminologies - 프로젝트를 만드는 과정은 여러 Activity들로 구성된다. - 각 Activity는 여러 task들로 구성된다. - task에 시간 자원을 쏟다보면 생기는 중간 결과물을 work product라고한다. 2. Activities - 일반적인 소프트웨어 개발 과정의 Activity들을 살펴보자. - 요구사항 분석 : 사용자의 요구사항 분석을 마치면 중간 결과물로 use case model이 산출된다. - 분석 : 주어진 요구사항들을 분석해서 객체 모델의 형태를 만드는 작업이다. - 시스템 디자인 : 아키텍쳐 구성, 서브시스템 구성 - 세부 디자인 : OOP 설계 기법을 적용하여 각각 서브시스템 내부 컴포넌트들을 디자인 - 구현 : 코딩 - 테스트 : 검증 3. SW Dev..
소프트웨어공학 - 1. Introduction 1. What is Software Engineering? - 소프트웨어 제품의 생산의 모든 것을 말한다. - 소프트웨어 개발, 유지보수를 위한 체계적이고 규칙이 있는 정량가능한 접근 방법을 소개한다. - 소프트웨어의 규모가 점점 커짐에 따라 여러명의 개발자와의 협업이 불가피하기 때문에 이 학문의 중요성은 크다. - 즉 소프트웨어가 생산되는 과정에 집중해서 공부할 것이다. - 앞으로 뭘 배울것인지 간략하게 소개해보겠다. 2. Topics Software development process 1. 사용자의 요구조건 분석 2. 소프트웨어 모델링 3. Architecture & design 4. Development 5. Vaildation, verification Project Management Config..
UML (Unified Modeling Language) 1. System - 독립적인 작은 entity들이 서로 interact하며 하나의 inegrated whole을 이루는 집합을 말한다. - 소화체계가 입, 식도, 위 등의 상호작용으로 이루어지는 것과 같이 이해하면된다. 2. UML - project Modeling에 관해 communication을 위한 용도로 사용되는 visual 언어이다. - 매우 복잡하고 규모 있는 소프트웨어 시스템을 이해하기 위한 방법이다. - 복잡한 시스템의 복잡성을 위한 modeling 방법이다. - 세 가지 카테고리가 있다. 3. Class Diagram - static structure를 묘사한다. - class와 relationship을 나타낸다. 4. Use-case diagram - 어떤 사용자가 어떤 함수(use-..
OOP - 3. Technique 1. Cohesion, Coupling - component 동작들의 응집성이 높고 의존성이 적을수록 더 좋은 design이다. - coupling이 많다는 것은 하나의 동작을 수행하는데 의존하는 component가 많아짐을 의미한다. 2. Interface and Implementation - 사용자에게 what it does?인 interface는 공개하지만 - how it does?인 implementation은 숨긴다. 3. Selection of name - short, pronounceable - evocative - avoid digits 4. Private - class에서 data member를 private으로 설정하도록 권장

728x90