본 포스트는 개인 스터디 용으로 작성된 Ian Sommerville의 Software Engineering, 8/E의 요약본입니다.
1. Object-oriented development
- Object-oriented analysis, design and programming are related but distincted.
- OOA is concerned with developing an object model of the application domain.
- OOD is cencerned with developing an object-oriented system model to implement requirements
- OOP is cencerned with realising an OOD using an OO programming language

2. Characteristics of OOD
- Objects are abstractions of real-world or system entities and manage themselves
- indenpendent with each other, encapsulate state, communicate by message passing

3. Objects and object classes
- Objects are entities in a S/W system which represent instances of real-world and system entities
- Object classes are templates for objects

4. UML
- An integration of notations which describe object oriented analysis and designs
- De facto standard for object oriented modelling

5. Object communication
- Conceptually, objects communicate by message passing
- In practice, messages are often implemented by procedure calls(procedure name and parameter list)

6. Generalisation and inheritance
- Classes may be arranged in a class hierarchy where one class (a super-class) is a generalisation of one or more other classes (sub-classes)
- A sub-class inherits the attributes and operations from its super class and may add new methods or atributes of its own
- Advantages : Inheritance classify entities, make reuse mechanism at both the design & the programming level, and provide organisational knowledge about domains and systems.

7. An object-oriented design process : Structured design processes
- involve developing a number of differnet system models
- require a lot of effort for development and maintenance of these models
- For small systems, this may not be cost-effiective
- However, for large systems developed by different groups design models are an essential communication mechanism

8. Process stages
1) Define system context and model of system use : A static model that describes other systems in the environment, a dynamic model that describes how the system interacts with its environment(Use Case used)
2) Design the system architecture : e.g. layered architecture(several layered sub-system composition). There should normally be no more than 7 entities in an architectural model
3) Identify the principal system objects:
  - Grammatical approach (based on natural lagnuage)
  - idenfitying concrete things in the application domain
  - Behavioural approach (what participates in what behaviour)
  - Scenario-based analysis (objects in scenario)
4) Develop design models
  - Static model : show relationships between object classes
  - Dynamic model : show relationships between objects
  - e.g. sub-system model, sequence model, state machine model(statechart), use-case models, aggregation, generalisation model, etc.
5) Object interface specification
  - Object interfaces have to be specified so that the object and other components can be designed in parallel
  - UML uses class diagram
Posted by 어쨌건간에