功能特征和非功能特征
Q: 设计软件架构时,为什么非功能特征很重要?
A: 首先,软件系统将随时间演化,它们必须应对不断变化的技术、需求和系统环境。因此,仅以合适的方式对应用程序面临的怎个任务进行分解还不够,系统还必须为应对变化、扩展和修改做好准备。否则,软件系统维护起来既困难又需付出高昂的代价,在其生命周期较长时尤其如此。其次,软件系统的功能常常需要满足某些通用需求,如总体可操作性、可靠性或效率。为此,必须妥善地设计其软件架构。
软件设计
软件设计指的是软件开发人员根据给定的功能和非功能特征,确定软件系统的组件以及组件之间关系的活动,其成果为系统的软件架构。
传统上,将系统高级结构分解称为“软件架构”、“软件架构设计”或者“粗粒度设计”,而将更详细的规划称为“设计”或者“详细设计”。
开发方法
这里所说的开发方法,指的是80年代末90年代初红极一时的OOA和OOD的方法,代表人物是后来建立UML和UP的三个老头。
作者论述了开发方法与模式的相似之处:它们都被寄予厚望,有点开发人员把它们当做方之四海皆准的银弹,这个想法是错误的。
作者希望人们降低对开发方法和模式的期望,认为这样能够更好地利用它们。
开发流程
地毯式的运用开发方法常常会导致严重的流程问题;明确的流程有优点,但是如果它带来了组织开销或采取的工作方式与项目目标格格不入,就会成为负担。
作者的观点:不应严格按照任何方法或流程进行设计和实现。
Q: 那么模式对于开发流程有什么帮助呢?
A: 增量交付过程和面向对象分析与设计的方法使得不同开发阶段之间的界限模糊。通过使用模式,我们可以让这种循序渐进甚至循环往复的工作方式更具有可预见性。