軟件體系結(jié)構(gòu)_第1頁
軟件體系結(jié)構(gòu)_第2頁
軟件體系結(jié)構(gòu)_第3頁
軟件體系結(jié)構(gòu)_第4頁
軟件體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Chapter-2Role of the Software ArchitectArchitect roles relates to other key roles on the development team.Skill of software architectHow to lead a software architect teamPitfalls and traps associated with the software architectThe software architect should be instrumental in the development of a sha

2、red vision for the software. What is a shared vision? At a basic level the development team must have an idea in their minds about what the final product will be, the effect the software will have, and the goals of the organization. The architecture will reflect and define a large part of the vision

3、. It is in the technical aspects of the vision that the architect typically makes the largest contribution.The architect must always be prepared to communicate and interact with other team members about the overall vision.Defining and communicating technical vision includes the following activities:

4、 Analysis of the problem domain Risk management Requirements management Interface design Technology roadmap management Determination of implementation approaches Definition of an architecture that meets the system requirements Definition of an architecture that meets goals of the organization Defini

5、tion of an architecture that meets the project budget and schedule Oversight of the mapping from the architecture to the design and implementation Communication of the software architecture to technical and non-technical audiences Maintenance of the software architecture throughout the project lifec

6、ycleRequirements The architect is typically responsible for understanding and managing the non-functional system requirements such as maintainability, performance, testability, reusability, reliability, and availability The architect must often review and approve both the requirements provided by th

7、e system-level systems engineering organization and the designs produced by the development teams. The architect will work directly with customers, marketing, and support organizations as well on the formulation of requirements.Technical risk assessment and management is another crucial role for the

8、 architect. The architect should use his or her experience to provide management and other stakeholders with information about the key technical risks of the proposed software. A risk reduction plan, either formal or informal, to address these risks is the responsibility of the architect. The archit

9、ect needs to be capable of assessing the impact of requirements changes on the system as well as the risk of the proposed changes.Analysis of the problem domain is an important role. This is especially true if the task is to create a product line, framework, or family of products. The architect need

10、s to be able to dissect(breakdown) problems into component parts and structure solutions that can meet the needs of the organization.Design of the overall software structure as well as critical components, interfaces, and policies is the direct responsibility of the architect. The software architect

11、 should also provide a set of design guidelines to the development team as well as input to the development of coding style guides. The software architect is the final authority on issues such as design/development style, interface negotiation and definition, and requirement modifications.The softwa

12、re architect serves as a reviewer and approver of many different project deliverables. These including subsystem designs, interface definition documents, coding style guidelines, and system engineering work products. In addition to reviewing, the software architect also approves many of these docume

13、nts. (test-reports)The software architect also reviews and approves software deliveries and associated documentationMentoring of designers and developers is another key role. Since the software architect is an expert developer and designer it is critical to share this knowledge and experience with o

14、ther team members. This can be done in a number of different ways, including developing and teaching classes, individual help sessions, and brown-bag seminars.Integration and test support is another important role of the software architect. This includes defect prioritization and assignment, resolut

15、ion of defect issues, definition of test scenarios, and participation in test execution.Implementation is a role that may be played by an architect on a small project.The architect should not be personally responsible for code deliverables as this involvement may end up as a bottleneck for other dev

16、elopers.Large-scale projects there are simply too many high-level issues for an architect to spend significant time in an implementation role.Team lead is another critical role played by the architect. The architect is part of the leadership team and needs to work with that team. In addition, in lar

17、ge projects an architect may have a supporting staff, or at a minimum an architecture team. The architect needs to lead these teams and keep them focused on addressing the most critical project risks.The software architect is also a key liaison to project management, other technical leaders, system

18、engineering, and developers. The architect will need to translate and interpret technical information for other team members as well as helping a team member find appropriate contacts.Collect Requirement System EngineerArchitect1. Domain understanding 2. Preparation and review of the requirement3. S

19、taffing and process definition4. Development of top-level architecture - architecture definitionSubsystem Team start design1. Reviewer and approver2. Integration and test supportArchitect RoleArchitect RoleRequirement Requirement Technical Technical Risk Risk ManagementManagementProblem Problem Doma

