Presentation on theme: "Advanced Software Engineering by Prof. Dr Jan Pajak Topic ASE-1 Introduction."— Presentation transcript:
Advanced Software Engineering by Prof. Dr Jan Pajak Topic ASE-1 Introduction
Syllabus This course deals with various software engineering areas such as object-oriented SE, system engineering-based SE, component-based SE, architecture-based SE, etc. The analysis covers various issues such as conceptual, methodological, technological, institutional and social issues. Attending students will be able to elevate their capability for trend estimation and total life- cycle engineering in SE field.
Electronic copy of these notes pajak.6te.net then click ASE, or pajak.6te.net/ase_1_2007.htm or pajak.fateback.com then click ASE, or pajak.fateback.com/ase_1_2007.htm
. Disadvantages of ASE course in English Double difficulty (English + ASE) Communication problems (I do not speak your language, you are just learning my language)
Advantages of ASE course in English You are to polish your English skills. You learn English computer terminology. You learn to use English textbooks. You get the key to the most up-to-date knowledge. You learn to interact with professionals in your discipline from throughout the world.
#1. Definition of SE (Bauer 1969): Software engineering is defined as the establishment and use of sound engineering principles in order to obtain, economically, software that is reliable and works on real machines
#2. SE versus hardware engineering: Software does not: - wear out, - have spare parts, - include cost of materials, - have already existing components which can be assembled together like in machines.
#3. SE versus amateur programming: Meeting basic requirements (userfriendliness, foolproofing, etc), Following principles and techniques (lifecycle, philosophies, approaches), Focus of attention on design instead of debugging, Good documentation and user interface, Re-use of algorithms, modules and objects.
#4. SE philosophies and principles: PP (Procedural Programming): - Spaghetti programming, - Data Independence, - Modular Programming, - Top-down design, - Structured Programming. OOP (Object-Oriented Programming).
PP (Procedural Programming) stage of software engineering This stage was dominant since times of first computers, until around 2000, with a changeover period slowly starting around 1995. Practically even now many simple tasks is done with the use of PP. Procedural Programming is an approach to programming, or a philosophy of programming, in which programs are formulated as series of procedures which tell the computer what and how should be done.
Spaghetti programming stage It was started by the Bohm and Jacopini Theorem (1966), which identified sequence, selection, and repetition as a necessary parts of computer programs. The consequence was initially the GO TO statement, and thus also spaghetti programs.
Data Independence idea Data independence is an approach to programming in which the programs' operation is defined independently from data content. This allows for logical (i.e. defining what) and physical (i.e. defining how) changes in data without altering the applications software that manipulates this data.
Modular Programming concept (The formation of re-usable modules and libraries of modules – early 1960s.) This is the approach to programming in which the entire problem is divided into a set of routines each, one of which is to be carried out by an independent module of the original program.
Top-down design The principle of top down design states that the program's planning activities should be carried out in the direction "from general to specific". In the first stage of planning the "strategy" or the "operational principle" of the program is designed and expressed as a set of control statements contained in the MASTER module. These control statements divide the processing task into a set of steps, each one of which is carried out by a separate "sub module". In the second stage of planning the purpose of each sub module is worked out and designed as a set of subordinate routines which, in the next stages, can be nested further into a suitable number of levels.
Structured Programming Prof Edsgar W. Dijkstra (1976). Structured Programming is a philosophy of writing programs according to a set of rigid rules in order to improve program clarity, simplify debugging, and increase programmer productivity. Sometimes people describe it as Go-TO free programming and one entry one exit programming.
OOP (Object-Oriented Programming) stage of software engineering Object-orientation is a new approach to programming, or a new class of philosophies of programming, in which all applications (i.e. processing programs, databases) are organised from smaller components called objects, each one of which is containing both the data, and the processing operations, necessary to perform a task. Object oriented approach was invented in order to make programming computers as similar as possible to manufacturing physical goods. Although the basic idea of object orientation is not new, the actual implementation of this idea is rather a fairly recent development in computing, as all the major work on it was done in 1990s.
#4/2. Definition of an object by Grady Booch (1986): An object is a software entity that have state, behaviour, and identity.
Facts about OO: A new object-oriented approach is an alternative (and a competition) to the old procedural approach. In the procedural approach programs and databases were created around the process they performed or function they were to fulfil (e.g. previously we had a sort program which was created around a specific sorting procedure, now we have a sort object which does sorting). To the procedural approach are classified three major philosophies of programming developed so far, namely: top- down design, modular programming, and structured programming (although the OO approach takes some elements from them, e.g. the concept of modules). Object-oriented approach is just another model of reality, applicable for making computer programs, which assumes that the reality can be expressed with the use of a model, which is composed of objects.
#5. Fundamental concepts of SE: Object-oriented SE, System engineering-based SE, Component-based SE, Architecture-based SE.
Object-oriented SE It depicts the engineering of software which is composed of objects and the preparation of which follows the object-oriented methodology.
System engineering-based SE It is a variation of software engineering which instead of concentrating solely on software, focuses on a variety of elements, analysing, designing, and organising those elements into a system that can be a product, a service, or a technology for the transformation of information or control. (See [3b] page 122.)
Component-based SE It is a variation of software engineering which focuses on components of software being developed, such as modules in modular programming or objects in object programming. It is concerned with developing standardised components based on a component model and comprising these into application system ([2b] p. 439). A component is a software element that conforms to a component model and can be independently deployed and composed without modification according to a composition standard. ([2b] p. 442). A component model is a definition of standards for component implementation, documentation, and deployment. ([2b] p. 445.)
Architecture-based SE It is a variation of software engineering which is strongly focused on the architecture of hardware which a given software services, because it is either prepared in architecture-depended languages, such as Assembly, or is to service specific kind of hardware. Examples: embedded software engineering, or engineering of software for control microprocessors.
#5/2. Issues of SE: Conceptual issues, Methodological issues, Technological issues, Institutional issues, Social issues.
Conceptual issues These are subjects for discussion or concern which relate to main ides of software engineering or software being engineered.
Methodological issues These are subjects for discussion or concern which relate to procedure or way of doing something in SE.
Technological issues These are subjects for discussion or concern which relate to ways things work.
Institutional issues These are subjects for discussion or concern which relate to institutions that produce or use given software.
Social issues These are subjects for discussion or concern which are concerned with peoples welfare (e.g. RSI, cyber dependency, computer viruses, code of ethics). E.g., in the article Cyber dependency has far-reaching effects from p. A11, The New Zealand Herald, issue dated on Monday, February 26, 2007, they stated, quote: … include lethargy, an inability to concentrate, and rudeness. … The effect on ones IQ is significantly more harmful than taking cannabis.
Software engineering life-cycle: Lifecycle is the name assigned to sequence of stages through which each software project evolves from the moment when it is conceived to the time when it is withdrawn from further use. Lifecycle is going to be the topic for our lecture presentation No 2.
#6. Test questions: (Q1) Which one amongst the following definitions CANNOT be used as a definition of the discipline of software engineering: 1. The establishment and use of sound engineering principles in order to obtain, economically, software that is reliable and works on real machines. 2. The formation of software entities that have state, behaviour, and identity. 3. The building of software systems by teams rather than by individual programmers, through the use of engineering principles in the development of these systems, and make up of both technical and non-technical aspects. 4. The establishment and use of sound engineering principles and good management practice, and the evolution of applicable tools and methods and their use as appropriate, in order to obtain – within known and adequate resource provisions - software that is of high quality in an explicitly defined sense. (Extended Bauer  p. 3)
#6. Test questions: (Q2) Which factor amongst listed below is the main reason behind the statement that software does not wear out but it deteriorates: 1. Software is locked inside of memory and not exposed to elements. 2. Software is not creating friction during the operation. 3. Software runs on PCs which use electric impulses for information processing. 4. Software is an expression of algorithms which not made up of any specific materials that could be subjected to wear and tear.
#6. Test questions: (Q3) The presence of which combination of distinct features can be characteristic of programmes prepared with amateur programming but should not be typical for professionally made programs of software engineers: 1. Displaying user friendliness and foolproofing. 2. Requesting from the user to input current date. 3. Having default data. 4. Code includes modules and/or objects.
#6. Test questions: (Q4-PP) The presence of which distinct feature is NOT characteristic for procedural programming (PP): 1. Object. 2. Selection. 3. Top-down design. 4. Module.
#6. Test questions: (Q4-OO) The presence of which characteristic is NOT unique just to object-oriented programming (OOP): 1. Polymorphism. 2. Inheritance. 3. Repetition. 4. Object.
#6. Test questions: (Q5-Architectural) Engineering of which software is not representing an architecture-based SE: 1. Embedded software. 2. Application software. 3. Control programs for automation systems. 4. Control programs for numerically controlled machine tools and robots.
#6. Test questions: (Q5-Social) Which one amongst following is not a social issue of SE: 1. RSI. 2. Ethics of programmers. 3. Computer viruses. 4. Generation of microprocessors which our PC uses.