소프트웨어 공학 – 소개

OOAD: Object Oriented Analysis Design
성공하는 소프트웨어 프로젝트를 위해서 분석 및 설계를 한다.

Q. 성공하는 소프트웨어란?
Answer.
1. 클라이언트가 원하는 것, 일반 사용자가 원하는 것을 만들 수 있어야 한다.
2. 개발 기간 안에 완성하고 경제적으로 만들어야 한다.
3. 업데이트에 대해 민첩하게 대응할 수 있어야 한다. (소스 코드가 변경에 용이)

소프트웨어 공학
소프트웨어 프로젝트의 Analysis -> Design -> Implementation에 대해 다루는 학문

Analysis(분석): 사용자가 원하는 것이 무엇인지 파악하기
Design(설계): 어떻게 만들지를 표현하는 도면 그리기
Implementation(구현): 실제로 구현하기

Design의 효과: 클라이언트에게 보여주면서 요구사항을 정확하게 캐치할 수 있다. 개발자 입장에서 앞으로의 개발 방향도 알 수 있다.
ex) Paper Prototyping

소프트웨어 개발에 필요한 것
표기법(Notation)이 있고 절차(Process)가 있고 개발 도구(Tool)이 있어야 한다.
-> 프로그래밍 언어 혹은 분석 설계 언어가 있고 알고리즘이 있고 IDE가 있어야 한다.

UML
(그래픽으로 보여주는) 분석 설계 언어
-> 분석(사용자가 원하는 것이 무엇인지), 설계(어떻게 만들지)에 대한 정보를 나타내는 언어
ex) 유즈케이스 다이어그램, 시퀀스 다이어그램, 클래스 다이어그램

UML 기초와 응용 [3장] 연습문제
(Usecase Diagram)

소프트웨어 개발 과정

  1. 요구사항 분석
    주어진 문제를 파악하고 이해한다.
  2. 설계
    어떤 함수가 필요한지, 어떤 절차가 필요한지 고민한다.
  3. 구현과 단위 테스팅
    복잡한 문제에 대해서는 비슷한 과정을 반복(Iterative)하고 하나씩 풀면서(Incrementatal) 문제를 해결한다. 이후 각각 테스트한다.
  4. 통합 및 테스팅
    나눠서 구현한 문제들을 통합하고 평가한다.

프로그램이 더 복잡해지면?
1. 주어진 문제를 러프하게 이해하기
2. 주어진 문제를 여러 문제들로 나누기
3. 각각의 문제에 대해 (요구사항 분석, 설계, 구현과 단위 테스팅, 통합 및 테스팅)을 진행

RUP (Rational Unified Process)
Iterative하고 Incremental한 문제에 대한 프로세스

RUP – Rational Unified Process - elsener Mindcrafts

시간은 네 단계(phase)로 나눠진다.

  1. Inception
    요구사항을 분석하고 정리한다. 프로그램 컨셉을 선정한다.
    ex) 햅틱 폰은 ‘진동을 이용한 터치 피드백’을 컨셉으로 선정하였다.
    요구사항을 정리할 때는 Use case model을 이용한다.

  2. Elaboration
    분석 및 설계를 세밀하게 한다.

    2-1. Architectural Design이 Top level인 경우
    어떤 기능이 필요한지를 결정함
    ex) 스마트폰은 ‘멀티미디어 기능’, ‘그래픽 기능’, ‘블루투스 기능’, ‘음성 통화 기능’, ‘웹 브라우저 기능’ 등이 필요하다.

    2-2. Architectural Design이 Subsystem level인 경우
    어떤 엔진이 필요한지를 결정함
    ex) 웹 브라우저 기능에는 ‘Necko’, ‘GTK’ 등의 엔진이 필요하다.

    2-3. Architectural Design이 Modul level인 경우
    어떤 클래스가 필요한지를 결정함
    ex) ‘Necko’ 엔진에는 A,B,C 클래스들이 필요하다. (Class Diagram)

    API Design: 클래스를 소스 코드화하기 전에 클래스 내용을 정의하는 것
    (필드의 이름과 역할, 메소드의 이름과 역할 등)

  3. Construction
    코딩, 테스팅, 디버깅을 한다.

  4. Transition
    사용자의 테스팅 및 유지보수를 한다.

Leave a Reply

Your email address will not be published. Required fields are marked *