SoftwareEngineering
Lecture 1
Vladimir Safonov,Professor, head of laboratory
St. Petersburg University
Email: [email protected]
WWW: http://user.rol.ru/~vsafonov
(C) Vladimir O. Safonov, 2004 2
References
1. Sommerville I. Software Engineering. – Sixth Edition, Addison-Wesley, 2001.
2. Brooks , F. P., Jr. The Mythical Man-Month. – 1975 / 2000.3. Myers G. Software Reliability.- 1975.4. Myers G. The Art of Software Testing. – 1974.5. Ziegler C. Programming System Methodologies. – Prentice Hall,
1983.6. Kit, E. Software Testing in the Real World. – Addison-Wesley,
19957. The Capability Maturity Model. – CMU SEI, Addison-Wesley,
19948. Requirements and specifications in software development. –
Moscow.: World Publishers, 1984.9. Data in programming languages. – Moscow.: World Publishers,
1982.10. Mathematical logic in programming. – Moscow.: World Publishers,
1985.
(C) Vladimir O. Safonov, 2004 3
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, 2004 4
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, 2004 5
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, 2004 6
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, 2004 7
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, 2004 8
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, 2004 9
Elements of software technologies
• Concepts• Software tools• Software process
(C) Vladimir O. Safonov, 2004 10
Software lifecycle general scheme
• Requirements & goals
• Specification
• Design
• Implementation
• Testing
• Maintenance
• Manufacturing, releases, maintenance (sustaining) – inherent parts of software product
(C) Vladimir O. Safonov, 2004 11
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, 2004 12
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