Loading presentation...

Present Remotely

Send the link below via email or IM


Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.


Untitled Prezi

No description

ahmad mousavi

on 11 June 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Untitled Prezi

Code & design smells
detection tool

Problem statement
Despite of several tools and techniques proposed by researchers and software experts, we still consider these problems as unresolved difficulties in software industry. We classify the problem into a number of sub problems as below:
The project aims to propose a tool in order to detect two number of famous code smells known as spaghetti code and Swiss Army knife and also provides helpful reports for engineers to facilitate the process of code refinement. The programming language for developing this tool is going to be Python 2.7 and the target programming language to assess is Microsoft C#
Literature review
Code and Design smells
Supervisor: Dr. Abu Bakar Md Sultan
Advisor: Dr. Jamilah Din

Anchor paper: Moha, Naouel, et al. "DECOR: A method for the specification and detection of code and design smells." Software Engineering, IEEE Transactions on 36.1 (2010): 20-36.
Software applications have always been in a cycle of refinement and changing. It is happening due to a number of reasons,
> users’ new expectations
> Technology revolution
> or even new market
policy or demands.
Modification side effects
A single modification might influence the whole application depends on the level of coupling and cohesion among the source code and components
As a consequence, in order to mitigate any probable threat,

> Coding standards,
> Best practices and
> Design patterns

were born
Code Smells and Anti-Patterns
However, opposite to design patterns, code and design smells —“poor” solutions to recurring implementation and design problems—may hinder their evolution by making it difficult for software engineers to carry out changes.
Code smells are pointers or symptoms of the possible presence of design smells.
. One Example
of a design smell is the Spaghetti Code anti-pattern, which is characteristic of procedural philosophy in object-oriented programming. Spaghetti Code is revealed by classes without structure that declare long methods without parameters.
What could be worse
this paper
> This Paper
This project intends to introduce a systematic and disciplined way of specifying and detecting method called DÉCOR and also an enhanced instance of this method called DETEX which is capable of automatic algorithm generation for detection.
The authors or researchers do not explain the analysis leading to the specifications of smells and the underlying detection framework.
The translation of the specifications into detection algorithms is often black box, which prevents replication.
The most concentration has been on specific domains of open source project, while many commercialized projects are not open source.
the authors do not present the results of their detection on a representative set of smells and systems to allow comparison among approaches. So far, reported results concern proprietary systems and a reduced number of smells.
Objective and Scope
a) To identify spaghetti code and Swiss Army Knife code smells in a non-Open Source programming language.

b) To represent results in form of charts and helpful reports.
Many publications have been written on types of smells and their impact.

>> Webster 1995 wrote the first book on smells
>> Riel 1996 defined 61 heuristics
>> Fowler’s book 1999, compiled 22 code smells
Available Static Code analyzers
>>> Travassos et al. 1999 introduced a process based on manual inspections

>>> Marinescu 2006 presented a metric-based approach

>>> Munro 2005 noticed the limitations of text-based descriptions and proposed a template to describe code smells systematically.

>>> Sahraoui 2006 proposed a language to detect violations of quality principles and smells in object-oriented systems.
> Methodology
Procedure and tasks

> At first step or (Description Analysis), we collect all properties of those two design smells mentioned in project scope and document it in a text/plane format. These are key concepts of smells in form of literature. Also we perform domain analysis for the language we used to assess.
> At second step or (Specification), that information achieved from step 1 will form taxonomy in order the have a meaningful classification of smells.
> At third step or (Processing), according to the taxonomy provided from previous step, we translate them into algorithms that can be directly applied for the detection.
> At fourth step or (Detection), the detection is performed on systems using the specifications previously processed and returns the list of code constituents (e.g., classes, methods) suspected of having smells.
> Last step or (Validation), the suspected code constituents are manually validated to verify that they have real smells.
> Methodology
Software Engineering Methodology
Why software Engineering Methodology?

This project's characteristics.
>> Time
>> Team Size
>> Iteration

According to aforementioned characteristic of project developer decide to hire Scrum methodology to develop the project. Scrum is one of the new agile methodologies, which is highly used in recent projects. It is the most efficient way to go from the concept to high quality code. In addition it forces developer to have comprehensive focus over document which is one of the most important attribute of the project.
Timing Detail
Expected result

> A collection of code smells in text/plane format.
> A taxonomy of domain specified smells.
> Robust smell detection algorithm.
> Robust system to utilize detection algorithms.
> Reporting services to depict detection results.
Gantt chart
[1] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns—Elements of Reusable Object-Oriented Software, first ed. Addison-Wesley, 1994.
[2] M. Fowler, Refactoring—Improving the Design of Existing Code, first ed. Addison-Wesley, June 1999.
[3] W.J. Brown, R.C. Malveau, W.H. Brown, H.W. McCormick III, and T.J. Mowbray, Anti Patterns: Refactoring Software, Architectures, and Projects in Crisis, first ed. John Wiley and Sons, Mar. 1998.
[4] R.S. Pressman, Software Engineering—A Practitioner’s Approach, fifth ed. McGraw-Hill Higher Education, Nov. 2001.
[5] Nguyen, Hung Viet, et al. "Detection of embedded code smells in dynamic web applications." Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering. ACM, 2012.
[6] R. S. Pressman. Software Engineering: A Practitioner’s Approach. McGraw Hill, June 2000.
[7] R. Marinescu, “Detection Strategies: Metrics-Based Rules for Detecting Design Flaws,” Proc. 20th Int’l Conf. Software Maintenance, pp. 350-359, 2004.
The End
Any Question
Full transcript