Εισαγωγή στο μάθημα
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Καλώς ήρθατε
Ανάπτυξη και διαχείριση πληροφοριακών συστημάτων
Τρόπος διδασκαλίας
-  Συμμετοχή
 -  Ερωτήσεις
 -  Ασκήσεις, θέματα για σκέψη
 -  Φροντιστήριο
 -  Εργαστήριο
 -  Ανεξάρτητη μελέτη
 
Οι σημειώσεις
Σημείωση: επικοδομητικές παρατηρήσεις στις σημειώσεις έχουν προσφέρει οι
φοιτήτριες του τμήματος ΔΕΤ
Ιωάννα Γκρίνια (το 2002)
και
Αλεξάνδρα Σιγάλα (το 2003).
Βιβλία του μαθήματος

- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Απαιτήσεις Λογισμικού, σχεδίαση λογισμικού.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1994.
 - Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Κωδικοποίηση, έλεγχος και συντήρηση λογισμικού.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1993.
 - Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού.
Εκδόσεις Συμμετρία, 1991.
 - Roger S. Pressman.
Software Engineering: A Practitioner's Approach.
Fifth Edition, McGraw-Hill, 2000. (European Adaptation)
 - Ian Sommerville.
Software Engineering.
Addison-Wesley, sixth edition, 2001.
 
Βαθμολογία
	Ο τελικός βαθμός κάθε φοιτητή θα βασίζεται σε 2 κριτήρια:
- 	Στην απόδοση του στην υποχρεωτική άσκηση
 - 	Στις τελικές γραπτές εξετάσεις
 
Απαραίτητη προϋπόθεση για να περάσει ο φοιτητής το μάθημα είναι η
απόδοσή του σε κάθε κατηγορία να καλύπτει τουλάχιστον τη βάση.  
Η συμμετοχή κάθε κριτηρίου στη διαμόρφωση του τελικού βαθμού είναι περίπου
ως εξής:
	
- Ασκηση	
 - 	40%
 - Τελικές Εξετάσεις	
 - 	60%
 
Ύλη των εξετάσεων
Στις εξετάσεις οι ερωτήσεις:
-  Θα συνδυάζουν γνώση της θεωρίας με κρίση.  
 -  Θα πρέπει να εφαρμόσετε τις γνώσεις που αποκομίσατε από το
μάθημα σε συγκεκριμένες περιπτώσεις.  
 -  Ορισμένες από τις ερωτήσεις που υπάρχουν στις σημειώσεις θα
μπορούσαν να είναι και θέματα των εξετάσεων.
 
Ύλη των εξετάσεων
-  Περιλαμβάνει ό,τι έχει διδαχτεί στα μαθήματα
 -  Μπορείτε να χρησιμοποιήσετε ως οδηγό τη διάρθρωση των σημειώσεων
 -  Για στοιχεία που δεν έχετε συγκρατήσει ή δεν έχετε καταλάβει
μπορείτε να ανατρέξετε στη βιβλιογραφία που υπάρχει στο τέλος
κάθε μαθήματος.
 -  Στοιχεία της βιβλιογραφίας που δεν έχουν αναφερθεί στο μάθημα
(και συνεπώς δεν υπάρχει αντίστοιχος τίτλος στις σημειώσεις)
δε θα εξεταστούν.
 -  Τα στοιχεία του φροντιστηρίου εξετάζονται με βάση την αντίστοιχη άσκηση
και τα παραδοτέα (δε θα υπάρξουν δηλαδή ξεχωριστά θέματα στις εξετάσεις).
 -  Στις εξετάσεις θεωρείται δεδομένη η τριβή σας με το αντικείμενο της
φροντιστηριακής άσκησης.
 
Η σημασία του λογισμικού
Το λογισμικό 
-  ενεργοποιεί τις ενσωματωμένες συσκευές,
 -  αποτελεί τη βάση στα πληροφοριακά συστήματα,
 -  χρησιμοποιείται ως μέσο αποθήκευσης γνώσης.
 
Μέσα αποθήκευσης γνώσης:
-  DNA
 -  Εγκέφαλος
 -  Υλικό
 -  Βιβλία
 -  Λογισμικό
 
Προβλήματα στην υλοποίηση συστημάτων που βασίζονται σε λογισμικό
Η διεργασία ανάπτυξης του λογισμικού καλείται σήμερα να επιλύσει
τα παρακάτω συχνά εμφανιζόμενα προβλήματα:
Επίσης, πρέπει να απαντηθούν οι παρακάτω προκλήσεις:
Κατηγορίες λογισμικού
Χαρακτηριστικά του λογισμικού
-  Το λογισμικό αναπτύσσεται, δεν παράγεται βιομηχανικά
 -  Το λογισμικό δε φθείρεται
 -  Το μεγαλύτερο ποσοστό του λογισμικού παράγεται κατά παραγγελία
 
Ιδιότητες του λογισμικού
Ο κύκλος ζωής του λογισμικού
Τεχνολογία λογισμικού
- 
Η εφαρμογή μιας συστηματικής πειθαρχημένης και ποσοτικοποιούμενης προσέγγισης στην ανάπτυξη, λειτουργία και συντήρηση του λογισμικού. με άλλα λόγια η εφαρμογή των τεχνικών του μηχανικού στο λογισμικό.
 - 
Η μελέτη προσεγγίσεων στο παραπάνω πρόβλημα.
 
Η τεχνολογία λογισμικού περιλαμβάνει τις παρακάτω περιοχές:
-  Απαιτήσεις
 -  Σχεδιασμός
 -  Υλοποίηση
 -  Έλεγχος
 -  Συντήρηση
 -  Διαχείριση σχηματισμών
 -  Διαχείριση του οργανισμού, της διεργασίας (process)
και του έργου
 -  Διεργασίες τεχνολογίας λογισμικού
 -  Εργαλεία και μέθοδοι
 -  Ποιότητα
 
Επισκόπηση του μαθήματος
- Διεργασία ανάπτυξης λογισμικού
 - Απαιτήσεις
 - Ανάπτυξη πρωτοτύπων
 - Αρχιτεκτονική σχεδίαση
 - Ανάλυση και σχεδίαση με UML
 - Λεπτομερής σχεδίαση και κωδικοποίηση
 - Εργαλεία και τεχνικές
 - Επαναχρησιμοποίηση
 - Επικοινωνία ανθρώπου μηχανής
 - Απόδοση και μεταφερσιμότητα
 - Έλεγχος
 - Συντήρηση
 - Διαχείριση σχηματισμών
 - Διοίκηση έργου
 - Κοστολόγηση
 - Ο ανθρώπινος παράγοντας
 - Διαχείριση υπολογιστικών συστημάτων
 - Διασφάλιση ποιότητας
 - Μη συμβατικές μεθοδολογίες
 - Ασφάλεια πληροφοριακών συστημάτων
 - Προστασία προσωπικών δεδομένων - πολιτικές χρήσης πληροφοριακών συστημάτων
 
Περιοδικά του χώρου
-  IEEE Software, IEEE. 
 -  Software Practice and Experience, John Wiley & Sons, UK. 
 -  Journal of Systems and Software, Elsevier Science. 
 -  Information and Software Technology, Elsevier Science. 
 -  ACM Transactions on Software Engineering and Methodologies, ACM. 
 -  IEEE Transactions on Software Engineering, IEEE. 
 -  Communications of the ACM, ACM. 
 -  IEEE Computer, IEEE. 
 
Γενική βιβλιογραφία
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Απαιτήσεις Λογισμικού, σχεδίαση λογισμικού.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1994.
 - Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Κωδικοποίηση, έλεγχος και συντήρηση λογισμικού.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1993.
 - Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού.
Εκδόσεις Συμμετρία, 1991.
 
