Posts

CST438 Software Engineering: Week 8 (Final week)

 One of the most important things I learned is that software engineering is about much more than just writing code. While coding is a big part, there's a strong emphasis on documentation, understanding client needs, and getting continuous feedback. It’s about designing systems so others can easily improve them and applying principles like "low coupling and high cohesion" to keep things modular and maintainable.      Another key lesson was understanding the entire development process from end to end. This was the first time I worked with both the front end and back end together, fully grasping the HTTP protocol (including how methods like POST work), how JSON is used, and how the front end communicates with the back end. Seeing how everything fits from database interactions to deploying the app online—gave me a fascinating glimpse into the full workflow and a lot of practical experience.      Another important lesson was learning how to work as part of ...

CST438 Software Engineering: Week 7

 In my opinion, Agile and Plan-and-Document (Waterfall) differ mainly in flexibility and how teams approach change. Agile is more adaptable because it uses an iterative process where teams can revisit and improve work as they go, often defining features through user stories like “As a user, I want ___ so I can ___.” In contrast, the Plan-and-Document approach is more rigid, requiring teams to understand the full scope from the beginning and document everything upfront with little revisiting of earlier steps. After learning about both, I think most companies don’t rely completely on one method or the other but instead use a hybrid approach, which makes sense because one size doesn’t fit all and different projects require different levels of structure and flexibility.

CST438 Software Engineering: Week 6

This week we got to work with Selenium again and even though I hit a couple bugs, things started making more sense. I use Thread.sleep() which was good because without it the program runs so fast you can’t even see what Selenium is doing. Adding those sleeps slowed things down so I could watch the steps happen how the program enters the data and clicks buttons.  I also learned something about how our dialog box works. It is created when the page loads and stays hidden until we click the button to show it. For this project it works fine, but on a bigger system you’d probably handle it differently. The best part of the week was my group. After doing bad on the last assignment, this time we really communicated, worked together, and helped each other. It showed me that one bad week doesn’t mean the next one has to be the same. We can bounce back if we work as a team. 

CST438 Software Engineering: Week 5

 This week I learned about large scale testing and the wide range of methods used to get high fidelity system validation, including functional testing, multi-binary testing, browser and device testing, load and performance testing, exploratory testing, A/B testing, user acceptance testing, probes, canary analysis, disaster-recovery drills, and chaos engineering. I learned that a comprehensive test suite needs large tests to catch issues that unit tests cannot. I also gained first hand experience of the challenges of teamwork, like when communication is inconsistent or teammates are unavailable. Despite the frustration and burnout I have been feeling with team work, I’m working to stay professional, set team goals, and maintain communication. Overall, this week taught me both large scale testing strategies and the importance of managing team dynamics with patience.

CST438 Software Engineering: Week 4

One of the really interesting things about Google's code review process is how this review culture scales at such a massive company. Because every change is reviewed, it means even very experienced engineers get feedback loops, which keeps quality high and knowledge shared. Another interesting detail is that they have a sort of "ownership" model, where certain people are the go to approvers for parts of the codebase. That way, you know someone who really understands that area has given it a thumbs up. So  Google's code review is not just about checking code but it's also about building a robust, shared understanding of the entire system.

CST438 Software Engineering: Week 3

Describe what are the good points about using Git for source code management. What are possible problems that Git merge does not solve when merging code from different developers? Git is a popular distributed version control system used for managing source code. Some good points about using Git for source code management include its ability to track the complete history of commits and their metadata, allowing developers to easily review changes over time. You can revert to a previous commit if needed or create and switch between branches to work on new features safely. Git also allows you to pull the latest code updates that your team members have worked on. However, when merging code from different developers, Git cannot automatically resolve conflicts if multiple people modify the same line of code or make changes in the same section. These conflicts must be resolved manually by the developers.

CST438 Software Engineering: Week 2

  Hello, This week I learned about React. I learned that React is a JavaScript library used for building user interfaces and it makes web applications faster and more efficient by using a virtual DOM meaning that it only updates the parts of the page that change instead of reloading the whole page. This helps improve performance and gives users a smoother experience. At first, I found React a bit challenging to understand like concepts such as useEffect, hooks, props, and containers. However, I am starting to see how helpful they are once you understand how they work. I just have to practice more.  In my opinion, one of React’s biggest strengths is that it helps organize projects by breaking them down into reusable components which makes it easier to build and manage complex applications. Another strength is how efficiently it handles updates and interactions. But a weakness, is that React can be confusing for beginners because there are many new concepts to learn, and it ofte...