• Title/Summary/Keyword: Reusable Code

Search Result 37, Processing Time 0.029 seconds

Deterministic Parallelism for Symbolic Execution Programs based on a Name-Freshness Monad Library

  • Ahn, Ki Yung
    • Journal of the Korea Society of Computer and Information
    • /
    • v.26 no.2
    • /
    • pp.1-9
    • /
    • 2021
  • In this paper, we extend a generic library framework based on the state monad to exploit deterministic parallelism in a purely functional language Haskell and provide benchmarks for the extended features on a multicore machine. Although purely functional programs are known to be well-suited to exploit parallelism, unintended squential data dependencies could prohibit effective parallelism. Symbolic execution programs usually implement fresh name generation in order to prevent confusion between variables in different scope with the same name. Such implementations are often based on squential state management, working against parallelism. We provide reusable primitives to help developing parallel symbolic execution programs with unbound-genercis, a generic name-binding library for Haskell, avoiding sequential dependencies in fresh name generation. Our parallel extension does not modify the internal implementation of the unbound-generics library, having zero possibility of degrading existing serial implementations of symbolic execution based on unbound-genecrics. Therefore, our extension can be applied only to the parts of source code that need parallel speedup.

A Technique to Specify and Generate .NET Components in MDA/PSM for Pervasive Service (MDA/PSM상에서 퍼베이시브 서비스를 지원하는 닷넷 컴포넌트의 명세 및 생성 기법)

  • Kum, Deuk-Kyu;Kim, Soo-Dong
    • Journal of KIISE:Software and Applications
    • /
    • v.34 no.7
    • /
    • pp.635-645
    • /
    • 2007
  • Component technology has been widely accepted as an effective way for building software systems with reusable components, and Microsoft (MS) .NET is one of the recent representative component technologies. Model Driven Architecture (MDA) is a new development paradigm which generates software by transforming design models automatically and incrementally. Transformation of structural models in MDA has been successfully applied. However, transformation of dynamic models and pervasive services, such as transaction service, security service, synchronization service and object pooling are largely remains as an area for further research. The recent enterprise system has multi tier distributed architecture, and the functionality of early mentioned pervasive services is essential for this architecture. .NET platform can implement Component Object Model+ (COM+) component for supporting pervasive services by specify Attribute code. In this paper, we specify the functionalities of the COM+ component offering pervasive services, and then those functionalities are defined by UML profile. By using the profile, the Platform Specific Model (PSM) for .NET/C# is specified, and .NET components are automatically generated through our tool. The development productivity, extensibility, portability, and maintenance of software can be dramatically improved by using of the proposed methods.

Framework Construction with Multimedia Component Management System on CORBA (CORBA 환경에서 멀티미디어 컴퍼넌트 관리 시스템을 통한 프레임워크 구축)

  • 김행곤
    • Journal of Korea Multimedia Society
    • /
    • v.2 no.2
    • /
    • pp.217-229
    • /
    • 1999
  • Framework is the set of interrelated classes, constructing reusable design in specific domain or set of abstracted classes, and defines common architecture among applications included in domain. Developers can reuse not only class code but also wide range of knowledge on domain by reusing framework. In this papers, we present COM(Component-Oriented Methodology) for the reuse of framework, and develop construction environment for framework and domain development. That is, domain is analyzed by input of domain knowledge on real world to create software based on component, and hotspot is identified through analyzed information, and redesigned(refactoring) by putting additional information on users and developers. After that, I will create domain framework and application framework depending on domain. In this Component-oriented methodology, information is searched, understood and extracted or composite through component-pattern library storage internally. Then this information is classified into the information on component and pattern respectively, and used as additional information in redesigning. With this, developer can obtain reusability, easiness and portability by constructing infrastructure environment that allow to register, update and delete component through Component Pattern Management System(CPMS) under the development environment which can be easily applied to his own application using multimedia component, in this thesis, CORBA(Common Object Request Broker Architecture) environment.

  • PDF

