Role of Software Architect

2021. 12. 8. 14:20Software Engineering

    목차
반응형

architectuirng

  • element 들의 relationship에 대해 architect는 생각해야 함

views and viewpoints

  • viewpoints: class ← different aspect of architecture (diagrams)
  • view: instance

audience에 맞는 viewpoints를 사용해야 함
서로 다른 concern을 지녔음

context: overall picture of solution
누가 사용하고, 의존하고, interact 하는지
의존성 표현에 적합

functional: system이 제공하는 것들
class diagram, activitiy diagram(runtime solution)

information: system 내 data가 뭐고, 어떻게 획득하고, 저장되는지
concurrency: dynamic state들을 고려해야 함
development view: archi. style, design patterns, module의 composition 등
deployment view: build, release, env.
operational view: manage 방법, working, logging, monitoring
perspective
security: log-in, authenticate, 여러 view에서 security를 봐야 함

performance and scalability

  • availability: backup, distster에 대해..
  • evolution: maintain, enhancement, modification

program을 잘 못하는 사람이 architect를 하면, 상상속의 system을 설계하게 됨

UML artifacts

data store, security

  • developer: OOP
  • designer: OOD
  • architect: OOA + specific domain knowledge
  1. functional spec.의 이해
  2. FS에서의 기본 abstractions들의 식별
    1. ex. 학교의 enrollment system이라면, college Courses, Departments, Teachers, Students 등
  3. Refining the Abstractions
    1. Room의 상세 특성 등
      1. Section은 room, teacher, student, hours를 포함
      2. source는 description, name 등을 포함
      3. 이를 통해 Schedule, Section, PreReq이라는 abstraction들을 추가적으로 식별 할 수 있음

ref. www.uml.org.cn/c++/pdf/DesignPatterns.pdf
cloud patterns.. reuse the thinking

  1. Conceptual class diagram: 속성, function은 생략 - 객체화 관계만 표현, 관계에 역할 기술
    N:N relationship with data is usually a design error
    이런 잘못된 관계가 있을 시에는 중간에 관계를 정정해 줄 abstraction을 식별해야 함
  2. flesh out abstraction with "attributes" → class
    즉, 속성을 정의하고 method를 정의하는 과정에서 최고의 programming skill이 필요함
    많은 프로그래밍을 통해 응집성 높은 코드를 작성하는 방법을 알아야 method등의 적절한 설계가 가능

use cases

"~를 한다"라는 기능 단위의 사용 예들을 기술

assign teacher T to Section Y
assign Room R to Section Y
Enroll Student X in Section Y
....

browser, tablet, register desk, smart phon 등이 actor

web server로
user facing servle

Message Broker (middleware)
여러 서로 다른 component의 연결 (통신 방식의 상이점 통일)

OO Phase (feature driven design)
OOA Abstraction Classification
OOA Behavior

[use case)

OOD Relationships
OOD/OOP Physical Mapping
OOP code /test

Architecture is A bridge connecting requirement and design
So, the role of architect is about interplay between them.

Architect role

  1. Architecture Design (as key decision maker)
  • SRS -> SAD
    : the main purpose of this is to identify architectural impact by understanding both requirement and design rules to choose architectural style

Create models (UML, ADL, B+L, …)

  • design interface
  • define modules and components
  • define process, ...
  • design desision (and tradeoff)C/S, web, ...
    packaging, class definition, module definition,...
  1. define design guideline (design development standard)
    • naming role
    • component design guideline
    • exception handling, exception(system crash) dump mechanism
    • debugging method
    • transaction process
    • decide using cache use or not
    • define design paterns (MVC, BCE, ...)
    • define development methodology (OOP, DOA; Data Oriented Approach, ...)
  2. framework implementation
    • Build skeleton systems, Write PoCs and prototypes
      . prepare tool
      . log system
      . debugging framework
      . ...
  3. Leading team member
    • unify terminology (subsystem, componnet, conceptual design, detailed design...)
    • prepare template (ex. tool, framework, library, ...)
    • leading team member by supporting design guideline, framework, SAD ! (as central technical communication)
      (indirectly leading)