20、inDomainDesign Design Software Software StructureStructureReview and Review and Approve workApprove workMentoringMentoringIntegration Integration and Testand TestImplementatiImplementationonTeam LeadTeam Lead Description: This includes the top-level project manager, and the immediate staff associate

21、d with that role. This could include program planning, subcontract management, supplier management, software estimation, release management, and operations management. Relationship to Software Architect: The program management must understand how the software architecture maps to internal developmen

22、t teams, subcontracted development teams, COTS tools, hardware, network architecture, and external organizations/entities with whom the software must interface. The architect will work with project management in the definition of release content as well as prioritization of features included or omit

23、ted from a release. Description: These are the managers for each individual development team. These may be internal or subcontracted teams. These leads may also have a small staff with whom the software architect must communicate. Relationship to Software Architect: These development team managers s

24、hould clearly understand the interfaces they provide and consume with respect to other development teams and external entities. This includes the high-level technical aspects, such as COTS tools involved in the interface, as well as the complexity involved in the development or modification of each

25、of these interfaces. The managers should understand the key interfaces that may be a potential performance problem. Finally, the software architect will need to assist the development team managers in the addition of features or reduction of functionality. Description: Top-level technical lead respo

26、nsible for the overall system design and delivery. The responsibilities associated with this role often include technical leadership of the systems engineering, software development, hardware design, network (LAN and WAN) design, and even test organizations. Relationship to Software Architect: The s

27、oftware architect must communicate the overall software design to the system architect. This includes interfaces between development teams, external interfaces, requirements-related issues, and dependencies from other organizations that may impact the software development. In addition, the software

28、architect will work closely with the chief engineer to identify and resolve significant technical issues. Description: The role of the chief software engineer is usually tied more closely to the development process than the details of the software architecture. This means the CSE should not only pla

29、y a key role in the definition of the process, but should ensure the process is followed throughout the development lifecycle. The CSE works closely with the technical lead and build manager for each release. Relationship to Software Architect: The software architect and CSE work closely together no

30、t only to make sure the delivered software meets the requirements, but also to ensure that the interface and port definitions match those defined by the software architecture team. The CSE will consult the software architect on many process definition issues, especially those related to requirements

31、, architecture definition, and design. Description: The hardware architect is responsible for the selection and configuration of the hardware on which the software must execute. These include requirements related to performance, input/output, data storage, COTS products, software sizing, and the use

32、r interface. Relationship to Software Architect: The software architect will provide detailed information on the low-level requirements the software will levy on the hard- ware. The hardware architect will also communicate to the software architect the restrictions that are imposed by the hardware t

33、hat will be used. The software architect must participate in the hardware selection and the specification of configuration information, making sure all key requirements are considered. Description: The network architect is responsible for defining the LAN and WAN design and configuration. In additio

34、n, the network architect must make sure the installation of the network hardware is performed to meet the network design. This role is sometimes combined with the hardware architect, primarily because knowledge of the various hardware components and how these components are interconnected are closel

35、y related. Relationship to Software Architect: As with the hardware architect, the software architect must communicate network requirements to the network architect and participate in the selection and configuration of the network. In addition, once the network configuration is defined, the network

36、architect must communicate the constraints implied by the network back to the software architect. Description: The manager and technical lead work together to deliver each major release of the software. Each individual can then focus on what they do best, leaving the release management tasks to the

37、manager and the technical issues to be worked out by the technical lead. This lead is responsible for technical aspects of the interfaces, defects, building, testing, and delivery of the software. These technical leads will often participate in the definition of and modifications to the software arc

38、hitecture. Relationship to Software Architect: First, the software architect must deliver a set of architecture views to the technical lead that clearly communicates the system under development and test for that release. This will enable the technical lead to quickly detect and remedy issues with t

39、he software. The software architect should work with the technical lead to change representations in the architecture that do not accurately represent the software that was delivered. Description: The data architect is responsible for the definition, development, and documentation of the data archit

40、ecture. This includes both the logical and physical data architecture. When specific aspects of the physical data architecture are the responsibility of the subsystem development teams, the data architect will review and approve the teams data architecture. Relationship to Software Architect: The da

