Week 8 – CST438 Software Engineering List the 5 most important things that you learned in the course, and why you chose them. This course provided us with a comprehensive list of modern tools and practices for software engineering. We covered topics ranging from development methods to cloud deployment. The five most important things I learned in this course include Agile development, Plan and Document development, using GitHub for version control, using Spring and React along with Selenium for writing software, and AWS deployment. Learning how to apply Agile project development along with Behavior-Driven Development and Test-Driven Development gave me a deeper understanding of how to design software with the user in mind and ensure proper functionality through early testing. BDD helps ensure that the final product meets the expectations of stakeholders and TDD helps build confidence in the project by writing tests first. These practices encourage maintainability and reduce ...
Posts
- Get link
- X
- Other Apps
Week 7 – CST438 Software Engineering Describe some of the differences between using an Agile process and using a Plan and Document (or Waterfall) process. The are many differences between using an Agile process and using a Plan and Document process. Some of the more noticeable differences are found in their approach to planning, flexibility, and team structure. In an Agile process, development planning is iterative and ongoing. The project is broken down into short cycles called sprints that lasts one or two weeks. In P&D, the planning details are set for the entire development before any work begins. This is because each phase relies on the previous phase being completed, like a waterfall. Flexibility in an Agile process is high. The stakeholders are actively involved in the process to ensure the product meets their expectations. They provide continuous feedback which may change the project requirements. Due to the iterative nature, it is easier and...
- Get link
- X
- Other Apps
Week 6 – CST438 Software Engineering Write a weekly entry describing important things you learned this week. This week we read chapter 25, Compute as a service (Caas), from Software Engineering at Google. This chapter covers how Google uses compute as a service to abstract hardware issues which allows developers to deploy software without having to worry about the constraints of physical infrastructure. The chapter also brings up the concept of pets vs cattle. In this analogy, if your server is a pet, it is expected that you will look after it and nurse it back to health if something goes wrong with it. If your servers are cattle and something where wrong with it, you would use automation to replace it with a new one. They use this analogy to explain that developers must embrace the cattle and not pets mindset to make software scalable, resilient, and idempotent. From our assignment, Iteration 3 System Test, I learned how to deal with finding repeated React components that contai...
- Get link
- X
- Other Apps
Week 5 – CST438 Software Engineering Summarize in a few sentences what you have learned this week. From our textbook, this week we learned about larger testing. Large tests cover things that unit tests cannot. Unit tests make use of test doubles to eliminate hard to test dependencies. Issues can arise when replacing doubles with the real thing. Unit tests are also limited to the imagination of the engineer who writes them. This means that the test will only test for anticipated behaviors and inputs. In the real world, users come across unanticipated issues. Another detail restricting unit tests is the environment in which it is implemented which is designed to be fast and reliable. This deliberately eliminates the chaos of real dependencies, networks, and data. In contrast, large tests provide reassurance that the overall system works as intended by verifying the behavior of the system in a more realistic environment. From our group project (iteration 2), I increased my underst...
- Get link
- X
- Other Apps
Week 4 – CST438 Software Engineering What is the most interesting thing you have learned in your reading of "Software Engineering at Google"? I really enjoy reading our textbook “Software Engineering at Google.” It covers software engineering topics in detail, and it demonstrates how it is implemented in the real world by one of the biggest tech companies today. So far, we have covered the topics “What is SE?” (Software Engineering), “Testing Overview,” and “Code Reviews.” All chapters have interesting information that is relevant to the course. From “What is SE,” I learned the difference between “software engineering” and “programming.” Programming is about producing code and software engineering is the maintenance of that code for the duration of the code’s lifespan. We must produce sustainable software which requires us to respond to changes in dependencies, technology, or product requirements. From “Testing Overview,” I learned that testing is essential to produce...
- Get link
- X
- Other Apps
Week 3 – CST438 Software Engineering 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 VCS or version control system that developers can use to keep track of changes to software source code files. The reason version control is important in software engineering is that a project will require you to manage different versions during development. Different versions of the project might have different bug fixes or features, and Git offers a way to merge the different changes together. Git allows you to create commits, which are snap shots of a project at a specific time, of your files in a git repository. You can also return to any past commit in your project using git revert or git reset commands. You can keep track of these commits using the git log command. Another good point about using Git for source code management is that you can...
- Get link
- X
- Other Apps
Week 2 – CST438 Software Engineering In lab 1 on Junit you used a Mock. In your own words describe what a Mock is and why it is useful in unit testing. Mocks are objects or behaviors used as stand ins for other components during a Junit test. Mocks are useful in unit testing because they allow us to simulate the normal function of a component by providing predefined responses to method calls rather than performing the actual logic or operation. When using mocks, you eliminate the unpredictability that comes with interactions with other components. The goal with unit testing is to isolate the unit being tested. With mocks you can generate tests that are controlled and predictable. Mocks allow us to avoid real interactions with outside components which can potentially modify data. This eliminates the need to reset data back to its original state after the test is completed. Another useful attribute of mocks in unit testing is that it allows the unit test to be dependab...