【软件设计】软件架构 software architecture

Definition: Software Architecture

 the set of significant decisions about the organisation of a software system

 the selection of the structural elements and the interfaces by which the system is composed

 their behaviour as specified in the collaborations among those elements

 the composition of these structural and behavioural elements into progressively larger subsystems

 the architectural style that guides this organisation

软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。

        没盖过房子,我想,大家都看过盖房子吧,特别是楼房。首先,选一片地方,然后打地基,搭建楼房的架子,再慢慢刷墙,贴瓷砖等等。这个过程跟软件架构师是一样的,先做出一个软件的框架来,然后不断完善软件代码。

Significant Non-Functional Requirements

Capturing Architectural Requirements

 Usability

o e.g. aesthetics and consistency in the UI.

 Reliability

o e.g. availability (the amount of system "up time"), accuracy of system calculations, and the system's ability to recover from failure.

 Performance

o e.g. throughput, response time, recovery time, start-up time, and shutdown time.

 Supportability

o e.g. testability, adaptability, maintainability, compatibility, configurability, installability, scalability, and localizability.

Common Steps in Architectural Analysis

Steps (occurs in early elaboration):

1. Identify/analyse architectural factors: requirements with impact on the architecture (esp. non-functional)

o overlaps with requirements analysis

o some identified/recorded during inception, now investigated in more detail

2. For the architectural factors, analyse alternatives and create solutions: architectural decisions

o e.g. remove requirement; custom solution; stop project; hire expert



Logical Architecture:

 The large-scale organisation of the software classes into packages, subsystems and layers.

 Logical: not concerned with networking, physical computers, or operating system processes (cf. deployment architecture)

Layer:

 Coarse-grained grouping of classes, packages, or subsystems that has cohesive responsibility for a major aspect of the system

Strict:

 Layer only calls upon the services of the layer directly below it

o e.g. a network protocol stack

Relaxed:

 A layer calls upon the services in several lower layers

o e.g. information systems






你可能感兴趣的:(【软件设计】软件架构 software architecture)