Software system analysis for identifying software functionality in source code remains a major problem in the reverse engineering literature. The early approaches for extracting software functionality mainly relied on static properties of software system. However, the static approaches by nature suffer from the lack of semantic and hence are not appropriate for this task. This paper presents a novel technique for dynamic analysis of software systems to identify the implementation of certain software functionality known as software features. In the proposed approach, a specific feature is shared by a number of task scenarios that are applied on the software system to generate execution traces. The application of a sequential pattern mining technique on the generated execution traces allows us to extract execution patterns that reveal the specific feature functionality. In a further step, the extracted execution patterns are distributed over a concept lattice to separate feature-specific group of functions from commonly used group of functions. The use of lattice also allows for identifying a family of closely related features in the source code. Moreover, in this work we provide a set of metrics for evaluating the structural merits of the software system such as component cohesion and functional scattering. We have implemented a prototype toolkit and experimented with two case studies Xfig drawing tool and Pine email client with very promising results. deals with task scenarios that formulate the user-system interactions in an informal or semi-formal manner. The approaches to dynamic analysis cover areas such as performance optimization [25], software execution visualization [23], and feature to code assignment [13], where in this work we address the latter problem. Typically, to understand the implementation of a certain feature of a system, maintainers refer to the documentation of the software system which is tedious and is not applicable in many cases. In this paper, we propose a novel approach to dynamic analysis of software systems, in order to identify the implementation of the software features without any prior knowledge about its source code implementation. In this context, dynamic analysis is performed by executing a group of well-defined task scenarios on the software system and by analyzing the execution results. Dynamic analysis with its characteristics to extract system functionality has several challenges compared to the static analysis: (i) in static analysis usually a complete set of software facts are generated through parsing or lexical analysis of the source code based on a domain model, whereas in dynamic analysis only a small subset of the possible dynamic traces are extracted; (ii) obtaining meaningful knowledge from the extracted execution traces is a difficult task that restricts the applicability of the dynamic analysis; and (iii) the large sizes of the execution traces caused by program loops and recursions may disable the whole dynamic analysis.In this work, we define a set of task sce...