ITerative Consulting
  Reducing risk in software development
 

    
  • Home
  • Forte to J2EE or .Net Conversion
  • Agile Software Development
  • The Industry Challenge
  •        Software for Strategic advantage
           Role of the Process Engineer
           Role of the Software Architect
  • Legacy Migration White Paper
  • Services & Education
  • About Us
  • Jobs
  • Contact us
  • Enquiries
  • The Role of the Software Architect

    The software architect's role in a project can be filled by an individual or a team of people. In the latter case, there is still a need for a single person to provide the global vision for the project. In describing the role of the software architect, an approach that does not imply limitations to the role has been taken. A list of the top activities performed by the software architect follows.

    Top Activities for the Software Architect:  

    1. Engage with the business representatives/clients and business analysis team to understand the project scope

    2. Collaborate with the process engineer to assist in defining the best processes and practices for the project type

    3. Collaborate with the project manager to assist in developing and refining the plan, on an ongoing basis

    4. Architectural analysis of the use case model

    5. Use case analysis of architecturally significant use cases

    6. Identify analysis mechanisms and map them into design mechanisms and
    subsequently into implementation mechanisms

    7. Describe the runtime/execution architecture

    8. Produce a prototype, to prove the architecture

    9. Oversee construction of the product

    10. Oversee transition to production

    Engage with the business representatives/clients and business analysis team to understand the project scope : Gain a comprehensive understanding of the scope of the project, the client's key requirements and expectations. Assist in capturing the non-functional requirements; these will underpin certain architectural decisions that will be made.    

    Collaborate with the process engineer to assist in defining the most appropriate processes and best practices for the project type: The process engineer will work very closely with the architect (to the extent that the architect may play a permanent role in the process engineering team). The architect will impart his/her understanding of the organisation's current processes, problem areas, competencies, etc., and assist in evolving and implementing the methodology.

    Collaborate with the project manager to assist in developing and refining the plan, on an ongoing basis : Ensure the plan incorporates the defined processes. Provide a logical sequence to the activities based on high-level understanding of the technical, or otherwise, dependencies. Assist in the staffing of the plan.

    Architectural analysis of the Use Case model : Define the architecture overview, high-level organisation of subsystems (layering), and identify analysis mechanisms and key abstractions. At this stage, architectural patterns are identified.  

    Use Case analysis of architecturally significant Use Cases: This is done to identify, for each Use Case, the collaborating classes, organising them into subsystems within the layers or tiers. Design patterns are established. The classes' responsibilities and attributes are identified.  

    Identify analysis mechanisms and map them into design mechanisms and subsequently into implementation mechanisms: In identifying the analysis mechanisms, the architect identifies those areas of complexity that usually reside in the middle and lower layers of the architecture that need not be explicitly described during early architectural analysis.  Some examples of analysis mechanisms are inter-process communication, security and persistence. Later, when the architecture is refined, each analysis mechanism is progressed from a concept into a detailed design. Finally, for each design mechanism, an implementation mechanism is selected, which specifies precisely the technology that will be used, for example the database vendor, or the application server vendor. 

    Describe the runtime/execution architecture: Analyse the concurrency requirements, specify the processes, inter-process communication mechanisms and map the logical model elements into the processes. In addition to this, describe how the elements of the system are distributed across the physical target environment.  

    Produce a prototype, to prove the architecture: The benefits of early prototyping cannot be overstated. Depending on the project, develop one or more prototypes to evaluate an implementation mechanism or to clarify the understanding of a challenging or unknown area of the architecture.  A prototype should be built to prove that the architecture spans the architecturally significant requirements . The architect may decide to work with key programmer(s) to achieve this.    

    Oversee construction of the product: Work with the development team during construction iterations. Be the central point for providing an overall understanding of the system and facilitate any technical-level decision making. Ensure that the chosen practices relating to integration, builds and early performance testing are being adhered to. Play a key role in the change control process to determine the necessity of changes that are technically driven and provide solution outlines for changes. 

    Oversee the transition to production: Work with the business and deployment teams to enable a smooth transition into production. Harness previous similar experience to assist in identifying the required activities.

    It is crucial that the software architect plays an important role throughout the software development life cycle. Not only do the architect's varying responsibilities span the lifecycle, but the architecture models, as opposed to being frozen assets, are dynamic and will be revisited during design and construction.

    In order to carry out these critical activities, the software architect would need to have both depth and breadth of IT experience, be multi-skilled and be able to earn the respect and confidence of the customers, development teams and management team. Having performed this role successfully on a similar scale project is a critical success factor.

    home

     
    Home | Forte to J2EE or .Net Conversion | Agile Software Development | The Industry Challenge | Legacy Migration White Paper | Services & Education | About Us | Jobs | Contact us | Enquiries |