An Approach to Managing Requirements as a Core Asset in Software Product-Line (소프트웨어 프로덕트 라인에서 핵심 자산으로서 요구사항을 관리하는 방법)

  • 문미경;염근혁
    • Journal of KIISE:Software and Applications
    • /
    • v.31 no.8
    • /
    • pp.1010-1026
    • /
    • 2004
  • The goal of product line engineering is to support the systematic development of a set of similar software systems by understanding and controlling their common and distinguishing characteristics. The product line engineering is a process that develops reusable core assets and develops a set of software-intensive systems from a common set of core assets in a prescribed way. Currently, many software development technologies are accomplished in context of product line. However, much of the product line engineering research have focused on the reuse of work products relating to the software's architecture, detail design, and code. The product lines fulfill the promise of tailor-made systems built specifically for the needs of particular customers or customer groups. In particular, commonality and variability play central roles in the all product line development processes. These must be treated already during the requirement analysis phase. Requirements in product line engineering are basis of software development just like as traditional system development engineering, and basis of deciding other core assets' property - commonalities and variabilities. However, it is difficult to elicit, analyze and manage correct requirements. Therefore, it is necessary to develop systematic methods which can develop and manage requirement as core asset, which can be stable in anticipative change and can be well adapted to unpredictable change. In this paper, we suggest a method of managing requirements as core asset in product line. Through this method, the reuse of domain requirements can be enhanced. As a result, the cost and time of software development can be reduced and the productivity can be increased.

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

  • Jo, Jang-U;Kim, Tae-Gyun
    • The Transactions of the Korea Information Processing Society
    • /
    • v.6 no.4
    • /
    • pp.932-940
    • /
    • 1999
  • Object-oriented programming is often touted as promoting software reuse. However it is recognized that objected-oriented software often need to be restructured before it can be reused. refactoring is the process that changes the software structure to make it more reusable, easier to maintain and easire to be enhanced wit new functionalities. This paper desirbes experience gained and lessons learned from restructuring OODesigner, a Computer Aided Software Engineering(CASE) tool that supports Objects Modeling Technique(OMT). this tool supports a wide range of features such as constructing object modeler of OMT, managing information repository, documenting class resources, automatical generating C++ and java code, reverse engineering of C++ and Java cod, searching and reusing classes in the corresponding repository and collecting metrics data. although the version 1.x was developed using OMT(i.e the tool has been designed using OMT) and C++, we recognized that the potential maintenance problem originated from the ill-designed class architecture. Thus this version was totally restructured, resulting in a new version that is easier to maintain than the old version. In this paper, we briefly describe its restructuring process, emphasizing the fact that the Refactoring of the tool is conducted using the tool itself. Then we discuss lessons learned from these processes and we exhibit some comparative measurements of the developed version.

  • PDF

A Study on the Data Cleaning and Standardization of National Ecosystem Survey in Korea (전국자연환경조사 데이터 정제와 표준화 방안 연구)

  • Kwon, Yong-Su;Song, Kyohong;Kim, Mokyoung;Kim, Kidong
    • Korean Journal of Ecology and Environment
    • /
    • v.53 no.4
    • /
    • pp.380-389
    • /
    • 2020
  • Research on diagnosing and predicting the response of ecosystems caused by environmental changes such as artificial disturbance and climate change is emerging as the most important issue of biodiversity and ecosystem researches. This study aims to clean, standardize, and provide the results of National Ecosystem Survey which should be considered fundamentally in diagnosing and predicting ecosystem changes in the form of dataset. To refine and clean the dataset we developed a simple verification program based on the fifth National Ecosystem Survey Guideline and applied that program to the data from the second (1997~2005), third (2006~2013) and fourth (2014~2018) National Ecosystem Survey. Data quality control processes were implemented including (1) standardization of terminology, (2) similar data table integration, (3) unnecessary attribute and error elimination, (4) unification of different input items, (5) data arrangement in codes, and (6) code mapping for input items. These approaches and methods are the first attempt propose an option for ecological data standardization in Korea. The standardized dataset of National Ecosystem Survey in Korea will be easily accessible, reusable for both researchers and public. In addition, we expect it will contribute to the establishment of diverse environmental policies concerning environmental assessments, habitat conservation, prediction of endangered species distribution and ecological risks due to climate change. The dataset through this study is open freely online via EcoBank (nie-ecobank.kr) which is the first ecological information portal system in Korea developed by National Institute of Ecology.

A Scalable and Modular Approach to Understanding of Real-time Software: An Architecture-based Software Understanding(ARSU) and the Software Re/reverse-engineering Environment(SRE) (실시간 소프트웨어의 조절적${\cdot}$단위적 이해 방법 : ARSU(Architecture-based Software Understanding)와 SRE(Software Re/reverse-engineering Environment))

  • Lee, Moon-Kun
    • The Transactions of the Korea Information Processing Society
    • /
    • v.4 no.12
    • /
    • pp.3159-3174
    • /
    • 1997
  • This paper reports a research to develop a methodology and a tool for understanding of very large and complex real-time software. The methodology and the tool mostly developed by the author are called the Architecture-based Real-time Software Understanding (ARSU) and the Software Re/reverse-engineering Environment (SRE) respectively. Due to size and complexity, it is commonly very hard to understand the software during reengineering process. However the research facilitates scalable re/reverse-engineering of such real-time software based on the architecture of the software in three-dimensional perspectives: structural, functional, and behavioral views. Firstly, the structural view reveals the overall architecture, specification (outline), and the algorithm (detail) views of the software, based on hierarchically organized parent-chi1d relationship. The basic building block of the architecture is a software Unit (SWU), generated by user-defined criteria. The architecture facilitates navigation of the software in top-down or bottom-up way. It captures the specification and algorithm views at different levels of abstraction. It also shows the functional and the behavioral information at these levels. Secondly, the functional view includes graphs of data/control flow, input/output, definition/use, variable/reference, etc. Each feature of the view contains different kind of functionality of the software. Thirdly, the behavioral view includes state diagrams, interleaved event lists, etc. This view shows the dynamic properties or the software at runtime. Beside these views, there are a number of other documents: capabilities, interfaces, comments, code, etc. One of the most powerful characteristics of this approach is the capability of abstracting and exploding these dimensional information in the architecture through navigation. These capabilities establish the foundation for scalable and modular understanding of the software. This approach allows engineers to extract reusable components from the software during reengineering process.

  • PDF