Babes-Bolyai University of Cluj-Napoca
Faculty of Mathematics and Computer Science
Study Cycle: Graduate

SUBJECT

Code
Subject
MID0007 Software Engineering
Section
Semester
Hours: C+S+L
Category
Type
Computer Science
4
2+1+1
speciality
compulsory
Mathematics and Computer Science
5
2+1+1
speciality
compulsory
Teaching Staff in Charge
Prof. PÂRV Bazil, Ph.D.,  bparvcs.ubbcluj.ro
Lect. LAZAR Ioan, Ph.D.,  ilazarcs.ubbcluj.ro
Lect. CHIOREAN Ioan Danut, Ph.D.,  chioreancs.ubbcluj.ro
Aims
At the completion of this course, the students will/should:
a) have a systematic knowledge concerning application development methodologies
b) be familiar with the modern concepts and techniques in the field of software development
c) know the models developed and modeling tools used in the software development process
d) understand the importance of documentation during the whole software development process.
Content
1. SOFTWARE PROCESS
The life-cycle of a computer program
Software engineering: history, definitions
Waterfall life cycle
Prototyping
The spiral model, Boehm
The staged model
Incremental change
Extreme Programming, XP
2. SOFTWARE DEVELOPMENT: PRINCIPLES AND ACTIVITIES
Problem solving and software development
Communication: principles and tasks
Planning: principles and tasks
Analysis modeling: principles and tasks
Design modeling: principles and tasks
Construction: principles and tasks
Deployment and operation: principles and tasks
3. MODELING SOFTWARE PROCESSES AND SYSTEMS
System modeling
Business process modeling
Tools for software modeling
4. UNIFIED MODELING LANGUAGE
UML. General issues
Modeling requirements
Modeling classes
Modeling behavior
Modeling architecture
5. REQUIREMENTS GATHERING, ENGINEERING, AND SPECIFICATION
Requirements analysis process
Starting requirements analysis
Communication techniques
Requirements synthesis
Requirements specification
Requirements validation
6. ANALYSIS MODELING
Definitions, steps, elements, methods
Use case modeling
Static modeling
Dynamic modeling
Data flow modeling
7. SOFTWARE DESIGN: CONCEPTS AND MODELS
Fundamentals of software design
Design steps
Design concepts
Design models
8. PRINCIPLES OF O-O DESIGN
Architecture and dependencies
Class design: principles
Architectural design: principles (module reuse, module coupling)
Arhchitectural patterns
9. DESIGNING ARCHITECTURE, DATA, AND PROCESSES
Architecture design. Software components
Data design
Process design
10. COMPONENT DESIGN
Logical architecture of the software system
Responsibility-driven design
OO design: steps
11. USER INTERFACE DESIGN
Human-computer interaction
Interface design rules
User interface models
User interface construction
12. SOFTWARE TESTING: TECHNIQUES AND METHODS
Verification and validation
Software testing: steps and techniques
Testing methods
13. DEPLOYMENT
Packing and installing
Software maintenance
14. SOFTWARE PROJECT PLANNING
Human factors involved in the software development process
The organization of the software development process
Other planning activities
The software project plan

Seminar activities
1. Case study: requirements analysis (1) - general requirements
communication techniques tehnici de comunicare.doc
the requirements specification document: speccerinte.doc
2. Case study: requirements analysis (2) - conceptual data modeling
3. Case study: requirements analysis (3) - process modeling
4. Case study: Object-oriented requirements analysis
5. Case study: design (1) - logical data modeling and process design
6. Case study: design (2) - OO design
7. Full case studies

The course notes are PowerPoint presentations. The students are invited to read the course material in advance.
The course and seminar materials are/will be available on the Computer Science Department@s server, in the folder win\labor\romana\an2\iss

References
1. FLAATEN, P.O., MCCUBBREY, D.J., O'RIORDAN, P.D., BURGESS, K.: Foundations of Business Systems, Dryden Press, 1st ed. 1989, 2nd ed. 1997.
2. FOWLER, M., SCOTT, K.: UML Distilled: A Brief Guide to the Standard Object Modeling Language, Addison-Wesley, 2nd ed., 1999.
3. IACOBSON, I., BOOCH, G., RUMBAUGH, J.: The Unified Software Development Process, Addison-Wesley, 1999.
4. MARTIN, R.C.: Agile Software Development: Principles, Patterns, and Practices, Prentice Hall, 2002.
5. PÂRV, B.: Analiza şi proiectarea sistemelor, Univ. Babeş-Bolyai, CFCID, Facultatea de Matematică şi Informatică, Cluj-Napoca, 2002, 2003, 2004.
6. PRESSMAN, R.S.: Software Engineering - A Practitioners Approach, McGraw-Hill, 3rd ed. 1992; 4th ed. 1996, 5th ed. 2001, 6th ed. 2005.
7. SCHACH, S.R.: Object-Oriented and Classical Software Engineering, McGraw-Hill, 5th ed., 2002, 6th ed. 2005.
8. SOMMERVILLE, I.: Software Engineering, Addison-Wesley, 5th ed. 1996, 6th ed. 2000, 7th ed. 2004.
9. Agile Modeling Homepage, [http://www.agilemodeling.com].
10. Software Engineering Body of Knowledge, IEEE, 2004. [http://www.swebok.org].
Assessment
The grading activities are:
2 quizzes during lectures (10%)
3 programming projects (45%)
written midterm exam (20%)
written final exam (25%)
The final mark is computed as weighted average of the individual marks obtained.
(the weights are given in brackets).
Exam and quiz questions refer to the teaching material and mandatory readings. Programming projects involve small incremental changes to an existing open source project.
Links: Syllabus for all subjects
Romanian version for this subject
Rtf format for this subject