Advanced Software Engineering by Prof. Dr Jan Pajak Topic ASE-1 Introduction.

Post on 29-Mar-2015

218 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

Transcript

Advanced Software Engineeringby 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 people’s 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 one’s 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 [1] 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.

top related