- Christopher Alexander,
  Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl-King, and
  Shlomo Angel.
A Pattern Language.
Oxford University Press, 1977.
 
- Friedrich L. Bauer.
Decrypted Secrets: Methods and Maxims of Cryptology.
Springer Verlag, 1997.
 
- Kent Beck and Erich
  Gamma.
Test infected: Programmers love writing tests.
Java Report, July 1998.
 
- Kent Beck.
Extreme Programming Explained: Embrace Change.
Addison Wesley Longman, 2000.
 
- Jon Louis Bentley.
Writing Efficient Programs.
Prentice-Hall, 1982.
 
- Jon Louis Bentley.
Programming Pearls.
Addison-Wesley, 1986.
 
- Jon Louis Bentley.
More
  Programming Pearls: Confessions of a Coder.
Addison-Wesley, 1988.
 
- Jon Louis Bentley.
More
  Programming Pearls: Confessions of a Coder, chapter Little
  Languages, pages 83–100.
Addison-Wesley, 1988.
 
- Grady Booch, James
  Rumbaugh, and Ivar Jacobson.
The
  Unified Modeling Language User Guide.
Addison-Wesley, 1999.
 
- Paul Booth.
An
  Introduction to Human-Computer Interaction.
Lawrence Erlbaum Associates, Publishers, New Jersey, USA, 1989.
 
- F. P. Brooks.
The
  Mythical Man Month.
Addison-Wesley, 1975.
 
- William J. Brown,
  Raphael C. Malveau, Hays W. McCormick III, and Thomas J. Mowbray.
AntiPatterns Refactoring Software, Architectures, and Projects in
  Crisis.
Wiley, 1998.
 
- Mark Burgess.
Principles of Network and System Administration.
John Wiley and Sons, 2001.
 
- Stuart K. Card, Thomas P.
  Moran, and Allen Newell.
The
  Psychology of Human-Computer Interaction.
Lawrence Erlbaum Associates, Publishers, New Jersey, USA, 1983.
 
- James O. Coplien and
  Douglas C. Schmidt.
Pattern Languages of Program Design.
Addison-Wesley, 1995.
 
- Michael A. Cusumano
  and Richard W. Selby.
Microsoft Secrets.
The Free Press, 1995.
 
- Tina Darmohray, editor.
Job
  Descriptions for System Administrators.
Short Topics in System Administration. USENIX Association, Berkeley, CA, USA,
  1997.
 
- Tom DeMarco and
  Timothy R. Lister.
Peopleware: Productive Projects and Teams.
Dorset House Publishing, 1987.
 
- Dorothy Elizabeth Robling
  Denning.
Cryptography and Data Security.
Addison-Wesley, 1983.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Information Technology—Software Life Cycle Processes—Software
  Development Acquirer-Supplier Agreement, 1995.
EIA/IEEE Interim Standard J-Std-016-1995 (Issued for Trial Use).
 
- Tom Forester and
  Perry Morrison.
Computer Ethics: Cautionary Tales and Ethical Dilemmas in Computing.
MIT Press, 1990.
 
- Erich Gamma, Richard
  Helm, Ralph Johnson, and John Vlissides.
Design
  Patterns: Elements of Reusable Object-Oriented Software.
Addison-Wesley, 1995.
 
- Daniel M. Hoffman and
  David M. Weiss, editors.
Software Fundamentals: Collected Papers by David L. Parnas.
Addison-Wesley, 2001.
 
- Watts S. Humphrey.
Managing the Software Process.
Addison-Wesley, 1989.
 
- IEEE standard for
  software verification and validation plans.
Published by the American National Standards Institute, 1430 Broadway, New
  York, New York 10018, February 1987.
ANSI/IEEE Std 1012-1986.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
IEEE Recommended Practice for Software Design Descriptions, 1998.
IEEE Standard 1016-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Reviews, 1997.
IEEE Standard 1028-1997.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Productivity Metrics, 1992.
IEEE Standard 1045-1992.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Quality Metrics Methodology, 1998.
IEEE Standard 1061-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
IEEE Recommended Practice for Software Acquisition (includes IEEE
  1062a), 1998.
