Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago .I am java developer with almost 5 years of experience on Struts, Spring and Hibernate. We have a new project coming up in few days. We have the complete requirements with us and we will be doing this project using Spring MVC, Spring and the Hibernate. I have been asked to design and architect the entire web application. Designing and creating an Architect is something which I have not done till now in my career. And I don't know how do I go about this and where to start, what tools to use and so on. I don't know even the A,B,C's of design and architecture. You may be wondering why I was even I asked to do this at first place. The thing is I was given an opportunity to do this and at every stage I will be monitored and I will have my seniors reviewing the design. So any suggestion, ideas and steps to start and go ahead are welcome.
38.1k 12 12 gold badges 111 111 silver badges 142 142 bronze badges asked Apr 21, 2011 at 3:15 13.1k 59 59 gold badges 166 166 silver badges 239 239 bronze badgesIn your past 5yrs experience, Any of the project design documents given for you to develop or any discussion you had with Architect? Bascially check on any Software Design/Architecture book for basic understanding. You need to start with requirements to use case scenarios, then sequence diagram, system architecture design, component diagram, class diagram and database design like that. Depend on practice in your workplace, you may need to some extra documents or less. but, this is basic minimum set.
Commented Apr 21, 2011 at 3:21I have not had any design documents in the projects I have worked so far :-(. Hence it is looking more tough for me.
Commented Apr 21, 2011 at 3:24I can add my 2 cents from my own experiences (although its more of a compilation of development best practises, you might find it useful to keep them in mind while designing your application):
Thanks Kunal, its quite impressive. If possible, kindly update it with any useful findings you might have since last update. rgds.
Commented Dec 22, 2016 at 11:58I would also suggest having a plan to introduce performance testing / tuning from very early on in the cycle. Early introduction of Performance testing into Design and Development gives enough time to go and change if anything is required.
Commented Jan 9, 2017 at 20:25There are several things you'll need for architecture design documents. Not an easy task but props on taking the opportunity. Since this is such a large question, hopefully these links can get you started and you can refine questions after getting your feet wet.
Methodology
The methodology you use will affect what tasks you take on first. Waterfall is a popular but outdated methodology. A newer methodology is Agile that has several faces. My favorite is Scrum Agile for developing software of any size.
Diagrams
Diagrams are one of the most powerful ways to represent the system as a whole and as individual components. The type of diagrams you create depend on the system. There are usually a Structure Diagrams, Behavior Diagrams, Interaction Diagrams and tons of others. These diagrams show the pieces of the system as a whole, each components physical layout and/or logical layout, communication flow, procedure flow, etc..
Documentation
Documentation is just like it sounds, documents and documents that have Project Descriptions, Scope, User Cases, Sequence Diagrams, and any other document that describes the project or pieces of the project.
answered Apr 21, 2011 at 3:40 39.9k 15 15 gold badges 66 66 silver badges 84 84 bronze badgesTake a look at Robert Martin's (aka Uncle Bob) Clean Architecture. Here's a quick overview. Using this approach, you'll be able to defer details like Spring or Hibernate to a later time and focus more on the business logic. Or even migrate from Spring to Java EE without touching your business and application logic. You'll also get a testable application that complies with the SOLID principles, without too much additional effort.
I've just created an application this way and I must say I'm very happy with it. I could easily port it to a desktop or mobile application, or swap out the storage module. Details depending on policy goes a long way. It also promotes thinking in an API kind of way and, when applied correctly, making your modules very reusable.
Martin goes as far as saying details like frameworks are annoying and not part of your architecture. I do think they belong to architecture, but just at a different level. Often times you do want to include frameworks at an early stage to be able to produce a thin slice of a working application to demo to your users. Or when you know your frameworks in advance and there is no discussion about them, like in my case. But you could regard it as separate software architectures, when combined together create your application architecture.
38.1k 12 12 gold badges 111 111 silver badges 142 142 bronze badges answered Dec 6, 2013 at 16:43 1,637 1 1 gold badge 23 23 silver badges 33 33 bronze badgesDormouse, I really would like to talk to you about Clean Architecure, since you've got it for real. I'm paralised in best way to implement the input and output model/ports. I've tried a simple spike here: github.com/ramonchiara/CleanArchSpike. Could you please give a feedback? Is it allowed to publish our personal contact here?
Commented Jun 24, 2014 at 12:38 I have posted a comment on your website :) Commented Jul 3, 2014 at 13:21Clean Architecture Example: Code for an Onion Architecture is a blog post by Mark Paluch about the clean architecture. It includes a link to a github repository for a closer look at a sample implementation.
Commented May 4, 2018 at 9:06This is an example by Mattia Battiston. It contains a detailed explanation presentation and code example: slideshare.net/mattiabattiston/…
Commented May 7, 2018 at 13:58Peruse the Agile Modeling site which pushes for "just enough" modeling. They have some great guidelines including a full "agile modeling process" from requirements gathering to design/development.
As for tools, I love Visual Paradigm. It's relatively inexpensive (compared to other tools). There are a variety of free modeling tools (google is your friend), but none compare to Visual Paradigm, and for bit that it costs, it's well worth it. If my employer didn't pony up the cash for it, I would buy it myself. :)
answered Apr 21, 2011 at 3:31 squawknull squawknull 5,181 2 2 gold badges 18 18 silver badges 28 28 bronze badgesMaybe you also have alook at Enterprise Architect (sparxsystems.com.au) for modelling - it is far the best diagramming tool I know (from the usability POV). There is a time-limited-full-featured demo available and the license fees are also affordable.
Commented Apr 21, 2011 at 4:25I like EA too. I just like VP better :) Both are great tools at approximately the same price point. Quite frankly, I think both are far better than most of the tools that are far more expensive.
Commented Apr 21, 2011 at 4:36There's a good blog post by @tom on reflectoring.io I recently read which may help you. It helped me!
Here are the list of high level topics discussed,
The downvote is probably because answers which are only a link to elsewhere are generally frowned upon. meta.stackexchange.com/questions/8231/…
Commented Jun 1, 2018 at 22:07I have edited a new book on Spring, Hibernate and Data Modeling which will answer your query on the design aspect of a Java EE web application. Typically a Java EE Web application has 5 tiers - client, presentation, business service, data access and resource(entity). The book focuses on how to design and develop each of these tiers by taking examples of all relationships of data modeling using Spring and Hibernate. As a download an entire web application is given where you would find information on managing each relationship of data modeling scenario.
Let's look at a simple standalone entity. In order to manage the entity, methods like create, read, update, delete and find all records have to be designed. So if we go bottom up, the entity creation forms the first step. Next we look at the Repository which has methods described above. Further up comes the business service tier and then the REST Spring controller which is JSON-based. The remaining task involves coding the JSP page and JQuery AJAX calls to the REST Controller.
You can find more information on the book here