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/