In early days of software development little thought was presented with to how the program applications and systems we built were architected. There were several reasons with this: firstly, software development being new, the idea 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 should have foreseen the requirement for planned architecture and architects because building software isn’t radically different from building every other structure, for example buildings and bridges. We can’t return and undo the damage done by the lack of foresight that led to badly architected applications and systems but as project managers we are able to avoid causeing the mistake in our next software development project.
Today most organizations whose core competencies include software development recognize the significance of architecture with their business and have satisfied this need by creating the role of architect and making this individual in charge of the architecture of all software applications and systems they develop. Even organizations whose core competencies don’t include software development, but who have invested heavily in IT, have created this role. These people might be called 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 is in charge of all an organization’s applications and systems, the perfect solution is architect who is in charge of the architecture of a system composed of more than one applications and hardware platforms, and the application form architect whose responsibility is restricted to one application. The category and quantity of architects will often be constrained by how big is the organization and how many applications and systems it supports. Whatever the organization you work for calls them, the program architect has a key role to play on your software project.
Your job as project manager of a computer software development project, where a computer software architect is set up, is to ensure their work is properly defined and organized which means that your project receives maximum take advantage of their expertise. If the organization does not need an architect set up you will have to identify someone on your team to fill that role. What’s not acceptable would be to plan the project without the acknowledgment of the requirement or significance of the architect. This role requires just as much understanding of the machine components as you are able to, including software and hardware knowledge. Additionally, it requires deep technical understanding of the technology being used, both hardware and software and strong analytical skills. Anyone (other than a computer software architect) who most likely possesses a expertise similar to this one, is a small business or systems analyst. Based upon the size and complexity of the present system, top Miami architects and your project, existing skill sets might not be sufficient to meet up your project’s needs. There are ample training opportunities available so pick one that many closely suits your preferences and have your candidate attend. If your project has adequate budget to fund the training, fine. Or even, bear in mind that the expertise acquired by the trainee is going to be offered to the organization after your project is completed and your project should not need to bear the full cost of the training.
Given that you have a qualified software architect engaged for the project, you’ll 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 you are able to so that they may influence this is of the application form or system being developed. The team that defines the business requirements to your project is going to be from the business side of the organization and have deep understanding of how the business runs but little understanding of the present systems and technical features of the hardware and software that may deliver the solution. Having a computer software architect available during requirements gathering exercises will allow you to 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 perfect solution is to suit 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 is able to mention risks in defining requirements and offer alternative solutions.
The key deliverable your architect is in charge of could be the architectural drawing. This isn’t actually a drawing but a mix of drawings and text. The drawings will represent the various the different parts of the machine and their relationship to at least one another. The text will describe data elements, relations between various architectural elements, and any standards designers must adhere to. The drawing may be a new one to represent a new system, or it may be an upgrade of a preexisting drawing to reflect the changes to a preexisting system created by your project. The development of the architectural drawing is the initial design activity in your project schedule. The drawing is utilized in the same fashion that engineering staff and skilled craftsmen use an architectural drawing of a building or bridge.
Analysts and programmers will use the Business Requirements Document (BRD) to share with them what features and functions to style and the architectural drawing to share with them how their software must fit along with other software in the machine, any constraints the machine places on the design, standards the new software must meet, and what critical data elements look like. The information in this drawing depends on the perfect solution is chosen, the hardware chosen, the present system and the complexity of the project. As an example, projects using an Object Oriented solution can have 4 layers: a person interface layer (the layer the consumer 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 call for more or fewer layers.
Software development projects which depend on a relational database to store and retrieve large volumes of data can have a database architect who is in charge of the look of the database. The database architect should be considered a member of one’s project team and their design should really be coordinated with the machine architecture so that the data elements in the architectural drawing are defined the same way as they are in the database’s data dictionary. Database design is critical to system performance. Poor database design, or database design which doesn’t support the applications utilizing 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 person is not the architect on your team. In many cases people besides another architect will not have the capacity to determine perhaps the drawing contains all the information required by the project, or whether the machine design is sound. They will be able to ascertain that each category of information has been addressed and that the drawing meets any requirements defined for this in the Project Charter, Statement of Work (SOW), or scope statement. Once the drawing has been approved it should be communicated to the analysts that are in charge of producing design specifications.