Weekly thoughts: Basic Tasks That All Software Engineering Projects Must Handle

Hey I am back! I know that I disappear for three weeks. That’s because my school starts and also I am getting busier at my work. But from this week on, I will still post every week (hopefully!).

However, the content might change because sometimes I will write down my programming experience just like before, while other times I might write down some thoughts/notes from my software engineering master program courses. The reason that I want to share here is first, it is my way to reflect and digest new knowledge! And second, just in case I am wrong, I hope to see your different opinions!

Topic this week: Basic Tasks That All Software Engineering Projects Must Handle

According to my personal experience, I think they would be:

  • Collect requirements
  • Design structure
  • Development
  • Testing(Verification and Validation)
  • Deploy
  • Maintenance

However, I like what Gomaa(2011) raises up in his book that I think is very valuable:

“In this phase, the user’s requirements are identified and analyzed. The requirements of the system to be developed are specified in a Software Requirements Specification (SRS). ”

Here, he mentions that after the collection and analysis of requirements, there should be a specification that “provide(s) a complete description of what the system’s external behavior is without describing how the system works internally”. I like this idea because it gives you a chance to externalize the requirements so that the application idea is more understandable to other engineers, which would lead to more successful cooperation among teammates.

As for the “design” part, Sommerville(2015) inspires me by pointing out four kinds of design: Architectural design, Database design, Interface design and Component selection and design. It is not just about the basic structure, but also how we can implement components in a way that is reusable so that codes cleaner. With those, I think the development process will be smoother!

Therefore, now my answers are:

Requirements Gathering

Gather requirements by analyzing the current problem and discussing with potential users, write requirements specification according to the gathered information.(Gomaa)

Design

Implement the architectural design, database design, interface design and component selection and design.(Sommerville)

Development

The actual coding process according to the design.

Testing(Verification and Validation)

Testing to make sure “that a system both conforms to its specification and meets the expectations of the system customer”.(Sommerville)

Deploy

Deploy the application in production and present it to the users.

Maintenance

According to user feedback, improve the system by fixing any bugs or adding new features.

References

Gomaa, H.(2011). Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures. New York, NY: Cambridge University Press.

Sommerville, I(2015).Software Engineering. Tenth Edition. England: Pearson Education.

--

--

--

Software engineer and a blockchain noob. Excited about the new world!!LinkedIn:https://www.linkedin.com/in/yingqi-chen/

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Install and configure Laravel for development

1 Year Later Flutter Web Still Sucks

A laptop

Blogs: Week of 25 Oct — 31 Oct

VS Code for everyone

Learning Algorithms and Math In 8 Weeks

MongoDB QuickStart

Why I went back to using Windows

Image Not loaded sometime and first time using Picasso in Android

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Yingqi Chen

Yingqi Chen

Software engineer and a blockchain noob. Excited about the new world!!LinkedIn:https://www.linkedin.com/in/yingqi-chen/

More from Medium

Best Java Coding Bootcamp In Memphis Lists Top Java Frameworks

Tips to solve LeetCode problems

Which Is Better for Your Business: Software Developer or Software Engineer?

Which Is Better for Your Business: Software Developer or Software Engineer?

Why do I write Unit Tests