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.

IADIS International Conference <strong>WWW</strong>/<strong>Internet</strong> 2010REQUIREMENTS ORIENTED PROGRAMMING IN AWEB-SERVICE ARCHITECTUREVinicius Miana Bezerra and Selma Melnikoff*USP/Mackenzie*USPABSTRACTThis paper presents a technique to facilitate requirements reverse engineering, increase requirements traceability andreduce requirements maintenance costs by <strong>do</strong>cumenting requirements directly in the source code. To accomplish that amapping between a requirements meta-model and web-service oriented architecture was developed using a set of JAVAannotations to indicate those architectural elements in the source code. Finally, this paper presents a case study where thisprocess was used to recover requirements of a legacy system for a big <strong>Internet</strong> service provider with no formalrequirement record.KEYWORDSRequirements Engineering, Web-Services, SOA1. INTRODUCTION<strong>Software</strong> Evolution consists in adapting software. <strong>Software</strong> is adapted to satisfy either: a new or updatedrequirement or to prevent and fix errors (Robbes, 2007). These requirement changes are either due to changesin the software environment or change in the user needs. Bennett (2000) reports a survey that shows that 75%of the software evolution is due to new or updated requirements.Requirements Engineering has emerged as an discipline that deals with the objectives, functionalities,qualities and constraints of a software system. Requirements engineering is concerned with elicitation,evaluation, specification, consolidation, traceability and evolution of such system requirements(Lamsweerde, 2008). Managing requirements evolution is an fundamental activity of any software system(Rui, 2007). It is crucial to manage this evolution to have requirements written in a format , so that they arereadable and traceable. Traceability is particularly important as a changing requirement calls for finding outthe code fragments where this requirement is implemented in order to correctly perform the change in thesoftware (Schwarz, 2008). As times passes by and the software evolves and adapts to ever-changing userrequirements and operating environment, the knowledge of the developed system held by the team starts toreduce either as an effect of the changes in the software or by people leaving the development team. Withouta good knowledge of the software, maintaining the architecture coherent becomes harder which increases thesoftware degradation process (Bennett, 2000)(Weber, 2005)(Yang, 2007)(Fahmi, 2007). Keeping goodrecord of requirements and how they are implemented becomes very important to reduce the softwaredegradation and maintenance costs (Schwarz, 2008)(Fahmi, 2007). It is specially important to know whatparts of the code are implementing each requirement. This knowledge make it easier to perform changes as itis easier to know what parts of source code need to be changed and what will be the impact of those changes(Lamsweerde, 2008)(Fahmi, 2007)(Daneva, 2006).This paper presents an approach to manage and <strong>do</strong>cument requirements when maintaining a JAVAsoftware system by placing annotations in the source-code. The requirements might not necessarily beformally <strong>do</strong>cumented in order to use this technique. In order to present this technique, we organized thispaper as follows:• In the next section, we present related work <strong>do</strong>ne in this field and how they related to our work.• On section 3, we present our use case meta-model, which was developed based on Rui (2007) andaltered so that it can be mapped into source code.287

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

Saved successfully!

Ooh no, something went wrong!