Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 53 additions & 9 deletions docs/Design/SoftArchitecture/MG.tex
Original file line number Diff line number Diff line change
Expand Up @@ -157,12 +157,56 @@ \subsection{Anticipated Changes} \label{SecAchange}
change.

\begin{description}
\item[\refstepcounter{acnum} \actheacnum \label{acHardware}:] The specific
hardware on which the software is running.
\item[\refstepcounter{acnum} \actheacnum \label{acInput}:] The format of the
initial input data.
\item ...
\end{description}
\item[\refstepcounter{acnum} \actheacnum \label{acUserInterface}:] The user interface of the plugin. Enhancements may be required to improve usability or accommodate new features. Specific anticipated changes include:
\begin{itemize}
\item \textbf{Refactoring Suggestions Display}: Updates to how refactoring suggestions are presented, such as side-by-side views of original and refactored code.
\item \textbf{Theme Support}: Adding compatibility with various VS Code themes, including light and dark modes.
\item \textbf{Visual Indicators}: Implementing color-coded indicators to highlight the impact of energy savings for each refactoring suggestion.
\item \textbf{Interactive Elements}: Introducing interactive components like tooltips or progress indicators to guide users during the refactoring process.
\item \textbf{Customization Options}: Allowing users to configure UI elements, such as adjusting the sensitivity of code smell detection or selecting preferred refactoring styles.
\end{itemize}

\item[\refstepcounter{acnum} \actheacnum \label{acVSCodePlugin}:] The VS Code plugin's
functionality. Future versions may expand to support more complex refactorings
or additional code smells that users can address with minimal setup. Changes
may involve adding more customizable user settings.

\item[\refstepcounter{acnum} \actheacnum \label{acRefactorers}:] The refactorers responsible
for detecting and fixing specific code smells. As more code smells are identified
and refactoring techniques are developed, new modules may be added or existing
ones may evolve. For example:
\begin{itemize}
\item \textbf{Base Refactorer} \label{acBaseRefactorer}: Updates to the base refactorer module to
support new refactoring patterns or improved algorithms.
\item \textbf{Complex List Comprehension} \label{acComplexListComprehension}: Adding or modifying
the logic for simplifying complex list comprehensions.
\item \textbf{Long Element Chain} \label{acLongElementChain}: Refining the logic to handle longer
chains of elements and optimize their readability and performance.
\item \textbf{Long Lambda Function} \label{acLongLambdaFunction}: Improvements to better handle
long lambda functions, making them more efficient and readable.
\item \textbf{Long Message Chain} \label{acLongMessageChain}: Extending the module's ability
to identify and refactor long message chains.
\item \textbf{Member Ignoring Method} \label{acMemberIgnoringMethod}: Enhancements to the
module for detecting methods that ignore members, optimizing the code structure.
\item \textbf{Repeated Calls} \label{acRepeatedCalls}: Optimizing detection and handling
of repeated function calls to improve performance.
\item \textbf{String Concatenation in Loop} \label{acStringConcatenationInLoop}: Adjusting
the refactorer's logic to improve handling of string concatenation within loops.
\item \textbf{Long Parameter List} \label{acLongParameterList}: Future extensions to handle
complex parameter lists in a more structured manner, perhaps allowing for simplifications.
\end{itemize}

\item[\refstepcounter{acnum} \actheacnum \label{acSmell}:] The core logic
for identifying specific code smells. As the system evolves, new code smells may be added to the system’s detection capabilities, necessitating changes to this module.

\item[\refstepcounter{acnum} \actheacnum \label{acAnalyzer}:] The analyzers used to
gather metrics and assess code quality.

\item[\refstepcounter{acnum} \actheacnum \label{acTesting}:] The testing module
responsible for ensuring the correct functionality of the refactorers. As new
features and code smells are added, this module may need updates to test these
changes thoroughly.
\end{description}

\wss{Anticipated changes relate to changes that would be made in requirements,
design or implementation choices. They are not related to changes that are made
Expand All @@ -178,9 +222,9 @@ \subsection{Unlikely Changes} \label{SecUchange}
decisions will be changed.

\begin{description}
\item[\refstepcounter{ucnum} \uctheucnum \label{ucIO}:] Input/Output devices
(Input: File and/or Keyboard, Output: File, Memory, and/or Screen).
\item ...
\item[\refstepcounter{ucnum} \uctheucnum \label{ucPlatform}:] Transitioning from VS Code to another IDE. The plugin is tightly integrated with VS Code's API, making such a change complex.
\item[\refstepcounter{ucnum} \uctheucnum \label{ucCoreLogic}:] Fundamental changes to the core logic of code smell detection. The current architecture is designed around widely accepted principles of software quality.
\item[\refstepcounter{ucnum} \uctheucnum \label{ucPluginType}:] Changing from a plugin-based architecture to a standalone application. This would require rethinking the entire deployment and user interaction model.
\end{description}

\section{Module Hierarchy} \label{SecMH}
Expand Down