User Tools

Site Tools


century:principles_of_software_engineering

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
century:principles_of_software_engineering [2012/07/24 16:29] mithatcentury: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://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0133056996|{{:century:fundamentals-swe-cover.jpg?150 |}}]]Ghezzi, Carlo, Mehdi Jazayeri, and Dino Mandrioli. "[[http://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0133056996|Software Engineering Principles]]." In //Fundamentals of Software Engineering//. 2nd ed. Upper Saddle River, N.J.: Prentice Hall, 2003. 41-66.
-  * Ghezzi, Carlo, Mehdi Jazayeri, and Dino Mandrioli. "[[http://www.pearsonhighered.com/pearsonhigheredus/educator/product/products_detail.page?isbn=0133056996|Software Engineering Principles]]." In //Fundamentals of Software Engineering//. 2nd ed. Upper Saddle River, N.J.: Prentice Hall, 2003. 41-66.+
  
 ===== Introduction ===== ===== Introduction =====
Line 41: Line 40:
  
 ===== The principles ===== ===== The principles =====
-  * **Rigor and formality** +  * **Rigor and formality**
   * Separation of concerns   * Separation of concerns
   * Modularity   * Modularity
Line 54: Line 53:
     * Often based on mathematical/logical laws     * Often based on mathematical/logical laws
   * Different projects/parts require more or less rigor/formality   * Different projects/parts require more or less rigor/formality
-    * High criticallity -> high rigor/formality+    * High criticality -> high rigor/formality
   * Tools include natural language, formal languages   * Tools include natural language, formal languages
  
Line 70: Line 69:
 ===== The principles ===== ===== The principles =====
   * Rigor and formality   * Rigor and formality
-  * **Separation of concerns** +  * **Separation of concerns**
   * Modularity   * Modularity
   * Abstraction   * Abstraction
Line 100: Line 99:
   * Rigor and formality   * Rigor and formality
   * Separation of concerns   * Separation of concerns
-  * **Modularity** +  * **Modularity**
   * Abstraction   * Abstraction
   * Anticipation of change   * Anticipation of change
Line 107: Line 106:
  
 ===== Modularity ===== ===== Modularity =====
-  * Divide the system into smaller //modules// +  * Division of the system into smaller //modules//
-  * Typically results it a tree of modules and submodules+
   * //Decomposition//: recursively subdividing the system    * //Decomposition//: recursively subdividing the system 
       * "Divide and conquer"       * "Divide and conquer"
Line 126: Line 124:
   * Separation of concerns   * Separation of concerns
   * Modularity   * Modularity
-  * **Abstraction** +  * **Abstraction**
   * Anticipation of change   * Anticipation of change
   * Generality   * Generality
Line 132: Line 130:
  
 ===== Abstraction ===== ===== Abstraction =====
-  * In general use, abstraction means the process of considering something "apart from application to or association with a particular instance."<sup>[[http://www.merriam-webster.com/dictionary/abstracting?show=0&t=1343046707|3]]</sup> +  * In general useconsidering something "apart from application to or association with a particular instance."<sup>[[http://www.merriam-webster.com/dictionary/abstracting?show=0&t=1343046707|3]]</sup> 
-  * In S/W Engineering, abstraction means wrapping a concept such that it:+  * In S/W Engineeringwrapping 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 156: Line 154:
   * Modularity   * Modularity
   * Abstraction   * Abstraction
-  * **Anticipation of change** +  * **Anticipation of change**
   * Generality   * Generality
   * Incremantality   * Incremantality
Line 172: Line 170:
   * Abstraction   * Abstraction
   * Anticipation of change   * Anticipation of change
-  * **Generality** +  * **Generality**
   * Incremantality   * Incremantality
  
Line 191: Line 189:
   * Anticipation of change   * Anticipation of change
   * Generality   * Generality
-  * **Incremantality** +  * **Incremantality**
  
 ===== Incremantality ===== ===== Incremantality =====
   *//A journey of a thousand miles begins with a single step.// ---Lao-tzu mistranslation<sup>[[http://www.quotationspage.com/quote/24004.html|4]]</sup>   *//A journey of a thousand miles begins with a single step.// ---Lao-tzu mistranslation<sup>[[http://www.quotationspage.com/quote/24004.html|4]]</sup>
   * Development proceeds in a stepwise fashion (i.e., in //increments//).   * Development proceeds in a stepwise fashion (i.e., in //increments//).
 +    * "Iterative refinement"
     * 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, then tune performance     * Implement functionality, then tune performance
-    * "Iterative refinement" 
   * Supports **anticipation of change**   * Supports **anticipation of change**
   * Example: [[http://adium.im|Adium]]'s [[https://bitbucket.org/adium/adium/changesets|commit history]]   * Example: [[http://adium.im|Adium]]'s [[https://bitbucket.org/adium/adium/changesets|commit history]]
Line 207: 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 are crucial.+  * Your contemplations and contributions are crucial.
  
 ===== Endnotes ===== ===== Endnotes =====
century/principles_of_software_engineering.1343147350.txt.gz · Last modified: 2012/07/24 16:29 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki