2010-11 academic year
Software Engineering (21418)
Degree/study: Bachelor's degree in Computer Sciences (3377)
Year: 2nd
Term: 2nd / 3rd
Number of ECTS credits: 8 credits
Hours of studi dedication: 200 hours
Teaching language or languages: Catalan and Spanish
Teaching Staff: Vladimir Estivill-Castro
1. Presentation of the subject
Software engineering is the field concerned with the development and maintenance of software systems that behave reliably and efficiently. It also focuses on developing software within budget and satisfying customer requirements and users who have defined and specified the solution. It is an important discipline due to the spectrum and broad impact of software in the economical activities of humanity and modern society and for the role of software in critical systems and in ensuring security of many applications. The discipline integrates formal methods of mathematics, computer science and the origins and practices of engineering.
Therefore, software engineering is the systematic, disciplined, quantifiable and rigorous application of approaches for development, operation, maintenance and implementation of software. Obviously, the study of the approaches that lead to the production of quality software is the central focus of software engineering. Software engineering is mainly concerned about building software correctly. The software should not fail because nowadays thousands of activities are monitored, managed or regulated by running software systems.
Software engineering includes a range of concepts, definitions of processes, practices, tools and standards. Work teams use all this knowledge to perform tasks, which produce high quality software and achieve stakeholders' needs. Tasks include the analysis and the specification, design, implementation, verification, testing, maintenance and the project management, all in time and within the budget.
Modern software engineering has also an important approach with regard to producing designs for sustainable systems; whose environmental impact is minimal and whose objectives also consider social and ethical principles. Software engineers apply technology to develop new systems, build new tools and use technology to progress and, in general, produce benefit by ensuring the quality of results.
2. Competences to be obtained in the subject
Capacities for teamwork, organization, scheduling and solving problems are needed. Moreover, conceptual design and cognitive skills are also required.
Transferable skills |
Specific competences |
Instrumental 1.-Cognitive skills (understanding, interrelation of ideas and thoughts, analysis and summarizations) are very important for problem solving, planning, analysis and design. Interpersonal 1.- Communicative capacity. The work context of software engineering is usually collaborative work in a team where it is necessary to communicate problems, solutions, criteria, as much in a technical language as to non-technical users. Communication must be effective in both written and oral expositions to customers or in small workgroups. Systemic 1.- Information Management. A complex problem is presented with a lot of information, sometimes inconsistent or incomplete. A software engineer must organize the documentation requirements, the project management and the product. |
The specific competences can be summarized in three main capacities: 1.- Knowledge of tools, methods and practices in software engineering. 1.- Knowledge of the different methodologies of software engineering. 2.- Capacity to analyse and describe the requirements of a complex problem. 3.- Capacity to design a solution to a complex problem of software engineering from requirements.
|
3. Contents
The brief description of the content is:
- Software life cycle
- Visual modelling and the use of languages as UML
- Analysis and object-oriented design
- Use and implementation of the software engineering patterns.
The detailed information is the following:
Part I: Software engineering and its processes.
Unit 1: Life cycle and methodologies:
Concepts:
- Notion of software engineering
- The connection between software engineering and the professional fields of computing and other professions.
- Life cycle of software products and their models.
Processes:
- Identification of different parts or processes of a generic life cycle and the activities carried out in each phase.
- Analysis of advantages and disadvantages of different schemes for a life cycle and in relation to the context of a particular project.
Attitudes:
- Interest in software engineering and its importance in most fields of computing profession.
- Critical turn of mind to assess the advantages and disadvantages of several models of a life cycle and methodologies of software engineering.EscoltaLlegeix fonèticament
Unit 2: Requirement engineering:
Concepts:
- Definition and classification of different types of requirements.
- Elements of a requirements document and related formalisms.
- Life cycle of requirement engineering.
Processes:
- Classification of the functional, non-functional and domain requirements.
- Identification of stakeholders and actors.
Attitudes:
- Use of "use case diagrams" in UML to analyse and discover requirements.
- Writing requirement documents as a result of an analysis of a case study.
- Maintenance of a requirement document and management of its updating as a result of changes.
Unit 3: Methodologies:
Concepts:
- Description of various examples of methodologies.
- Agile methods vs. traditional methods.
- Methodologies based on processes vs. methodologies based on people.
Processes:
- Identification of advantages and disadvantages of various methodologies.
- Applications of the practices and processes of some methodologies.
Attitudes:
- Be critical to evaluate a methodology.
Part II: Analysis and object-oriented design.
Unit 4: Analysis and object-oriented design:
Concepts:
- Definition and properties of objects
- Definition and properties of classes
- The relationship of inheritance, composition, aggregation, association and dependency
- Polymorphism and inheritance hierarchies
- Practice C++ as an example of object-oriented language
Processes:
- Division of a complex problem using the concepts and procedures of the object-oriented paradigm.
- Use of the UML language to model object-oriented systems.
- Using a languages like UML to model object-oriented systems.
- Using a language like C++ to implement object-oriented systems.
- Test driven development.
Attitudes:
- Good programming practices (encapsulation, no duplication, short methods, clear nomenclature)
- Adoption of conventions for coding in the workgroup.
- Adaptation to change, the code that conforms a modelling in a constant evolution.
- Understanding the advantages of test driven development.
Unit 5: modelling with UML:
Concepts:
- Advantages of visual modelling
- Definition and brief history of UML
- Main UML diagrams and the included elements in them.
Processes:
- Usefulness of the various UML diagrams and their use in various stages of the life cycle.
- Understanding of UML diagrams and their application to a particular problem.
- Using the most important UML diagrams (sequence and static use case diagrams) in the solution of a problem and, to a lesser extent, some other types of diagrams.
Attitudes:
- Acceptance of the importance of using a standard formalism when diagrams are used.
Unit 6: Software patterns:
Concepts:
- The software pattern concept
- Catalogue of patterns and its usefulness
Processes:
- The use of UMP to understand a particular design pattern.
- Using the taxomony of patterns to identify a pattern as a generic solution to a particular problem.
- Using design patterns for a solution to a specific case.
Attitudes:
There is no need to reinvent the wheel. Most problems that appear in the practice are solved and the solution is available as a pattern that certainly has characteristics of superior quality to what we can develop in a first isolated iteration.
4. Assessment
4.1 General criteria to evaluate
All competences of the section 3 will be evaluated as well as the specific competences through the following evaluated activities, which are compulsory:
- A final exam at the end of the third term. To pass it, students must solve correctly a particular problem in limited time.
- Practical problems solved in the laboratory (in pairs) and can be part of a global project during the subject in two terms (the assessment is continuing and the mark of the eight sessions of practical problems corresponds to 40%).
- Three small tests that go deeply into concepts and their discussion with regard to the subject contents.
- Participation in seminars and discussion of class material, engagement in the seminar sessions and activities during the seminar sessions.
The final grade for the subject is calculated as follows:
Final exam (10%)
Three small tests (10%)
Practical problem sessions in the laboratory (40%)
Each session represents 5%
Participation in seminars and discussion of practical activities (10%)
Each session means 1%
Providing that the following criterion of integrity of the evaluation is kept:
IT IS NECESSARY TO PASS THE FINAL EXAM, AT LEAST TWO OF THE THREE SMALL TESTS, AT LEAST 60% OF THE SEMINAR ACTIVITIES AND COMPLETE MORE THAN 50% OF THE PRACTICAL PROBLEMS SESSIONS TO PASS THE SUBJECT.
4.2 The detailed evaluation is the following:
Final Exam
In the final exam, a particular problem and a set of analysis and design questions are set out. The problem must be solved in limited time. Students can have notes and supplementary material for the exam.
What it will be evaluated?
Transferable skills
- Problem solution
- Organization and planning
Specific competences
- Capacity to analyse and describe the requirements of a complex problem of software engineering.
- Capacity to design a solution to a complex software problem from given requirements.
When it will be evaluated?
During the exams period in the third term.
Three small tests
In a limited period of time, several small activities that put concepts into practice should be solved. These activities will be similar to activities done before in seminar or laboratory discussions and they are focused on a particular practice or a specific concept.
What it will be evaluated?
Transferable skills
- Problem solution
- Organization and scheduling
Specific competences
- Capacity to analyse and describe the requirements of a complex problem of software engineering.
- Capacity to design a solution to a complex software problem from given requirements
- Capacity to apply UML
- Capacity to apply concepts of analysis and object-oriented design
- Capacity to apply and use patterns of software engineering
- Capacity to distinguish among different methodologies of software engineering
When it will be evaluated?
Since this subjects lasts two terms, approximately, during the middle of both terms, and at the end of the first term of the subject.
Problem sessions in the laboratory
In the laboratory, there will be introduced tools that support the methodologies of software engineering and will make up phases of a project which will be done in group and where general and specific competences will be put into practice. Students should work with another person and make an oral and written practical communication participating in roles as users and stakeholders.
What it will be evaluated?
Transferable skills
- Problem solution
- Organization and scheduling
- Teamwork
- Efficient communication
Specific competences
- Capacity to analyse and describe the requirements of a complex problem of software engineering.
- Capacity to design a solution to a complex software problem from given requirements.
- Capacity to apply UML
- Capacity to apply concepts of analysis and object-oriented design
- Capacity to apply and use patterns in software engineering
- Capacity to distinguish between different methodologies of software engineering
When it will be evaluated?
The 8 problem sessions are dealt during the two terms, that is to say one problem session every 3 weeks approximately. The activities of a problem and laboratory session should be completed during the session and the results of a problem session should be delivered before the next session.
Participation in seminars and discussion about practical activities
In seminar sessions, solutions and concepts in practical cases and activities will be discussed. Probably, students will be required to present partial or whole solutions and discuss in front of the class or the lecturer. The aim is going deeply into the specific and general skills and getting feedback and a continuing assessment.
What it will be evaluated?
Transferable skills
- Problem solution
- Organization and scheduling
- Teamwork
- Efficient communication
Specific competences
- Capacity to analyse and describe the requirements of a complex problem of software engineering.
- Capacity to design a solution to a complex software problem from given requirements.
- Capacity to apply UML
- Capacity to apply concepts of analysis and object-oriented design
- Capacity to apply and use patterns in software engineering
- Capacity to distinguish between different methodologies of software engineering
When it will be evaluated?
The 20 problem sessions are divided into two terms, that is to say 10 sessions each term, so one seminar session weekly. The activities of the seminar sessions usually consist of the discussion of solutions to specific cases; specific problems and collective discussion or the expositions by students to put their solutions to debate alternatives and get feedback form the seminar teacher.5. Bibliography and and didactic resources
5.1. Recommended bibliography
- Fowler, Martin UML distilled : a brief guide to the standard object modeling language / Martin Fowler with Kendall Scott Reading (Mass.) : Addison-Wesley, cop. 2000
- Meyer, Bertrand Construcción de software orientado a objetos / Bertrand Meyer ; traducción: Miguel Katrib Mora, Rafael García Bermejo, Salvador Sánchez ; revisión técnica: Jesús García
- Madrid [etc.] : Prentice Hall, 1998
- Sommerville, Ian Software engineering / Ian Sommerville Harlow : Addison-Wesley, 2009
- Larman "Applying UML and patterns: an introduction to object-oriented analysis and design"
5.2. Complementary bibliography
- Costal, DolorsEnginyeria del software especificació : especificació de sitemes orientats a objectes amb la notació UML / Dolors Costal, M. Ribera Sancho, Ernest Teniente Barcelona : Edicions UPC, 2000
- Joyanes Aguilar, LuisPla docent assignatura Estudis Programación orientada a objetos / Luis Joyanes Aguilar Madrid : Osborne/McGraw-Hill, cop. 1998
- Peralta Giménez, Allen J. Enginyeria del software : programació orientada a objectes / Allen J. Peralta Giménez, Horacio Rodríguez Hontoria Barcelona : Edicions UPC, 1994 Upper Saddle River, N.J. : Prentice Hall PTR, cop. 1998
- Pressman, Roger S. Ingeniería del software un enfoque práctico / Roger S. Pressman adaptación: Darrel Ince traducción: Rafael Ojeda Martín ... [et al.] dirección, coordinación y revisiónMadrid McGraw-Hill cop. 2002
- Schach, Stephen R. Software engineering / Stephen R. Schach Boston : Irwin, cop. 1993 Shtern, Victor
- Core C++ : a software engineering approach / Victor Shtern Upper Saddle River : Prentice Hall PTR, cop. 2000
- Stroustrup, Bjarne The C++ programming language / Bjarne Stroustruptext
5.3. Didactic resources
- Notes in free format
- Collection of problems
-
The web of subject in Moodle
6. Metodology
The subject involves 18 theory sessions (2 hours each), 8 problem sessions in laboratories (2 hours each) and 20 seminar sessions (2 hours each) during two terms.
The theory sessions are lectures where students take part and the basic theoretical concepts and methodologies are introduced and the suitable processes for solving complex problems with tools and techniques of software engineering are shown.
The seminar sessions are in small groups and deal with discussion of specific problems and the immediate feedback resulting from constructive discussion of proposed solutions by students and of specific activities suggested by teachers.
The problem sessions are in medium-size groups but students have to work in pairs to carry out a software project in phases, implementing also specific tools for the software production in the context of software engineering. The aim of these laboratory sessions is preparing a practical activity and a specific illustration that allows using tools such as CASE, IDE and control of versions ones. Its aim is put theoretical concepts into practice and use the complete of competences and skills in a real, concrete and practical sense.
7. Planning of activities
The class timetables and the details for each lecture, problem sessions in laboratory or seminar sessions are published in the calendar and timetables of the WEB by ESUP.