1 / 10

COMP 354 Software Engineering I

Section BB Summer 2009 Dr Greg Butler http://users.encs.concordia.ca/~gregb/home/comp354-summer2009.html. COMP 354 Software Engineering I. Principles of Software Engineering Rigour and Formality Separation of Concerns Modularity Abstraction Anticipation of Change

barb
Download Presentation

COMP 354 Software Engineering I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Section BB Summer 2009 Dr Greg Butler http://users.encs.concordia.ca/~gregb/home/comp354-summer2009.html COMP 354Software Engineering I

  2. Principles of Software Engineering • Rigour and Formality • Separation of Concerns • Modularity • Abstraction • Anticipation of Change • Generality • Incrementality

  3. Rigour and Formality • rigour is achieved by conforming to given constraints • eg using a given format for the requirements document • documenting input and output of each procedure/function • limits on number and size of modules • following company standards for the development process • rigour is a necessary complement to creativity in SE • it provides shape, direction, precision, & the ability to compare and measure • there are many levels of rigour • formality is highest degree of rigour • requires the process to be driven and evaluated by mathematical laws

  4. Separation of Concerns • Separation of Concerns means treating individual aspects of a problem separately --- the aim: master complexity • Separation in time • eg do requirements analysis before design • creative design in the morning, meetings in afternoon • do necessary learning and study during the week, • explore personal interests on weekends • Separation by qualities • eg deal with correctness, then deal with efficiency • Separation by views • eg data flow through a system, control/decision making within system • concurrency and synchronization, timing restrictions of a real time system • Each view highlights different concerns • Separation into parts • eg decompose system into modules, treat module internals separately

  5. Modularity • Modularity is when a product or process is composed of components/modules • + greatly aids separation of concerns • better understandability • easier to change • modules reusable • + high cohesion within a module when all its elements are strongly related • ie there is a very good reason why they are together • + low coupling between modules • coupling measures the interdependence between modules • eg module A and module B share a variable x --- high coupling

  6. Abstraction • Abstraction is the separation of important aspects from unimportant aspects • A model is an abstraction • it ignores certain details • it concentrates on relevant facts • What is important/relevant varies • depending on the use made of the model

  7. Anticipation of Change • Change will occur! • Requires special effort to prepare for change/evolution • of software • documentation, modularization • configuration management • of processes • document the process • modularize the process • of personnel • documentation • training

  8. Generality • more general = able to handle more cases • use of general purpose tools, eg awk • more general program may be simpler and reusable • fewer special cases in specification • able to handle a broader range of inputs/uses

  9. Incrementality • increment = a small step/change • incremental prototyping • identify a useful, but small, subset of the problem and implement it • build a sequence of prototypes by adding features one at a time • finally have a complete system • advantages: • early delivery of a (sub)system • early feedback from users • later (more complicated) features may not be necessary • more time to think about complicated features • separation of concerns

  10. Remember what causes problems in SE • Requirements • Architecture • Change • Complexity

More Related