2021. 12. 8. 14:20ㆍSoftware 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
- functional spec.의 이해
- FS에서의 기본 abstractions들의 식별
- ex. 학교의 enrollment system이라면, college Courses, Departments, Teachers, Students 등
- Refining the Abstractions
- Room의 상세 특성 등
- Section은 room, teacher, student, hours를 포함
- source는 description, name 등을 포함
- 이를 통해 Schedule, Section, PreReq이라는 abstraction들을 추가적으로 식별 할 수 있음
- Room의 상세 특성 등
ref. www.uml.org.cn/c++/pdf/DesignPatterns.pdf
cloud patterns.. reuse the thinking
- Conceptual class diagram: 속성, function은 생략 - 객체화 관계만 표현, 관계에 역할 기술
N:N relationship with data is usually a design error
이런 잘못된 관계가 있을 시에는 중간에 관계를 정정해 줄 abstraction을 식별해야 함 - 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
- 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,...
- 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, ...)
- framework implementation
- Build skeleton systems, Write PoCs and prototypes
. prepare tool
. log system
. debugging framework
. ...
- Build skeleton systems, Write PoCs and prototypes
- 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
- Design ability
- Architect is a specialist of both design and implementation
- 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
- Communication skills
- Political sensitivity
- Tact - … and a good sense of humour doesn’t hurt!
- 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
'Software Engineering' 카테고리의 다른 글
좋은 가독 방법 (code reading, 코드 리딩) (0) | 2021.12.19 |
---|---|
UML은 언제 사용하는가? (0) | 2021.12.19 |
조직 관리 방법 - by Joel Spolski (0) | 2021.12.19 |
성과가 낮은 직원 - by Joel Spolski (0) | 2021.12.19 |
개발 process (0) | 2021.10.09 |