Author Archives: Aaron Nano

Navigating UML

I read the article Navigating Complex UML Diagrams: Tips and Tricks for Developers. This gives a lot of insights into practical strategies that you can use to maintain and understand UML Diagrams, specifically larger ones. This article focused on UML stereotypes and the organization of diagrams. UML stereotypes are an extension of standard UML elements. Developers use these to add more specific definitions. Stereotypes allow you to label a class, an interface, or a service component, etc.  This adds a layer to help the diagram effectively communicate the structure and intention of the code. The article also suggested using color coding for groups to emphasize relationships. Keeping your layout styles and naming conventions consistent and clear is also very important. UML allows architects and developers to show both the structure and behavior. These diagrams can be extremely important in a collaborative environment. Having a clear UML diagram would keep everyone on the same page and help avoid having to rework code. UML can also help show off early architectural flaws before you put time into a project. Since you can visualize the relations, dependencies, coupling, and flow before any of it is implemented, you can prevent issues. Many of my issues with coding come from the planning aspect of it. I plan on continuing to get better at making these diagrams because I feel they can have a very positive impact on my coding. It can be difficult to picture how different parts of a program will come together, and it can become very overwhelming very quickly. It’s also interesting how different UML diagrams serve unique purposes. Visual Paradigms, UML Practice Guide, says structural diagrams like class, component, and package diagrams are good for showing how different parts of a system fit together, while behavioral diagrams like sequence and activity show how things interact over time. With this separation, a developer can handle one part of the design at a time, instead of trying to understand everything at once. There also exist Artificial intelligence tools that can support UML. PlantText AI, Visual Paradigm Smart Assistant, and PlantText AI can help save time and reduce manual errors. In the future, I’m curious if this is something that will still be manually done, or if AI will spread deep into this too. I can’t see these diagrams ever losing importance, but I do question if humans are going to be directly making these in the future. Either way,  I am excited to practice these techniques and implement UML diagrams into my planning.

https://moldstud.com/articles/p-navigating-complex-uml-diagrams-tips-and-tricks-for-developers

From the blog CS@Worcester – Aaron Nanos Software Blog by Aaron Nano and used with permission of the author. All other rights reserved by the author.

Introduction

This is an introduction to my blog. I am taking software construction, design, and architecture, and I will be recording my blogs here. I am excited for what this class has to offer, and I hope I learn and grow!

From the blog CS@Worcester – Aaron Nanos Software Blog by Aaron Nano and used with permission of the author. All other rights reserved by the author.

Git

Version control is a vital component of modern software design and git is the most popular version control system. Git is essential. It allows you to safely experiment, track changes, and it creates an organized workflow for something that can become chaotic fast. In this blog post, I will be going over some Git basics and some practical uses of git.

Git tracks changes in your code. This allows you to be able to go back to any version of your code and restore it if need be. This also allows you to see who’s done what work. this can help keep people accountable. Multiple people are also able to work at the same time without overwriting each other’s work. This makes collaboration much easier. Branching and merging allow anyone to be able to work with anyone whether they are in the same room or across the globe. Git also can allow you to experiment with your code. Branches allow you to manipulate and test code, without touching the source main code.

Basic git commands

Saving in git is called committing. If you commit you save the current state of all your files and folders. you would use git commit -m “message” This message should be a description of the changes made in this commit.

git clone is used to clone your current repository

git add is going to tell git that I would like to add this file as one to track the next time I make a commit.

Using the git add and git commit commands in conjunction allows you to only save/commit specific files.

Git status will tell you what is currently happening in your repository. You use this to help find where you are in git.

Git push sends the changes made up to Git Hub. This compresses all the information and sends it up to Git Hub.

git pull is the opposite of git pull. This allows you to bring the latest version of the project to your workspace.

Forking allows you to create a copy of someone else’s repository onto your own account.

Merge conflicts: this happens when changes coming from different locations conflict.

The Video I used as a source Is an amazing resource. It takes all the basic concepts of git and boils it down in a very simple and effective manner. It also shows examples of everything being used and talked about in a practical setting. I am a visual learner so I found this extremely helpful. The video is 50 minutes long, but if you are able to, you can watch this in 25 minutes at 2x speed with captions. I recommend anyone who is interested in git to watch this video. Even if you are experienced, it is an amazing refresher and I will be using it to study git concepts for this class alongside our material. I watched this video before attempting a git-related homework assignment and it felt like I was using git differently. I felt confident when using the commands. Before there was much more trial and error and I second-guessed myself a lot. Although the resource I chose doesn’t have much new information, I found it extremely helpful and encouraged anyone taking software processes management to check out this video.

Referance: https://www.youtube.com/watch?v=NcoBAfJ6l2Q&t=15s

tags: Week-14 , CS@Worcester, CS-343

From the blog CS@Worcester – SPM blog by Aaron Nano and used with permission of the author. All other rights reserved by the author.

Clean Code: The Foundation to Readable Organized Code

As I look back at my older projects and code, the lack of organization and structure is missing. I’m thankful for my detailed comments, because that code would have taken much longer to read. In our course, we went over the principles and practices associated with writing and abiding by “clean code” strategies. To deeper my knowledge on this matter I ended up finding an article called “How to Write Clean Code – Tips and Best Practices(Full Handbook),” by German Cocca. I trust this resource, it comes from freeCodeCamp. I have used this website in the past and I think it is a very useful source of free information. I also trust the author because he is a full stack developer. This comes from his own blog.

This article states clean code is more than just code that can run and function. Clean code should be very easy to read, understand, maintain overtime, and breakdown. His pilers of clean code are effectiveness, efficiency and simplicity. While the focus of codding should always be the functionality of the code, this should also be done so wile optimizing resource usage and while maintaining clarity.

The most important information I took from learning about clean code in the class room, was the idea that If you have to comment code, you didn’t write it clear or efficient enough. This also goes with functions, functions should be kept as small as possible. This kind of thinking helped me step back and re-evaluate my codding approach. Because of this I feel i write more readable efficient code now.

This article also goes over a very important idea that had a similar effect on my codding as the last. This is the idea of SRP or single respnibility principle. This means every clas or module should onley have one job. If you need to validate orders, calculate a total, save data,these should all be done in their own separate methods classes or functions. This makes the code much more readable and it makes implementing these functions easier.

So far these concepts have also ben dissgussed or touched upon in my class, The concept of modularization was not. This involves breaking down complex code into much smaller pieces. This makes the code easier to test and understand. This allows you to test maintain and read the code all more efficiently. Folder structure was also not talked about in my class. Folder structure is crucial for keeping a clean scalable codebase. The structure should keep related files together based on their functionality. For example instead of organising by filetype, you would organise by feature types. If every feature has its own place, it will be easier to go back and modify it.

I enjoyed looking into this site because It layed everything out in a nice organised manor. It explained everything briefly enough to maintain my interest, but was indepth enough where I was getting the information and knowledge I needed. This website also provided nice code  examples for everything it mentions. 

Reference:

https://www.freecodecamp.org/news/how-to-write-clean-code/ – How to Write Clean Code – Tips and Best Practices(Full Handbook) by German Cocca

Tags: CS@Worcester, CS-343, Week-11

From the blog CS@Worcester – SPM blog by Aaron Nano and used with permission of the author. All other rights reserved by the author.