• 제목/요약/키워드: refactoring

검색결과 66건 처리시간 0.022초

시스템 레벨 설계에서 리팩토링을 적용한 단계적 상세화 (A stepwise refinement method by applying Refactoring in system level design)

  • 김현종;공헌택;김치수
    • 한국산학기술학회논문지
    • /
    • 제12권6호
    • /
    • pp.2840-2850
    • /
    • 2011
  • 임베디드 시스템을 설계하기 위해서는 하드웨어 설계와 소프트웨어 설계를 동시에 진행하여 마지막으로 그들을 통합하여 시스템을 구축하는 하드웨어/소프트웨어 공동 설계라는 설계 방법을 사용한다. 본 연구에서는 기존의 임베디드 시스템 설계의 문제점을 분석하고 그 해결 방안으로 SpecC 기술을 이용한 시스템 레벨 설계 방법을 제안한다. 또한 시스템 레벨 설계의 단계적 상세화를 실현하기 위해 소프트웨어 공학의 리팩토링 기술을 적용하여 체계적이고, 구체적인 단계적 상세화 방법을 제시한다.

배드 스멜 코드 추출을 위한 코드 가시화 프로세스 구축 (Building a Code Visualization Process to Extract Bad Smell Codes)

  • 박지훈;박보경;김기두;김영철
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제8권12호
    • /
    • pp.465-472
    • /
    • 2019
  • 오늘날 많은 영역에서 소프트웨어의 사용 범위가 넓어짐에 따라 좋은 소프트웨어 (Good Software)의 개발은 매우 중요하다. 하지만 현실은 소프트웨어 개발의 모든 단계에서 요구사항의 변경이 자주 발생한다. 또한 빈번한 변경으로 인해 설계 복잡성이 증가하여 원래의 설계 목표보다 소프트웨어 품질이 저하될 수 있다. 이러한 문제 해결을 위해, 배드 스멜(Bad Smell) 코드 추출을 위한 코드 가시화 프로세스를 제안한다. 이 방법은 마틴 파울러의 배드 스멜을 기반으로 소스 코드를 식별하여 리팩토링 영역을 가시화 한다. 잦은 요구사항의 변경에도 리팩토링을 통한 소프트웨어의 설계 개선을 기대한다.

Voltage Balance Control of Cascaded H-Bridge Rectifier-Based Solid-State Transformer with Vector Refactoring Technology in αβ Frame

  • Wong, Hui;Huang, Wendong;Yin, Li
    • Journal of Power Electronics
    • /
    • 제19권2호
    • /
    • pp.487-496
    • /
    • 2019
  • For a solid-state transformer (SST), some factors, such as signal delay, switching loss and differences in the system parameters, lead to unbalanced DC-link voltages among the cascaded H-bridges (CHB). With a control method implemented in the ${\alpha}{\beta}$ frame, the DC-link voltages are balanced, and the reactive power is equally distributed among all of the H-bridges. Based on the ${\alpha}{\beta}$ frame control, the system can achieve independent active current and reactive current control. In addition, the control method of the high-voltage stage is easy to implement without decoupling or a phase-locked loop. Furthermore, the method can eliminate additional current delays during transients and get the dynamic response rapidly without an imaginary current component. In order to carry out the controller design, the vector refactoring relations that are used to balance DC-link voltages are derived. Different strategies are discussed and simulated under the unbalanced load condition. Finally, a three-cell CHB rectifier is constructed to conduct further research, and the steady and transient experimental results verify the effectiveness and correctness of the proposed method.

