Πανεπιστήμιο Κρήτης
Eργαστήριο Πληροφοριακών Συστημάτων
 

Διαλέξεις και περιεχόμενα

Διαλέξεις και περιεχόμενα

Το υλικό που θα δίδεται μέσων των σημειώσεων σε ορισμένες περιπτώσεις θα είναι περισσότερο από αυτό που διδάσκεται στις διαλέξεις. Στις περιπτώσεις αυτές θα υπάρχει μία σημείωση «πρόσθετο υλικό», το οποίο σημαίνει ότι δεν θα εξετάζεται στις γραπτές εξετάσεις, ούτε θα αποτελεί υποχρεωτική γνώση για τις ασκήσεις.

Ενότητα 1 - Διαδικασία Παραγωγής Λογισμικού

Διαλέξεις 2.

 

Software production models

  • Water-fall model
  • Exploratory model
  • Prototyping model
  • Incremental model
  • Extreme programming model (agile development)

Requirements analysis and specification

  • Statement of requirements
  • Requirements specification document
  • Functional and non-function requirements
  • Initial system analysis

Risk analysis

  • Know how
  • Feasibility study
  • Cost estimate
  • Progress monitoring

Software metrics.

Software-process improvement.

Defect recording.

Code reviewing.

 

Ενότητα 2 - Αρχιτεκτονική Σχεδίαση και Οικογένειες Αρχιτεκτονικών

Διαλέξεις 2.

 

  • Definition, what is usually missing from an architecture
  • Architecture as the contact site in software implementation teams
  • Architecture as the common vision among production phases
  • Micro- and macro- architectures
  • Organization into system, sub-system, component / package, sub-component / sub-package
  • Elements of good architecture design
  • How architecture affects: source code, system design, progress control and personnel allocation
  • Common meta-architectures (families), with inherent source organization: layered, sequential, client – server, event-based, agent-based, component-based
  • Fundamental architectural meta-models and code organization
    • Layered
    • Sequential
    • Event-based
    • Agent-based
    • Component / object based
  • Elements of good architecture design
  • Ενότητα 3 - Σχεδιαστικές Προοπτικές και Δομημένος Προγραμματισμός

    Διαλέξεις 2.

  • Software design views (including initial code-design effect)
    • Data views
      • E/R diagrams
      • Object hierarchies
    • Structural views
      • Structured charts
      • Dependency / call graphs
    • Functional views
      • Data flow diagrams
      • Flow charts
      • Pseudo code
    • Behavioral views
      • State transition diagrams
      • Cause-effect tables
      • Formal specification
    • Structured programming
      • Definition
      • Code design via step-wise refinement, packages, black-boxes
      • Modular design (cohesion, coupling)
      • Linkage with OO programming

 

Ενότητα 4 - Στοιχεία Οντοκεντρικού Προγραμματισμού

Διαλέξεις 5.

The software-object paradigm.

  • Objects
  • Messages and responses
  • Data encapsulation and code capsules

Genesis of OO programming – an emulation trial in C.

The fundamental constructs

  • Class, constructor, destructor
  • Instance creation / destruction / usage
  • Class members and access qualifiers (private / protected / public)
  • Member linkage (auto / static)
  • Instance references
  • Function and operator overloading
  • Dynamic memory allocation
  • Function pointers (for global- or member- functions)

Inheritance

  • Contributions to programming
  • Model and key elements
  • Data inheritance and class memory image
  • Access regulations upon derivation
  • Function inheritance
    • Access qualifier refinement
    • Signature refinement
    • Implementation (semantics) refinement
      • Specialization
      • Overriding
      • Restriction
  • Sequence of destructor / constructor call in inheritance hierarchies

Abstract classes

  • The mechanism of abstraction in the real world
  • The mechanism of abstraction in the software world
  • Virtual member functions and pure virtual functions
  • Late binding and polymorphism
  • The C++ run-time model to handle late binding
  • Class pointers and type casting
    • Implementing a hand-made dynamic cast

Constructor categories

  • Default
  • Parameterized
  • Copier
  • Converter
  • Decoder

Instance immutability and the const qualifier.

Common member function categories

  • Producer
  • Mutator
  • Observer
  • Attribute
  • Replicator
  • Comparator
  • Reporter
  • Serializer / Encoder
  • Verifier
  • Processor
  • Notifier

Design by contract

·        Preconditions

·        Post-conditions

·        Invariants

·        Representation invariants

·        Regulations in polymorphism

Software entropy.

Re-factoring.

Provability of member function behavior.

Programming idioms

  • Temporary objects
  • Use of destructor for handling function return
  • Prioritizing static data initialization sequence
  • Placement new operator and explicit constructor / destructor call

 

 

Ενότητα 5 - Καλούπια Κώδικα και στα Σχεδιαστικά Πρότυπα

Διαλέξεις 7.

 

Design pattern paradigm

  • Recurring solution patterns
  • Design re-use
  • Pattern documentation
  • Genesis of a design pattern
  • Pattern categories

Templates – C++ meta-programming

  • Code patterns – re-visiting C pre-processor traditions
  • Type variation in programmed components – the min / max example
  • Functions versus templates: from value parameters to type parameters
  • Class templates and function templates
  • Compile-time programming
  • Extended examples

Template-based design patterns

  • Functors
  • Traits
  • Introduction to STL (standard template library)
    • Algorithms, containers and iterators
    • Some commonly used classes

Design patterns

  • Iterator
  • Factory
  • Prototype
  • Virtual constructor
  • Singleton
  • State
  • Adapter
  • Proxy
  • Dispatch table
  • Blackboard
  • Game loop
  • Progress monitoring
  • Listener
  • View
  • Decorator
  • Fly-wight
  • Undo / rredo

 

Ενότητα 6 - Στοιχεία καλού προγραμματισμού, Διαδικασία Ελέγχου, Αυτοελεγχόμενος Κώδικας, και Αμυντικός Προγραμματισμός

Διαλέξεις 2.

 

Programming guidelines

  • Organizing and structuring source files
  • File / function size and naming policies
    • Hungarian notation
    • Unix style
    • Mixed policies
  • Source control and use of back-ups
  • Memory allocation contracts, use of static data
  • Use of PODs (plain old data structures)
  • Package organization and dependency non-cyclic graph

Defensive programming

  • The key engineering elements
  • Errors and disengagement method
  • Bugs
    • Time distance
    • Source distance
    • Direct defect detection (DDD)
    • Reproducability
  • Common debug strategy
  • Assertions and self-checked code
  • Advanced methods
    • new / delete overloading
    • smart pointers
    • Custom-made memory manager
  • Test-first programming and extreme programming

 

Ενότητα 7- Εύστροφες Διαδικασίες Ανάπτυξης, Στοιχεία Ακραίου Προγραμματισμού

Διαλέξεις 1.

  • Agile software development
  • Software entropy
  • Re-factoring (definition, common strategies, examples)
  • Extreme programming


Για ερωτήσεις / σχόλια σχετικά με το web site: hy352@csd.uoc.gr
Τελευταία ενημέρωση: 23-09-2009
To URL αυτής της σελίδας είναι: