0% found this document useful (0 votes)
7 views

Assignment 2

Uploaded by

Daud Sajid
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Assignment 2

Uploaded by

Daud Sajid
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

School of Science & Technology

Software Re-Engineering
Assignment No. 2 “Reverse and Forward Engineering”
Course Code: SEN2021 Course Title: Software Re-Engineering

Class/Section: BSSE 7A Semester: 7TH


Instructor: Ms. Maria Deadline:
Saddiqua
Student Roll #: 032 Student Name: Muhammad Umar 032
070 Hashir Kayani 070
009 Ammar Bin Shahzad 009
Obtained Maximum 10
Marks: Marks:

Note 1: Plagiarism is strictly forbidden. Copies will end up in a zero mark.


Note 2: Submit in hard copy format. This is an individual effort.
Reference
Question CLO Marks
Q1 Title: Re-engineering a CMS System using Reverse 2 (10)
Engineering and Forward Engineering Techniques

Objective:
The goal of this assignment is to apply both reverse
engineering and forward engineering techniques to analyze
and enhance an existing Content Management System
(CMS). The assignment will assess your ability to understand
an existing system, identify its components, and implement
improvements or modifications.

Task 1: Reverse Engineering


1. Select existing CMS (e.g., Word Press, Joomla, Drupal, or
a custom CMS). 2. System Analysis:
- Analyze the architecture of the CMS by exploring its
source code and database structure.
- Identify key components such as the content
management interface, user authentication, role management,
and any integrations (e.g., third-party plugins).
- Use tools like SonarQube, phpMyAdmin, or similar to
assist with understanding the codebase and database.
3. Documentation:
- Create a system overview diagram (UML, flowcharts, or
DFDs) that outlines the current structure of the CMS. -
Document any dependencies, third-party libraries, or plugins
used in the CMS.
- Analyze at least two core functionalities of the CMS (e.g.,
content creation process or user role management) and
document how they currently work.
4. Code and Database Insights:
- Highlight any inefficiencies or outdated elements in
the code (e.g., redundant code, outdated libraries, and
database query inefficiencies).
- Provide a short analysis of potential security issues in
the current system.
Task 2: Forward Engineering 5.
Requirement Gathering:
- Based on the reverse engineering insights, propose at
least two enhancements to the CMS. These could be related
to performance optimization, security improvements, or
feature enhancements (e.g., better user experience, improved
content editing tools, or new integrations).
6. System Redesign and Refactoring:
- Redesign one aspect of the CMS architecture (e.g.,
improving database queries or refactoring a module for better
performance).
- Implement the proposed changes, following best
coding practices. Provide a clear explanation of why these
changes improve the system. 7. Function Development:
- Implement at least one new feature or enhancement
based on the gathered requirements. This could be a new
plugin, improved user interface, or added functionality such
as multilingual support or enhanced search capabilities.
8. Comparison: legacy system and targeted system in a form
of table
Task 3: Final Report
- Summarize the findings from both reverse engineering
and forward engineering activities.
- Provide a reflection on the challenges faced during
reengineering and how they were addressed.
- Include all documentation (diagrams, code snippets,
testing results) as appendices in the final submission.
Task 1: Reverse Engineering
1. System Analysis:

Architecture: Wix utilizes a cloud-based, closed-source architecture. It appears to employ a microservices


approach, separating functionalities like website editing, e-commerce, bookings, etc. They heavily use
JavaScript, likely with Node.js on the backend. The database technology is not publicly disclosed, but it's
likely a NoSQL database due to the diverse data types Wix handles.

Key Components:

Content Management Interface: Wix's drag-and-drop editor is its core component, offering a WYSIWYG
(What You See Is What You Get) experience.

User Authentication: Standard username/password, social logins (Google, Facebook, etc.).

Role Management: Wix offers different user roles (site owner, contributors, etc.) with varying levels of
access.

Integrations: Extensive app market and API access for third-party integrations (e.g., payment gateways,
marketing tools, analytics).

2. Documentation (of Two Core Functionalities):

