1

I'm working on website and java application for my project and I'm writing report and there is question that say "What is the architecture of the project" I don't know what should I write because I don't understand what does it mean

3
  • 5
    Ask the person who gave you the assignment. That word has never had an official or precise meaning.
    – Ixrec
    May 19, 2016 at 22:44
  • 3
    Ask 10 developers and you get 11 descriptions of what "architecture" is.
    – Euphoric
    May 20, 2016 at 6:21
  • 1
    I always liked Ralph Johnson's remark about architecture--it's the stuff that you wished you could have gotten right in the beginning and is too hard to change later.
    – mgw854
    May 21, 2016 at 3:24

3 Answers 3

5

If they were asking for the architecture of some code or files, they might be asking about what classes there are and how they interact. However, in a project, we group classes into larger components, and these components interact.

Given that they're asking about the project, they're asking for the big picture of top level components and their interactions. Modular construction means that we bundle various kinds of things together into larger more modular units. Things within the same bundle enjoy a certain freedom of access to each others internals. Things between bundles use some kind of abstracted messaging to communicate between them, and it is significant as to when/how those messages occur. It is significant to architecture that which is persisted vs. what is computed and which component persists what (kind of) information; as are queries a component is capable of and commands it can perform.

If you are using a design methodology you might have some of these classifications already. If not, you can describe them more ad-hoc.

On one level, you explain conceptual components, their individual capabilities, and how they interact with each other (what triggers interaction; what are the contents of interactions; how one component is responsible for management and persistence of certain objects whereas another component is responsible for some others) and as wired together, these components form a project or system.

For example, if there is networking (e.g. client-server, or server-server) these should be called out as interactions between identifiable components; this can form the basis of one of the larger views of components and their interactions.

Going deeper, we can also add detail to the pictures of persistence, component capabilities, and the inter-component wirings, and, we can explain the performance/scale out (e.g. load balancing, threading models, etc..), and maintenance/failover capabilities, all of which add a lot more complexity to the conceptual picture.

Going bigger/broader, the project exists in the context of a (business) domain. The business domain is a view on the business entities and their interactions (customers, suppliers, regulators, and various other interested parties, such as advertisers, merchandisers, etc..). The project architecture should satisfy the operational requirements of the intended subset of the business domain, meaning it should address those relevant roles and their responsibilities in the domain via the capabilities of the interacting (software) components.

0

It's, probably, asking you for to describe your strategy at the time of conceptualizing the project. An overview of your solution.

For example:

What kind of software are you proposing? Server-client? Desktop? Movile? And why?

What requirements are you meeting with your choice?

This will introduce your architecture at high level.

Once architecture is introduced it's time to go deep in details progressively. Do mention the design patterns involved (if any). And again... Why did you follow such patterns?

Which requirements do you expect to meet?

If your projects is formed by two or more applications, it's time to explain what does each of them. Their responsabilities inside the global solution. How they interact each other (protocols, e.g: Http, FTP, sftp, ssh, socket, websocket,...). If there's comunications it's time to mention what kind of comunication is going to happen (which do request and which do response). If there's any sort of messaging it's also time to mention data formats: XML, json, CSV,...

For any choice there's a why question to answer. The answer will explain which requirements are you trying to meet. It's advantages over discarded alternatives.

Finally you could go little bit further and to explain how do you expect to take forward the solution. For example mentioning technologies: programming languajes, frameworks, servers,... Each technology is going to be used for a good reason, so, explain it.

I don't think the question is asking you for low level details (classes, files, configurations). These are commonly demanded in technical designs.

-1

If it's a high-level architecture summary, I would list the technology stack.

"ASP.NET MVC, SignalR, and SQL Server".

..

"Node.JS, RabbitMQ, MySQL"

..

"It's an enterprise bus based solution using Azure Service Bus and REST services that interact with a Cassandra database."

Generally, given an overview of the core technologies and patterns. Diagram it, perhaps.

If they want details, the other answers apply. I submit this answer because in my opinion the other answers are, in my opinion, suggesting too much detail for what the question seems to be asking. If I was a customer and I asked someone to build me a Widget, and I didn't know what they were going to build it with, I might ask, "Can you please tell me about the architecture?", to which I would expect a basic summary of the building blocks of what the Widget consists of and what high-level application patterns were used to correlate them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.