Architecture-driven Approach - System and Subsystem Roles

By : Adelmar Esplana

 

Purpose

The purpose of this paper is to understand the underlying importance of a system-level analyst and system architect roles in the design and development of an Architecture-driven approach in Software Development in accordance with the sub-system roles such as software engineers, programmers and developers.  

Architecture-driven approach in Software Development

Architecture-driven  software development is now becoming the most effective  approach in building systems. The IEEE defines architecture as:  “The architecture of a software system (at a given point in time) is its organization or structure of significant components interacting through interfaces, those components being composed of successively smaller components and interfaces”.

 Software architecture is a subset of the overall system architecture. System architecture includes all design and implementation aspects, including hardware and technology selection. Software architecture is distinguished from programming in several ways. One characterization is that the difference between an architect and a programmer is that the architect cares about the cost impacts of their decisions. Complexity is viewed by many in the architecture, management, and metrics fields as the key architecture design force. Software complexity is related to software cost. At a minimum, the architect is responsible for managing complexity.

 

Software architecture focuses on three aspects of software design:

·         Partitioning - The functional partitioning of software modules.

·         Interfaces – The software interfaces between modules.

·         Connections – The selection and characteristics of the technology used to implement the interface connections between software modules.

Architecture decisions are usually implemented by a much larger group of developers and maintainers. In order to manage these elements effectively, there are significant challenges for architects in managing the people and relationships. Some examples include: communicating the design to developers, achieving buy-in from managers and developers, and managing the implementation and extension of the design.

The Importance of System Architecture (excerpt from Lack of System Architecture Contributes to Major Development Problems)

Lack of Overall System Architecture Contributes to Increased Costs and Subsystem Problems.  System architecture provide a basis for planning and guiding development to ensure interoperability and compatibility between among subsystems.  Through detailed analysis, they defined the most effective approach to meet current as well as potential future mission needs before beginning the acquisition process.  They also describe and influence the hardware, software, communications, database management, and security characteristics for a system.

A system architecture is derived from a strategic information systems planning process- a structured apporach to systematically identifying and defining an organization’s near-and long-term information and processing needs.  The planning process includes clearly defining the organizations’s current and future missions and identifying the system’s functional and operational requirements.  Such requirements specify the level of performance needed to accomplish the missions and provide the information that will govern overall system design and development and hardware software choices. Architectures emphasize system and subsystem interdependence. System achitectures also recognize interplay among components, that is,  they define the system’s required operational effectiveness, maintainability, and flexibility to adapt to changing missions; the degree to which the system must be expandable or upgradable to meet future needs; and its ability to incorporate technological improvements.

Architecture-driven approach - System and Subsystems Roles

While systems analysis approach may apply in both system and subsystem level roles.   Systems Analyst is a problem solving specialist who works with users and management to gather and analyze information on current and/or future computer-based systems. With this information, the system analyst, working with MIS personnel and stakeholders define the requirements which are used to modify an existing system, or to develop a new system.  The system analyst identifies and evaluates alternative solutions, makes formal presentations, and assists in directing the coding, testing, training, conversion, and maintenance of the proposed system. 

Systems architect role is to intervene between product management and development.  They are technically savvy and has ample experience with company’s product and industry in general.  They are responsible for the overall architecture (both hardware and software) of a computer system.  In any given sector, an in-dept knowledge of the problem domain would also be expected. They work with product management to refine customer  request into a set of engineering requirements that are possible to implement.  They identify the possible implementation solution that will satisfy the requirement and assess the feasibility in terms of time schedules and headcount.  Architect sometimes remain with the project through construction, writing the functional specification and contributing to the design, code and test activities as a technical lead, and advisor or in a hands-on development capacity. (Downey J, 2006)

A developer of software systems typically main focus is at the finest level of detail.  System Level roles such as System Architect/System Analyst intervention is necessary to be able to create a good solution that is integrated with other part of the system. A better solution that will blend with other components to avoid the creation of  complicated and redundant behavior resulting to a less maintenance efforts.( Lieberman B., 2006)

Career Outlook

