|
Διαλέξεις και περιεχόμενα
Διαλέξεις
και περιεχόμενα
Το υλικό που θα δίδεται μέσων των σημειώσεων σε ορισμένες
περιπτώσεις θα είναι περισσότερο από αυτό που διδάσκεται στις διαλέξεις.
Στις περιπτώσεις αυτές θα υπάρχει μία σημείωση «πρόσθετο υλικό», το
οποίο σημαίνει ότι δεν θα εξετάζεται στις γραπτές εξετάσεις, ούτε θα
αποτελεί υποχρεωτική γνώση για τις ασκήσεις.
Ενότητα 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
|