Good Application Design Using OOP Concepts
Hi,
I just want to know, how did you (as experienced Java developers) learn the way to design your application in a professional way.
How do you design your application (before start writing a single line of code) to give it the features like scalability? How do you manage conceptual application layers? How do you find the best (or one of the best) designs for your application which results in a professional, scalable application. OOP concepts help a lot, but need someone who exactly knows how to use them.
There's plenty of poor designed applications which need lots of code rewriting to add a small new feature to them. I hope I could tell you what I mean, how do you prevent this?
Any comments are appreciated.
# 1
You learn how to develop applications in professional ways by first having a professional position and understanding the role of requirements gathering in the software design process. You still may be able to design professional applications without a professional position, but it takes longer and you are not exposed to more experienced developers to learn from and critique your work.
> How do you design your application (before start
> writing a single line of code) to give it the
> features like scalability?
Scalability is a non-technical characteristic. It is a characteristic of software architecture design, not of application design. In order to design a truly scalable application, you first need an architect to create and architectural design that is scalable. Once you have a scalable architecture design, then you can create a scalable application.
The first thing to creating an architectural design is to gather what the scalability requirements are. You first need to have scalability metrics to measure against before you start designing anything for scalability.
> How do you find the best (or one of the best) designs for your
> application which results in a professional, scalable
> application. OOP concepts help a lot, but need
> someone who exactly knows how to use them.
The best design is the one that you create. Everything you do should be professional. Everything you do should be the best. The best professional design in the world is the one that completely addresses and satisfies the non-technical requirements, such as scalabiltiy, perfomance, security, etc.
> There's plenty of poor designed applications which
> need lots of code rewriting to add a small new
> feature to them. I hope I could tell you what I mean,
> how do you prevent this?
There could be more than a thousand reasons why an application was designed poorly. Poor designs stem from poor designers. At a basic level, in order to prevent poor designs from being created you cannot hire/employ poor designers.
If you are a poor designer, you can prevent yourself from creating poor designs by learning and reading. You need to study best practices in software development and incrementally apply them to your work.