Link to home
Start Free TrialLog in
Avatar of Aphroditus
Aphroditus

asked on

Usefulness of UML, SDLC and Software Engineering as a whole to software development

Hi. I am a software engineering freshman and am just beginning to learn about SE as a whole.

My question is more of a doubt about the usefulness of all these Software Engineering hoo-hah, processes etc that I am learning about.

On UML, why would it be useful if say we're writing a website that's constantly changing, and then once we make a change, we have to go back to the documentation and update the UML. It just sounds like alot of work for the software developer. And lets say if he works in a support organization where he has to do enhancements to applications, and he has like 20 odd applications under him. The enhancements are pretty simple, like just adding a field here or there. Then he'd have to update the UML diagrams for 20 of the applications, which sounds to me like its not just worth the effort!
So alot of my friends say UML is useless and no point learning it unless we have to.

Then on SDLC. I have a friend who's like championing the SDLC processes, waterfall, iterative development, rapid prototyping, etc. But would it make sense to apply it just a small computer programming project which we usually get after SE classes? Would we necessarily need to do scope documents, requirements gathering, bla bla, versus just looking at the homework problem and hack away at the keyboard?

On SE as a whole, I understand that SE is about making software development a disciplined, measurable approach to produce high quality programs, but I mean, good software isn't simply about high quality. There are cost factors and timeliness factors. Lets say I got a contract to setup a website for some company or develop their simple "employee diary" system which just requires input and output. Exploiting the fact that we're just students, they will pay USD100 for the whole thing. They give us like 2 weeks to finish it up. If I were to follow the SE processes that the lecturers have been singing about, i'd probably not be able to deliver it on-time and on-budget. That would have a more worsening impact on the company's expectations than say if we just hack some crap out, deploy it to the users and figure out the bugs later (which we can charge as maintenance fees). I mean, the users won't be able to tell what's under the hood so how crappy the code looks like doesn't matter, and the only benchmark they have to compare the crappy software is well 'nothing', so they'd obviously see some benefits of the new system me and my schoolmates hacked out. They might even go as far as praise us and give us a USD 50 bonus and call us a genius or something. And all the while I would be more puzzled when I sit in on a Software Engineering lecture about software development.

Any feedback and thoughts on this would be very helpful.
Thank you!
SOLUTION
Avatar of moorhouselondon
moorhouselondon
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Aphroditus
Aphroditus

ASKER

Thanks for the feedback and advice moorhouselondon.

Its interesting that I just read about code generation from UML diagrams before reading your comment about programming someday would be from documentation or simply from providing the machine diagrams. I think that would be very cool, ie doing programming using diagrams which we can easily visualize in our head to solve a problem, instead of today's cryptic text in a variety of programming languages. I mean, people used to use DOS or even before that, bash shells on Unix systems and the next step for that is the graphical user interface and the mouse. Don't you think so?

On showing the "working out" on exam paper, my lecturers aren't encouraging us to just show the answers. We are required to give a presentation on the project, but little emphasis is given to the process we followed and more on the obvious results. The general mentality is that if the results are right, the process must be right as well which I have learnt isn't the case. Same goes to the right process giving the wrong results.

Good point on the maintenance fees. But yep, I had a friend who's working in a multinational company doing maintenance who's advise was to not give a perfect product, but leave bugs and document them as 'difficult problems introduced by changing business requirements to be fixed in the next maintenance release' lest we want to work ourselves out of a job.

ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
One point I forgot to mention that the WISDOM model is completely based upon UML modelling. So UML can be applied easily with the mentioned model.

Thanks
MilanKM
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Avatar of F. Dominicus
F. Dominicus
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
MilanKM, thanks for sharing your WISDOM. I find the techniques there useful. I do have some questions and doubts which I hope can be answered.

1. Are there measurable results or real-world implementations of Wisdom?

2. There are situations where users require detailed complex logic changes to the user interface which will be messy to be modelled in UML.
For example, when the name is being entered into the field, the system should validate validate the user roles and tailor certain fields for the user and change the behaviour of the user-interface to suit that particular user. Since WISDOM uses UML as the base in alot of its activities, a strict adherence to the UML is necessary as developers would use it to translate design to implementation. This creates the problem of over-documentation as the UML would become complex and hard to comprehend from first glance. I would imagine developers being late for their developer meetings because they're too busy printing pages of UML.

3. Another point is that the UML2 standard doesn't cater for some circumstances in design, and different architects would sometimes use their own notations or borrow from UML1. This exacerbates the problem of the UML diagrams becoming too complex to be beneficial.

4. Could you provide or direct us to more examples of how WISDOM is actually being used, from the start of a project till the end? It would be great to have a solid example to draw best-practices upon.

Other than these points, WISDOM seems to me as a more organized approach to software development compared to the Nike just-do-it way and it is tailored for smalled projects/software developments.

Thanks!
fridom,

Thanks for your perspective on the topic.

On the matter of code quality, I still have this thought especially for business applications that it would only matter depending on the project (expected life-time, frequency of use, impact to the business, etc). With respect to moorhouselondon's point on doing it right anyway, I still don't see a point in spending too much time on making sure the code is flexible, extensible, scalable and optimal if it is going to be used just once, which sadly in my case would be until it gets handed up or presented to the lecturer. It'd be great if you could refute this way of thinking.

I believe writing bad code and still get management or user praise and approval happens all the time. Can this be considered as some form of art(or con)?
Of course, techniques like WISDOM would help with ensuring user expectations are translated. I'm thinking along the lines of what matters most to the users which most often isn't about the code (unless the users are developers or technical experts).

Hopefully from yours and posts from other experts I will be able to change my perspective and start writing better code and following through on the analysis and design with my other college mates (who'd probably waste the spare time on computer gaming anyway).

Thanks. Any other thoughts on the topic would be helpful.

First of all thanks as WISDOM may solve your problem. See the following link, I think it will answer all your questions above and also consists of a real world example of "Hotel Reservations System"

http://math.uma.pt/wisdom99/papers/nunescunha/nunescunha.html

Hope u got it
MilanKM
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Hey Aphroditus,

The modified Waterfall Model may not fit your kind of problem. Just given for informational purpose. So, what about the previous link? Have u got those question answered?

Thanks
MilanKM
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
MilanKM,

The waterfall model modifications is useful. I can see how to use it in my current assignment (to create sorting and searching algorithm demonstration suites). I'll replace the customer group with the lecturer and go from there. WISDOM uses UML which I'm still learning, so I will study it again once I grasp the UML concepts and practice on it.

For the 4th question, I was hoping for examples other than the hotel reservation system cited in your journal paper to get a better look at how people are using WISDOM to their advantage. But if there are none currently documented, then it is alright.

My other questions have been answered. Thanks.
moorhouselondon,

I get it now. Good thing I didn't stick to taking shortcuts and being a 'wise-guy' for too long. I take that you mean doing it the wrong way all the time and taking short-cuts may develop into a form of bad habit for graduates.

Thanks for the advice!
I will leave this question open for feedback for a few days.
Well the problem is that code has the feature  that is simply stays. It changes over time but it stays. Every UML diagram will sooner or later be thrown in the garbage.

Telling that the code may just be used once is a meager excuse for writing bad code.

Friedrich
Aphroditus,

Considering your career lies in Software Development I would definately reccomend practicing / learning / developing your skills in both UML and the various SDLC methodologies. Using them in your own small projects may seem like overkill and probably is. I'd reccomend using various portions of both in order to build up your skillset.

Employers will ask for both UML and what methodologies you have practiced, and having practiced these skills (and having examples) will put you in good stead.

Good luck

Snoopstaa
Thanks Snoopstaa.

After exhaustive questioning of some of the people working in software development, I found that alot of them do not really follow the strict UML rules and standards as proposed by the OMG. Seems that UML2 dropped some notations from the original UML and added other new ones and software development teams don't really bother with updating the diagrams as it doesn't give them any benefit. Besides, the team is already familiar with UML1 and they even introduced their own non-normative diagrams.

But as you said, it is always useful to know UML and the SDLC concepts. I've been reading about agile development and it seems rather promising, could borrow a good practice or two from there and apply it on my school projects. :)