41、ta architect will usually be one of the members of the software architecture team. It is important that the data architect work closely with the software architect and that the software architect have insight into and final approval of the data architecture. Description: The systems engineering lead

42、s are responsible for delivering the system requirements that have been allocated to software, to the development organization. Relationship to Software Architect: The software architect must review these requirements to make sure they can be developed, given the project constraints, and provide fee

43、dback to the systems engineering leads when a mismatch occurs. The software architect must communicate the software architecture to the systems engineering leads to make sure the requirements have been correctly understood and translated into the architecture. Description: A software systems enginee

44、ring (SSE) group that translates and maps the requirements from the higher-level systems group into lower-level requirements, which can be assigned to individual development teams. This often means that the higher-level shall statements which are used at the top level must be translated into use cas

45、es and other artifacts that more clearly communicate the requirements to the software development teams. In addition, the requirements associated with each interface may also be specified by this team. Relationship to Software Architect: The software architect should participate in many of the use c

46、ase and interface definition activities with the SSE team. The preliminary software architecture will often be provided to this organization, and the resulting activities of the SSE team will evolve the software architecture as the system is better understood. Extensive software design and developme

47、nt experience is required to create an effective overall design, and the software architect must understand and explain how this will map to the implementation. Mapping Design -Coding The software architect should be a recognized technical leader (Technical Leadership)and, as a result, instill this

48、confidence in the program managers, development managers, and development leads. Lead PM, Dev Manager and Team Leads with his/her technical skillsTeam facilitation skills are essential. The software architect should be effective in leading both the architecture team and the development teams. The ar

49、chitect should be able to handle the dynamics of this team as well as be the final decision maker when there are technical disagreements.Communication skills are vital to the job of architect. The software architect should also be able to clearly communicate needs and concerns related to the archite

50、cture to these stakeholders. Communicate with emails or meeting with various architecture teams and other technical leaders and other stakeholdersThe architect will spend a great deal of time building consensus among technical leaders and managers. This is often required in advance of technical meet

51、ings, so the meetings will run smoothly.Technical skills of the software architect should be broad, deep and up to date. The architect should have the ability to make technology selections that can facilitate development within the project schedule, budget, and developer skill set. Avoid favorite te

52、chnologies in all projectsThe architect needs to keep up-to-date technical skills on new software design and development technologies and should always be researching new techniques that are more effective. Development languages, modeling techniques, and platforms continue to evolve rapidly.One face

53、t of the architects technical skill set is knowledge of component communication mechanisms. In order to select the correct implementation approaches and tools, the software architect should have experience with and knowledge of several mechanisms. Examples include remote procedure call(RPC), Java Re

54、mote Method Invocation (RMI), Common Object Request Broker Architecture (CORBA), other standards-based communication proto cols, directory services, web services, and relational as well as object-oriented databases.Knowledge of the domain is also important. The software architect must be able to dev

55、elop an architecture that meets the needs of the customers and end users of the system. In order to meet these needs, the approaches and techniques applied by the end users in performing their day-to- day tasks must be clearly understood by the architect. Good architects tend to be quick learners an

56、d keen observers because of the need to quickly acquire new domain understanding.The software architect must possess very good abstraction skills. This is critical to the definition of views that communicate the appropriate information. Many developers will not be good software architects, as they a

57、re not able to focus at the right level of abstraction and quickly become overwhelmed by the low-level aspects of the software design and implementation.A contracted architect specialist can be brought in to perform the responsibilities of the software architect or assist the individual selected fro

58、m within the organization to be the software architect , if a person within company doesnt have necessary experience.Contracted Architects Helps to reduce the workload of existing architects Helps in the development of the software architecture, Support of the development of subsystem designs, and f

59、or assessments or reviews of both the top-level architecture and subsystem-level design.The software architect must not become detached from the other technical leadership. This includes the chief software engineer, the software systems engineering lead, and the development team leads. The approach

60、that works best for communication of both the top level and subsystem level of the software architecture is to create a small software architecture team made up of the key technical individuals on the development team. The size of this team should usually be limited to no more than seven individuals

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論