Table of Contents
Write a comment
architecture is the process and the product of planning designing and constructing buildings or other structures a good design can make a structure survive and be admired for years or fairly to understand it's the job of the architect to join both art and science to make sure all the pieces of a building come together in a good solution similar to architects as a software engineer you will also need to mix art and science to deliver solutions in a satisfactory way but instead of bricks you will solve them with code hi there i'm christian and you're watching the devastory today i will be starting a new series of videos covering software architecture in a practical way in this series of videos i will be covering many concepts and fundamentals of software architecture so hopefully by the end of it you will be more prepared to tackle software design challenges and have better discussions and even be more prepared for a technical interview so without further ado let's start software architecture has many definitions one of the most famous one is from ralph johnson where he says architecture is about the important stuff whatever that is but what is important stuff in the software architecture we focus more on the structure more than implementation details software architecture is also about making the expensive choices that are costly to change after they are implemented it's also about making explicit the core decisions that will allow the software to have high quality concepts are better understood in practice let's build an e-commerce site and see how that looks so for example in our e-commerce site we need to allow our users to do certain things like search in inventory check reviews buy a product review pass orders and maybe other features as well these are the functional requirements of the application besides of what the system should do we also need to focus on how should the system behave these are also called the non-functional requirements these are sometimes defined as the abilities that the system can have like functionality reliability usability efficiency these kind of things for example in our e-commerce site let's say that we wanted to be maintainable for several years and this is a maintainability requirement we also want to be able to serve millions of users in this case it's scalability we also want to make it available 24 7 which is a reliability to make sure that the system is very stable we also want to have good response latency which is efficiency and we can have many others finally besides functional and non-functional requirements you may also have additional restrictions that will limit the options that you will have for your architecture so for example we could have some legal compliance costs time to market standards etc several restrictions that will limit the number of options that we will have to design our system let's say in our e-commerce side we need to comply to the with the european privacy law uh gdpr so with that we need to take into consideration architecture how to handle that so after you get the context you know all the things that the system needs to do how it should behave and what restrictions are in place that you need to take into consideration so after you have all of these things you need to prioritize them some requirements and restrictions will conflict between them for example if you have a strict time to market maybe you need to drop some features there can also be other things like non-functional requirements that need to be prioritized so for example in our case of the e-commerce site we might not care too much about portability because we will have a strong control of where it's going to be deployed the application and after is deployed in there we don't plan to move it to other platforms so we could drop portability in favor of scalability or maintainability so after you have prioritized the list and you have made this trade-off you need to think about if it's acceptable or not so after it's acceptable then you start designing the uh the architecture how do you start designing the system so the first thing is once you have it prioritized start with one important thing at a time if you try to tackle everything at the beginning and trying to think about all the possible scenarios in the future you might end up having an over-engineered solution and this is not good because it is an unnecessarily complex system there is also an acronym for that that is jagni that you ain't gonna need it so if you are not sure about something or if it's not prioritized then try not to tackle at first try to postpone it to when you have better context and can make a better decision about it now that you have this you might start thinking about what are the possible architectures that might fit your system for that a good book that i recommend and that is useful for me and is this free ebook from o'reilly that is software architecture patterns it is a good boot to get a grasp of different architectural approaches and you can see several architectural patterns like layered event reverb microkernel microservices and space based this book shows pros and cons of each of these patterns and might help you at the beginning when you're designing the system what to look for and what would be best for your system based on your current requirements so we have decided what are some of the features that we want to have our system implemented we have also mentioned that maintainability is one of the non-functional requirements that is very important for us so with that we can start designing our system and we can take for example a layered approach we could have a database or a storage layer where we would sort data then we will have a logic layer where we will have the backend servers that will be taking care of handling any business logic that we want to handle and then the visualization part or ui where we'll be allowing the users to interact with the system and this is how we get to the layer architecture so here we have defined the architecture with the structure that the system will have the features can then be implemented following this layer architecture and if you want to learn a little bit more about how to implement the features in a scalable nice way then i recommend you to check out my other video about design patterns it's very typical in web applications to use a later architecture but it's not the only architectural pattern that we can use there is no silver bullet so make sure that in your context you look to different approaches and pick the architecture pattern that would better fit your use case it's also normal that the architecture would evolve over time and sometimes even in unintended ways that would make expensive changes to the architecture so you need to make a balance about foreseeing the certain things that you will need to cover versus the things that you need to prioritize in the short term if you try to tackle everything then you can end up having another engineer solution one of the most expensive things can be scaling so in our case we already have the architecture how can we make
Thanks for your comment Sanda Stigall, have a nice day.
- Clark Kilzer, Staff Member
hi welcome to education leaves in this video you are going to learn types of organizational structure let's start the video business of all categories shapes and sizes use organizational structures for their growth there is a specific hierarchy within an organization an eminent organizational structure defines each employee's job and how it fits within the entire system not having a proper organizational structure can create difficulties for certain organizations in these types of situations employees may face difficulties while reporting having a great structure in an organization can provide clarity for everyone at every level types of organizational structures first one is bureaucratic structures there are three types of bureaucratic structure pre-bureaucratic structure this structure is the shortest organizational structure and is used to solve simple tasks such as sales it is a centralized structure most communication is done by one-on-one conversations and the strategic leader makes all the important decisions it is also called the entrepreneurial structure as it allows the founder to control growth and development bureaucratic structures the bureaucratic structure has some level of standardization this structure defined the clear roles and responsibilities of every individual employee it is a hierarchical structure with respect to merit it has many levels so decision-making authority has to pass through more layers than flatter organizations a disadvantage of bureaucratic structures is that they can discourage innovation and creativity within the organization this type of structures is usually used in larger organizations post bureaucratic structures this type of structures has a long and strict hierarchy with the flexibility in using modern management techniques this structure is focused on how simple structures can be used to make organizational adaptations it is quite simple and stretched like a network the next type is 2. hierarchical organizational structure the hierarchy phenotype model of the organizational structure shows an organization having both community and hierarchy in the same structure a hierarchical organizational structure is a pyramid-shaped chart where the board of directors is at the top position and workers are at the bottom level this is the most common type of organizational structure it motivates employees with chances for promotion above all it better defines levels of authority and responsibility drawbacks of this type of structure are employees show interest in their own departments rather than the whole company it can make low-level employees think that they have less authority to express their ideas for the company 3. functional organizational structure a functional organizational structure consists of activities like task allocation supervision and coordination functional structure is also like a hierarchical structure a person with the highest level of responsibility positioned at the top an are positioned according to their skills and specialty only differences each department here is managed independently functional organizational structure allows employees to focus on their role help teams and departments to feel self-determined it also encourages specialization and it is scalable for divisional organizational structure divisional organizational structure is one of the smartest organizational structure ever in this structure an organization is separated into some divisions and each division has control over their own resources and operations this structure is specially designed for large companies let's see some examples of divisional structure geographic divisional organizational structure divisions are separated by districts territories and regions it's offering more effective localization and logistics companies might set up satellite offices around the country in order to stay close and connected to their customers market-based divisional organizational structure the divisions are separated by industry market and customer types the market-based structure is ideal for an organization that has product or services that are incomparable to specific market segments this structure also keeps the business constantly conscious of demand changes among its different audience segments product-based divisional organizational structure in a product-based divisional organizational structure each division within the organization is dedicated to a particular product 5. matrix structure the matrix organizational structure groups employees by both function and product at the same time it doesn't follow the traditional hierarchical model in this structure employees have dual reporting relationships the main objective of this structure is to provide both flexibility and more balanced decision making for example an engineer may regularly belong to the technical department under engineering director but work on a temporary project under the project manager matrix organizational structure shows the more kinetic view of the organization and it inspires employees to use their ability or skills in various capacities aside from their original roles but sometime it can create a conflict between project managers and departmental managers 6. flat or horizontal organizational structure a flat or horizontal organization has an organizational structure with few or no levels of middle management between staff and executives basically start-up businesses use this type of structure to grow this structure is completely free of hierarchy related pressure so that employees can be more productive a flat or horizontal structure gives employees more responsibility and provides a better opportunity to grow but it can be difficult to maintain when the company grows beyond the startup state it can also create confusion between employees of different level 7. circular organizational structure the appearance of circular organizational structure is different from the rest of organizational structures but it still relies on the hierarchy in which high-level employees occupying the inner rings of the circle while the lower level employees occupying outer rings the advantages of circular organizational structure are it meant to promote communication and free flow of information between different parts of the organization circular organizational structure also has a disadvantage that is unlike a hierarchical structure a circular structure makes it difficult to find out whom to report and how they're meant to fit into the organization 8. team-based organizational structure the team is the newest organizational structure developed in the 20th century in a small business the team-based structure defines the entire organization it can be both horizontal and vertical a team-based organizational structure is meant to disrupt the traditional hierarchy giving employees more control cooperation and focusing more on problem solving advantages of this structure are it increases performance productivity and transparency within an organization it requires minimal management and can fit anywhere disadvantage of this type of organizational structure is
Thanks Vifftauntee2 your participation is very much appreciated
- Clark Kilzer
About the author
I've studied human-computer interaction at Oklahoma City University in Oklahoma City and I am an expert in endocrinology. I usually feel relaxed. My previous job was air crew officer I held this position for 7 years, I love talking about mountaineering and tennis polo. Huge fan of Kai Knapp I practice pommel horse and collect vintage cars.
Try Not to laugh !
Joke resides here...