객체 지향 CASE 도구에 대한 재구조화 실험 (An Experiment in Refactoring an Object-Oriented CASE Tool)

  • 조장우;김태균
    • 한국정보처리학회논문지
    • /
    • 제6권4호
    • /
    • pp.932-940
    • /
    • 1999
  • 객체 지향 기법은 일반적으로 소프트웨어의 재사용성을 향상시킨다고 알려져 있다. 그러나 실제 객체 지향 소프트웨어를 재사용하기 위해서는 재구조화 과정이 필요하다는 사실이 점차 인식되고 있다. Refactoring은 객체 지향 소프트웨어의 재사용성과 유연성을 향상시키기 위하여 소프트웨어 시스템의 구조를 정제하는 과정이다. 본 논문에서는 이러한 Refactoring 기법을 기존에 구현된 바 있는 객체 지향 CASE(Computer Aided Software engineering) 도구인 OODesigner 버전 1.x에 적용한 연구 결과를 제시한다. 버전 1.x는 Rumbaugh의 OMT(Object Modeling Technique) 모델 중에서 객체 모델을 지원하며, 객체도표 작성, 클래스 자원에 대한 문서화, 자동적인 C++ 코드생성, 클래스 재사용을 위한 정보 저장소, C++코드의 역공학 기능들을 지원한다. 비로 버전 1.x가 요구되는 기능과 신뢰성에 문제가 없었으나 구조적인 관저에서 문제를 가지고 있었기 때문에 새로운 기능을 추가하고 유지 보수하는데 많은 어려움이 있었다. 그러므로 본 연구에서는 기존의 버전 1.x를 재구조화하여 보수 유지가 용이한 시스템 구조로 만들었다 본 논문에서는 재구조화의 필요성, 재구조화 과정, 재구조화 내용 그리고 재구조화 효과에 대해 기술하고, 기존의 OODesigner 버전 1.x 와 재구조화된 OODesigner 버전2.x를 소프트웨어 메트릭(metric)를 통해 비교 분석한 결과와 이 과정에서 얻은 경험들을 제시한다.

  • PDF

디자인 패턴을 이용한 리팩토링 사례 연구 (A Case Study on Refactoring using Design Patterns)

  • 유명환;정인정
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2002년도 추계학술발표논문집 (하)
    • /
    • pp.2031-2034
    • /
    • 2002
  • 소프트웨어가 대형화되고 복잡해짐에 따라 개발 과정에서 많은 요구사항이 발생되고 변화가 일어난다. 이러한 상황에서 소프트웨어는 유연성을 지니고 요구사항을 충족시켜야 한다. 그러나 추후에 발생할 요구사항을 모두 예견하고 충족시키는 것은 불가능하다. 이를 위해 기존 소프트웨어를 재사용하고 유연성을 높일 수 있도록 소프트웨어의 리펙토링(refactoring)을 해주어야 한다. 리펙토링은 행동(behavior) 변화가 없이 보호하고 소프트웨어를 효율적이고 유지보수가 쉽도록 전환하는 과정이다. 리펙토링에서 추상 슈퍼클래스 (abstract superclass)의 생성과 디자인 패턴을 이용함으로써 소프트웨어의 재사용성을 높여주고 유연성을 제공해 줄 수 있다. 본 논문에서는 사례 연구로써 표준프로파일 제공시스템의 통합검색부분에 추상 슈퍼클래스의 추출 및 생성, 디자인 패턴, 기존 프로그램의 합성 등의 방법을 적용하여 리팩토링을 하도록 한다.

  • PDF

서버 컴포넌트의 확장성 증가를 위한 재구성 기법 (Refactoring for Increasing Scalability in Server Components)

  • 권재은;김형호;배두환
    • 소프트웨어공학소사이어티 논문지
    • /
    • 제14권1호
    • /
    • pp.30-41
    • /
    • 2001
  • 서버의 확장성, 즉 제한된 자원으로 처리할 수 있는 클라이언트의 수는 서버의 성능과 유지 비용에 직접적인 영향을 끼친다. 확장성이 큰 서버를 구현하기 위해 서버 컴포넌트는 클라이언트의 상태를 유지하지 않아야 한다는 것은 널리 받아들여지고 있다. 그러나, 이러한 상태 비유지 컴포넌트를 생성하는 것에 대한 체계적인 방법이 전무한 실정이다. 따라서, 본 논문에서는 재구성(refactoring)을 이용하여 상태 유지(stateful) 서버를 상태 비유지(stateless) 서버로 변환시키는 체계적인 방법을 제시한다. 다음으로 여러 개의 컴포넌트를 찾고, 각각에 재구성을 수행하는 방법을 제시한다. 다음으로 여러 개의 컴포넌트로 구성된 서버에 위 방법을 적용할 수 잇는 알고리즘을 제시한다. EJB 기반의 간단한 은행 시스템에 재구성 방법을 적용하여, 상태 유지 서버가 상태 비유지 서버로 성공적으로 변환되는 모습을 보인다.

BMP 기반 엔티티 빈의 재사용성과 유지보수성 향상 방안 (Improving Reusability and Maintainability of Entity Bean in Bean-Managed Persistence.)

  • 김고운;이금석
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2003년도 춘계학술발표논문집 (하)
    • /
    • pp.1729-1732
    • /
    • 2003
  • EJB는 J2EE 기반의 분산 컴포넌트 모델로 재사용 가능한 소프트웨어이다. 그중 데이터베이스의 데이터를 객체화한 엔티티 빈 컴포넌트는 영속성에 따라 CMP와 BMP로 구분이 되는데, BMP는 영속성의 차이로 인해 CMP와 조립하기 어려워 재사용성이 떨어지고, 소스코드가 복잡해 유지보수가 어렵다. 본 논문에서는 EJB 컴포넌트 중에서 BMP를 기반으로 구현한 엔티티 빈에 Dual Persistent 엔티티 빈 패턴(Entity Bean Pattern)을 적용하여 재사용성을 향상시키고, 소스코드를 리팩토링(Refactoring) 하여 유지보수성 향상시키는 DPwR(Dual Persistence with Refactoring) 방법을 제안하였다.

  • PDF

A Catalog of Bad Smells in Design-by-Contract Methodologies with Java Modeling Language

  • Viana, Thiago
    • Journal of Computing Science and Engineering
    • /
    • 제7권4호
    • /
    • pp.251-262
    • /
    • 2013
  • Bad smells are usually related to program source code, arising from bad design and programming practices. Refactoring activities are often motivated by the detection of bad smells. With the increasing adoption of Design-by-Contract (DBC) methodologies in formal software development, evidence of bad design practices can similarly be found in programs that combine actual production code with interface contracts. These contracts can be written in languages, such as the Java Modeling Language (JML), an extension to the Java syntax. This paper presents a catalog of bad smells that appear during DBC practice, considering JML as the language for specifying contracts. These smells are described over JML constructs, although several can appear in other DBC languages. The catalog contains 6 DBC smells. We evaluate the recurrence of DBC smells in two ways: first by describing a small study with graduate student projects, and second by counting occurrences of smells in contracts from the JML models application programming interface (API). This API contains classes with more than 1,600 lines in contracts. Along with the documented smells, suggestions are provided for minimizing the impact or even removing a bad smell. It is believed that initiatives towards the cataloging of bad smells are useful for establishing good design practices in DBC.

리페이싱 : 다계층 아키텍처에서 표현 계층의 리팩토링 (Refacing : Refactoring of Presentation Layer in n-Tier Architecture)

  • 이욱진;박상현;이병정;김희천;우치수
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2004년도 가을 학술발표논문집 Vol.31 No.2 (2)
    • /
    • pp.376-378
    • /
    • 2004
  • 리페이싱은 다계층 아키텍처에서 클라이언트가 접하는 표현 계층을 리팩토링하는 것이다 즉 리페이싱은 표현 계층의 부적절한 구조 및 코드를 찾아내어 적절하게 개선하는 작업이다. 리페이싱은 1) 코드 가독성을 향상시키고, 2) 유지보수를 원활하게 하며, 3) 시스템이나 제품의 업그레이드 과정을 도와준다. 이 논문은 리팩토링을 참고하여, 리페이싱 절차를 제안하고, 실제로 카탈로그 중 하나인 '표현 계층과 업무 처리 계층(Business Logic Layer)의 분리' 카탈로그를 소개한다

  • PDF

메트릭을 이용한 리팩토링의 적용 (The Application of Refactoring Based on Metrics)

  • 이숙희;채흥석;권용래
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 가을 학술발표논문집 Vol.30 No.2 (2)
    • /
    • pp.256-258
    • /
    • 2003
  • 리팩토링은 외부로 나타나는 행위의 변화없이 내부구조를 바꾸어 소프트웨어의 품질을 높인다. 이러한 리팩토링을 언제, 어디에 적용하는가에 대한 결정은 유지보수자(maintainer)의 주관적인 직관에 따르기 때문에 이를 체계적으로 결정하는 것은 어렵다. 본 논문에서는 메트릭을 이용하여 객체지향 시스템에서 언제, 어떤 리팩토링을 적용할 것인가를 체계적으로 결정하는 방안에 대해서 논의한다. 리팩토링의 최종 결정권은 유지 보수자가 가지고 있으므로 리팩토링에 대한 결정을 보조하는 방안에 초점을 맞추었다. 그리고 본 논문에서 제안하는 방법을 6가지 대표적인 리팩토링에 적용시켜보았다.

  • PDF