课堂作业01
软件体系架构师是如何进行工作的?
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并确认技术细节、扫清主要难点的重要技术人员。所以他必须在某一两个行业具备非常深厚的专业知识技能和行业知识。同时还要具备良好的沟通能力和同理心。要会正确分析用户的实质要求,深入发掘用户的潜在需求,根据用户的要求和当前的技术现状制定合适的软件体系架构。
就像房屋的建筑构成依靠于坚实的骨架的搭建,软件的实现也要依托于一个良好的系统架构,所以系统的架构师的工作是非常重要的。他们的工作如下:
- 软件系统的分解 1.1划分哪些模块
1.2每个模块的职责是什么
1.3每个模块的接口是如何定义的
1.4模块之间采用哪种交互机制
1.5如何满足约束和质量属性的需求
1.6如何适应可能发生的变化
2.规划系统的组成
2.1划分不同的子系统
2.2每个子系统承担相对独立的功能
2.3子系统间通过特定的交互机制进行协作
3.满足系统各方面的需求
3.1满足性能,持续可用性的需求
3.2满足可扩展性,可重用性的需求
3.3满足约束限制的需求
3.4深入研究开发,运行期间的情况
3.5制定相应的设计决策
3.5.1规划所有模块
3.5.2分配不同职责
3.5.3协同完成功能需求
他们的工作流程大致如下:
- 拜访客户,了解他们的需求。
我们的系统开发是要交付给客户进行使用的,所以顾客即上帝,我们一定要把用户的实质性要求进行满足之后才可以在上面添加一些炫酷的附属功能,如果连基础都没有,华而不实的东西是没有人会买单的。
有时候我们在调查用户的需求的时候他们往往言不达意,不能将自己的真实需求表述出来,这时候我们要具备良好的沟通能力和同理心。要会正确分析用户的实质要求,深入发掘用户的潜在需求。
还有的时候用户往往会按照他所想象的“乌托邦王国”的形式给你描述,那些描述都是不切实际的。这时候我们要会“透过现象看本质”,正确分析用户的需求。
- 将客户的需求转换为规范的开发计划及文本
当我们调查结束之后,我们要根据我们调查所得到将客户的需求按照当时的实际情况和当前的技术限制转换为规范的开发计划和文本。这些开发计划和文本就是我们的系统日后开发的规范,以方便未来对我们的软件系统的框架来进行设计以及约束。
3.制定这个项目的总体架构
确定系统的开发方式和总体架构,相当于建筑工程师给出合理的、完美的设计图纸,然后具体的开发小组就可以按照这个“图纸”来建造我们的 “建筑”。这个总体架构就相当于我们软件的地图和大体的主要工程,对于我们的系统开发是至关重要的。
4.指导整个开发团队完成这个计划
因为我们项目的开发计划、文本和总体框架都是由系统的架构师来完成的,所以在开发过程中系统架构师要指导整个开发团队完成这个计划,解答团队开发中遇到的各种问题。
5.主持进行软件测试
软件开发完成之后可能会有很多的bug,所以我们的软件在上市之前必须要进行软件测试,以发现系统中潜在的bug,争取在上市之前将我们的错误减少到最低。
6.进行交付和重大的“售后”的技术支持和问题处理
在将我们的系统开发出来之后还要编写软件的使用说明书,将软件进行交付。没有任何一款软件是开发的完美无缺之后才上市的,我们总会因为各种各样的问题而无法将软件开发的那么完美。交付之后经过非常多的用户的长时间使用,我们的系统可能会暴露出我们在测试的时候没有检测出的bug。
7.总结工作
在系统的工作完成之后,系统的架构师要对我们的所有工作进行总结,从中发现我们的错误和不足,以便我们在日后的工作中可以进行改正或避免。发现我们的优点,以便我们日后的工作继续发扬光大。
软件的系统架构师对于软件的开发是至关重要的,同样也是我们每一个程序员的最终理想,我们应该要以此为奋斗目标,努力充实自己的技术和知识,锻炼自己的领导能力和沟通能力。