SEI work in architecture-centric engineering exploits the relationship between a system's architecture and its quality attributes, and leverages architecture as the key means for ensuring that systems will support their business and mission goals.
Crafting the right architecture to solve the problem at hand is only part of architects' responsibilities. They must also
The SEI gathered the following input from readers after June, 2006 about the primary duties of a chief software architect, including
Christopher Brandt (Systems Architect, Moneris Solutions, Burnaby, BC, Canada)
Duties: In my experience, an architect brings together the pieces of an architecture for all aspects of the system and then communicates the architecture to the stakeholders. By aspects of the system I mean everything from software development tools to the high level design to the "off-the-shelf" components and services required for the system to function. A good architect provides a development team with all of the tools they need to put together a great system.
Skills: An architect must be technically competent and a strong communicator (written, verbal, presentation...).
Knowledge: An architect should be competent in the core frameworks used or to be used, however they need not be an expert programmer in that framework. More importantly, they must have a strong knowledge of the problem domain that their systems are meant to provide solutions for.
Organizational Support: Architects need time and leeway to experiment and learn. Software methods are continually changing, thus an architect must be given time to learn, communicate with peers and try out new stuff.
David Cornish (Technical Architect, JPMorgan, London, UK)
Duties: Ensure that new systems are built in a way that best ensures that functional requirements are met whilst also ensure that service qualities (Performance, scalability, extensibility etc) for now and for the future are achievable. Review and improve on existing systems, making use of new technologies and methodologies to seek continual improvement for existing systems. Provide high level guidance and direction on project work, making sure tha new projects fit in with an overall strategic vision.
Skills: Strong communication with both technical and business teams; Strong design experience and technical knowledge; Analytical and 'joined-up' thinking; Conflict resolution
Knowledge: Business process knowledge; Technical knowledge; Strategic view of where the business are going and how technology will be used to attain that vision
Organizational Support: Provide clear guidance on project requirements: Provide a clear business strategy; Provide training to allow architects to stay up to speed with new technology developments
Huub van Dijk (Quality Manager, Independent, Amsterdam, Netherlands)
Duties: Now: same as system designer. Architecture is generally so loosely defined that it is virtually indistinguishable from design. This situation has been deteriorating for many years. Should be:
Skills: Too many. I am afraid that a SA must be detected rather than selected.
Knowledge: Equivalent to: MSc Computer Science and MBA. Applicable standards (IT and domain specific).
Available solutions and models for re-use.
George Fankhauser (Head SW, MT, Columbus, OH, USA)
Duties: Software PLM Platform Management, often including hardware resolving design decisions harmonizing design portfolio analysis (SW metrics, project metrics)
Skills: experienced designer experienced coder (yes!) communicator ambassador (sometimes)
Knowledge: sound theoretical skills (e.g. complexity measures) algorithm & data structures 101
Organizational Support: management backup veto right in projects
Theo Gantos (Consultant, TEKA, Flint, MI, USA)
Duties: A software architect must manage a constellation of issues, ranging from:
Skills: A renaissance person. Consulting, diplomacy, organization, conceptualization, abstract thinking, logical reasoning, data modeling skills in several methodologies, ability to self-evaluate and adapt quickly, presentation and communication skills, programming expertise, writing skills, sales skills, charisma, finance and return on investment calculation skills, dealing with difficult and change-resistant people, sense of humor.
Knowledge: The knowledge requirement is so staggering and extensive that there are very few persons capable of performing in an above average capacity. I cannot envision how one could possibly through strictly academic coursework, acquire this knowledge without perilous and untiring pursuit. There is much mis-information, vendor ax-grinding, self-serving, and uncritically reviewed published material that the chances of building a thorough understanding of the fundamentals is daunting.
Organizational Support: Appreciate the value of the contributions they can make , especially not in the short run, but over time. Build a recognition that architecture is vital to the life cycle of the information, does not exist solely to serve the application, and may well surpass several generations of application development. Recognize that like building a solid bridge, the value is not in how quickly and cheaply it can be built, but how ultimately useful, flexible, and durable it is over it's expected life.
Stefan Grasmann (Manager Competence Center Microsoft, Zühlke, Eschborn, Germany)
Duties: Create a common technical vision, which fulfills quality requirements. Maintain and explain this vision to anybody interested in it or those who are not, but should be. Technical quality assurance (before, during and after development). Create partnership with project manager to give him technical assistance regarding important decisions. Elaborate quality requirements and urge to test them early. Drive technical evaluation of brilliant ideas.
Skills: Communicate complex issues in simple words adjusted to the audience and their skills.
Endurance in repeating the same idea again and again and again.
Creativity to find simple solutions to complex issues.
Ability to feel like a developer.
Knowledge: Experienced development know-how in different areas. Architectural styles and design patterns - from a practical point of view. Deep understanding of underlying technologies and future trends. Software Factories and productivity aspects. Domain knowledge. Understanding of potential customer base.
Organizational Support: Trust him, but control results.
Durga Srinivas Gudimetla (Associate Consultant, Tata Consultancy Services, Hyderabad, AP, India)
Moonesh Kachroo (Technical Manager, WNS, Gurgaon, Haryana, India)
Duties: Undermentioned are some points (other than already mentioned) which are also important duties of an Architect:
Skills: Should have an ability to switch between "macro" and "micro" visions effectively and efficiently, as time demands; Should have an excellent analytical skills for obvious reasons; Decision making is also one of the "must haves"; Should have an ability to foresee, plan and mitigate any type of "risk".
Rajesh Kanna (Development Manager, PT. 1rstWAP, Jakarta, Indonesia)
Venkatesh Krishnamurthy (Technical Architect, Valtech India, Bangalore, KA, India)
Skills: Architect needs to be
Other thoughts: see http://agilearchitect.blogspot.com
Duties: The SA is responsible for defining the overall structure of the system based on the forces driving the system (e.g. "ilities"). It has to be robust, effective, and maintainable. It does not have to be optimal, much less perfect, or there would be very few software projects. The SA has to decide what the most important drivers are in order to justify his approach, because there will be questions. The SA has to be able to communicate the architecture intelligibly to the stakeholders at a level of detail that becomes progressively more refined as the comprehension of the audience becomes more sophisticated. An architecture created by one person will be limited to what one person can think of, so the SA has to be open-minded about criticism and treat it as constructive. The SA should seek buy-in from the stakeholders, including the people who have to implement it all the way down to the code.
Skills: An SA needs a thick skin and an open mind; communication skills to articulate the architecture and respond instructively to questions about the architecture; the ability to recognize that the architecture quality is more important than the architect's ego; leadership qualities, because software engineers are an independent lot who cannot be herded; courtesy, since you can't give everyone everything they want, but you can listen fairly and be courteous in saying no.
Knowledge: Patterns of analysis and design; architectural archetypes; available tools and notations for representing architecture artifacts; presentation skills to convey information with clarity and conciseness.
Organizational Support: Document all the requirements, including the corporate business goals to be supported. See the architect gets the training he/she requests. Provide opportunities for the architect to flowdown the current state of the architecture to lower-level stakeholders (e.g. implementers). Have multiple architects, with one lead POC, and decisions by consensus.
Mayank Sugandhi (Sr. Software Engineer, Pyxis System, Pune, MH, India)
Duties: I usually confuse between duties of Project Manager. Some duties are common between them only difference is about orientation. In which Project Manager aligned more toward Client interaction, People, Time & cost management. An architect can be of any type based on organization structure and its hierarchy.
According to me following are duties of Architect but one thing I am sure A System can exist without architect but now without project manager.
Knowledge: An Architect must be good learner as Software Industry changing trands frequently. He must have sound knowledge of programing and it's concept.
He must has solid approach to figure out solution and creative for new ideas. He should posses skil to communicate and convince that properly.
Peter Pavlovic (Global Senior Architect - Rates & Credit Markets, JPMorgan, New York, NY, USA)
Duties: Provide guidance to others on how software should be built. Oversee development in build mgmt role to ensure successful delivery. Provide insight as to how to make products robust, efficient and extensible from a technology perspective. Be accountable for what is going on in the firm.
Skills: Programming in common languages (C,C++,C#,Java); Ability to produce QUALITY docs & illustrations; Ability to impart knowledge to others
Knowledge: Latest technology trends, up & coming languages, products, initiatives, language optimizations, etc.
Organizational Support: Trust their architects to deliver quality product (not just opine on how things should be done). Provide enough authority to ensure their accountability is warranted and able to be supported.
Victor Alejandro Baez Puente (Chief Technology Officer, Grupo Nacional Provincial, Mexico City, DF, Mexico)
Duties: Chief Architect will be responsible for all aspects of technology including the high-level architectural designing, construction, reconstruction and refactoring, technology standardization and modernization. The Chief Architect will establish the strategic technical direction for the enterprise products. They will also serve as the evangelist of the architectural vision, strategy, and principles to internal staff, customers, industry analysts, and throughout their peer groups.
The main areas of responsibility include the following:
Required Technologies Experience:
Knowledge: Computational and technical knowledge, deep process definition knowledge, project management.
Organizational Support: observe the methodology phases in which architects must participate in order to align the proposed solutions to the general architectural framework
Murugesan R. (Lead Analyst, Saksoft Limited, Chennai State, TN, India)
Skills: MUST have the following qualities:
Organizational Support: Learn! Think!! Create!!!
Poornachandra Sarang (Practicing Solution Architect, ABCOM Information Systems Pvt Ltd, Mumbai, India)
Duties: An architect role should not be restricted to creating an architecture document, but should be extended to cover the various responsibilities until the project is delivered and deployed. An architect must be well versed on various technologies and should have zest for learning emerging technologies at all times. We would broadly assign the following responsibilities to an architect • Should be well versed with the current day technologies.
Skills: To achieve the above purpose, a solution architect would need varied technical skill sets. These may be broadly stated as follows:
Knowledge: The above technical skills requirements can easily deter anyone from aspiring to become a solution architect. Though a deep technical knowledge in each of the above areas is not expected, architect should possess a good conceptual clarity on each. Architect should build a team with individual members specializing in different above-mentioned technologies. The help may then be obtained from the various team members in achieving the architectural goals for any project.
Organizational Support: The organization that is creating and maintaining an architectural team should provide support to the chief architect in building and retaining the team. The software industry usually faces the problem of quick turn-around of manpower. The organization should provide enough incentives and facilities to retain the trained manpower. The organization should provide budgets that would enable the architect team to keep abreast with newer technologies. The organization should be willing to budget Research and Development (R&D) expenditures for experimentation, learning technologies, obtaining software licenses and acquiring test hardware platforms. Organization may opt for CMMI certifications to ensure quality processes and building customer confidence in the architectural processes deployed on the customers’ projects.
Ramakrishnan Subramanian (Technical Specialist, Cybernet Software, Chennai, TN, India)
In some organization .Contact CXO to suggest new path for creating business by use of technology
For several years, the SEI had gathered reader comments on the duties of a chief software architect. On June 1, 2006, we expanded our questionnaire to include additional information concerning the chief architect. The following entries were submitted prior to the June change.
The previously submitted duties of a chief software architect are alphabetized by submitter's last name.
Ammad Amjad (Software Architect, Lahore Stock Exchange (G) Ltd., Lahore, Pakistan)
In my opinion, a systems architect should possess the following qualities and features relevant to his/her duties. He should
Ezhil Arasan Babaraj (Technical Architect, Cybernet Software System, TN, India)
Should provide appropriate technical solutions for the given requirement. Should effectively communicate the proposed solution. Should be a quick learner to learn new technologies. Need to be a good mentor. Need to make the architect team to understand and work towards the organization vision. Should be able to think beyond expectations.
Srihari Boregowda (Technology Director, Canarys Automations (P) Ltd., Bangalore, KA, India)
Mallik Bulusu (Sr. Software Engineer, Intel, DuPont, WA)
I have a 2 step recipe. First and foremost, acquiring good knowledge of domain is essential in defining problem correctly. Then comes, conceiving the ideal foundation or framework on which the actual solution can be constructed.
In big organizations (Enterprises), architect is not a single person--- it is a team. This team led by an experienced architect, called “Chief Architect”.
Hierarchy of the Team: Often (at medium level organizations) this team is divided into two groups. They are:
But in big organizations, this team is divided into a number of roles:
Now we discuss the responsibilities/duties of each of these one by one.
Software Architect: A software architect is responsible for creating or selecting the most appropriate architecture for a system (or systems), such that it suits the:
Responsibilities of a Software Architect:
Hardware Architect: “A hardware architect is responsible for the design of hardware architecture, peripherals and display bodies.”
Responsibilities of a Hardware Architect:
Data or Communication Architect: “A data architect handles the data transmission and its related problems.”
Responsibilities of a Data or Communication Architect:
The Personality of an Architect: The main characteristics of the personality of an architect are:
In simple, n architect bears a multi-personality. He may have to wear multiple hats - as a "manager" to co-ordinate with all stakeholders, as a salesman to "sell" the idea behind his solution, as a "developer" to develop POC or pilot to prove that his solution will work, as an "executive" to drive through the implementation.
Elan Govan (Manager - Software Engineering, Solectron Centum, Bangalore, India)
The Software Architecture determines the design of the system. Hence prior to design:
Amit Kawalkar (Engineer, Honeywell, Bangalore, KA, India)
Constantin Kostenko (Software Architect, SoftwareArchitectures.com, Washington, D.C.)
Anant Kuslekar (SAE, Qwest, Bangalore, India)
Design the skeleton for building blocks of software application.
Ken MacBean (Architect-Destination Design Software for Entertainment Developments, IDAD, Cincinnati, OH, USA)
(DDSA) - Definitive Definition for Software Architecture: Software architects are professionals responsible for the planning and development of all aspects of user/system interfaces in software product development, including the design of hardware architecture, peripherals and display bodies. This young evolving polyspecialized field is concerned with human/technology interactions, education, sustainable design, communications and engineering. Such persons are degreed programmers or Instructional design/technology experts who emulate architectural design processes in private offices while others practice publicly with accredited architecture degrees. Industry or degreed architects working in computer science as software architects both use image, graphic, entertainment and architectural design knowledge together with legal, scientific, business and programming requirements to assess prudent planning and design decisions. Software architects may be involved in software engineering supervision, design and product management, user research, market studies and testing. They may apply their skills to the development of new technology products, programs or services and combine systems logic, hardware environment, human needs or anthropometrics, and innovation for the benefit, safety and welfare of society while promoting value for the industry through quality design.
Source: (2001)Institute of Destination Architects and Designers
A software architect's job is to ensure that the architecture he is responsible should suffice to initial customer requirements and when implemented, will fulfill the system as envisioned by the customer.
Muthuramalingam Nagarathinam (Product Architect, London Bridge Phoenix Software, Heathrow, FL)
Ashwin Palaparthi (Principal Architect, AppLabs Technologies, Philadelphia, PA, USA)
Sathyanarayana Panduranga (Solution Architect, Hughes Software Systems, Bangalore, India)
Chief Software Architect who is responsible for the creation and evolution of an organization's product line has the following responsibilities
Narayana Peesapati (Vice President Technical, NuNet Technologies Pvt Ltd, Visakhapatnam, AP, India)
Tao Nguyen Phu (Accounting, Truong Xuan Co., Ltd, Ho Chi Minh, Vietnam)
Alan Nuytten (Sytems Programmer, ITC, Indian Rocks Beach, Fl, USA)
Define software development lifecycle and tools to include, hardware/ configuration management, software change management tools, bug tracking and analysis process.
Rajendra Prasad (Java Solution Architect, RaminfoLtd, Hyderabad, India)
Creating application and system architecture, analysis of use cases and drawing the detail design, sequence and collaboration diagrams.
Rushton Prince (Chief Architect, X-tier SAE Inc., Shawnee Mission, KS)
"The ideal architect should be a person of letters, a mathematician, familiar with historical studies, a diligent student of philosophy, acquainted with music, not ignorant of medicine, learned in the responses of jurisconsults, familiar with astronomy and astronomical calculations." – Vitruvius, circa 25 BC
In summary, the software architect must be well-rounded, posses maturity, vision, and a depth of experience that allows for grasping issues quickly and making educated, critical judgment in the absence of complete information. More specifically, the software architect, or members of the architecture team, must combine these skills:
Experience in both the problem domain, through a thorough understanding of the requirements, and the software engineering domain. If there is a team, these qualities can be spread across the team members, but at least one software architect must provide the global vision for the project.
Leadership in order to drive the technical effort across the various teams, and to make critical decisions under pressure and make those decisions stick. To be effective, the software architect and the project manager must work closely together, with the software architect leading the technical issues and the project manager leading the administrative issues. The software architect must have the authority to make technical decisions.
Communication to earn trust, to persuade, to motivate, and to mentor. The software architect cannot lead by decree, only by the consent of the rest of the project. In order to be effective, the software architect must earn the respect of the project team, the project manager, the customer, and the user community, as well as the management team.
Goal-orientation and Pro-activity with a relentless focus on results. The software architect is the technical driving force behind the project, not a visionary or dreamer. The career of a successful software architect is a long series of sub-optimal decisions made in uncertainty and under pressure. Only those who can focus on doing what needs to be done will be successful in this environment of the project.
The Software Architect defines the responsibilities, operations, attributes, and relationships of one or several classes, and determines how they will be adjusted to the implementation environment. In addition, the architecture role may have responsibility for one or more design packages, or design subsystems, including any classes owned by the packages or subsystems.
Citation: Rational Unified Process - Software Architect Role
Murugesan R (Technical Architect, Genisys Software, Bangalore, KN, India)
Thanigai Ranganathan (Software Architect, Infosys Technologies Ltd., Plano, TX, USA)
Identify the business goals & drivers, all the stakeholders of the system/solution being built, and understand their requirements and expectations (in a quantifiable and measurable form), and before proceding with the definition of the solution. He should ensure that the solution is defined such that it addresses all the expectations/concerns of all the stake holders, as well as is directly influenced by one or more business driver/goal. It is his duty to communicate his decision to all the stakeholders in the languages they understand on how the system will behave (meet their requirements & expectations) when subjected to various stress factors. In this process, he may have to wear multiple hats - as a "manager" to co-ordinate with all stakeholders, as a salesman to "sell" the idea behind his solution, as a "developer" to develop POC or pilot to prove that his solution will work, as an "executive" to drive through the implementation.
Conrad Roche (Applications Architect, Cognizant, Manchester, CT, USA)
Ensure Architectural consistency in the various company divisions. Provide a future architectural direction and transition plan. Ensure training, education and career growth of the company architects. Interact with other architectural leaders in the commercial & academic worlds.
Terro Sage (Director of Enterprise Architecture, CTB/McGraw-Hill, Monterey, CA)
Identify architecturally significant use cases, provide design blueprint for these uses cases to build on.
Sewell, M. and Sewell, L. "The Software Architect's Profession." Prentice Hall PTR; 1st edition, 2001. ISBN: 0130607967.
Dr. Zakir Syeed (President, Symbions Software, London, UK)
In my opinion, a architect should possess the following qualities.
Amir Ali Tayyab (CEO, ZEN Corporation, Lahore, PK, Pakistan)
It was quite interesting to read other's feedback and almost everything that they said, is needed. However, due to problems in comprehending CLEAR, yet brief duties of a project's chief software architect, I had to come up with my own version as
Nicole Tedesco (Software architect-engineer, Ware-Squared Software Development, Shoreline, WA, USA)
Let me paraphrase Marc and Laura Sewell:
Jan Willem van den Beukel (Manager Architecture & Technology, Philips Medical Systems, Best, Netherlands)
Within PMS / Medical IT the duties are as follows:
Within context of a release project:
Across projects / mid-to-long term
Rob van Ommering, principal researcher at Philips Research Laboratories, Eindhoven, the Netherlands, and a thought leader in software architecture, has written a wonderful essay titled "Things to Do in Denver When You're an Architect" about the duties of a software architect.
Aravind Venkat (AVP, Satyam, Bangalore, India)
A software architect is one who constructs and articulates technology solution to a business problem. A software architect has multi-dimensional skills and is responsible for
Daniel Wang (software architect , project manager, CCIT, Beijing, China)
Decompose the overall system to make sure it can be worked on by all teams and team-members together.
David Weiss, Director of Software Technology Research at Avaya Laboratories and co-author of Software Product-Line Engineering, writes that a chief architect should have the following responsibilities (not in priority order).
Create and enforce architectural standards that enable the company's products to interoperate.
Create and enforce architectural standards that make the same features appear and behave the same in all of the company's products.
Create a company product line (responsibilities a and b preceding are part of this).
Define the responsibilities of an architect in the company, including what architecture means in the company.
Create a community of architects within the company.
Create training and education for the company's architects.
Identify and recruit potential architects.
Explain the architecture of the company's products to customers.
Bob Wilmes (Enterprise Architect, Large Financial Services Company, Phoenix, AZ, USA): Software is the living codification of ideas, brought together to achieve economic benefits for society and ultimately to bring enjoyment to individuals. Similar to living entities, software is subject to the forces of evolution and change, and ultimately has a mortality unless adaptation and growth is maintained. The role of the chief software architect is understand, codify and communicate the forces of adaptation and change while maintaining the organizational balance between economic drivers and technical capabilities.
Steve Wright (Consultant - Sr. Data Architect, Knowledge Management, Boston, MA): Primary Responsibilities of the Enterprise Architecture Team
Responsible for translating business requirements into systems qualities and thence into repeatable design strategies and patterns that enable those qualities (e.g. adaptability, scalability, availability, non-repudiation, reusability, etc.).
Responsible for enterprise application integration (EAI). This includes defining the opportunities for integration, selecting the tools, specifying the shared data & code resources, defining the interfaces and data-flows, and monitoring the success of said integration.
Compiles or designs architectural models of current and proposed systems across the enterprise for use internally and in conjunction with Technology Partners. The models are of two types:
Establishes the Design Repository and Metadata Repository for integrating all aspects of these models, and provides oversight of its use in conjunction with integrated Tool sets.
Perform design reviews across the organization. (Note: not code reviews.)
Leads the evaluation of vendor software targeted for possible integration into the systems or environment, including strategic applications, tools, and utilities.
Defines the IT design methodology, development process methodology and best practices.
Surveys external emerging developments, and evangelizes new technologies, standards and methodologies that will have a positive impact on the company's bottom-line and quality of service.
Participates in external standards body work that defines IT standards in the health community.
The Architecture team is divided into a number of roles based on an orthogonal “separation of concerns”:
Venkateswar Wunnava (Architect, Independent Consultant, Hyderabad, India): An Architect's role cuts across both technical and management roles and must be able to switch hats as such duties require.
The first and foremost requirement of a chief architect is to gain commitment and trust of the management for his work-products a.k.a architecture, design, guidance and decisions. This is important because "fire-fighting" managers is a fact of the real-life and most often they veto critical architectural decisions which potentially compromise architectural effectiveness and efficiencies per real-life practical scenarios. Hence
An Architect should assist managers by taking active part in estimation and project planning and tracking process so that the project can realize a concrete manifestation of the architecture a.k.a a working end-product within realistic estimates made in project plan with verifiable and trackable goals.
An Architect must be a compulsory participant of all the life-cycle processes right from Requirements through Deployment and support. Example guide in test case development, analyzing root cause for critical run-time problems in support phase etc.
Gain a complete conceptual understanding of the domain being modeled its actors, entitles and their relationships along with the scope of the solution that is being focus of the current project.
Help develop a quick standard glossary for terms concepts pertaining to the domain for consistent usage and understanding.
Help create and insist concrete, consistent and signed-off baseline requirements and control their changes.
Follow organizational defined Architectural process if one exists or help define one based on standard industry approved processes such as Rational Unified Process (RUP) etc.
Develop an architectural development plan that identifies an iterative development of Architecture with identified deliverable workproducts their time line etc., which helps both management and technical staff.
Substantiate architectural and design decisions with available alternatives pro's -con's of each and reason for choosing a particular alternative. This avoids arguments amongst senior staff and reduce conflicts and saves valuable project time, since often there are multiple ways to solve the same problem and one needs to choose one amongst them based on project constraints (cost, time, skills, availability etc.,) rather than hunt for the best alternative always. This requires establishing a design decision process to identify the same.
Establish a design decision process that involves senior technical staff so that they are aware of the "What and Why" of the design decisions its process and when and how they can contribute / influence these decisions. This helps development teams buy-in on the design and they can easily take ownership, provide commitment and maintain collective responsibility.
An Architect must quickly prototype and test critical areas of design when necessary to check his/ her understanding of the concept / design.
Oversee the development and coding process, by participating and verification and validation processes of the development artifacts and workproducts.
Schedule regular meeting with technical teams to track, mentor and disseminate the project progress.
Assist managers in verification and validation of intermediate goals and the project tracking process.
Create and make presentations for senior management on progress of the project to gain their confidence and help them track the progress.