Mink__02 2024. 2. 8. 18:59

 

1. 소프트웨어 생명 주기(SDLC. Software Development Life Cycle)

 

 

(1) 폭포수 모형 (Waterfall Model)

- 가장 오래되고 가장 폭넓게 사용된 고전적 생명 주기 모형

- 한 단계가 끝나야만 다음 단계로 넘어가는 선형 순처적 모형

- 단계별 정의 및 산출물이 명확

- 개발 중간에 요구사항의 변경이 용이하지 않음

- 타당성 검토 -> 계획 -> 요구 분석 -> 설계 -> 구현(코딩) -> 테스트(검사) -> 유지보수

 

(2 ) 프로토타입 모형 (Prototype Model, 원형 모델)

- 견본(시제)품을 만들어 최종 결과물을 예측하는 모형

- 인터페이스 중점을 두어 개발

- 개발 중간에 요구사항의 변경이 용이

 

(3) 나선형 모형 (Spiral Model, 점진적 모형)

- 폭포수 모형과 프로토 타입 모형의 장점에  위험 분석 기능을 추가한 모형

- 점진적 개발 과정 반복으로 요구사항 추가 기능

- 정밀하고 유지보수 과정 필요 없음

- 계획 및 정의 -> 위험분석 -> 공학적 개발 -> 고객 평가

 

(4) 애자일 모형 (Agile Model)

- 민첩함, 기민함 의미

- 변화에 유연하게 대응

- 기능 중심 개발

- 일정한 주기 (Iteration, Sprint) 반복하면서 개발과정 진행

- 절차와 도구보다 고객(개인)과의 소통에 초점을 맞춤

ex)XP(eXtreme Programming), Scrum, Kanban, Crystal, Lean

 

 


2. 스크럼(Scrum) 기법

agile 모형
팀원 스스로가 팀을 구성
개발 작업에 관한 모든 것을 스스로 해결
2~4주 정도 기간으로 진행되는 스프린트

 

(1) 제품 책임자 (PO. Product Owner)

- 요구사항이 담긴 백로그를 작성하는 주체
- 백로그에 대한 우선순위를 지정& 이해 관계자들의 의견을 종합

(2) 스크럼 마스터 (SM. scrum Master)

- 일일 스크럼 회의 주관
- 팀원들을 통제하는 것이 목표가 아님

(3) 개발팀(DT . Development Team)

- 제품 책임자와 스크럼 마스터를 제외한 모든 팀원
-최대 7~8명

(4) 스크럼 개발 프로세스

- 계획 회의 > 스프린트 > 일일 스크럼 > 스크럼 검토회의 > 스크럼 회고

 

 


3. XP 기법

eXtreme Programming

 

(1) 핵심 가치

- 용기 
- 단순성
- 의사소통
- 피드백
- 존중

 

(2) 기본원리

- whole Team (전체 팀)
-Small Releases ( 소규모 릴리즈)
- Test-Driven Development (테스트 주도 개발)
- Continuous Intergration (계속적인 통합)
- Collective Ownership (공동 소유권)
- Pair Programming (짝 프로그래밍)
- Design Improvement / Refactoring (디자인 개선 / 리팩토링)

 

 


4. 개발 기술 환경 파악

 

(1) 운영체제 (OS. Operating System)

- hw(x) / Sw(o)
- Windows, UNIX, Linux, Mac OS, Android
- 고려사항: 가용성, 성능, 기술지원, 구축 비용, 주변기기

 

(2) 미들웨어(Middleware)

- OS & applicion 사이에서 추가적인 서비스를 제공하는 소프트웨어

 

(3) 데이터베이스 관리 시스템 (DBMS. Database Management System)

- user와 db 사이에서 정보를 생성하고 db를 관리하는 sw
- DB의 구성, 접근 방법, 유지관레애 대한 모든 책임을 짐
- JDBC, ODBC 등이 있다 (DBMS 종류)
- Oracle, MySQL, MariaDB, 등등 (DB 종류)
- 고려사항: 가용성, 성능, 기술지원, 구축비용, 상호 호환성

 

