[지식창고]/소프트웨어공학

[소프트웨어공학] Chapter 3. 소프트웨어 프로세스

개발새발주발 2023. 4. 23. 17:05
728x90

거의 다 적었었는데 내용이 날라갔습니다.. 

이번 포스팅 길다 생각했는데 이게 날라갈 줄이야 ~ 

더 잘 적으라는 뜻으로 알고 다시 공부해서 적어봅니다 .. 。゚(゚´ω`゚)゚。

 

우리는 이전까지 소프트웨어 개발 과정에 있어서 5가지 접근 단계를 알아보았고 그 중 특히나 '프로세스 단계'에 대해서 자세히 알아보았다! 프로세스 중에서도 프레임워크 활동 ' 대화 - 계획 - 모델링 - 구현 - 설치 '과정에 대해서 알아보았는데 ...

과연 모든 프로세스가 이 과정을 순서대로 따라만할까? 

이 물음에 대한 해답을 찾아보자 ! 그러기 위해서는 프로세스 모델이 등장한다. 프로세스가 돌아가는 다양한 방식에 대한 모델이 존재한다는 것이다. 

 


프로세스 모델 

 

프로세스 모델은 각 요소들을 서로 연결하여 일련의 소프트웨어 개발 프로세스를 정의한 것이다. 프로세스 과정은 대화 - 계획 - 모델링 - 구현 - 설치 이 과정을 순서대로 따라갈 수 도, 어떤 부분을 반복하여 진행할 수도.. 여러개의 과정이 존재한다. 그래서 약 10가지의 프로세스 모델을 배우게 되었는데 이 모델들에 대해서 설명해보겠다. 

 

 

프로세스 모델 : 딜레마 

- 규정적인 프로세스 모델은 구조와 질서를 추구하지만 소프트웨어에서는 변화에 적극적으로 대처해야하므로 부적합할까요? 

- 전통적인 프로세스 모델을 거부하고 덜 구조적인 무언가로 대체한다면 .. 소프트웨어 작업에서 조율과 일관성을 달성하는 것이 불가능해질 수 있을까요 ? 

 

→ 프로세스 모델이 빠진 딜레마에 대한 설명이다. 프로세스 모델이 정형화된 틀에 박히는 것도 문제지만 너무 틀에서 벗어나는 것도 문제니까..


프로세스 모델의 흐름 유형 

1. 

엄격 그 잡채 흐름유형이다. 피드백 라인이 없다 ! 

 

2. 

final product가 늦게 나오지만 .. 반복적으로 추가 작업을 수행하여 점진적으로 완성도를 높인다. 

 

3.

final product가 나오고 끝이 아니라 또 과정이 돈다 ! 

초기에 요구사항이 불분명하나 변경될 가능성이 높은 경우, 초기 버전을 출시한 수 지속적을 수정하는 모델임 

 

4.

여러명이 동시에 다른 작업을 수행하고 결과물을 통합하는 모델 → 대규모 시스템 개발, 복잡한 sw 프로젝트에 사용된다. 

 


프로세스 모델 종류 

시험이 코앞이라 키워드를 중심으로 설명해보겠다. 다른 좋은 레퍼런스들이 많으니 참고하시라 ... ~~ 

주인장이 미리미리 못올리고 게을러서 미안합니다 하지만 날라간건 어쩔수 없다고 ㅜㅜ ~ 

 

⓵ 폭포수 모델 

일련의 단계가 순차적으로 진행되는 선형 프로세스 모델 

keyword 

: systematic, sequential approach, oldest paradigm, classic life cycle 

 

 

 

⓶ 점증적 모델 

소프트웨어의 기능들을 점증적으로 완성해 가는 모델 

keyword 

: waterfall model + iterative fashion, core product ( - the first increment)

 

⓷프로토타입 모델 

초기에 설계한 요구사항에 대한 이해도를 높이기 위해 실제 제품과 비슷한 형태의 시제품을 빠르게 제작하여 사용자들과 고객들에게 제공하는 모델 

keyword

: quick design, human-machine interaction, Ideally, Throw away ~ 

 

⓸ 나선형 모델(spiral) 

위험관리에 초점을 둔 모델 

keyword

: 프로토타입 + 폭포수 모델 , risk-driven, realistic approach

 

 

⓹ 동시성 모델 

소프트웨어 공학 작업들 간의 관계와 상태변화를 중시하며, 다양한 소프트웨어 개발 프로젝트에서 적용할 수 있는 모델, 이 모델은 프로젝트의 현재 상태를 정확히 파악하고 작업 간의 상호 의존성을 고려하여 효율적인 개발을 한다. 

keyword

: activity network, 'concurrent engineering'

 

 

⓺ 컴포넌트 기반 모델 

사전에 패키지화된 SW 구성요소를 사용하여 개발하는 형식 

keyword

: spiral + object-oriented, reusability

 

 

정형 방법론 모델  

컴퓨터 소프트웨어의 형식적인 수학적 명세 이끌어냄 

keyword

: clean-room software engineering, defect-free software 

 

 

⓼ 관점 지향 모델 

흩어진 관심사(Cross-cutting concerns) aspect로 모듈화하고 핵심적인 로직에서 분리하여 진화론적으로 개발하여 재사용 

keyword 

: aspect, crosscutting, 진화모델 + 동시성모델 

 

 

⓽ 통합 프로세스 모델 (UP : Unified Process)

유즈케이스 기반, 구조중심, 반복적이고 점증적인 프로세스 모델 

keyword

: UML(Unified modeling language)

 

steps 

: Inception(도입) - Elaboration(구체화) - Construction (구축) - Transition (변환) - Production (생성)

 

 

⓾ 애자일(Agile) 개발 프로세스

구체적 계획 개발 보다는 주기적으로 프로토타입을 만들어 필요한 요구를 보완하여 하나의 커다란 소프트웨어를 개발해 나가는 적응형 방법론 

keyword

: 개인 및 상호작용, 동작하는 소프트웨어, 고객 협력, 변화 대응 

 

* UX (User experience) : 사용자가 무언가에 대해 경험하고 느끼는 감정의 총체 

* UI (User Interface) : 유저와 디바이스 or 프로덕트 사이의 interface


키워드를 중심으로 10개의 프로세스 모델에 대해서 알아보았다 ~ 문제점과 특징에 관해 정리한 내용은 시험이 끝나고 시간이 될 때 .. 올리도록 하겠다.. !