Author Archives: rkitenge91

Thea’s Pantry

The Thea’s pantry project is a very interesting project since it involves Worcester State University itself and as students who are graduating, it is for us an opportunity to leave behind something this valuable that will serve the university and its users in the coming future. I read about the User stories, and I am extremely pleased on how well detailed and organized this section is. I loved to see the different parts that need to be updated in the Thea’s Pantry log entry. I also read about the technology that will be used in this project. Some of them are very familiar like git and gitlab. Some were introduced to me recently like MongoB, Docker and openAPI. I am curious to learn about all these technologies and put them into practice as they are important in the software field.

Technology.md · main · LibreFoodPantry / Client Solutions / Theas Pantry / Documentation · GitLab

UserStories.md · main · LibreFoodPantry / Client Solutions / Theas Pantry / Documentation · GitLab

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

LibreFoodPantry

The idea of working with an open source project has always scared me a lot. The way we have been doing projects since freshman year – trusting the professor as our main if not only guide and him being confidential with our bugs, errors and insecurities has been a great comfort and way for me to grow. However, an open source project is completely different and I didn’t know how to get started with it. When reading about the 16 FOSSisms as values of the LibreFoodPantry, I learned so much about the benefits they bring to us as student learners, understood how valuable it is to serve the community with our knowledge and embrace the process of learning instead of being scared of not doing enough or doing things wrong. These values will allow us to do and be our best in this amazing project.

16 maxims from free and open source culture for education | Opensource.com

LibreFoodPantry | LibreFoodPantry

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

What is Inheritance in Programming?

Inheritance is a word that consists of the word “Inherit”, which means “To Derive”. So, Inheritance is defined as one class’s tendency to derive properties and characteristics from other classes. It provides additional functionalities to extract features from the base class and imply them into other derived classes significantly.

In computer programming, Inheritance is an eminent concept in Object Oriented provides a Programming (OOPS) Paradigm. It provides a mechanism for establishing relationships and building hierarchies of class in object composition. Inheritance means the use of code that is pre-written or created previously. And one thing to keep in mind is that we are just using the code and not updating or changing it. The functions and methods defined in one class may be used in manipulating other data members of the class.

What are the different types of Inheritance?

Here are some types of Inheritance:

  1. Single inheritance: One derived class inherits from one base class.
  2. Multiple Inheritance: One derived class inherits from many base classes.
  3. Multilevel Inheritance: one derived class inherits from other derived classes.
  4. Hierarchal Inheritance: More than one derived classes inherit from one base class.
  5. Hybrid Inheritance: A combination of more than one type of inheritance.

What are some advantages of Inheritance?

Here are some advantages listed of Inheritance:

  1. Frequent use of code written once, which means code reusability.
  2. One superclass can be used for the number of subclasses in a hierarchy.
  3. No changes to be done in all base classes; just do changes in parent class only.
  4. Inheritance is used to generate more dominant objects.
  5. Inheritance avoids duplicity and data redundancy.
  6. Inheritance is used to avoid space complexity and time complexity.

Why is Inheritance Important in Programming and why should we use it?

Inheritance is important in programming due to code reusability. We can avoid duplicate data and redundancy from our program. For example, if you live with your parents, then the father will be one base class, and you (as a child) will be the derived class. So, we can inherit many things such as last name, address line, city, and state from the parent class. We use inheritance to use specific portions of code and modify certain features according to our needs, and this can be done without any complexity. Inheritance provides flexibility in our code to reuse it from base class to required class.

Why do we need Inheritance?

  1. To reuse code, write code and apply it further, wherever necessary.
  2. To avoid duplicity and data redundancy in the program.
  3. To reduce space and time complexity.
  4. Easier in hierarchal programming paradigm.
  5. Variables of the same name can be used multiple times in the scope of the code.
  6. To create dominant data objects and functions.

I chose this topic because I already knew about Inheritance before due to my previous computer science classes and used it in my Java programming projects. I was just curious to dig in more and learn about its potential and importance in programming.

What are the Different Types of Inheritance? (with pictures) (wise-geek.com)

What is Inheritance in Programming | Object Oriented Concept (educba.com)

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

DRY PRINCIPLES

The DRY meaning “Don’t repeat yourself” principle is a best practice in software development that recommends software engineers to do something once, and only once. The concept, which is often credited to Andrew Hunt and David Thomas, authors of “The Pragmatic Programmer”, is the tongue-in-cheek opposite of the WET principle, which stands for “write everything twice”.

According to the DRY principle, every discrete chunk of knowledge should have one, unambiguous, authoritative within a system. The goal of the DRY principles is to lower technical best by eliminating redundancies in process and logic whenever possible.

Redundancies in logic

To prevent redundancies in logic (code), followers of the DRY principle use abstraction to minimize repetition. Abstraction is the process of removing characteristics until only the most essential characteristics remain.

Redundancies in process

To prevent redundancies in processes (actions required to achieve a result), followers of the DRY principle seek to ensure that there is only one way to complete a particular process. Automating the steps wherever possible also reduces redundancy, as well as the number of actions required to complete a task.

An important goal of the DRY principle is to improve the maintainability of code during all phases of its lifecycle. When the DRY principle is followed, for example, a software developer should be able to change code in one place and have the change automatically applied to every instance of the code in question.

As programmers, we collect, organize, maintain, and harness knowledge. We document knowledge in specifications, we make it come alive in running code, and we use it to provide the checks needed during testing.

Violations of DRY

“We enjoy typing” (or, “Wasting everyone’s time”.): “We enjoy typing”, means writing the same code or logic again and again. It will be difficult to manage the code and if the logic changes, then we have to make changes in all the places where we have written the code, thereby wasting everyone’s time.

How to Avoid DRY

To avoid violating the DRY principle, divide your system into pieces. Divide your code and logic into smaller reusable units and use that code by calling it where you want. Don’t write lengthy methods, but divide logic and try to use the existing piece in your method.

DRY Benefits

Less code is good: It saves time and effort, is easy to maintain, and also reduces the chances of bugs. One good example of the DRY principle is the helper class in enterprise libraries, in which every piece of code is unique in the libraries and helper classes. I chose this topic because as a programmer, it is always important to know why design principles are useful for us, what and how to implement them in our programming.

Software Design Principles DRY and KISS – DZone Java

The DRY Principle: Benefits and Costs with Examples (thevaluable.dev)

What is DRY principle? – Definition from WhatIs.com (techtarget.com)

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

HTML

What is HTML?

HTML meaning Hypertext Markup Language is used to create electronic documents that are displayed on the World Wide Web. Each page contains a series of connections to other pages called hyperlinks. It’s a form of computer language that’s used to make Web pages on the Internet viewable. It’s the fundamental technology behind everything you see in a web browser, and it’s used to build everything from simple web pages to complex web applications and services. HTML is easy to learn and understand. It’s the first and foremost language that the person will go through for the one who is learning web development.

What is the purpose and importance of HTML ?

HTML is the foundation of a website it contains the information that tells the browser what is on the page in terms of text, links, where to find images. We can also style individual words in HTML to make them bold, Italic, underline, etc. HTML allows images and objects to be embedded and can be used to create interactive forms.

HTML can embed scripts written in languages such as JavaScript which affect the behavior of HTML web pages. Web browsers can also refer to Cascading Style Sheets (CSS) to define the look and layout of text and other material. The World Wide Web Consortium (W3C), a maintainer of both the HTML and the CSS standards, has encouraged the use of CSS over explicit presentational HTML since 1997.

One of the biggest advantages of HTML is that it is free of cost, and there is no need to purchase specific software. HTML supports almost all browsers around the globe. So there is no need to worry about the website written in HTML for the browser support as the website would easily show up in all the browsers if the program keeps in mind to optimize the website for the different browsers. Another big advantage of HTML is that one can see the changes instantly just by saving it and reloading the previous HTML page. Unlike other programming languages, there is no need to run the whole code and find out where the error is. For example, if you have made the word italic, it will show up instantly on the page once saved and reload.

For the programmer to be either a frontend or backend developer, one must have knowledge of HTML as it is the basic language and all the other languages integrate with it while coding like JavaScript, JSP, Php, etc. In this class, we are using HTML and I was curious to learn more about HTML know why is it so important. I chose to talk about this because since I am doing a double major and learning more about software development. HTML is a tool that is mostly used in software and wanted to do my own research to learn more about it.

https://qsstudy.com/technology/html-and-its-importance

https://qsstudy.com/technology/html-and-its-importance https://www.sololearn.com/Discuss/1489610/what-is-the-importance-of-html

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

Front end/Back end: Difference

