When you first enroll in a Computer Science course, they start to teach you something that seems very counter-intuitive and pointless for a new programmer: software engineering. Basically, it involves writing up a bunch of diagrams, with arrows going every which-way, and long boring documents, before you can even get started with writing a program's source code. I've found, though, that these techniques are pretty much necessary when creating a large software application. If you do not follow good engineering best practices, and are developing something which will be used in a wide variety of production environments, then you're pretty much wasting your time, and you're going to have to deal with serious issues down the road.
I was taught Software Engineering by an old engineer who used to work at SAIC, and now teaches classes at my local university. He is the kind of person who loves the revel in the fact that 40% of people will drop his class before the semester is over, and spends a lot of time hammering down concepts like this one. The basic model which I was taught is, as follows.
Requirements -> Design -> Implementation -> Testing -> Maintenance
Requirements involves a lot of negotiations which whoever you're building the software for, even if that person is yourself. Design involves building a lot of diagrams. Mockups, UML, Software Design Documents, etc. Implementation is the actual coding part. Testing is pretty self explanatory, but has to be done thoroughly. Maintenance involves fixing bugs, and whatnot.
This whole model, according to my professor, revolves around the idea that customers will probably require changes down the road, and those changes might involve a lot of work. So, if you design it will from the outset, then you can accommodate changes.
So, what do you think about Engineering vs. Development? Which do you usually do? How much do you plan out your programs before writing them? Has not doing this ever come back to haunt you?
P.S. This post was long. 😛 I think I might even turn this into a blog post, later.
I was taught Software Engineering by an old engineer who used to work at SAIC, and now teaches classes at my local university. He is the kind of person who loves the revel in the fact that 40% of people will drop his class before the semester is over, and spends a lot of time hammering down concepts like this one. The basic model which I was taught is, as follows.
Requirements -> Design -> Implementation -> Testing -> Maintenance
Requirements involves a lot of negotiations which whoever you're building the software for, even if that person is yourself. Design involves building a lot of diagrams. Mockups, UML, Software Design Documents, etc. Implementation is the actual coding part. Testing is pretty self explanatory, but has to be done thoroughly. Maintenance involves fixing bugs, and whatnot.
This whole model, according to my professor, revolves around the idea that customers will probably require changes down the road, and those changes might involve a lot of work. So, if you design it will from the outset, then you can accommodate changes.
So, what do you think about Engineering vs. Development? Which do you usually do? How much do you plan out your programs before writing them? Has not doing this ever come back to haunt you?
P.S. This post was long. 😛 I think I might even turn this into a blog post, later.







