Information Submitted Before June, 2006
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
- be innovative and creative
- have good analysis skills
- know BEST PRACTICES of the industry
- be aware of technologies and available solutions
- be experienced with all the phases of software engineering
- understand the business objectives
- be able to gather business requirements and map them to objects in problem solving manners
- foresee changes and take measures to accommodate them while architecting the system
- have problem domain knowledge
- have good communication skills and able to express his ideas
- be able to follow process
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)
- Extends on that of any Engineer. "dealing with the practical application of scientific knowledge to the safe and cost-effective solution of Human Problems."
- The Architect is adept at use of heuristics to cause the best change in a poorly understood situation within the available resources and reduce risk in imminent implementation
- "Everything is created twice" . First is the Mental creation followed by a physical cration later. Architect is part of the first creation. He must be able to selectively switch between Abstract and Concrete as required throughout the project.
- Architect in leadership role, using the right brain, Architect part of business development and pre sales, Professional responsibilities of architect
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.
Shahid Farid (Student, PUCIT, Lahore, Punjab, Pakistan)
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:
- Functional architects, who optimize business processes, and have a very good knowledge about analysis methods;
- Technical architects, who design long-term, reliable and adaptive technical architectures, and constitute a technical gateway between the project manager and the developers.
But in big organizations, this team is divided into a number of roles:
- Software Architect
- Hardware Architect
- Data/Communication Architect
- Information Architect
- Internet Architect
- Network Architect
- Systems Architect
- Security Architect
- Process Architect
- Project Architects
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:
- business needs,
- satisfies user requirements, and
- achieves the desired results under given constraints.
Responsibilities of a Software Architect:
- A software architect analyses an organization’s overall business and establish how their software is used
- A software architect assess new software applications to see if they are suitable for an organization and if the current hardware will support them
- A software architect provide detailed information about costs and benefits of software to ensure that it will serve the client over a long period
- A software architect abstracts the complexity of a system into a manageable model that describes the essence of a system by exposing important details and significant constraints.
- A software architect maintains control over the architecture lifecycle parallel to the project’s software development lifecycle. Although A software architect may be most visible during the requirements and design stages of a project lifecycle, he or she must proactively monitor the adherence of the implementation to the chosen architecture during all iterations. Architecture on paper is fruitless unless implemented proficiently.
- A software architect stays on course in line with the long term vision when projects’ scope creep attempts to manipulate software architecture in a certain way in order to satisfy the desires of myriad stakeholders. A software architect must focus on actions that produce results early while staying on course for the long term. When project variables outside of one’s control change the architect must adjust the strategy given the resource available while maintaining the long term goal.
- A software architect progressively makes critical decisions that define a specific direction for a system in terms of implementation, operations, and maintenance. The critical decisions must be faithfully made and backed up by understanding and evaluation of alternative options. These decisions usually result in tradeoffs that principally define characteristics of a system. Additionally these decisions must be well documented in a manner understood by others.
- A software architect sets quantifiable objectives that encapsulate quality attributes of a system. The fitness of the architecture is measured against set marks.
- A software architect works closely with executives to explain the benefits and justify the investment in software architectures. This may be done by participating in business process re-engineering activities, by using Cost Benefit Analysis Method, or by measuring the level of component / architecture re-use between projects with the help from the software process improvement team. Software architect must be effective in order to deliver results that are meaningful to the projects that have an impact on the bottom line that result in greater profits.
- A software architect inspires, mentors, and encourages colleagues to apply intelligently customized industry’s best practices. Educating the recipients and participants of system architecture is essential to successfully selling the chosen architectural path. Specifically the stakeholders must be able to understand, evaluate, and reason about software architecture. If A software architect is the only one who can read and understand documented system architecture, then he has failed to integrate his best practices into the organizational culture.
- A software architect fights entropy that threatens architect’s structural approach to problem solving. It’s A software architect’s job to keep the inertia going once the project is in progress. He or she must convince all relevant stakeholders that the chosen approach is sound – moreover the chosen architectural solution must be well explained and justified. The benefits of implementing a system in a particular way must be explained not only in terms of “that’s the right pattern for this problem,” but also to demonstrate the measurable benefits - such as easier integration. For example, in a product line approach A software architect must be able to demonstrate how the subsequent projects will be easier to implement due to the presence of a common base from which subsequent work can be done.
- A software architect creates and distributes tailored views of software architectures to appropriate stakeholders at appropriate intervals. For example, a customer may demand to become more involved with a project and they may need to know an abstract view of a system on the level understood by them. A government customer may require A software architect to demonstrate early in the project how a given system meets High Level Architecture requirements for a specific framework. It’s the architect’s responsibility to identify and present a sufficient level of information that a customer needs.
- A software architect acts as an agent of change in organizations where process maturity is not sufficient for creating and maintaining architecture centric development. If the concept of software architecture is not well recognized in an organization it may be a “tough” sell to formally recognize the role of software architecture in a SDLC. Without senior management commitment and without mature software development process, architecture of the system on paper may not reflect the actual architecture of a system.
- A software architect should be familiar with compilers and other language translators and can determine costs for converting computer programs from one language or machine to another, so he selects the language and the environment.
- A software architect leads a team of programmers or negotiates outsourcing contracts to develop and build new software.
- A software architect builds prototypes of the software and tests them.
- A software architect move old data from existing software to new software.
- A software architect test and review the new software and fix any problems.
- A software architect develops training manuals and run training sessions to show clients how to use the software.
- It is seldom possible to define an architecture which satisfies all the ideal architectural parameters. For example, in the telecom software industry, availability, scalability and performance of the system is most important where as when developing desktop applications, usability and responsiveness becomes critical for the software system. This problem is resolved by the architect.
Hardware Architect: “A hardware architect is responsible for the design of hardware architecture, peripherals and display bodies.”
Responsibilities of a Hardware Architect:
- A hardware architect reviews computer software systems and data requirements as well as communications and response needs and devises computer hardware configurations to support them.
- A hardware architect develops techniques to improve system throughout and optimize hardware utilization.
- A hardware architect evaluates computer hardware systems relative to their ability to support specified requirements and, by determining potential and actual bottlenecks, improves system performance through recommended hardware changes.
- A hardware architect should be well versed in hardware compatibility, and has participated in the design of real-time or remote access systems and has a working knowledge of process control and/or large timesharing hardware systems.
Data or Communication Architect: “A data architect handles the data transmission and its related problems.”
Responsibilities of a Data or Communication Architect:
- The Data/Communications architect is technically competent in the area of data communications and transmissions and analyses computer software systems, data requirements, response times and computer hardware configurations relative to the communication and data transmission requirements.
- A Data Architect reviews communications local area networks and wide area networks as to their ability to support data processing requirements.
- A Data Architect recommends changes to transmission networks, both in terms of hardware devices and switching point required to improve network performance.
- A Data Architect has a working knowledge of coding and error detection methodologies;
- A Data Architect has participated in the analysis, design, and implementation of communication networks including data processing transmissions.
The Personality of an Architect: The main characteristics of the personality of an architect are:
- An architect is often an ex-developer who has accumulated such experience as to reach a good level in expertise. This experience must cover ideally a variety of platforms and products, and knowledge about the lifecycle of an application, or even of an information system.
- Communication skills are required.
- Diplomacy and pedagogy skills are also required to be able to explain architectures, debate about them and have them adopted.
- An architect must be able to step back and take a higher-level look, which is often difficult for developers and projects managers because they are often too focused on a specific project and so on immediate need. This means raising from the application level to the information system level. This also means that the architect has to perform a continuous technological survey; one that goes further than the context a specific project.
- An architect is a negotiator. The method of principled negotiation should be the tactic of choice for an architect. This method is most suitable in contrast to soft or hard negotiation method, because it seeks mutual cooperation between an architect and project stakeholders. An architect will be expected to deliver better, faster, and cheaper, but since only two-way combo can be selected an architect must negotiate to decide which aspects of a system will be considered first and under what conditions.
- An architect must convey a sense of credibility and trust; an architect must be perceived as successful. An architect can attain such status with his prior successful experience, formal training in the field (certifications in the future), and by his or her ability to deliver successful and relevant architectural artifacts through every stage of the SDLC.
- An architect believes in his ability to perform well. In a leadership position attitude is everything – if the passion for success is absent, then an architect must step down from the leadership pedestal.
- An architect must be patient and resilient, as the only thing constant is the change itself. Since software architecture has direct influence on the quality characteristics of a system, an architect will interact with a great number of people with a full spectrum of personalities. He or she must quickly adapt to the way stakeholders operate, as it’s not possible or feasible to expect them to speak the language of an architect.
- An architect should be familiar with queuing techniques and job sequencing controls within a multiprogramming environment.
- An architect should be familiar with Artificial Intelligence, Expert Systems and Neural Networks. 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.
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:
- System requirements shall be evaluated to meet the essential requirements, consistency and design constraints.
- Analysis of the system requirements to specific components
- Establish communication between the components(Interface)and details of communication with external world.
- Define software components(objects) their attributes and properties
- Arrive at a highly cohesive, lowly couple optimal architecture.
Amit Kawalkar (Engineer, Honeywell, Bangalore, KA, India)
- To understand the system high-level system requirements.
- To understand the scope of the system.
- The system design goals should be solidly understood.
- Must understand the deployment scenarios.
- Must design the system with extensiblility.
- Must design the system by isolating the functional areas.
- Should layer the system according to different responsibilities.
Constantin Kostenko (Software Architect, SoftwareArchitectures.com, Washington, D.C.)
An architect
- abstracts the complexity of a system into a manageable model
- maintains control over the architecture lifecycle
- stays on course in line with the long term vision
- progressively makes critical decisions that define a specific direction for a system
- sets quantifiable objectives that encapsulate quality attributes of a system
- works closely with executives to explain the benefits and justify the investment in software architectures
- inspires, mentors, and encourages colleagues to apply intelligently customized industry’s best practices
- fights entropy that threatens architect’s structural approach to problem solving.
- creates and distributes tailored views of software architectures to appropriate stakeholders at appropriate intervals
- acts as an agent of change in organizations where process maturity is not sufficient for creating and maintaining architecture centric development
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
Amit Midha (Research Scholar, Carnegie Mellon University-West Coast Campus, Mountain View, CA)
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)
- Understand Business Goals
- Understand Customer expectation 3. Understand Technology solutions
- Understand Current Technology in use
- Create/maintain the Company strategies in line with the Business Goal & Customer expectations with the current/new technology.
Ashwin Palaparthi (Principal Architect, AppLabs Technologies, Philadelphia, PA, USA)
- Make sure "not" to become a top-notch developer in the company
- Advocate company politics, technological or otherwise
- Act as a consultant-strategist for everyone
- Think outside software and communicate that view to the inside (or sometimes vice-versa)
- Be an adherent of technocracy and provide thought leadership
- Ensure to be trusted by others though they hate (As you know, hating and liking have got nothing to do with whether you are trusted)
- Mentor, mentor and mentor (him and then others)
- Develop and foster all the positive adjectives prefixed-- proactive, aggressive and xxxxive
- Always live in the ideal world and pretend that the pragmatic world is an unknown thing
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
- Choose the right tools, technologies and platforms for the development, testing and deployment of each product in the product-line
- Identify architectural differentiators for the product line
It is seldom possible to define an architecture which satisfies all the ideal architectural parameters. For example, in the telecom software industry, availability, scalability and performance of the system is most important where as when developing desktop applications, usability and responsiveness becomes critical for the software system. Create an architectural vision.
- Sell the architectural vision to all stake holders
- Define patterns, frameworks and best practices to achieve the architectural vision
- Identify and mitigate risks during the development of products
- Closely watch competing products and strategize for the continuous evolution of the product line
- Feel the pulse of the market, management, and development team at all times
- Build good architects and designers in the organization 8) Frequently evaluate new tools and technologies to be incorporated in the organization
- Build knowledge base
Narayana Peesapati (Vice President Technical, NuNet Technologies Pvt Ltd, Visakhapatnam, AP, India)
- Understanding the customer requirements in right perspective - in terms of functional & non functional, financial & future growth.
- Envisage the architecture (technology, security, scalability, functional meeting, etc) to meet all the above.
- Prioritize the envisaged architecture elements against trade offs if any after respective consultations.
- Translation & communication of Critical areas & impact of those to the respective stake holders.
- Documenting the architecture with all the pros and cons & communicating the same.
- Make the implementation & review plan.
- Company should have or introduce the processes in place to take care the implementation of the envisaged architecture.
- Collection of User Feedback.
- Transforming the Feedback into preventive actions of the processes if any.
Tao Nguyen Phu (Accounting, Truong Xuan Co., Ltd, Ho Chi Minh, Vietnam)
Constructing databases.
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)
- Identifying stakeholders
- Communicate with stakeholders and understand what each wants
- Understand business requirements
- Creating Architecture and Validate it
- Consulting and educating on the use of Architecture
- He MUST have the following qualities:
- Innovative & Creative
- Analyzes
- Leadership
- Excellent Business Communication
- Aware of Technologies & Tools
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.
Dr. Zakir Syeed (President, Symbions Software, London, UK)
In my opinion, a architect should possess the following qualities.
- Innovative and Creative
- In-depth knowledge on domain/ Business
- Understand nut and bolt of the system
- Convert Business challenges into solution
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
- identify goals of the software by discussing with end-users or management
- write a plan and update it based upon progress
- establish a seamless communication with developers and end-users
- have disaster recovery backup plans in place
- ensure standardization in all aspects
- deploy it successfully and diplomatically via easy training and documentation
- keep it up-to-date with the new technologies' availability before-hand
Nicole Tedesco (Software architect-engineer, Ware-Squared Software Development, Shoreline, WA, USA)
Let me paraphrase Marc and Laura Sewell:
- Understand the worldview, problems and issues of your client, employer and end-users
- Design solutions to solve those problems
- Communicate these solutions to all stakeholders, implementors and consumers
- Ensure the quality of the solutions through delivery
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:
- writing / overseeing the System Requirements Specification
- technically overseeing product hazard analysis
- organising the design meetings for global design
- writing the (global) System Design Specification
- directing performance specifications, measurements and their analysis + follow up during development phase
- overseeing the overall test strategy
- member of project kernel team / technical peer to project leader
- day-to-day technical support / troubleshooting to other designers / software engineers
Across projects / mid-to-long term
- proving input to commercial roadmap of the product
- defining technical roadmap of the product
- identifying and performing/overseeing feasibility activities
- providing input to development (technology) strategy
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
- Technical Solution for business problem
- Provide Value addition to the process
- Create a blueprint upon which applications and systems can be build
- Big Picture Baby Steps
- Evaluate and mitigate Technical Risks
- Create architecture that works under the boundary of Cost, Time and Feature Set
Craig Walters (Master Architect, Monsanto, St Louis, MO, USA)
- Develop long range technical direction and planning.
- Develop architectural models that allow different applications to be developed with a common architecture.
- Mentor project teams.
- Develop best practices.
- Train tech leads.
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.