The front end of a website or application refers to the visual elements that users see and interact with. Front-end development, therefore, refers to the programming and management of the front end of a website or application to provide users with a rich interactive experience. They need to create a website’s entire interface and user experience, as well as its design and overall look. They usually work with HTML, JavaScript, and CSS languages to create a basic layout of the website and then add various visual elements to improve its esthetic quality.

Some performed tasks for a front-end developer include:

  1. Creating rough concepts and using HTML, CSS, and JavaScript to materialize them.
  2. Adapting a website’s design to look and function properly on mobile devices
  3. Optimizing the user’s experience on a website and making sure it’s not interrupted by any design or functionality issues.
  4. Developing an easy-to-use and intuitive user interface and gradually improving it based on user feedback
  5. Constantly testing the website’s front end for ease of use and potential errors and optimizing it to ensure a smoother user experience
  6. etc…

Back-end development refers to creating and ensuring the well-running of a website’s internal operations, which are hosted by a server. A website’s back-end is its server, application, and database, so a back-end developer focuses on setting up and maintaining databases, scripts, and the overall website architecture. 

The tasks of a back end developer include:

  1. Understanding what the website’s main objectives are and finding various ways to facilitate them
  2. Making sure that data is properly stored and that users who want to access it can do so quickly and easily
  3. Managing application programming interfaces and making sure they work across devices
  4. Organizing a website system’s logic and optimizing it to run properly on multiple devices
  5. Creating website architecture that can easily be modified with future upgrades
  6. etc…

What are some differences between front end and back end development:

  1. The front end refers to the graphical user interface required for navigating a website, including its overall layout, videos, images, text, buttons and every other visual element, whereas the back end solely refers to the way the website should function.
  2. Back-end development typically focuses on the application of logic to solve various functionality and user experience issues, while front-end development focuses on making the website look good and provide a positive user experience.
  3. Front-end development collects user input, while back-end development processes user inputs.
  4. Issues like search engine optimization and user accessibility are handled by front-end developers, while those related to the website’s security and backup are the responsibility of back-end developers.

I chose this topic because I was curious to learn more about the front end and back end and their importance in software development. Being a computer science major, and doing both concentrations, this is important information I need to know to be a good programmer. and develop my computer skills

Back-End vs. Front-End vs. Full-Stack Development: What’s the Difference? | Indeed.comWhat are front end and back end? Definition from WhatIs.com (techtarget.com)

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

Software Framework

A framework is similar to an application programming interface (API), though technically a framework includes an API. As the name suggests, a framework serves as a foundation for programming, while an API provides access to the elements supported by the framework. Also, a framework may include code libraries, a compiler, and other programs used in the software development process. There are two types of frameworks which are: Front end and back end.

The front end is “client-side” programming while a back end is referred to as “server-side” programming. The front-end is that part of the application that interacts with the users. It is surrounded by dropdown menus and sliders, is a combo of HTML, CSS, and JavaScript being controlled by our computer’s browser. The back-end framework is all about the functioning that happens in the back end and reflects on a website. It can be when a user logs into our account or purchasing from an online store.

Why do we need a software development framework?

Software development frameworks provide tools and libraries to software developers for building and managing web applications faster and easier. All the frameworks mostly have one goal in common that is to facilitate easy and fast development.

Let’s see why these frameworks are needed:

  1. Frameworks help application programs to get developed in a consistent, efficient and accurate manner by a small team of developers.
  2. An active and popular framework provides developers robust tools, large community, and rich resources to leverage during development.
  3. The flexible and scalable frameworks help to meet the time constraints and complexity of the software project.

Here are some of the importance of the framework. Now let’s see what are the advantages of using a software framework:

  1. Secure code
  2. Duplicate and redundant code be avoided
  3. Helps consistent
  4. developing code with fewer bugs
  5. Makes it easier to work on sophisticated technologies
  6. Applications are reliable as several code segments and functionalities are pre-built and pre-tested.
  7. Testing and debugging the code is easier and can be done even by developers who do not own the code.
  8. The time required to develop an application is less.

I chose this topic because I have heard many times about software frameworks and was intrigued by learning more about them, what they are, how they work, and what their importance is in the software development field. Frameworks or programming languages are important because we need them to create and develop applications.

Software Development Frameworks For Your Next Product Idea (classicinformatics.com)

Framework Definition (techterms.com)

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

CODE SMELLS

