Send the link below via email or IMCopy
Present to your audienceStart 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.
Make your likes visible on Facebook?
You can change this under Settings & Account at any time.
Transcript of Untitled Prezi
Code & design smells
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#
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
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 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.
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.
Software Engineering Methodology
Why software Engineering Methodology?
This project's characteristics.
>> Team Size
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.
> 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.
 E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns—Elements of Reusable Object-Oriented Software, first ed. Addison-Wesley, 1994.
 M. Fowler, Refactoring—Improving the Design of Existing Code, first ed. Addison-Wesley, June 1999.
 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.
 R.S. Pressman, Software Engineering—A Practitioner’s Approach, fifth ed. McGraw-Hill Higher Education, Nov. 2001.
 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.
 R. S. Pressman. Software Engineering: A Practitioner’s Approach. McGraw Hill, June 2000.
 R. Marinescu, “Detection Strategies: Metrics-Based Rules for Detecting Design Flaws,” Proc. 20th Int’l Conf. Software Maintenance, pp. 350-359, 2004.