13.07.2015 Views

WWW/Internet - Portal do Software Público Brasileiro

WWW/Internet - Portal do Software Público Brasileiro

WWW/Internet - Portal do Software Público Brasileiro

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ISBN: 978-972-8939-25-0 © 2010 IADIS• On section 4, we present JAVA annotations and the annotations we proposed for the use case metamodelwe developed.• On section 5, we show how this technique can fit into a software development and maintenanceprocess and a case study and the results we obtained using this technique.• Finally, on section 6, we present this paper's conclusions and future work.2. RELATED WORKLagrein (Jermakovics, 2008) is a tool that allows visualizing software evolution and links requirements tocode expected to implement them. In order to map requirements into code it uses algorithms for LatentSemantic Indexing (LSI) (De Lucia, 2005). In our approach requirements are manually mapped bydevelopers, which require a bigger effort to obtain such visualization, but on the order hand, the result ismore precise.Rui (2007) developed a use case meta-model which, we use in our work, a process algebra to makechanges in use case that <strong>do</strong> not affect its semantics, a set of use case refactorings and a use case refactoringtool which is quite helpful in evolving software requirements. However, it <strong>do</strong>es not deal with mappingrequirements to code.Canfora and Di Penta (2007) wrote a paper on the frontiers of reverse engineering where they present themain developments in the area and highlighted key open research issues for the future. They showed thatmodern languages while allowing to get information from the code without the need to instrument it (usingJAVA reflection for example), they make it harder to analyze the program as the static view can not be usedto infer the dynamic view, requiring both kinds of analysis.Fahmi and Choi (2007) presented the importance of reverse engineering in the software evolution as akey element to manage with the requirements changes and proposed a process model where reverseengineering is a fundamental part of it.Schwarz (2008) presents how traceability is key to successful software evolution reinforcing whatCanfora, Di Penta (2007), Fahmi and Choi (2007) predicted in their research and presents a meta-model thatrepresent software development artifacts which can be used to query change impact.Liu (2005) presents a technique for reengineering requirements of legacy systems which relies on a top<strong>do</strong>wnblack-box approach that involves using the system and interviewing users. It assumes that no<strong>do</strong>cumentation or source-code is reliable.3. USE CASE META-MODELUse cases are used in many different ways. Although OMG has attempted to formalize use cases in UML,there is still a lot of room for subjectivity (Rui, 2007). Our Use Case meta-model was largely based on Rui(2007) Use Case meta-model, which was changed and simplified to fit the limitations on annotationmodeling and to reify entities, which could be explicitly represented in the source code. Rui (2007) defines 3levels from where the use case can be viewed:• Environment Level – where the use case is related to entities external to the system;• Structure Level – where the internal structure of the use case is defined;• Event Level – represents a lower abstraction level with individual events.In our model the environment level is represented by the following entities:• Use Case, which models a usage situation where one or more services of the target system are usedby one or more users with one or more goals in mind. As an use case represents an interaction between theuser and the system it is spread in several different parts of the source code. For that reason, we inverted thedependency and the use case is represented in our model as an attribute of the system service;• Actor, which is a role played by a system user which is also represented as an attribute of the systemservice;• System Service is a system functionality and the policies controlling its usage.The structure level is represented the following entities:288

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!