Based on the the trend that all US-based programmers have observed since the late 1990's: global salary competition amongst programmers, and a growing view in big business of programming as a commodity skill. It's hard to compete with a developer in Russia or India who can work for a fraction of what a local US based programmer make minus benefits.  

In today's labor market, available US-based job is expected to grow from technical skills to business-technical skills. According to  US Bureau of Labor Statistics Occupational Outlook Handbook predicts that computer systems analysts are expected to be among the fastest growing occupations through 2012. The Handbook describes a systems analyst as someone who may plan and develop new computer systems or device ways to apply existing systems' resources to additional operations. It describes a computer programmer as someone who writes programs according to the specifications determined by systems analysts. (The book does not separately list business analyst as an occupation.)

According to the Handbook, in the US systems analysts held an astounding 487,000 positions in 2004 (up from 468,000 positions in 2002) compared with 455,000 jobs in 2004 for computer programmers (down from 499,000 in 2002). The Handbook also states that employment for computer programmers is "expected to grow much more slowly than that for other computer specialists." And recent estimates by the Economic Policy Institute have put the number of jobs being offshored at approximately 330,000 to 500,000 jobs. About 100,000 of those were full-time computer programming jobs.

The key to maintaining a good employment outlook in IT, it seems, is to move out of programming and up into more business-oriented IT positions such as systems analyst, business analyst, project manager, or systems architect. However, a computer programmer can't just decide to become a systems analyst or project manager overnight. The journey takes time and requires the right amount of experience and learning to be successful.

Making Shift

As the jobs in the market slowly disappear and moving towards business oriented role.  Stepping up towards the trend is quite appealing however qualification to do the job cannot be acquire overnight.  On the otherhand, making the shift can be done on-the-job by gaining more responsibility, polishing up the problem-solving skills, and using creativity in the current workplace.  Earning manager's confidence is also important. It can be done by  accepting more responsibilities throughout the project when things are too overwhelming.  Gradually accepting more project management and business analysis responsibilities when the opportunity presented itself.  When the need arises, working and communicating with end-users one-on-one by identifying and resolving their issues before they are brought up in the weekly manager's meeting is an opportunity to shine.  Even the best IT managers need a subordinate who is visible to the users who they can trust to get the job done. If a manager is slowly factoring himself away from the day-to-day workings of the project, welcome it.

Obtaining the higher visibility can be translated into higher value—and a promotion. A good subordinate has to be open-minded and creative. When solving problems, one has to always believe that there is a way to accomplish something, even if it's never been done before. Sometimes, just listening to the user will produce an idea and a lot of issues may come down to the business process that the system is attempting to replicate.

Whether open-minded and creative or not, one can still work towards more business-oriented positions. After all, business systems analysts and project managers are only a small subset of the many positions opening up each year to address the issues of complexity through simplicity.

Jobs To Pursue

Senior Technical Positions

Developers will often find that they may have to work side-by-side with the users to iron out difficult bugs. It can be difficult, if not impossible, to fix these problems when both parties can't communicate effectively. There are times in work situations when the developer had to talk with the users or other developers directly to fix difficult issues. This is the programmer's chance to show management that they can communicate and utilize analysis methodologies.  A programmer analyst is also usually someone who has some years of technical experience, and a certain depth of technical knowledge.

Programmers who seek advanced technical skills without too much end-user interaction may find themselves gravitating toward the design & architecture side of the business. Although these types of positions are still relatively technical, they often involve making key decisions to address how the new system will fit into the organization's overall IT plans. In order to be successful, the architect needs to understand and control the elements associated with the utility, cost, and risk factors of the proposed solution.

System architects must make very educated decisions about how to decompose and isolate the different components that will be required, how to fit these components into the existing infrastructure, and in what order to implement each component. It can be a disaster to implement an online ordering system that isn't compatible with the organization's current accounting packages. The architect must identify these types of issues and present them to non-technical management in words they can understand.

Business and Systems Analysts

