Principles of Software Engineering

Basic Information

Offered by: Institute of Informatics and Software Engineering
Type of Study: Undegraduate in Informatics
Specialization track: Software Engineering
Duration: 12 weeks
Semester: Spring
Hours per week (lectures - labs): 3 - 2
Credits: 7
Reader: Mária Bieliková
Prerequisites:
programming in arbitrary programming language;
experiences with a big software system development would be helpful

to Homepage to Teaching to the Top

Objective

The field of software engineering deals with problems that arise when programs are large, when they involve many programmers and when they exist over long period of time. The purpose of this course is to introduce the student basic principles of software engineering. Emphasis is on structured analysis and design methods. Practical work is centered around these methods. CASE tool is used. Other stages of software development such as implementation, testing, maintenance are also discussed together with basic models of software system development life cycle. This course has been designed so that, upon its completion, the serious student will have received the initial level of preparation necessary to be a successful and effective software engineer.

Keywords: software system, module, software development life cycle, stage of software development, CASE (Computer Aided Software Engineering).

to Homepage to Teaching to the Top

Contents

Background:
a brief history of software engineering; software system and software engineering definition; properties of software systems; problems with software development
software system life cycle:
description of stages (inputs, outputs)
Technics for software analysis and design:
use case diagrams, data flow diagrams, entity relationship diagrams, algorithm description techniques (structured text, decision tables, decision trees), entity life histories, state-transition diagrams, interactions diagrams
The qualities of a good design:
coupling, cohesion, design guidelines
Design principles:
software architecture
Approaches to analysis and design:
Data-oriented approach; structured approach; object-oriented approach (Booch method)
Implementation:
programming languages; environments; strategies of implementation (top-down, bottom-up); modular programming, structured programming; programming standards; documentation
Testing:
static testing, dynamic testing; techniques of testing (black box, white box, program reviews, program walkthrough, program inspections); strategies of testing (bottom-up, top-down, big-bang, sandwich testing, comparison testing); acceptance testing; alfa-beta testing
Maintenance:
types of maintenance (corrective, adaptive, perfective, preventive); maintenance problems; cost of maintenance; software configuration management; change control
Models of software development:
(just a brief introduction) waterfall model, rapid prototyping model, evolution model, exploratory model, transformation model, reuse model
CASE tools:
classification of CASE; integrated CASE

to Homepage to Teaching to the Top

Laboratory Excercises

Labs are organized in four major segments:

  1. Business model of the systems
  2. Functional model (use case diagrams) for the given information system requirements is developed
  3. Data model of the same problem is developed
  4. Prototype of user interface is implemented

Steps 1-3. are completed by means of the CASE tool. By now CASE tool Rational Rose is used.
Results are presented to all class members (form of poster).

Documentation is required in the following form:

  1. Problem specification
  2. Used techniques description
  3. Rules for entities identification
  4. Requirements specification
    • More detailed requirements description
    • Functional model
    • Data model
    • User interface requirements
  5. Design
    • Functions and algorithms
    • User interface design (prototype description)
    • Approach to error handling
  6. User manual
  7. Conclusions

to Homepage to Teaching to the Top

Readings

Sommerville, I.
Software Engineering. Addison-Wesley Publ. Company, 6th Edition, 2001.
Ghezzi, C., Jazayeri, M., Mandrioli, D.
Fundamentals of Software Engineering. Prentice Hall, 2th Edition, 2003.
Steinberg, D.H., Palmer, D.W.
Extreme Software Engineering: A Hands-On Approach. Prentice Hall. 2004.
Brooks, F.P.
The Mythical Man-Month. Anniversary Edition.Addison-Wesley. 1995.
Jalote, P.
An Integrated approach to Software engineering. Springer Verlag. 1997.
Yourdon, E.
Modern Structured Analysis. Prentice-Hall. 1989.
Pressman, R.S.
Software Engineering: A Practicioner's approach. 5th Edition. McGraw Hill. 2000.
Pfleeger, S.L.
Software Engineering: Theory and Practice. Prentice Hall. 1998.
Van Vliet, H.
Software Engineering: Principles and Practice. John Wiley. 2nd Edition. 2000.

to Homepage to Teaching to the Top

Conditions to obtain a grade

  1. "pass" mark for labs which requires:
    • active participation in labs
    • elaboration of projects documentation with defined structure (the last date is lab in last week of the semester)
      functional and data model in a CASE tool
      prototype with proper functionality demonstration
  2. at least 56% of marks
    • Assignments for labs will constitute 30% of the final grade.
    • Midterm and Final tests will constitute 70% of the final grade.
    • Schedule for tests will be announced.

to Homepage to Teaching to the Top

Home
Research
Projects
Publications
Books
SCM
Teaching
Links
Last updated:
Mária Bieliková bielik [zavináč] fiit-dot-stuba-dot-sk
Design © 2oo1 KoXo