시스템 모델링은 추상적인 모델을 개발하는 방법으로, 각각의 모델이 가지고 있는 서로 다른 시각을 반영한다. 시스템 모델링은 대부분 UML(Unified Modeling Language)에 기초를 두고 있다.
Context Model은 시스템의 영역을 나타내는 모델이다. 이 때 영역은 물리적인 영역이다. 밖에서 볼 때 보이는 영역들을 나타내는 방법이다. 이 방법을 통해 물리적인 영역과 어떻게 연결되어 있는지를 확인할 수 있다.

Process Model은 전체의 시스템을 하나로 본다. 작동 방식을 기준으로 시스템을 표현하는 방식이다. 전체적인 시스템이 어디에서 어디로 흘러가며, 어느 시점에 끝나고 되돌아가는지를 정리해둔다.

Interaction Models는 사용자와의 상호작용을 기준으로 정리해놓은 모델을 말한다. 사용자, 다른 시스템, 내부 요소들과의 상호작용을 중요시하여 관계를 적어놓은 모델이다.
Use Case Modeling은 시스템에서 사용자들이 원하는 상요작용을 모아서 정리한 모델을 말한다. 밖에 있는 사용자는 Use Case들중 하나로 시스템을 사용한다. 이런 사용하는 것들을 모아서 모든 가능성에 대해서 정리해놓은 모델을 의미한다.

Sequence Diagram은 상호작용에 대한 일련의 과정(sequence)을 기준으로 정리한 모델을 말한다. 사용자가 시스템을 이용하려고 하면, 시스템의 내부에서 일어나는 과정이 있다. 그 과정을 기준으로 정리해놓은 모델을 의미한다.

Structural Models은 시스템의 구조와 요소들을 표시하고 그들의 관계를 나타내는 모델이다.
Class Diagram은 대표적인 Static Model이다. Class는 어떠한 일을 수행하는 시스템의 단위이다. 이런 Class들 간에 어떠한 연관이 있고 어떻게 구성되는지를 보여준다. OOP(객체 지향 프로그래밍)로 개발할 때 많이 사용한다.

Behavioral Models은 동적인 행동들과 실제로 작동하는 방식을 중심으로 정리한 모델이다.
많은 시스템은 데이터를 기반으로 작동하곤 한다. Data-Driven Model은 정보(data)가 흘러가는 과정에 따라서 정리한 모델이다. 데이터가 시스템에 들어와서, 일련의 과정을 거치고, 가공되어 일을 하게 되는 과정을 중심으로 정리한다.

Even-Driven Model은 실제로 일어나는 여러가지 event들을 기준으로 정리한 모델이다. 실시간 기반 시스템에서 많이 사용한다. 유한개의 일어날 수 있는 event들을 정리하고, event에 따라서 변경되는 state를 나타낸다. 그렇기에 FSM(Finite State Automata)을 주로 사용한다.

State Machine Models는 외부와 내부의 event들에 대해서 말하고 그에 따른 모델의 행동을 정리하는 모델이다. 시스템의 상태를 나타내는 노드, 특정한 일인 이벤트가 있다. 이벤트에 따라 노드들을 이어주는 Transition이 존재한다. State Machine Model 또한 FSM으로 나타낵 적절하다.

MDE(Model-Driven Engineering)는 프로그램으로 접근하기 보단 특수한 모델로 개발을 하는 방법이다. MDE를 사용하면 코드를 많이 만들어내지 않는다. 대신 잘 만들어진 모델을 이용하여 자동으로 코드를 만들어낸다.
MDE는 아래와 같은 장단점이 있다.
MDE에서 사용하는 모델의 종류는 많이 있다. 대표적인 예시는 다음과 같다.

Structure design에서는 사용하는 기술과 그래픽에 따라 사용하는 방법 또한 달라진다. 대표적인 예시로 데이터가 중요하면 DFD, 기술적인 것이 중요하면 ERD, 변하는 상태가 중요하면 STD(FSM)을 사용한다. 어려운 전체 시스템을 쉽고 간편하게 해결하기 위해서 Top-Down Divide and Conquer 방식을 사용한다.