
Pornsiri Muenchaisri- Ph.D.
- Chulalongkorn University
Pornsiri Muenchaisri
- Ph.D.
- Chulalongkorn University
About
48
Publications
9,099
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
311
Citations
Introduction
Current institution
Publications
Publications (48)
Architecture smells are poor design of architectural structures which reveal negative impacts on software quality and increase risks of bugs and implementation problems in the future. Previous research defines and proposes various architecture smells and each one affects software quality in different aspects. Architecture refactoring is a process t...
A pull request is an important method for code contributions in GitHub that will be submitted when the developers would like to merge their code changes from their local machine to the main repository on which all source code in the project are stored. Before merging the code changes into the main repository, the developers have to request for a pe...
Software size is widely recognized as an important parameter for effort and cost estimation. Currently there are many methods for measuring software size including Source Line of Code (SLOC), Function Points (FP), Netherlands Software Metrics Users Association (NESMA), Common Software Measurement International Consortium (COSMIC), and Use Case Poin...
Software maintenance phase contains modifying, training and help supporting. In this phase when faults occur, users will notify the problem to software maintenance team. The team has to provide the users the estimated fault reparation time and then fix the problems. Fault reparation time of different kinds of faults may be varied due to fault types...
Software maintenance phase involves modifying and making changes to software due to requirements changes and/or defects reported by users. At this phase, when defects are uncovered, users will inform the problem to software maintenance team. The team has to provide the users the estimated fixing time and then fix the errors. Fault reparation/fixing...
The Software Engineering Education Workshop (SEEW) 2014 was held on 1st December 2014 at Jeju (South Korea). The worksho was co-located with The 21st Asia-Pacific Software Engineering Conference (APSEC 2014). The objective of SEEW is to create an annual discussion forum on Software Engineering (SE) Education in the Asia-Pacific region. The workshop...
The early versions of object-oriented software system may function correctly, but sometimes its internal structure may not be well designed. Some classes may be god classes with several different behaviors. God classes have low cohesion in which some of their methods should be moved to another class. Finding a target method of a class to be moved t...
Dynamic Software Product Line (DSPL) is intent to support adaptive software system to meet requirement changes and evolving resource constraints during runtime. The adaptation may be accomplished by reconfiguring adaptive behavior at adaptive point in feature model that describes variability of system. The decision making of dynamic variability man...
There are many stability models that are developed with a different of factors, indicators, and methods. The objective of this paper is to compare models for estimating class logical stability of software design in incremental development from class diagrams and sequence diagrams. The models are developed with different methods such as multiple reg...
Refactoring is the process of changing the internal structures, that preserves external behaviors of software. To improve software maintainability, we can apply several refactoring techniques to source code; applying different sequence of refactoring techniques to different parts of the source code results in different code changes and different le...
Refactoring is the process of changing the internal structure of software but it preserves external behavior of software. To improve software maintainability, we may apply several refactoring techniques to source code. Applying different sequence of refactoring techniques to different parts of source code results in different code changes and diffe...
This study proposed a new defect-detection approach using a declarative meta-programming technique to analytical learning for object-oriented software. The extrapolating patterns are generated using analytical learning in which certain design defect characteristics can be understood through deductive learning. This study uses declarative meta-progr...
Software maintainability is one of important factors that developers should concern because two-thirds of a software system's lifetime-cost involve maintenance. Understandability is one of sub-characteristics that can describe software maintainability. Aspect-oriented programming (AOP) is an alternative software development paradigm that aims to in...
Bad-smell prediction significantly impacts on software quality. It is beneficial if bad-smell prediction can be performed as early as possible in the development life cycle. We present methodology for predicting bad-smells from software design model. We collect 7 data sets from the previous literatures which offer 27 design model metrics and 7 bad-...
Class diagrams provide mainly graphical notations to represent design artifacts used as blueprints for object-oriented software development. The result gained from measuring modifiability of class diagrams in the early phase can be used as a prime indicator whether to redesign software in order to reduce cost of software maintenance in a later phas...
The following topics are dealt with: Requirements engineering; components; design; formal specification analysis; education; model checking; human computer interaction; software design and architecture; formal methods and components; software maintenance; software process; formal methods and design; server-based applications; review and testing; me...
An interactive system operates by an ongoing communication between its components which send and receive messages on their input and output channels. Stream functions describe the component's input/output behaviour mapping input streams to output streams. State transition machines describe the component's state-based implementation. We adapt classi...
Nowadays, many software developers and maintainers encounter with incomprehensible, unexpandable and unchangeable program structures that consequently reduce software quality. Such problems come from poor design and poor programming called design flaws. Design flaws are program properties that indicate a potentially deficient design of a software s...
Maintainability is an important factor that developers should be concerned because two-thirds of software costs involve maintenance. Aspect-oriented programming (AOP) paradigm is aimed to increase the software maintainability. It solves code tangling and code scattering problems by introducing a new modular unit, called "aspect". Various research w...
Good design can help developers maintaining software easier. Design heuristics are principles that promote the good software design. To ensure good design in a software product, metrics and measurement models are required to evaluate the software quality. This paper proposes a set of design heuristics violation check definitions to detect design fl...
Bad smells are software patterns that are generally associated with bad design and bad programming. They can be removed by using the refactoring technique which improves the quality of software. Aspect-oriented (AO) software development, which involves new notions and the different ways of thinking for developing software and solving the crosscutti...
Aspect-oriented programming (AOP) is a new programming paradigm that improves separation of concerns by decomposing the crosscutting concerns in aspect modules. Bad smells are metaphors to describe software patterns that are generally associated with bad design and bad programming of object-oriented programming (OOP). New notions and different ways...
The early phases of component-based software design focus on the interaction between the components and the environment. Each component is considered as a black box whose input/output behaviour is described by a stream transformer mapping input histories to output histories. Model checking is an automatic verification approach performed on a state-...
Threshold of software metrics can be used as indicators to identify possible anomalies in software. Aspect-Oriented (AO) Programming is a new programming paradigm that solved the crosscutting problem by decomposes the crosscutting concern in aspect module. Establishing the threshold of AO software metrics in order to identify anomalies in AO softwa...
Assessing maintainability at the design level will help software designers to decide if the design of the software should be altered for reducing cost of software maintenance in later phase. This paper presents a controlled experiment carried out to investigate whether aesthetic metrics can be indicators of class and sequence diagrams maintainabili...
Model checking is the verification approach for proving a satisfaction of desired properties on a finite state system model. Whenever a new feature (aspect) which is developed as a separated unit is composed to the original software for evolving to the next generation, the properties which held on the model of the original software should be re-che...
It is obvious that qualities of software design heavily affects on qualities of software ultimately developed. One of claimed advantages of object-oriented paradigm is the ease of maintenance. The main goal of this work is to propose a methodology for constructing maintainability model of object-oriented software design model using three techniques...
Nowadays risk assessment is one of software engineering processes that plays important role in software development life cycle. Applying risk assessment to software the earlier is the better. Developers should detect defects of software early at design phase so the improvement action such as refactoring can be taken. Constructing fault prediction m...
UML is a modeling language that most developers employed during the design phase. UML provides various types of diagrams used for specifying both the structure and the behavior of systems. During the development process, models specified by these diagrams are eventually transformed into corresponding code. Although there is much research on transfo...
Clustering analysis has rarely been studied as a technique for object identification methods, although it has been broadly employed in data classification in a wide range of research areas. In this paper, we propose a review of clustering analysis methods and a scheme for applying hierarchical clustering analysis to facilitate identification of can...
We designed and implemented a prototype software development
environment based on software component composition. Our software
development environment, the Entity-Relationship Software Development
Environment (ERSDE), uses extended entity-relationship diagrams (EERDs)
as templates of executable programs. An EERD represents the component
types and t...
We introduce a compositional approach to application software construction. In our approach, an extended entity-relationship diagram (EERD), which represents the component types and the relationship types within an application domain, is used as a template of executable programs in that application domain. As we use structural active objects as the...
A problem that always occurs in software maintenance process is the ripple effect, which is when one object changed thus affecting the other objects in the same program. Stability can be defi ned as resistance to the ripple effect. This is divided into two aspects: logical stability and performance stability. In this paper, we emphasize the logical...