Software Engineering


Throughout this class, I have learned about several fundamental concepts of software engineering, including open source software development, coding standards, design patterns, and ethics in software engineering. While these concepts are certainly important in web application development, they also have implications beyond this particular field.

One important concept we discussed in this course is open source software development. This refers to the practice of making the source code of a software project publicly available so that anyone can access, use, and modify it. Open source software development has become increasingly popular in recent years, and for good reason. By allowing anyone to contribute to a project, open source software development can lead to faster innovation, greater flexibility, and more robust software. Moreover, open source software development can be applied to any kind of software project, not just web applications. For instance, an operating system or a database management system could be developed using open source principles.

Another concept we covered is design patterns. Design patterns are general solutions to common software design problems, and they can be applied to a wide range of software development projects. For instance, the Singleton pattern can be used to ensure that only one instance of a particular object is created, regardless of how many times the object is instantiated throughout the codebase. This pattern can be applied to any kind of software project, from desktop applications to mobile apps to web applications.

Finally, we discussed ethics in software engineering. This is an increasingly important topic in today’s world, as software is playing an increasingly central role in our lives. Ethical considerations can arise in any kind of software project, not just web applications. For instance, the development of facial recognition technology can raise many issues when that technology is used to incarcerate or identify people. The useage of peoples data can also be problematic, as they are often forced to do so without prior knowledge.

In terms of project management, we learned about Issue Driven Project Management, which is a style of Agile Project Management. Agile Project Management is an iterative approach to project management that emphasizes collaboration, flexibility, and continuous improvement. Issue Driven Project Management is a specific implementation of Agile Project Management that emphasizes the use of issues, or discrete pieces of work, to organize and prioritize development efforts. This style of project management could be applied to any kind of project, not just web applications. For instance, it could be used to manage the development of a new medical device or a new scientific instrument. In this class, we used agile software development by creating github issues as a group, and then assigning, and completeing them individually. By combining this with bi-weekly meetings, we were able to get a consistent amount of high quality work done.

In conclusion, this course has taught me about many fundamental concepts of software engineering, including open source software development, design patterns, and ethics in software engineering. While these concepts have certainly been applied to web application development, they have implications beyond this particular field. Moreover, the project management style we learned, Issue Driven Project Management, could be applied to any kind of project, from software development to scientific research to manufacturing. Overall, this course has given me a solid foundation in software engineering that I can apply to a wide range of projects and contexts.