[소프트웨어 공학] 은행 사이트 만들기

HYEONG HWAN, MUN/ 10월 21, 2014/ 미분류/ 2 comments

소프트웨어 공학의 다양한 분야를 체험해 보고 이에 맞추어 제작해 보는 일을 하였다.

 

y1

<그림 : 소프트웨어 개발단계-저건 폭포수 모델>

 

 

y2

<그림 : 일반적인 소프트웨어 프로젝트 진행>

 

 

 

소프트웨어 프로젝트에 70%는 실패한다. (통계학적으로)

그러나 일반인들은 프로젝트를 하면 무조건 성공할 것으로 착각한다.

 

y3

<그림 : 소프트웨어 개발의 잘못된 통념>

 

 

y4

<그림 : 프로젝트 산정, 규모측정 방법중 일부 설명>

 

 

 

 

y5

<그림 : 프로젝트 통제. 현재 작업이 지연중인지 확인하고 작업완료시까지의 기간과 비용을 추정가능>

 


 

아무튼 은행 시스템을 개발해 보았다.

가상의 은행시스템을 개발한다.

개발자는 나.

 

*요구사항

일상생활에서 모든 업무를 처리할 때 IT 이용하고 있다. IT를 활용한 업무 처리는 신

속·정확하며, 데이터 일관성을 유지한다. 현재 IT은행은 은행원이 수작업으로 예금하기,

출금하기, 계좌이체하기, 통장정리 등을 시행하고 있다. 은행원이 수작업으로 은행 업무를

진행함으로써 업무 처리 속도가 늦고, 데이터 일관성을 유지하는데 어려움이 있다. 또한

계좌이체를 할 때 해당되는 은행에 가서 계좌 이체를 시행해 주어야하는 문제점이 있다.

은행 업무의 효율성과 신속성, 데이터 일관성, 보안 문제를 해결하기 위하여 새로운 은행

시스템이 필요하다. 이 은행 시스템은 standalone 형태의 어플리케이션으로 작성한다. 그

리고 추후 이를 확장하여 클라이언트/서버 형태의 어플리케이션으로 진행할 수 있도록 해

야한다.

 

*개발계획

IT은행 업무처리를 수작업으로 진행하고 있는데 이를 IT를 활용하여 자동화를 하고자 한다. 현재 시점에서 자동화를 하고자 하는 부분은 예금, 출금, 계좌이체, 통장정리 부분이다. 개발 기간은 8주로 하고 한다. 웹을 통해 보다 접근하기 쉽고 사용자의 편의성에 중점을 두고 개발할 예정이다.

 

*기대효과

- 은행 업무의 효율성 증진

- 은행 업무 처리의 신속성 및 데이터 일관성 유지

- 은행 업무 처리의 신뢰성 향상을 통한 은행 사용 증가

- 새로운 업무가 나왔을 경우 빠른 확장 가능

 

*생명주기모델

기본 생명주기 모델로 반복적 개발 모델을 이용한다. 현재 개발하는 IT은행 어플리케이션은 IT은행 업무의 일부를 개발하는 것으로, 이후 계속적인 개발이 요구된다. 이러한 특성을 반영하여 반복적 개발 모델을 적용한다. 그리고 소프트웨어 개발을 할 때에는 PHP언어로 개발함으로써 소프트웨어의 확장성과 재사용성을 이용하고자 한다. 이를 위해 분석과 설계 모델을 객체지향 개발 모델을 이용하고자 한다. 각 단계별 산출물은 검증을 통하여 다음단계의 실행에 참조되도록 한다. 각 단계 실행중의 요구사항 및 의견은 각 단계에서 적용 및 수렴하도록 한다.

 

*기능요구사항

- 로그인 기능

· 사용자의 아이디(ID)와 패스워드를 입력하여 로그인한다.

· 로그인 아이디와 패스워드가 없으면 회원가입을 통해 로그인 아이디와 예금계정을 획득 한다.

- 예금하기

· 사용자는 예금액을 입력하고 예금하기를 누르면 예금에 대한 처리를 한 후 현재의 잔고를 보여준다.

- 출금하기

· 사용자가 출금액을 입력하고 출금하기를 누르면 출금에 대한 처리를 한 후 현재의 잔고를 보여준다.

- 계좌이체하기

· 사용자는 계좌이체를 시행할 은행과 계좌이체 금액을 입력한 후 계좌이체를 누르면 계좌 이체에 대한 처리를 한다. 계좌이체는 계좌이체할 은행을 가상으로 만든 후 이를 처리하도록 한다.

- 통장정리하기

· 사용자가 통장정리 버튼을 누르면 현재동안 진행된 통장에 대한 리스트를 출력해준다.

 

*비기능요구사항

- IT에 익숙하지 않은 사용자도 사용가능해야 한다.

- 자료 처리는 1초 이내여야 한다.

*위험관리

y6
y7

-프로젝트 설계

*시나리오 및 시퀀스다이어그램

y8

 

*클래스 다이어그램 : 정제가 더 필요한데 소규모시스템이라 그냥 이정도로만 했다.

y9

 

*클래스 관계도 및 패키지 다이어그램

y10

 

 

 

*UI 설계

y11

 

 

*DB설계

y12

 


 

위의 내용을 본것과 같이

프로젝트 분석, 비용분석, 위험관리, 개발분석, 설계 등을 하는 PM(Project Manager)는

개발지식이 충분히 있어야한다.

 

개발 모르는 디자이너가 IT 프로젝트를 관리하겠다고 하면 그 프로젝트는 70% 확률로 일어나는 프로젝트 실패가 될것이다.

 


 

*구현

개발용으로 구축한 서버에서 작업했다.

 

웹과 DB를 분산했으며 (관리의 편의를 위해) 사양은 다음과 같다.

웹 : Ubuntu 12.04 LTS, Apache 2.2, PHP 5.3

DB : Windows, MySQL 5.6

 

객체지향 설계를 해야했기에 프레임웍을 사용하였습니다.

PHP가 원래 C기반의 코드이기 때문에 절차지향입니다. 이것을 요즘 트랜드에 맞는 객체지향 코딩을 하려면 프레임웍을 사용해야 합니다.

참고로 PHP는 1995년도에 나왔고 JSP는 2003년도에 나온 언어입니다. ASP.net등 최근에 나온 웹 언어들 모두 객체지향을 기반으로 두고 있습니다.

 

프레임워크 : CodeIgniter 2.1.3

 

*소스 탐색

y13

 

* 소스일부

PHP도 객체 지향 및 public, private, protected, package, namespace 등의 개념을 가지고 있으며 사용가능하다. (지금은 C++ 수준인듯)

y14

 

 


 

*결과화면

y15

 

- 데모사이트 :  http://tmp1.lael.be/itbank/

 


 

소프트웨어 테스팅도 하고 바탕으로 수정해서 개발해야하는데 그냥 여기서 개발종료.

2 Comments

  1. 정말 깔끔하게 잘 만드셨군요..
    PHP를 배우고 있는데
    이런 프로젝트가 있으면 정말
    공부하기 좋을것 같다는 생각이 드네요.
    혹시 괜찮으시다면 소소를 좀 얻고 싶네요..
    초면에 이런 부탁드리는게 좀 그렇지만
    부탁드립니다…^^
    감사합니다.

    1. 안녕하세요. 해당 소스는 공개하고 있지 않습니다.
      굳이 PHP공부를 하시려면 그누보드(http://sir.co.kr/bbs/board.php?bo_table=g5_pds)를 다운받아서 소스를 살펴보세요.

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*