软件架构师在完成一个项目时是怎么做的?

         软件架构是什么?确切定义是某个软件或计算机系统的软件构架是该系统的一个或多个结构,它们是由软件元素、这些元素的外部可见属性以及这些元素之间的关系组成。软件

设计开发和软件构架的区别主要包括:伸缩性和抽象程度的增加以及做出正确设计决策意义的增强。软件架构是通过一个全局的观点,宏观的视角来理解软件系统作为一个整体如何工作的。

    一个软件架构师需要各方面的素质,他的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作,他需要对开发技术非常了解,需要良好的组织管理能力。 在一个软件项目中,用户的需求分析显然是非常重要的,但是经常忽略用户的非功能性需求,而理解非功能性需求是软件架构师的职责非常重要的部分。捕捉到了非功能性需求后,应该如何去解决这些问题并定义它的构架。然后就需要进行技术选型,即你的项目准备使用那些技术。技术的选择你需要综合考虑成本、许可、供应商关系、技术策略、兼容性、协作性、支持、部署、升级的政策以及用户的环境等各方面。然后就是这些技术是否真正的符合你的系统。软件架构设计师通过他的经验,考虑多方面的因素,在复杂性或不确定性太高时要减轻风险,当有机会或利益时减轻风险。

    评估一个架构是成功的:它满足非功能性需求,而且为其他部分的代码提供必要的基础,并为解决和存在的业务问题提供足够的平台。在设计架构时,由于软件是复杂而又抽象的,所以我们应该在开发时对你设计的架构进行测试,这样你就能减少项目失败的风险。任何一个软件都不是单独存在的,它需要人来理解必要时对他进行改善。包括从需要理解和切入架构的直接开发团队到其他对安全性、数据库、运营、维护、支持等有兴趣的人。要让一个软件项目成功,你需要和所有的系统干系密切协作来保证架构和所在的环境很好的集成。

    实现一个架构,我们需要具有全局的视角并把贯穿软件开发生命周期的愿景加以宣传,定义一个架构,只有参与并不断的发展架构才是有意义的。拥有全局的视角是技术领导的一个方面,但是在软件发布阶段,作为架构师,得保证提供技术指导、做出技术决策等等被考虑到,团队正在想一个正确的方向前进。一个软件架构师工作在软件项目开发中主要包括:1、领导与协调整个项目中的技术活动(分析、设计和实施等)2、推动主要的技术决策,并最终表达为软件构架 3、确定和文档化系统的相对构架而言意义重大的方面,包括需求、设计、实施和部署等视图 4、确定设计元素的分组以及这些分组之间的接口5、为技术决策提供规则平衡各涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻6、理解、评价并接受系统需求7、评价和确定软件架构的实现、专业技能。