If you have good logical skills and aptitude then it can be easier for learning programming languages. Unlike programming Software Architecture requires years of experience to master. Software Architecture is a guide to shape your project and Architecture of a system is nowhere related to the code that you write for this system. This post explains the architectural steps involved in application development.
Software Architecture is simply blueprint of your application. Software Architecture is closely related to the business needs of the project and it is not concerned about technology on which the project built upon.
Software Design deals with the implementation of the architecture which includes what design patterns to use to make the application scalable, what development methodology that we use in development phase. Basics about software architecture can be found here.
Assume the following are the high-level specifications of the requirements
· System should be accessible from any location.
· System should be able to process multiple tasks.
· System should be able to process information from different databases.
· System should interact with other software packages.
Software Architecture Specification
Architecture specification for the above requirement
- The system should be web based
- The system should have built-in multithreading capabilities.
- The system should be database-independent.
- The system should expose APIs to import and export data from other sources.
Software Design Specification
Choosing a design pattern- Design patterns are proven solutions to the business problems. It tells us how we can achieve a solution in-terms of implementation.
We will need to customize the design-patterns to meet your unique needs.
Use Case Design: Creating use-case document which explains the interaction between the application and the end user. It lists the interaction steps sequentially. Each use-case should capture a specific scenario from end-to-end.
For Web projects, designing a working prototype in HTML before starting to work on developing is really helpful. Properly-Linked HTML pages with some dummy data shows the important business process flows and answers the business-related questions. It is highly recommended to develop a prototype before the actual coding for a project.
The Architect and Technical lead will create an object model of the system which specifies important entities in the system and how they will interact.
A database model would be created based on the class model described above. The use-cases, class model and database model will help the development team with clear instructions. Based on this project manager will highlight the milestones of the development phase.
Identify and Separate the different components in the application. This separation can be at two levels
- Physical Separation: We separate code physically into different assemblies. Each assembly or component can be deployed to servers across the geographical locations. We also call this as n-tier architecture.
- Logical Separation: Separating the code logically into different layers, but the entire application will be part of a single assembly and can be deployed to single server. Unlike physical or tier architecture it is not possible to deploy parts of the application in a distributed manner.
Programming the layers
- Web forms as the presentation layer
-Usually contains the graphical display components like ASPX pages,
Master pages and style sheets.
- C# or VB code for handling the business logic as the Business Logic Layer (BLL).
-Usually contains business rules and presents the data to presentation layer. This layer may also include code for error handling and logging.
- Data Access code as the Data Access Layer (DAL).
– This layer is a set of classes used to encapsulate data access methods. DAL’s primary job is to communicate with the database and pass it to the business logic layer.
This post examined the difference between tiers and layers and the different ways we can structure our project using tiers and/or layers in ASP.NET application.