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:
- Business model of the systems
- Functional model (use case diagrams) for the given information system requirements is developed
- Data model of the same problem is developed
- 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:
- Problem specification
- Used techniques description
- Rules for entities identification
- Requirements specification
- More detailed requirements description
- Functional model
- Data model
- User interface requirements
- Design
- Functions and algorithms
- User interface design (prototype description)
- Approach to error handling
- User manual
- 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
- "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
- 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 |
|
|
|
|