IEEE Standard 1062-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Developing Software Life Cycle Processes, 1997.
IEEE Standard 1074-1997.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Maintenance, 1998.
IEEE Standard 1219-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
IEEE Guide for Developing System Requirements Specifications (including
  IEEE 1233a), 1998.
IEEE Standard 1233-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Information Technology - Software Packages - Quality Requirements and
  Testing, 1998.
IEEE Standard 1465-1998 (ISO/IEC 12119:1998).
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
IEEE Recommended Practice for Architectural Description of Software
  Incentive Systems, 2000.
IEEE Standard 1471-2000.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Adoption of PMI Standard- A Guide to the Project Management Body of
  Knowledge, 1998.
IEEE Standard 1490-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Information Technology - Software Life Cycle Processes - Reuse
  Processes, 1999.
IEEE Standard 1517-1999.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Life Cycle Processes-Risk Management, 2001.
IEEE Standard 1540-2001.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Quality Assurance Plans, 1998.
IEEE Standard 730-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Configuration Management Plans, 1998.
IEEE Standard 828-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Software Test Documentation, 1998.
IEEE Standard 829-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
IEEE Recommended Practice for Software Requirements
  Specifications, 1998.
IEEE Standard 830-1998.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Guide to the Software Engineering Body of
  Knowledge, 2001.
Available online http://www.swebok.org.
 
- Cem Kaner, Jack Falk, and
  Hung Quoc Nguyen.
Testing Computer Software.
Wiley, 1999.
 
- Brian W. Kernighan
  and Rob Pike.
The
  Practice of Programming.
Addison-Wesley, 1999.
 
- Susan Lammers.
Programmers at Work.
Microsoft Press, Redmond, Washington, USA, 1989.
 
- Thomas A.
  Limoncelli and Christine Hogan.
The
  Practice of System and Network Administration.
Addison-Wesley, 2001.
 
- Joan Magretta.
What
  Management Is.
The Free Press, New York, 2002.
 
- Robert C. Martin.
Agile
  Software Development: Principles, Patterns, and Practices.
Prentice Hall PTR, Upper Saddle River, NJ, 2003.
 
- Pete McBreen.
Software Craftmanship: The New Imperative.
Addison-Wesley, 2002.
 
- Donald A. Norman.
The
  Psychology of Everyday Things.
BasicBooks, New York, NY, USA, 1988.
 
- Donald A. Norman.
The
  Invisible Computer.
MIT Press, 1998.
 
- David L.
  Oppenheimer, David A. Wagner, and Michele D. Crabb.
System Security: A Management Perspective.
Short Topics in System Administration. USENIX Association, Berkeley, CA, USA,
  1997.
 
- P. J. Plauger.
Programming on Purpose II: Essays on Software People.
Prentice-Hall, 1993.
 
- J. Christopher Ramming, editor.
USENIX Conference on Domain-Specific Languages, Santa Monica, CA, USA,
  October 1997. Usenix Association.
 
- Jef Raskin.
The
  Humane Interface: New Directions for Designing Interactive
  Systems.
Addison-Wesley, 2000.
 
- Eric Steven Raymond.
The Art of Unix Programming.
Addison-Wesley, 2003.
 
- Aviel D. Rubin, Daniel
  Geer, and Marcus J. Ranum.
Web
  Security Sourcebook.
John Wiley & Sons, 1997.
 
- Charles H. Schmauch.
ISO
  9000 for Software Developers.
ASQC Quality Press, Milwaukee, Wisconsin, USA, 1995.
 
- Bruce Schneier.
Applied Cryptography.
Wiley, second edition, 1996.
 
- Bruce Schneier.
Secrets & Lies: Digital Security in a Networked World.
Wiley Computer Publishing, 2000.
 
