본문 바로가기

프로그래밍/Software Engineering(소프트웨어 엔지니어링)

(5)
5. System modeling System modeling이란 시스템에대한 추상화된 모델을 개발하는 프로세스를 말한다. 이러한 모델은 Mathmetical model(Formal model) 또는 Grapical Model(UML) 등으로 표현될 수 잇으며, 시스템을 보는 관점에 따라 다르게 표현되기도 한다. Requirement Engineering 단계에서 세부 요구사항을 도출하기 위해 모델이 개발된다. 1) 요구사항 단계에서 사용되는 이미 존재하는 시스템에 대한 모델 2) 요구사항 단계에서 사용되는 새로운 시스템에 대한 모델 시스템을 바라보는 관점에 따라 다른 모델을 개발할 수 있다. 1) External perspective : 시스템의 context 또는 environment에 대한 모델 2) Interaction presp..
4. Requirement engineering Requirement of system이란, 시스템이 제공해야하는 service와 그것의 operation의 제약사항을 의미한다. 이러한 요구사항을 찾고, 분석하고, 문서화하고 검토하는 프로세스를 Requirement engineering이라고 한다. 이러한 프로세스는 보통 Software Engineer의 첫번째 단계로 여겨진다. 여기서는 Agile방식이 아닌 클래식한 Plan-driven방식에서의 Requirement engineering을 다룬다. 이러한 요구사항은, Description level에 따라 두가지 유형으로 나눌 수 있고 각기다른 이해관계자를 위한 서술이다. 1) User requirement : diagram과 natural language 들로 구성된 추상화된 기술 2) Syste..
3. Agile software development Plan-driven 방식의 소프트웨어 개발 프로세스는 개발과정도중 요구사항의 변화나 요구사항의 문제에 대해서 빠르게 대처하지 못하는 문제점이 있다. 빠르게 변화하는 환경속에서, 빠르게 요구사항에 발맞추어 개발을 하기 위해 Agile 개발 프로세스가 도입되었다. Agile방식의 특징은 다음과 같다. 1) Interleaved specification, design, implementation, minimized fomal documentation 2) Development in series of increment 3) Extensive tool support for development process 3.1 Agile methods 대규모의 시스템이 아닌 빠르게 요구사항이 변화하는 중소규모의 시스템 개발..
2. Software processes 앞서 Introduction에서 보았듯이, software engineering은 software processes로 볼 수 있으며, 과정은 다음과 같다. 1) Specification -> Development -> Validation -> Evolution 2.1 Software process models software process model은 간단하게 모델화된 프로세스 표현이며, 다음과 같이 분류될 수 있다. 1) The waterfall model 2) Incremental development model 3) Integration and configuration 2.1.1 The waterfall model 하나의 phase에서 다음 phase로 단계적으로 cascading되는 특성 때문에,..
1. Introduction Software System 은 추상적이고, 물리적엔 제약이 구속받지 않는다. 따라서, 적용에 한계가 없으며 시간이 지날수록 복잡해지는 특성을 가지고 있다. 많은 Software Engineering이 실패하는 이유는 크게 다음과 같은 2가지 이유가 있다. 1) Increasing system complexity 2) Failure to use software engineering methods 1.1 Professional software development SE(Software Engineering)는 개발자를 위한 것이 아닌, 그것을 사용하는 일반적인 사람들을 위한 것이다. software는 program뿐만 아니라, documentation, libraries, support websites, ..