(4) WEB Application Server (WAS)

- 정적인 콘텐츠를 처리하는 web server 와 반대됨
- 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어 (=SW)
- 데이터 접근, 세션 관리, 트랜잭션 관리 등을 위한 library 제공
- Tomcat, JEUS, WEbLogic, JBoss, Jetty, Resin 등이 있다
- 고려사항: 가용성, 성능, 기술지원, 구축비용

 

(5) 오픈 소스 (Open Source)

- 누구나 별다른 제한 없이 사용할 수 있도록 소스코드를 무료로 사용할 수 있게 공개한 것
- 고려사항:  라이센스 종류, 사용자수, 기술의 지속 가능성

 

 


5. 요구사항 정의

 

(1) 기능 요구사항

- 기능, 입력, 출력, 저장, 수행 등

(2) 비기능 요구사항

- 성능, 품질, 제약사항, 호환성, 보안 등

 

(3) 요구사항 개발 프로세스

 도출/추출(Elicitation) > [1] 분석(Analysis) > 명세(Specification) > [2] 확인/검증(Validation /Valification)

 

[ 1.  요구사항 분석 기법  ]

- 요구사항 분류
- 개념 모델링(UML)
- 요구사항 할당
- 요구사항 협상
- 정형 분석

[ 2. 요구사항 확인 기법 ]

- 요구사항 검토
- 프로토타이핑
- 모델 검증
- 인수 테스트( 알파 테스트/ 베타 테스트 )

알파 테스트 : 조직 내의 테스터가 수행. 개발자 위치에서 수행
베타 테스트 : 최종 사용자가 수행. 고객 위치에서 수행

 

 


6. UML (Unified Modeling Language)

 

(1) UML 구성 요소

[ 1 ] 사물 (Things)            [ 2 ] 관계 (Relationships)              [ 3 ]  다이어그램 (Diagram)

 

(2) 사물 ( UML 구성요소 1)

구조 / 행동 / 그룹 / 사물(주해)

 

(3) 관계 ( UML 구성요소 2)

연관 (ㅡ) / 집합 (◇) / 포함 (◆)
일반화 (ㅡ▷) / 의존 (-->) / 실체화 (--▷)

 

(4) 다이어그램 ( UML 구성요소 3)

- 구조적(정적)다이어그램

클래스, 객체, 컴포넌트, 배치, 복합체 구조 (Composeite Structure) 패키지
=> 컴포넌트 다이어그램& 배치 다이어그램은 구현 단계에서 사용 되는 다이어그램

 

- 행위(동적)다이어그램

유스케이스(사용사례), 시퀀스(순차), 커뮤니케이션(협업), 상태, 활동

 

 


7. 사용자 인터페이스 (UI. User Interface)

 

(1) UI 구분

- CLI (Command Line Interface) : 텍스트 형태로 이뤄진 interface
- GUI (Graphic User Interface) : 마우스로 선택해 작업하는 그래픽 환경의 interface
- NUI (Natural User Interface) : 사용자 말/ 행동으로 기기 조작하는 interface
- VUI (Voice User Interface) : 사람의 음성으로 기기 조작하는 interface
- OUI (Organic User Interface) : 모든 사물&사용자 간의 상호작용을 위한 interface

 

(2) UI 기본 원칙

직관성 , 유효성 , 학습성 , 유연성

 

(3) Web의 3요소

- 웹 표준 (Web standards)
- 웹 접근성 (Web Accessibility)
- 웹 호환성 (Coss Browsing)

 

(4) UI 설계 도구

- 와이어프레임: 레이아웃을 협의하거나 공유하기 위해 사용
- 스토리보드: 최종적으로 참고하는 작업 지침서/ 작업 산출물(Description)
- 프로토타입: 인터렙션을 정용해 실제 구현된 것처럼 테스트가 가능한 동적인 모형
- 목업: 실제 화면과 유사한 정적인 모형
- 유스케이스: 사용자 측면 요구사항(유스케이스 명세서) 을 다이어그램 형식으로 묘사

 

(5) UI 프로토 타입

장점