In class, we did some activities about design smells, their definition, and what they do. So I was interested and decided to dig deeper and learn more about different design smells. I was curious because as a computer science major, I think knowing about design smells is very important especially how to avoid them.

In computer programming, design smells, also known as “code smells” are structures in the design that indicate a violation of fundamental design principles and negatively impact the design’s quality. Code smells are not bugs or errors. Instead, these are absolute violations of the fundamentals of developing software that decrease the quality of code.

Code smells indicate a deeper problem, but as the name suggests, they are sniffable or quick to spot. The best smell is something easy to find but will lead to an interesting problem, like classes with data and no behavior. Code smells can be easily detected with the help of tools.

How to get rid of code smell?

Code smells can lead to a serious defect in a program, failure of the whole system, and many others.

Once all types of smells are known, the process of code review begins. Two or more developers may use the primary method, the ad-hoc code review process to try and identify such smells manually. Many smells are not possible to be found by manual reviewing and automated code review tools are used for identifying such bad smells.

Code smells knowing or unknowingly are introduced in the source code, and may also form if you are solving other smells. Developers discard most of the smells consciously because they seem to have a marginalized effect or are just too hard to explain.

When developers find smelly code, the next step they do is refactoring. Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the software yet improves its internal structure. It may be the single most important technical factor in achieving agility. The goal is to stay within reasonable operating limits with limited continual damage. By staying within these limits, you keep costs low, because costs relate nonlinearly to the amount of repair necessary. Refactoring is a process in which the code is divided into smaller sections according to the identified smells.

A decision is then made to either remove them or replace them with a better series of code that may increase code quality and enhance some nonfunctional quality simplicity, flexibility, understandability, performance. After refactoring, run tests to ensure things still work correctly. Sometimes this process has to be repeated until the smell is gone.

I chose this topic because, as a computer science major with a concentration in software development, knowing about code smells is very important. When writing codes, we are supposed to be aware of this, so when it happens we know what to do to get rid of them.

What is a Code Smell and How to Get Rid of It? – QATestLab

What are Code Smells? | How to detect and remove code smells? (codegrip.tech)

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

UML CLASS DIAGRAM

The UML Class Diagram is a graphical notation used to construct and visualize object-oriented systems. The UML (Unified Modeling Language) can help model systems in various ways. One of the more popular types in UML is the class diagram, which is popular among software engineers to document software architecture, class diagrams are a type of structure diagram because they describe what must be present in the system being modeled. The most positive point about UML or class diagrams, it is that it has been designed to be simple and easy to use.

When using the UML, the class shape itself while writing the code and it consists of a rectangle with three rows. The top is for the name of the class, the middle row contains the attributes of the class, and the bottom one expresses the methods or operations that the class may use. Classes and subclasses are grouped together to show the static relationship between each object.

Perspectives of Class Diagram

The choice of perspective depends on how far along you are in the development process. A diagram can be interpreted from various perspectives:

  1. Conceptual: which represents the concepts in the domain
  2. Specification: whose focus is on the interfaces of Abstract Data Type (ADTs) in the software.
  3. Implementation: which describes how classes will implement their interfaces.

Relationships between classes

Classes are interrelated to each other in specific ways. In particular, relationships in class diagrams include different types of logical connections. The following are the types of logical connections that are possible in UML:

  1. Association
  2. Directed Association
  3. Reflexive Association
  4. Multiplicity
  5. Aggregation
  6. Composition
  7. Inheritance
  8. Realization

I chose this topic because I am interested in Software Development and UML Class Diagram is an important tool for software engineer. Class diagrams are the heart of UML. They are based on the principles of object orientation and can be implemented in various phases of a project. During the analysis they appear as the domain model where they attempt to create a representation of reality.

Working on activities in class and homework on UML Class Diagram made me understand more easier how to write programming projects. It’s simple, easy to read and today I can write a code based on a UML diagram or design a UML diagram while writing a code based on what project I want to do. Class diagram gives a sense of orientation and provides detailed insight into the structure of the systems. Class diagrams are a vital part of any software development project and they form the foundation of all software products.

UML Class Diagram Tutorial | Lucidchart

Class Diagram Relationships in UML Explained with Examples (creately.com)

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.

Introduction

My name is Raissa Kitenge. I am a Computer Science major with a concentration in software development and Big data analytics.

From the blog CS@Worcester – Software Intellect by rkitenge91 and used with permission of the author. All other rights reserved by the author.