- Ian Sommerville.
Software Engineering.
Addison-Wesley, sixth edition, 2001.
 
- Diomidis
  Spinellis and V. Guruprasad.
Lightweight languages as software engineering tools (http://www.dmst.aueb.gr/dds/pubs/conf/1997-DSL-Lightweight/html/paper.html).
In Ramming [Ramming, 1997], pages 67–76.
 
- Diomidis Spinellis
  and Konstantinos Raptis.
Component mining: A process and its pattern language (http://www.dmst.aueb.gr/dds/pubs/jrnl/2000-IST-Components/html/comp.html).
Information and Software Technology, 42(9):609–617, June 2000.
 
- Diomidis Spinellis.
Explore, excogitate, exploit: Component mining (http://www.dmst.aueb.gr/dds/pubs/jrnl/1999-Computer-Components/html/comp.html).
IEEE Computer, 32(9):114–116, September 1999.
 
- Diomidis Spinellis.
Reliable software implementation using domain specific languages (http://www.dmst.aueb.gr/dds/pubs/conf/1999-ESREL-SoftRel/html/dsl.html).
In G. I. Schuëller and P. Kafka, editors, Proceedings ESREL '99 —
  The Tenth European Conference on Safety and Reliability, pages
  627–631, Munich-Garching, Germany, September 1999. ESRA, VDI, TUM, A. A.
  Balkema.
 
- Diomidis Spinellis.
Fear of coding, and how to reduce it (http://www.dmst.aueb.gr/dds/pubs/jrnl/2001-05-Computer-Fear-of-Coding/html/foc.html).
IEEE Computer, 34(8):98–100, August 2001.
 
- Diomidis Spinellis.
Notable design patterns for domain specific languages (http://www.dmst.aueb.gr/dds/pubs/jrnl/2000-JSS-DSLPatterns/html/dslpat.html).
Journal of Systems and Software, 56(1):91–99, February 2001.
 
- Diomidis Spinellis.
Code Reading: The Open
  Source Perspective.
Effective Software Development Series. Addison-Wesley, Boston, MA, 2003.
 
- John Viega and Gary
  McGraw.
Building Secure Software: How to Avoid Security Problems the Right Way.
Addison-Wesley, 2001.
 
- Joseph Weizenbaum.
Computer Power and Human Reason.
Pelican books, 1984.
 
- Edward Yourdon.
Death
  March.
Prentice-Hall, 1997.
 
Βιβλιογραφία
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Απαιτήσεις Λογισμικού, σχεδίαση λογισμικού.
σ. 15-38.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1994.
 - Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού.
σ. 1-21
Εκδόσεις Συμμετρία, 1991.
 
- Phillip G. Armour.
The case for a new business model: Is software a product or a medium?
Communications of the ACM, 43(8):19–22, August 2000.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Glossary of Software Engineering Terminology, 1990.
IEEE Standard 610.12-1990.
 
- Institute of Electrical and
  Electronics Engineers, Inc., New York, NY, USA.
Guide to the Software Engineering Body of
  Knowledge, 2001.
Available online http://www.swebok.org.
 
- Roger S. Pressman.
Software Engineering: A Practitioner's Approach, pages 3–21.
McGraw-Hill, fifth edition, 2000.
European Adaptation. Adapted by Darrel Ince.
 
- Ian Sommerville.
Software Engineering, pages 1–19.
Addison-Wesley, sixth edition, 2001.
 
Ασκήσεις
-  Δώστε παραδείγματα παρόμοιων ως προς το υλικό προϊόντων
που διαφοροποιούνται κυρίως από το λογισμικό 
που χρησιμοποιούν.
 -  Δώστε τρία παραδείγματα εφαρμογών για κάθε μια από τις
κατηγορίες λογισμικού που αναφέρθηκαν.
 -  Περιγράψτε δύο επιχειρηματικά μοντέλα που να βασίζονται κατά κύριο
λόγο σε εξειδικευμένο λογισμικό.