Posts

Showing posts from March, 2025

Software Engineering Week 3

       From my professional and academic experiences, I’ve used PugJS and EJS, which are both simple templating engines. These engines are quite straightforward and allow you to create simple HTML like templates and pass a JSON object to enable dynamic rendering. However, React stands out from PugJS and EJS with a component-based architecture. This enables a reusable, modular UI design, allowing React to focus on building dynamic, client-side interactivity using features like state management and the Virtual DOM for rendering. While allowing for more advanced and intricate designs, React’s steep learning curve is quite daunting, especially for simpler projects where PugJS or EJS might suffice. Something I was unfamiliar with before using react was the “useState” and “useEffect” functions. With templating engines I was used to using fetch calls in a function before passing the results to the template to be rendered. Overall, React’s flexibility and power make it attra...

Software Engineering Week 2

 A mock is an object that is used when unit testing to simulate a dependency used in an application. A mock is useful in unit testing because it allows you to isolate a single method or class and simulate responses by mocking specific return values of a dependency to test for expected responses. In our Java applications this is done with the Mockito library. In addition, mocks allow for fast test execution. By mocking out a database connection for example, you ignore the latency induced by having to connect to a real database and interact with real data. By using a mock in this case, you can simulate a database connection, a database connection error, and test how a method responds when a database query returns specific values. 

Software Engineering Week 1

      Before starting the course, I expected to focus on the technical aspects of software development such as programming and detailed design. Especially writing requirements documents and software design documents. However, after completing the first week, my perspective has significantly shifted, particularly regarding the inclusion of the Agile methodology. I was surprised to see the extensive coverage of Agile principles including collaboration, iterative development, and organization. This instilled the idea that software engineering doesn't just involve writing code, but encompasses managing the entire software development lifecycle, teamwork and adapting to evolving requirements. While I am used to the Agile methodology being mostly handled by Project Engineers in a professional environment, it's been eye opening to delve into Agile principles and determine ways to improve my workflow.