Content Creation Process: Users select a template, then use the drag-and-drop editor to add, modify, and
arrange elements (text, images, videos, forms, etc.). Changes are saved automatically. Publishing makes the
website live.

User Role Management: The site owner can invite collaborators and assign roles with specific permissions
(e.g., edit content, manage SEO, access analytics). This allows for controlled collaboration and prevents
unauthorized changes.

System Block Diagram:

Figure 1 Block Diagram


Figure 2 Use Case Diagram
Figure 3 Sequence Diagram For Saving Image

Figure 4 Sequence Diagram For Saving Page


4. Code and Database Insights:

Inefficiencies/Outdated Elements: Speculative without code access. However, occasional performance


hiccups reported by users suggest potential areas for optimization.

Potential Security Issues: Wix has a good security track record. However, vulnerabilities are always possible
in any complex system. Black-box analysis limits our ability to pinpoint specific areas of concern.

Task 2: Forward Engineering (Wix.com Enhancements)

5. Requirement Gathering (Based on Reverse Engineering Insights):

 Enhancement 1: Improved Version Control: While Wix offers some version history, it could be
enhanced with more granular control, similar to Git. Users should be able to revert to specific past
versions, compare changes, and branch/merge different versions of their website. This would be
beneficial for collaborative projects and complex sites.

 Enhancement 2: Enhanced SEO Tools: Wix provides basic SEO features, but more advanced tools
could be integrated. For example, deeper SERP (Search Engine Results Page) analysis, competitor
analysis, keyword research tools, and content optimization suggestions would be valuable additions.

6. System Redesign and Refactoring (Conceptual):

 Redesigning the Content Management Database: We can hypothesize an improvement to how Wix
stores content. Instead of a monolithic structure (which we can only assume they might be using), a
more modular, component-based approach would increase flexibility and scalability. Content
elements could be stored as reusable objects, making it easier to manage complex designs and
personalize experiences.

Figure 5 Use Case Diagram


Figure 6 Sequence diagram Version Control

Figure 7 Sequence Diagram Seo


 Dependencies: Wix likely relies on numerous third-party libraries for JavaScript functionalities (React,
etc.), cloud services (AWS, GCP, Azure?), and CDNs. Specific details are unavailable due to the closed-
source nature.

7. Function Development (Conceptual Implementation of Version Control):

Wix could implement version control by storing snapshots of website data at various save points. These
snapshots would capture the state of the content, design, and settings. A version history interface would
allow users to browse, compare, and restore previous versions. This feature could be implemented using Git-
like principles but adapted to the Wix platform's architecture.

8. Comparison (Legacy vs. Targeted System):

Feature Legacy Wix Targeted Wix


Version Control Basic history Granular versioning, branching/merging
SEO Tools Basic features Advanced SERP analysis, competitor insights, etc.
Content Monolithic(?) Modular, component-based
Management
Overall Good platform Enhanced usability, scalability, and performance

Table 1 Comparison Between Reverse engineering and Forward Engineering

Feature Reverse Engineering Forward Engineering


Objective Understand existing system Create a new or improved system
Starting Point Existing system (code, binaries, documentation) Requirements and specifications
Process Analyze, deconstruct, document Design, develop, implement
Output System documentation, understanding of architecture, New or enhanced system,
identification of issues documentation
Focus "What is this?" "How to build this?"
Tools Debuggers, disassemblers, code analysis tools, UML IDEs, compilers, testing tools, design
tools tools
Information Existing system artifacts User needs, business goals, technical
Source specifications
Complexity Can be highly complex, especially with obfuscated code Varies depending on the project scope
Benefits Improved understanding of legacy systems, New functionalities, improved
identification of vulnerabilities, creating documentation performance, enhanced security, better
for poorly documented systems user experience
Challenges Incomplete information, complex code, obfuscation, lack Meeting requirements, managing
of documentation complexity, staying within budget and
timeline
Example Analyzing a compiled program to understand its Designing and building a new mobile
functionality application

You might also like