사용자를 설득&이해 쉬움. 개발 시간 단축. 사전 오류 발견 가능

단점

반복적인 개선/보안작업 > 작업 시간 증가 및 자원 소모. 부분적인 프로토타이빙으로 인한 중요한 작업 생략 가능

* 페이퍼 프로토타입, 디지털 프로토 타입, HTML/CSS

 

(6) UI 시나리오 문서 요건

- 이해성: 누구나 쉽게 이해할 수 있도록 설명
- 완전성: 최대한 상세하게 기술
- 일관성: 일관성을 유지
- 가독성: 표준화된 템플릿 등을 활용하여 문서를 쉽게 읽을 수 있도록 해야함
- 수정 용이성: 수정 및 개선이 쉬워야 함
- 추적 용이성: 변경사항에 대해 쉽게 추적할 수 있어야 함

 

(7) 기타

- HCI

사람과 컴퓨터의 상호작용을 연구해서 사람이 컴퓨터를 편리하게 사용하도록 하는 학문

- UX
: 사용자가 시스템/서비스를 이용하면서 느끼고 생각하는 총체적인 경험

주관성 / 정황성 / 총체성

- 감성공학
1류: 인간의 감성   /    2류: 심리적 기능   /    3류: 공학적 및 수학적 모델 & 객관적

 

 


7.  품질 요구사항

https://m.blog.naver.com/wook2124/222103002516

 

품질 요구사항 ★

p.76, 2-60, 20년 3회 기출문제 1) 국제 제품 품질 표준 ★ - ISO/IEC 9126 - ISO/IEC 12119 -...

blog.naver.com

 

 

 


8. 소프트웨어 아키텍쳐

사용자의 비기능적 요구사항으로 나타난 제약 반영
기능적 요구사항을 구현하는 방법을 찾는 해결 과정

 

1 ) 모듈화

- 시스템 기능을 모듈 단위로 나눠 SW 의 성능 및 재사용성을 향상

  • 모듈 크기 크면    > 모듈 개수 적음 > 모듈 간 통합 비용 적음 / 모듈 하나의 개발 비용 큼
  • 모듈 크기 작으면 > 모듈 개수 많음 > 모듈 간 통합 비용 큼 

 

2 ) 추상화

- 전체적이고 포괄적인 개념을 설계 후 차례로 세분화&구체화

과정 추상화: 자세한 수행 과정을 정의X. 전반적인 흐름만 파악
데이터 추상화: 데이터의 세부적인 속성/용도 정의 X. 데이터 구조를 대표하는 표현으로 대체
제어 추상화: 이벤트 발생의 정확한 절차나 방법 정의 X. 대표하는 표현으로 대체

 

3) 단계적 분해

- 추상화의 반복에 의해 세분화
- SW 기능에서부터 시작해 절차적으로 구체화
- 상세한 내역은 가능한 뒤로 미뤄 진행

 

4) 정보 은닉

- 한 모듈 내부에 포함된 절차&자료들의 정보가 감춰져 다른 모듈이 접근& 변경 못하도록 하는 기법
- 정보 은닉을 통한 독립적 모듈 수행 가능
- 모듈 변경 시 영향X  ->  수정/시험/유지보수 용이

 

 


9. 아키텍처 패턴

https://m.blog.naver.com/wook2124/222103003379

 

아키텍처 패턴 ★

p.102 1) 레이어 패턴(Layers Pattern) - 시스템을 계층(Layer)으로 구분하여 구성하는 고전적 방법 # ...

blog.naver.com

 

 

2024.02.15 - [정보처리기사[필기]/1과목_ 소프트웨어 설계] - [소프트웨어 설계 Chap.02]

 

[소프트웨어 설계 Chap.02]

2024.02.08 - [정보처리기사[필기]/1과목_ 소프트웨어 설계] - 소프트웨어 설계_ 1 [소프트웨어 설계 Chap.01] 1. 소프트웨어 생명 주기(SDLC. Software Development Life Cycle) (1) 폭포수 모형 (Waterfall Model) - 가장

mink02-study-recording.tistory.com