Technical professional
. Undertake “rescue missions”

Preparing a set of documents

Architect characteristics

  1. Design ability
    • Architect is a specialist of both design and implementation
  2. Technology knowledge
    • must have a wide range of view points about system
    • design knowledge
    • knowledge of overall system
    • deep development knowledge for developers
      a view of wide range
  3. Communication skills
    • Political sensitivity
    • Tact - … and a good sense of humour doesn’t hurt!
  4. Pragmatism

Architect-specific tool
Lattix and Sotograph are early examples

principle architect

who can see overall system in the view of technical
has a power to effect all other things such as analysis, design, and implementation

<http://martinfowler.com/bliki/EnterpriseArchitecture.html>
    - relationship between Enterprise architecture (the role of it is for system integration) and Application architecture
  • Shaw and Garlan’s book “Software Architecture:
    • Perspectives on an Emerging Discipline

During Architecturing..
consider HW infrastructure (requiring infrastructure knowledge)
review technical specification representing all developers

  • technology, UX, cost, ...

Bass, Clements and Kazman publish “Software Architecture in Practice”, 1st edition

SEI’s “ATAM” analysis method published
RUP becomes “architecture centric

Bass, Clements and Kazman, 2nd Edition
Martin Fowler admits software architecture exists

New “Perspectives” concept identified

Architecture Fundamentals

Stakeholders

  • Who cares what we build?
  • Why do they care?
System structures
System qualities

System Qualities

Non-functional characteristics

  • Performance, Security, Availability, ...

Simple Architecture
Described through 5 views

.. Functional       <- component diagram
.. Information
.. Concurrency      <- components are wrapped in process and they communicate eash other
.. Development      <- Package diagram (inside it, components exist) - and there is dependency line (--->)
.. Deployment       <- HW (and inside it, processes exist), HWs has direct association as well
.. (Operational view omitted)

Career path
architect vs. developer vs. PM vs. tester..

Role and responsibilities

Programmer      Requirement analyzer        Architect           Infra specialist            maintenance engineer        Tester

                functional requirement      a set of documents  non-functional requirement collection
                  |                          |                      |
                  v                          V                      v
                SRS                         document set        Non-functional requirement
                |    |                       |                    |     |
                |    +-------------+---------+--------------------+     |
                |                  |         |                          |
                |                  |         v                          v
                |                  |    define development std.    Infra selection
                |                  |         |                       |   |
                |                  +---------+-----------------------+   |
                |                            |                           |
                |                            v                           |
                |                     SW architecture design             |
                |                           |  |   |                     |
                +---------------------------+  |   +---------------------+
                |                              |                         |
                v                              v                         v
              HDL (conceptual design)   framework establishment    intra selection design
               |                            |                            |
               +----------------------------+                            |
               |                                                         |
               v                                                         v
              LLD (Detail desing)                              development env. establishment
               |             |                                           |   |
               v             |                                           |   |
              test design    |                                           |   |
               |             |                                           |   |
               +------+------+-------------------------------------------+   |
                      |                                                      |
                      v                                                      v
                    Implementation                               maintenance evn. establishment
                      |
                      v
                    Tests

Requirement analyzer

man-power, machinary, organization activity, ...
coordination of jobs

define and design what to be bulit

Infra designer

define basis of HW, middleware, and app

performance, downtime (stop time)
non-functional requirement (collecting --> design and selection)

a huge knowledge is required
    Network
    H/W
    OS
    DB (RDBMS)
    App Server
    Middleware
    ...

Progarmmer

with SAD, design HLD, and LLD
verifing SAD and feedback
programming, debugging

architect
establish test system (env.)

business logic
any components satisfying functional requirements

non-functional requirements
platform restriction
security
performance
portability (execution evn., running env.)
resource usage (memory usage,...)
...

The main job of developers is designing requirements and implementation
Non-functional requirements should be handled in architectural design

Technical problems --> listing --> architecture design

반응형