Business and systems analysts with a good programming background and a high-level of "business savvy" are becoming the next hot ticket. More and more organizations are finally hiring business analysts to explore, record, and recommend systems that fit the business—as opposed to the other way around.

The business analyst must often work with project managers, systems architects, and systems analysts, all of which are growing occupations that can make the difference between success and failure. In some cases the business analyst's responsibilities are being combined with that of the systems analyst or the project manager under the guise of "business analyst" or "business systems analyst." A quick search on Dice.com will reveal that many business analyst jobs have hidden deep within their job descriptions requirements to develop technical specifications or to guide and manage projects. Business analyst job required both project management and systems analysis skills. These positions are sure to become more common as organizations struggle to reduce project failure and development time.

Project Management

According to the Bureau of Labor Statistics' Occupational Handbook, employers prefer project managers who possess advanced technical skills that have been acquired through work experience. The project manager is often responsible for hiring the staff, setting the schedule, and keeping track of the progress through every phase of development. This person is also responsible for assigning the work, dealing with everyday problems affecting that work, and making sure each analyst or programmer is carrying his own weight. The project manager can best carry out this function if he truly understands the work he is managing.

The project manager must also be a "people person" as well as a "technical person" in order to succeed. This individual must work with technical and non-technical staff at every level of the organization in order to succeed in his goals. Additionally, the project manager has to manage his team effectively to produce the desired product on time.

Management

The ultimate assignment for many IT professionals looking to move up the IT food chain is to become the manager. The Occupational Handbook explains that "employment of computer and information systems managers is expected to grow faster than the average for all occupations through the year 2014." These job opportunities are best suited for applicants with computer-related work experience and often require an advanced degree, such as an MBA. And of course, strong communication skills are a requirement for any management job in IT.

As discussed above there are two ways of building up current skills—acquiring business knowledge and advanced technical knowledge—but two other areas are important as well: communication and leadership.

Everyone can learn to be a better communicator with practice. The difference is that communication skills take much longer to develop. Communication takes the right mix of experience and training to become effective.

Learning how to communicate more effectively by dealing with those who couldn't. Many software users can't understand the technical side enough to describe any of their requirements in any type of detail regardless of their background. On the other hand, many technical people don't understand the intricacies of the business processes they are implementing because they can't openly communicate with the users. Learning to communicate, and having the patience to gain knowledge from the user, is an essential skill that many don't have.

To flourish the problem solving skills, instead of asking superior or a more experienced programmer help to solve the problem, taking it as an opportunity to find the answer will help you improve your skills.  Time will come  others will consult you when there is a problem to fix or a new project to complete. Gaining problem-solving experience not only improves communication, it also improves chances of moving into analyst and management positions.

The key to moving up the ladder at any company is to let them know what you know. Answer questions, solve problems, accept new projects, and don't be too shy to share a better solution. It could mean the difference between being "just another programmer" or being the top candidate for a promotion.

The ultimate assignment for many IT professionals looking to move up the IT food chain is to become the manager. The Occupational Handbook explains that "employment of computer and information systems managers is expected to grow faster than the average for all occupations through the year 2014." These job opportunities are best suited for applicants with computer-related work experience and often require an advanced degree, such as an MBA. And of course, strong communication skills are a requirement for any management job in IT.

References

Downey J. (2006) Systems architect and systems analyst: are these comparable roles?         ACM Press , 21-220p (1-59593-349-2)

Lack of System Architecture Contributes to Major Development Problems (1992) United States General Accounting Office Retrieved Dec 01,2006 from archive.gao.gov/d32t10/146697.pdf

Bureau of Labor Statistics. Occupational Outlook Handbook, 2004-05 Edition. 2005. U.S. Department of Labor. Retrieved Dec 01, 2006 from bls.gov/oco/ocos258.htm

Bureau of Labor Statistics. Occupational Outlook Handbook, 2006-07 Edition. 2006. U.S. Department of Labor. Retrieved Dec 01, 2006 from bls.gov/oco/home.htm

Lieberman B. (2006) Growing an architecture-driven team                               Retrieved Dec 01, 2006  from 128.ibm.com/developerworks/library/ar-archteam/