In early days of software development little thought was handed to how the program applications and systems we built were architected. There were several reasons because of this: firstly, software development being new, the concept hadn’t been looked at, and secondly we didn’t realize how important architecture was to the expense of maintaining our applications and systems. Upon sober reflection, we probably must have foreseen the requirement for planned architecture and architects because building software isn’t radically distinctive from building any structure, for instance buildings and bridges. We can’t return and undo the damage done by the possible lack of foresight that generated badly architected applications and systems but as project managers we can avoid causeing the mistake within our next software development project.
Today most organizations whose core competencies include software development recognize the significance of architecture for their business and have satisfied this need by creating the role of architect and making this person accountable for the architecture of all software applications and systems they develop. Even organizations whose core competencies don’t include software development, but who’ve invested heavily in IT, have created this role. These individuals might be referred to as the Chief Architect, Head Architect, or Strategic Architect. Wikipedia identifies 3 different types of architect with regards to the scope of the responsibilities: the enterprise architect who’s accountable for all an organization’s applications and systems, the answer architect who’s accountable for the architecture of something composed of a number of applications and hardware platforms, and the application architect whose responsibility is limited to one application. The category and quantity of architects will often be constrained by how big the organization and the number of applications and systems it supports. Regardless of what the organization you work for calls them, the program architect has a key role to play on your own software project.
Your job as project manager of a software development project, where a software architect is set up, is to ensure that their work is properly defined and organized so that your project receives maximum benefit from their expertise. If the organization does not have an architect set up you must identify someone on your own team to fill that role. What is not acceptable would be to plan the project without any acknowledgment of the requirement or significance of the architect. This role requires the maximum amount of familiarity with the system components as you possibly can, including software and hardware knowledge. It also requires deep technical familiarity with the technology being used, both hardware and software and strong analytical skills. Anyone (other than a software architect) who most likely possesses a skill set similar to this one, is a small business or systems analyst. Dependant on the size and complexity of the prevailing system, and your project, existing skill sets might not be sufficient to meet up your project’s needs. You can find ample training opportunities available so select one that a lot of closely suits your requirements and have your candidate attend. If your project has adequate budget to pay for working out, fine. Or even, remember that the skill set acquired by the trainee will undoubtedly be open to the organization after your project is completed and your project should not have to bear the total cost of the training.
Now that you’ve a qualified software architect engaged for your project, you’ll need to plan that person’s tasks to take maximum advantage of the skills. I recommend engaging the architect as in the beginning in the project as you possibly can so that they may influence this is of the application or system being developed. The team that defines the business requirements to your project will undoubtedly be from the business side of the organization and have deep familiarity with how the business runs but little familiarity with the prevailing systems and technical options that come with the hardware and software that may deliver the solution. Having a software architect available during requirements gathering exercises will help you define requirements that leverage existing system and solution platform strengths and avoid weaknesses. Leaving their input till a later phase exposes your project to the risk of re-engineering the answer to match existing architecture or avoid solution weaknesses, after the fact. Involve the program architect in requirements gathering exercises as a consultant or SME (subject matter expert) who will point out risks in defining requirements and offer alternative solutions.
The key deliverable your architect is accountable for is the architectural drawing. This isn’t actually a drawing but a mixture of drawings and text. The drawings will represent the various the different parts of the system and their relationship to at least one another. The writing will describe data elements, relations between various architectural elements, and any standards designers must adhere to. The drawing might be a new one to represent a fresh system, or it may be an update of an existing drawing to reflect the changes to an existing system created by your project. The development of the architectural drawing is the very first design activity in your project schedule. The drawing is used in the exact same fashion that engineering staff and skilled craftsmen use an architectural drawing of a building or bridge.
Analysts and programmers will utilize the Business Requirements Document (BRD) to tell them what features and functions to design and the architectural drawing to tell them how their software must fit as well as other software in the system, any constraints the system places on their design, standards the newest software must meet, and what critical data elements look like. The information in this drawing is determined by the answer chosen, the hardware chosen, the prevailing system and the complexity of the project. As an example, projects using an Object Oriented solution could have 4 layers: a consumer interface layer (the layer an individual sees), an application layer (where the job is done), a domain layer (where business logic is applied), and an infrastructure layer (for logging messaging, etc.). Other solutions may necessitate more or fewer layers.
Software development projects which count on a relational database to store and retrieve large volumes of data could have a database architect who’s accountable for the look of the database. The database architect should be described as a member of your project team and their design should be coordinated with the system architecture so that the data elements in the architectural drawing are defined the exact same way as they are in the database’s data dictionary. Database design is important to system performance. Poor database design, or database design which does not support the applications deploying it, will deliver something with poor performance so database design and architectural design should be inputs together to yield a well integrated system with the performance characteristics required.
The architectural drawing should be approved by the project sponsor, project steering committee and the organization’s enterprise architect/chief architect/head architect where that individual is not the architect on your own team. Oftentimes people besides another architect will not have the ability to determine whether the drawing contains all the information required by the project, or whether the system design is sound. They will have the ability to determine that every category of information has been addressed and that the drawing meets any requirements defined because of it in the Project Charter, Statement of Work (SOW), or scope statement. Once the drawing has been approved it must be communicated to the analysts who’re accountable for producing design specifications.
The application architects role does not end with the production of the architectural drawing, indeed in certain software development lifecycle (SDLC) methodologies this drawing will undoubtedly be produced iteratively. It might be stated in stages like the infrastructure layer first, the domain layer next, etc. or it may be produced iteratively, one new version for each iteration. Even projects using Waterfall SDLC methodology won’t necessarily produce a final drawing throughout the project planning phase since they don’t need to. The designers need to have a drawing that delivers them with the information they need once they want it and you may want to begin design assist the drawing you’ve to be able to keep to schedule.
The architect must also make sure that the look captured in Functional specifications and detail design documents conforms to the constraints placed upon it by the architectural drawing. To get this done they have to review the designs to determine compliance. top Milan architects The architect should be described as a person in any peer review teams reviewing design. This might not be possible, especially if you have to generally share an architect with another project or operations so at minimum the architect should review each design and ensure compliance with their architectural design, or identify gaps where it does not.
The hardware and operating systems which are the different parts of the system architecture are areas of oversight for the architect. Projects which necessitate procurement of these items, or outsourcing of the development of any applications, should engage the architect to subscribe to product and vendor selection criteria. Some architectural drawings may specify hardware and software with regards to the solution being implemented, by which case the information should be contained in the architectural drawing. Where requirements for these exact things are less well defined, the architect should make sure selection criteria properly reflect their architectural requirements and that the statement of work for any outsourced software is correctly written. In projects where software development work is outsourced, the architect’s role would be the same like the job were being done in-house. Large projects which require owner to staff their team with a software architect must have their architectural design overseen by the architect for your project.
Finally, the architect also needs to be called upon to analyze any changes to software design or functionality that might cause a change in the architecture. Your architect would be the right person to analyze any request to determine the place where a change in the look of 1 system component would effect on other the different parts of the architecture. Once the architect has determined in case a change in other components will be required, and what the type of that change will be, it’s as much as your design and build gurus to assess the expense of that change.