In the early days of software development little thought was handed to how the software applications and systems we built were architected. There were several reasons for this: firstly, software development being new, the style hadn’t been looked at, and secondly we didn’t realize how important architecture was to the cost of maintaining our applications and systems. Upon sober reflection, we probably must have foreseen the necessity for planned architecture and architects because building software isn’t radically different from building some other structure, for instance buildings and bridges. We can’t return back and undo the damage done by the possible lack of foresight that resulted in badly architected applications and systems but as project managers we could avoid causeing the mistake inside our next software development project.
Today most organizations whose core competencies include software development recognize the importance of architecture with their business and have satisfied this need by creating the role of architect and making this person accountable for the architecture of all the 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 people may be referred to as the Chief Architect, Head Architect, or Strategic Architect. Wikipedia identifies 3 different kinds of architect with respect to the scope of the responsibilities: the enterprise architect who’s accountable for all an organization’s applications and systems, the clear answer architect who’s accountable for the architecture of a system composed of one or more applications and hardware platforms, and the application form architect whose responsibility is restricted to one application. The category and amount of architects will most likely be constrained by how big is the business and how many applications and systems it supports. Whatever the business you work for calls them, the software architect features a key role to play on your own software project.
Your job as project manager of a computer software development project, where a computer software architect is in place, is to ensure their work is properly defined and organized which means your project receives maximum benefit from their expertise. If the business does not need an architect in place you will need to identify someone on your own team to fill that role. What’s not acceptable would be to plan the project without the acknowledgment of the necessity or importance of the architect. This role requires the maximum amount of knowledge of the system components as possible, including software and hardware knowledge. In addition it requires deep technical knowledge of the technology used, both hardware and software and strong analytical skills. The individual (other than a computer software architect) who most probably possesses a skill set such as this one, is a company or systems analyst. Based upon the size and complexity of the present system, and your project, existing skill sets may not be sufficient to meet up your project’s needs. You will find ample training opportunities available so select one that most closely suits your requirements and have your candidate attend. If your project has adequate budget to pay for working out, fine. Or even, bear in mind that the skill set acquired by the trainee will undoubtedly be available to the business after your project is completed and your project should not need to bear the full cost of the training.
Now that you have a qualified software architect engaged for your project, you will need to plan that person’s tasks to take maximum advantage of the skills. I would suggest engaging the architect as in the beginning in the project as possible so that they can influence the meaning of the application form or system being developed. The team that defines the business enterprise requirements to your project will undoubtedly be from the business enterprise side of the business and have deep knowledge of how the business enterprise runs but little knowledge of the present systems and technical top features of the hardware and software that’ll deliver the solution. Having a computer 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 clear answer to fit existing architecture or avoid solution weaknesses, after the fact. Involve the software architect in requirements gathering exercises as a consultant or SME (subject matter expert) who will mention risks in defining requirements and offer alternative solutions.
The main element deliverable your architect is accountable for could be the architectural drawing. This isn’t actually a drawing but a mixture of drawings and text. The drawings will represent the various components 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 someone to represent a fresh system, or it could be an update of a preexisting drawing to reflect the changes to a preexisting system produced by your project. The development of the architectural drawing is the very first design activity in your project schedule. The drawing is found in the 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 share with them what features and functions to design and the architectural drawing to share with them how their software must fit as well as other software in the system, any constraints the system places on their design, standards the new software must meet, and what critical data elements look like. The information in this drawing is determined by the clear answer chosen, the hardware chosen, the present system and the complexity of the project. As an example, projects having an Object Oriented solution will have 4 layers: a user interface layer (the layer the consumer sees), a credit card applicatoin 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 call for more or fewer layers.
Software development projects which depend on a relational database to store and retrieve large volumes of data will have a database architect who’s accountable for the design of the database. The database architect should be described as a member of one’s project team and their design ought to be coordinated with the system architecture so the data elements in the architectural drawing are defined the same way because they are in the database’s data dictionary. Database design is important to system performance. Poor database design, or database design which doesn’t support the applications using it, will deliver a system with poor performance so database design and architectural design must be inputs together to yield a well integrated system with the performance characteristics required.
The architectural drawing must be approved by the project sponsor, project steering committee and the organization’s enterprise architect/chief architect/head architect where that individual isn’t the architect on your own team. Oftentimes people apart from another architect will not have the capacity to determine perhaps the drawing contains all the info required by the project, or whether the system design is sound. They will have a way to ascertain that every category of information has been addressed and that the drawing meets any requirements defined for this in the Project Charter Amsterdam architects , Statement of Work (SOW), or scope statement. When the drawing has been approved it must be communicated to the analysts who’re accountable for producing design specifications.
The application architects role doesn’t 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 including the infrastructure layer first, the domain layer next, etc. or it could be produced iteratively, one new version for each iteration. Even projects using Waterfall SDLC methodology won’t necessarily produce one last drawing through the project planning phase because they don’t need to. The designers need to have a drawing that delivers them with the info they require once they require it and you may need to begin design assist the drawing you have in order to keep to schedule.
The architect must ensure that the design captured in Functional specifications and detail design documents conforms to the constraints placed upon it by the architectural drawing. To do this they need to review the designs to ascertain compliance. The architect should be described as a member of any peer review teams reviewing design. This may not be possible, particularly 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 using their architectural design, or identify gaps where it will not.
The hardware and operating systems which are components of the system architecture are regions of oversight for the architect. Projects which call for procurement of these things, 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 respect to the solution being implemented, by which case the info ought to be within the architectural drawing. Where requirements for these specific things are less well defined, the architect should make sure that 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 as though the job were being done in-house. Large projects which require the vendor to staff their team with a computer software architect must have their architectural design overseen by the architect for your project.
Finally, the architect must also be called upon to analyze any changes to software design or functionality that might result in a change in the architecture. Your architect would be the right person to analyze any request to ascertain where a change in the design of just one system component would impact on other components of the architecture. When the architect has determined if your change in other components will be required, and what the nature of that change will be, it’s up to your design and build gurus to assess the cost of that change.