Εισαγωγή στο μάθημα
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Καλώς ήρθατε
Ανάπτυξη και διαχείριση πληροφοριακών συστημάτων
Τρόπος διδασκαλίας
- Συμμετοχή
- Ερωτήσεις
- Ασκήσεις, θέματα για σκέψη
- Φροντιστήριο
- Εργαστήριο
- Ανεξάρτητη μελέτη
Οι σημειώσεις
- Δε θα μοιράζονται
- Είναι οι παρουσιάσεις του μαθήματος
- Προσβάσιμες από το WWW: http://www.spinellis.gr ( http://www.spinellis.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.spinellis.gr/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.spinellis.gr/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.spinellis.gr/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.spinellis.gr/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.spinellis.gr/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.spinellis.gr/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.
Ασκήσεις
- Δώστε παραδείγματα παρόμοιων ως προς το υλικό προϊόντων
που διαφοροποιούνται κυρίως από το λογισμικό
που χρησιμοποιούν.
- Δώστε τρία παραδείγματα εφαρμογών για κάθε μια από τις
κατηγορίες λογισμικού που αναφέρθηκαν.
- Περιγράψτε δύο επιχειρηματικά μοντέλα που να βασίζονται κατά κύριο
λόγο σε εξειδικευμένο λογισμικό.