century:principles_of_software_engineering
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
century:principles_of_software_engineering [2012/07/23 20:15] – mithat | century:principles_of_software_engineering [2012/07/25 16:07] (current) – mithat | ||
---|---|---|---|
Line 3: | Line 3: | ||
====== Principles of Software Engineering ====== | ====== Principles of Software Engineering ====== | ||
Mithat Konar\\ | Mithat Konar\\ | ||
- | July 23, 2012 | + | July 24, 2012 |
===== Adapted from ===== | ===== Adapted from ===== | ||
- | + | [[http:// | |
- | * Ghezzi, Carlo, Mehdi Jazayeri, and Dino Mandrioli. " | + | |
===== Introduction ===== | ===== Introduction ===== | ||
Line 33: | Line 32: | ||
===== The principles ===== | ===== The principles ===== | ||
* Rigor and formality | * Rigor and formality | ||
+ | * Separation of concerns | ||
* Modularity | * Modularity | ||
+ | * Abstraction | ||
+ | * Anticipation of change | ||
+ | * Generality | ||
+ | * Incremantality | ||
+ | |||
+ | ===== The principles ===== | ||
+ | * **Rigor and formality** | ||
* Separation of concerns | * Separation of concerns | ||
+ | * Modularity | ||
* Abstraction | * Abstraction | ||
* Anticipation of change | * Anticipation of change | ||
Line 45: | Line 53: | ||
* Often based on mathematical/ | * Often based on mathematical/ | ||
* Different projects/ | * Different projects/ | ||
- | * High criticallity | + | * High criticality |
* Tools include natural language, formal languages | * Tools include natural language, formal languages | ||
Line 58: | Line 66: | ||
* interoperability | * interoperability | ||
* reusability | * reusability | ||
+ | |||
+ | ===== The principles ===== | ||
+ | * Rigor and formality | ||
+ | * **Separation of concerns** | ||
+ | * Modularity | ||
+ | * Abstraction | ||
+ | * Anticipation of change | ||
+ | * Generality | ||
+ | * Incremantality | ||
===== Separation of concerns ===== | ===== Separation of concerns ===== | ||
Line 78: | Line 95: | ||
* Behavior: Javascript | * Behavior: Javascript | ||
* [[separation of concerns example|example code]] | * [[separation of concerns example|example code]] | ||
+ | |||
+ | ===== The principles ===== | ||
+ | * Rigor and formality | ||
+ | * Separation of concerns | ||
+ | * **Modularity** | ||
+ | * Abstraction | ||
+ | * Anticipation of change | ||
+ | * Generality | ||
+ | * Incremantality | ||
===== Modularity ===== | ===== Modularity ===== | ||
- | * Divide | + | * Division of the system into smaller //modules// |
- | * Typically results it a tree of modules and submodules | + | |
* // | * // | ||
* " | * " | ||
Line 94: | Line 119: | ||
* Supports **anticipation of change** | * Supports **anticipation of change** | ||
* Enhances quality of // | * Enhances quality of // | ||
+ | |||
+ | ===== The principles ===== | ||
+ | * Rigor and formality | ||
+ | * Separation of concerns | ||
+ | * Modularity | ||
+ | * **Abstraction** | ||
+ | * Anticipation of change | ||
+ | * Generality | ||
+ | * Incremantality | ||
===== Abstraction ===== | ===== Abstraction ===== | ||
- | * In general use, abstraction means the process of considering something "apart from application to or association with a particular instance."< | + | * In general use: considering something "apart from application to or association with a particular instance."< |
- | * In S/W Engineering, abstraction means wrapping a concept such that it: | + | * In S/W Engineering: wrapping a concept such that it: |
* Expresses the concept only in terms of what is relevant | * Expresses the concept only in terms of what is relevant | ||
* Shields the user from everything that's not relevant | * Shields the user from everything that's not relevant | ||
Line 114: | Line 148: | ||
* Programming process | * Programming process | ||
* ... | * ... | ||
+ | |||
+ | ===== The principles ===== | ||
+ | * Rigor and formality | ||
+ | * Separation of concerns | ||
+ | * Modularity | ||
+ | * Abstraction | ||
+ | * **Anticipation of change** | ||
+ | * Generality | ||
+ | * Incremantality | ||
===== Anticipation of change ===== | ===== Anticipation of change ===== | ||
Line 120: | Line 163: | ||
* after release. | * after release. | ||
* Process and code should be designed to support evolution. | * Process and code should be designed to support evolution. | ||
+ | |||
+ | ===== The principles ===== | ||
+ | * Rigor and formality | ||
+ | * Separation of concerns | ||
+ | * Modularity | ||
+ | * Abstraction | ||
+ | * Anticipation of change | ||
+ | * **Generality** | ||
+ | * Incremantality | ||
===== Generality ===== | ===== Generality ===== | ||
Line 129: | Line 181: | ||
* General problem might be easier to solve (or not). | * General problem might be easier to solve (or not). | ||
* Supports quality of reuse | * Supports quality of reuse | ||
+ | |||
+ | ===== The principles ===== | ||
+ | * Rigor and formality | ||
+ | * Separation of concerns | ||
+ | * Modularity | ||
+ | * Abstraction | ||
+ | * Anticipation of change | ||
+ | * Generality | ||
+ | * **Incremantality** | ||
===== Incremantality ===== | ===== Incremantality ===== | ||
- | *//[[http:// | + | *//A journey of a thousand miles begins with a single step.// ---Lao-tzu |
* Development proceeds in a stepwise fashion (i.e., in // | * Development proceeds in a stepwise fashion (i.e., in // | ||
+ | * " | ||
* Deliver subsets of a system early to get early feedback | * Deliver subsets of a system early to get early feedback | ||
* Deliver prototype of the system and incrementally add effort to turn it into product | * Deliver prototype of the system and incrementally add effort to turn it into product | ||
* Implement functionality, | * Implement functionality, | ||
- | * " | ||
* Supports **anticipation of change** | * Supports **anticipation of change** | ||
* Example: [[http:// | * Example: [[http:// | ||
Line 144: | Line 205: | ||
* Conflicts among principles may arise. | * Conflicts among principles may arise. | ||
* Software engineering is: | * Software engineering is: | ||
- | * a new field and subject to change | + | * a new field and subject to change. |
* made by humans for humans. | * made by humans for humans. | ||
- | * Your contemplations and considerations | + | * Your contemplations and contributions |
===== Endnotes ===== | ===== Endnotes ===== |
century/principles_of_software_engineering.txt · Last modified: 2012/07/25 16:07 by mithat