Software Engineering Lecture 1 Vladimir Safonov, Professor, head of laboratory St. Petersburg University WWW:
(C) Vladimir O. Safonov, References 1.Sommerville I. Software Engineering. – Sixth Edition, Addison- Wesley, Brooks, F. P., Jr. The Mythical Man-Month. – 1975 / Myers G. Software Reliability Myers G. The Art of Software Testing. – Ziegler C. Programming System Methodologies. – Prentice Hall, Kit, E. Software Testing in the Real World. – Addison-Wesley, The Capability Maturity Model. – CMU SEI, Addison-Wesley, Requirements and specifications in software development. – Moscow.: World Publishers, Data in programming languages. – Moscow.: World Publishers, Mathematical logic in programming. – Moscow.: World Publishers, 1985.
(C) Vladimir O. Safonov, U.S.S.R. / Russian classicists of software engineering Andrey P. Ershov – programming methodology; the “lexicon” of programming; “mixed” computations E. Tougu (Estonia) – academician of the Estonian Acad. Sci. - authomated program synthesis; PRIZ and NUT systems. S. S. Lavrov, corresp. member of Russian Acad. Sci. - automated program synthesis and specifications; the SPORA system. A. V. Zamulin (Novosibirsk) – abstract data types; the ATLANT language. V.V. Lipayev (Moscow) – the head of a big company majored in large embedded software systems development. J. M. Barzdin (Latviya) – inductive program synthesis (by examples). A. L. Fouxman (Rostov-on-Don) – automated program synthesis; the technology of vertical cuts (the predecessor of AOP).
(C) Vladimir O. Safonov, Evolution of software and viewpoints to software development 1960s – 1970s: “factory of software products” (naïve view on software development) Programming as a creative activity Mathematical methods are not 100% suitable for program specification and verification Very few programs are formally specified and verified
(C) Vladimir O. Safonov, Some state-of-the-art classes of programs Client – server systems Internet applications Integrated solutions Embedded systems Mobile intelligent devices software Wearable computers software
(C) Vladimir O. Safonov, Specifics of large programming systems of XXI century Internet / Intranet awareness Universal model (UML) and data (XML) representation Enhanced security and reliability requirements Integrating a variety of languages, programming systems, databases, knowledge bases and networking tools into the unique infrastructure Designing and developing reusable programming components
(C) Vladimir O. Safonov, State-of-the-art software development platforms Java (Sun Microsystems, 1995) – a software development platform based on the Java object- oriented language, compiled into Java bytecode (proprietary standards of Sun) NET (ECMA; Microsoft, 2000) – object-oriented multi-language platform with the common intermediate language (CIL / MS IL) and the common data representation based on XML (international standards by ECMA). C# is the most comfortable language for.NET but not the only one and not mandatory
(C) Vladimir O. Safonov, Qualities and properties of software products Workability User-friendly interface Reliability Security Reusability and component-based programming Modularity Efficiency (criteria?!) Portability Readability and maintainability
(C) Vladimir O. Safonov, Elements of software technologies Concepts Software tools Software process
(C) Vladimir O. Safonov, Software lifecycle general scheme Requirements & goals Specification Design Implementation Testing Maintenance Manufacturing, releases, maintenance (sustaining) – inherent parts of software product
(C) Vladimir O. Safonov, Rapid prototyping Requirements and goals Prototype specification Prototype design Prototype implementation Prototype testing Prototype submittal to the customer Iteration-based prototype improvement
(C) Vladimir O. Safonov, Home task to lecture 1 Analysis of state-of-the-art approaches to software engineering : Object-Oriented Programming Aspect-Oriented Programming Generative Programming Meta-programming Adaptive Programming Design by Contract Functional Programming Logic Programming