Software Architect - Skills & Responsibilities
Post date: May 5, 2012 8:39:06 AM
As ususal finding definition of software architecture is easy but to find definition of a software architect may be tricky. Software Architecture may contain many things and the role software architect may be doing or responsible for one or few of them. So don't expect (in the industry) that what ever is defined as software architecture is responsibility of a software architect.
Software Architect is a role in software development who identifies various components of a software system to be built, who creates high level design (architecturural view) of the systems using combination of architectural styles. Software Architect looks at various non functional requirements of the system and makes provision in the software to satisfy those non functional requirements. He identifies proven solutions of recuring problems (paterns) to fit in to the overall structure of the software.
Good command over programming language and frameworks (for example - GWT, Spring, Hibernate, Portals, CMS etc)
UML and UML Tools
Should be able to create various views from the requirements.
Should be able to apply patterns to achieve non functional requirements.
Knowledge of measurement and profiling tools for performance, security etc.
Knowledge of code review tools.
Define overall structure of the software system by identifying architecture style/styles to be applied
Makes decisions to satisfy non functional requirements
Should be able to troubleshoot when problems arise
Identifies major components of the software system and their relationship.
Should introduce best practices in the team and review for implementation of those best practices.
Should make sure that design and architecture is correctly implemented.
Skills and responsibilities as in job posts:
Title: Software Architect / Business Analyst UI Information Architecture
To be considered for this role, you must have experience of the following:
Object-oriented analysis and design
ERDs or UML class diagrams
Relational database design
User-stories documentation (Agile and/or Waterfall)
Software engineering, including analysis, design, development and testing
As a Software Architect / Business Analyst, you must have knowledge of web technologies and UI wire-frame design.
Experience of working as a business analyst within an Agile environment would be a distinct advantage, but this is by no means essential.
Liaising with clients and stakeholders to analyse and define Project scope
Directing and running requirements gathering and analysis workshops
Producing detailed and annotates software wire-frames and Specifications
Assisting the Project Manager and Developers with change management and new features
Title: Lead Developer Software Architect Data Warehouse Database
Experience: 10+ years in Software Development and Software Architecture
Skills: Solid background in C#.Net, Microsoft Visual Studio .Net
Deep knowledge of SQL Server programming and T-SQL
Good understanding of WCF and multi-threading
Unit and End-to-End testing experience through the whole development project life cycle
Preferred: Experience with Data Warehouse design, architecture and profiling
Plus: WPF, Scalable Software, Source Control Systems like Rational Clear Case or Microsoft Visual Studio Team Edition
Drive for creative, innovative solutions
Prepare architectural documents and presentations
Work on technology trend analysis/roadmap s
Tolerant of ambiguity, willing to backtrack, seek multiple solutions, good at working at an abstract level
Influence business strategy
Understand what the developers want and need from the architecture
Help developers see the value of the architecture and understand how to use it successfully
Title: Software Architect
Experience: At least 4 years of experience in SOA (Service Oriented Architecture) and Web Services. Candidate would have been a tenured technologist on multiple successful SOA implementations.
This position requires a good understanding of the SOA; having performed a lead role in the establishment of an SOA environment and successful implementation of applications using SOA. Proven track record driving application architecture in a high growth enterprise environment.
Solid Quality Assurance experience including strategy planning, reporting and metrics analysis including experience managing and building test processes and frameworks; architecting, designing and delivering solutions in the areas of SOA and Quality Assurance including a strong knowledge of all stages of software quality assurance including black box testing, gray box, white box testing, performance, stress and load testing, requirements analysis, test planning, reporting/control and root cause analysis.
Proven repeated experience in developing, implementing, and managing load, performance, stress, and capacity testing strategies in complex enterprise environments including integrated applications using EAI tools.
Proven experience in multiple environments with designing/programming skills with strong Object Oriented skills using some of the open architecture standards such as XPDL, BPEL, UML, Servlets, SOAP, WSDL, JSPs, JDBC, SQL, JNDI, XML, HTML and J2EE best practices, design principles, and techniques with SOA applications and ESB software (e.g., TIBCO BusinessWorks, BEA WebMethods)
Strong understanding of system, regression and user acceptance testing, familiarity with testing tools to include functional automation tools and test case management and defect management tools.
Experience identifying and documenting the requirements with clients so strong verbal, written communication, interpersonal, and customer relationship skills are required.
Additionally, the following education/experience is strongly preferred: Bachelor's Degree or Graduate Degree in Computer Science, or related fields.
Ability to accurately and efficiently architect and implement products of chosen expertise as a single Business Unit multi-product solution and/or a cross Business Unit multi-product integrated solution within the client environment through utilizing Company Services Best Practices.
Meet or exceed customer expectations by designing, scoping, assessing and delivering solutions that address the client's business requirements and are within the ''Scope of Work'' as agreed to by Company and Customer.
Effectively troubleshoot technical integrated solution implementation issues for solutions of chosen expertise.
As a project technical team member contribute product and solution expertise, and provide project planning support as required to deliver a successful client engagement.
Adhere to Time and Expense Policy as posted on QMS.
Meet target Billable Utilization objective as defined for this role.
Serve as a mentor to Associate Services Architects who are actively engaged as part of the project team on assigned client engagements.
Demonstrate a commanding ability to assess the client's current infrastructure, business requirements and planned budget to effectively position a complete Company solution that adhere's to Company Services Best Practices.
Help build the knowledge base in the communities in which you choose to participate in – including lessons learned, best practices, tools, and methods and learning events using SharePoint as the enabling technology.
Title: Software Architect
Comprehensive knowledge of C, C#, Java and their standard libraries
Proficient with development in a Linux/Unix environment
Proficient with unit testing frameworks
Experience in a Software Architecture role with a demonstrated history of solving architectural and efficiency problems
Some experience in project planningand estimation
Some experience in a supervisory or leadership role
Excellent time management skills, able to prioritize tasks to meet deadlines
Excellent critical-thinking and problem-solving skills
Excellent written and oral communication skills
Able to collaborate and contribute in a team environment
Resourceful and able to quickly learn new technologies and concepts
Superior grasp of optimal Architecture strategies
Superior analytical and design skills
Superior skills in developing and debugging software
Extensive experience and knowledge with multiple development environments and tools
Extensive experience in a wide range of relevant technologies/platforms/protocols
Superior technical knowledge in software development methodologies, design and implementation
Demonstrate product expertise.
Architect solutions to complex challenges and work with development teams to ensure proper implementation
Stay abreast of new technologies andtrends in the area of expertise (competitive products, new and innovative ways to implement solutions, efficient design and coding practices, performance improvements etc.) to continuously improve the way product development teams deliver
Develop and re-factor code for high performance
Provide assistance to other developers on-site and off-site
Oversee and guide detailed technic alanalysis and design of highly complex software components
Participate in software design/code reviews to ensure that high quality code is produced according to specifications in adherence to company standards
Lead and mentor other team members (when required)
Demonstrate superior analytical skills to help troubleshoot and fix highly complex code defects
Review and analyze existing technologies and provide recommendations for integrations, improvements & enhancements, or opportunities for reuse
Work with Customer Support and Customers to ensure that their issues are dealt with (includes expert troubleshooting) in an effective manner
Provide knowledge transfer presentations to teams from all functional areas and adjust the agenda according to skill sets
Title: Software Architect
Requires extensive experience and in-depth knowledge in one or more of the following:Open OS Framework integration
Platform architecture and Hardware IPC
Android OpenOS software architecture
Window Phone OpenOS software
PreferredMasters or PhD in Software Engineering, Computer Science, or related field
Experience or knowledge with Android is an added advantage
Expert level in C/C++ programming and object oriented techniques
Expert in UML usage as well as corresponding tools (e.g. Enterprise Architect or Rational Modeler)
Fluency in English to support work with multicultural teams internally and externally
Experience interacting with marketing, customers, and software development organizations to develop system requirements and architectures
Demonstrated progression in career from software implementation through software design, architecture of subsystems, and architecture of complete embedded systems including both software and hardware components
The role of the Software Architect is to autonomously drive architectural topics between marketing and development teams. To achieve this, the Software Architect must:
Support development of system requirements derived from a variety of sources such as customer inputs, marketing inputs, competitive assessment and industry standards (e.g. 3GPP)
Support the business organization and customers in understanding the impact of requirements on mobile phone products
Support allocation of requirements to hardware and software components of wireless phone/modem solutions
Work jointly with hardware architects to define the HW/SW interfaces
Partition the required SW functionality between system elements such as processors, co-processors, micro-code engines and HW accelerators
Define system software architecture to support required functionality
Work with software development teams during implementation to ensure consistency between architecture and implementation
Understand and manage tradeoffs between cost, effort and flexibility
Act as a technical leader for dedicated topics inside the R&D organization
Title: Software Architect/Engineer
Experieince: Minimum 10 years experience.
Experience with the full life cycle software development process including requirements analysis, software design, prototyping, programming, debugging and testing, system software integration and testing, software deployment and user training.
Proficiency with object oriented design and programming practices is required.
Development experience utilizing Visual Studio and Eclipse
Experience using DODAF 2.0 and UML to facilitate team design interaction and to document software design artifacts.
General understanding of standard software design patterns and when to use them.
Experience with specific unit test frameworks and how they are used to reduce defect occurrences.
Comprehensive knowledge of the principles, concepts and theories of systems and software design engineering is a must.
This position requires a motivated team player with excellent customer relations and interpersonal communication skills.
The successful candidate will perform software system requirements analysis and will lead the design, coding, implementation and testing of software applications supporting common operating environment middleware and battle command software based applications.
The successful candidate must also provide technical leadership, facilitate design and code reviews and mentor other engineers.
The successful candidate must interface with the user/sponsor and all other stakeholders in order to determine their (evolving) needs.
Responsibilities will also include leading tasks within a larger project, as well as making formal presentations to management and customers.
The successful candidate must be capable of working independently for extended periods of time and be able to both recommend and manage changes to project objectives and priorities.
Title: Software Architect
Mastery of modern programming languages such as Java, .Net, etc.
Strong understanding of networking (Protocols, Physical Layers, etc).
In depth knowledge of software design patterns, software architecture, and Service Oriented Architectures.
Familiarity with open source software development.
Experience with Agile software development processes.
Preferred:Mastery of the Enterprise Java (JEE) tech stack (i.e. application servers, EJB, etc).
Experience with cloud computing concepts as well as mobile computing platforms.
Knowledge of distributed application / systems architecture.
User Interface Design Experience.
Windows, Linux, Unix Operating System Experience.
Analyze requirements, operational environments, and existing system interfaces.
Design enterprise software architectures for large-scale applications integration using service oriented architectures.
Develop individual application architectures for applications in a variety of DoD domains.
Conduct research on emerging software technologies, tools, and standards.
Evaluate and participate in the development of open source software products.
Potentially lead a team of developers though the product development lifecycle using agile software development methodologies.
Evaluate, analyze and comment on existing software architectures.
Participate in business development and growth by identifying key client capability gaps and proposing potential solutions.
Participate in active software development and integration efforts.
Ensure the applicability, usefulness, and quality of delivered software systems.
Title: Software Architect
Depth of technical skills and expertise in programming methodologies and practices, application platforms and
frameworks, service orientation, technology standards and specifications, and technical modeling of systems and services in one or more domains relevant to current and/or future frog services
Expertise in preparing and delivering proposals and presentations to all levels of a client organization (including
Experience in both quantitative and qualitative analysis and building substantiated recommendations of appropriate technology solutions that address user experience, technical, operational, and business considerations in parallel
Demonstrated ability to lead software systems design, provide appropriate team support and maintenance of artifacts throughout the software engineering lifecycle, and collaborate with software engineers, design technologists and creative leaders on common user experience goals expressed through software realization
Lead application and/or solution architecture definition on software design and engineering engagements
Lead technical requirements gathering, use-case discovery, and gap analysis efforts on relevant platforms and frameworks to drive strategic architecture and user experience recommendations
Participate in proposal generation, project planning, feature scoping, level of effort estimation, and delivery methodology tasks in both the business development and initial client engagement phases
Develop and maintain technical requirements specifications and software architecture documentation and diagrams throughout the engagement
Provide proactive thought leadership, domain expertise, and strategic problem solving to the project team throughout the design and development lifecycle
Serve as a primary technical contact for client and third-party technical leads and domain experts during project discovery, design, and implementation phases while assisting the project leadership team in the management of client expectations regarding technology activities during the engagement
Assist in the definition and evolution of new service offerings related to technical expertise and capabilities of the local studio
Evangelize and promote technology innovation opportunities across creative, strategy, and program management disciplines
Title: Software Architect
Understanding of the technologies needs to create distributed large-scale systems
Strong organizational skills
Excellent hands-on technical skills
Experience working on an Agile Scrum team / project
Experience with SIP, RTP, RTSP protocols desired
Has working knowledge of static analysis, code complexity, and other recent innovations in software development tools and processes
Experience providing technical leadership and direction to team members
Demonstrated technical ownership/leadership of large component(s) or whole product/platform
Research technical approaches that address system requirements
Collaboratively architect a system comprising of Cisco, open source, and third-party components
Write specification documents and drive sign-off
Implement new features and extend existing functionality
Connect business requirements with technical solutions and vice-versa
Use static analysis, code complexity, and other state-of-the art software development tools and processes to develop high quality software.
Develops efficient and effective automated unit and feature tests for new and existing software
Escalate issues to management as appropriate
Influence beyond current team/ownership
Mentor fellow engineers and resolve technical conflicts
Experience with web 2.0 technologies, DB, SIP, RTP, RTSP
Experience with JAVA in a UNIX/Linux environment.
Excellent written and verbal communication skills and cross-team collaboration skills.
Ability to lead, guide and direct a team of engineers in developing the best possible solutions