Master
2020/2021
Software Engineering Methodology
Type:
Compulsory course (System and Software Engineering)
Area of studies:
Software Engineering
Delivered by:
School of Software Engineering
Where:
Faculty of Computer Science
When:
1 year, 1, 2 module
Mode of studies:
offline
Master’s programme:
Software and Systems Engineering
Language:
English
ECTS credits:
4
Contact hours:
56
Course Syllabus
Abstract
The course is taught to the students of the Master’s Program «System and Software Engineering (SSE) » at Faculty of Computer Science of the National Research University - Higher School of Economics. It is a double module course, which is delivered in the first and second modules of the first academic year. Number of credits is 4. Total course length is 152 academic hours including 56 auditory hours (22 Lecture (L) hours and 34 Seminar (S) hours) and 96 Self-study (SS) hours. Academic control includes in-class tasks, a homework, a control work, and exam at the end of second module. The course ‘Software engineering methodology’ presents the engineering discipline which is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. The main objective of the training course is to examine and discuss with students fundamentals and principles of Software Engineering (SE), get familiar with common methods and standards of SE, development and evolution of complex multiversion and replicated software solutions. The course is aimed to help students to develop skills that will enable them to construct software of high quality, reliable, and that is reasonably easy to understand, modify and maintain.
Learning Objectives
- Study the place and role of software engineering, place it in a broader systems context and present the concept of software engineering processes and management.
- Learn the processes, techniques and deliverables that are associated with requirements engineering, system modeling, formal specification
- Acquire skills in software design, module development (including agile methods, software reuse, CBSE and critical systems development), and integration.
- Focus on techniques for software verification, testing, critical systems validation and further documentation
- Discover the importance of management topics in software engineering: managing people, cost estimation, quality management, process improvement and configuration management.
- Design and experiment with software prototypes, Select and use software metrics.
- Communicate effectively through oral and written reports, and software documentation
- Demonstrate professionalism including continued learning and professional activities.
- Successfully assume a variety of roles in teams of diverse membership.
- Have an ability to work with other people in a team, communicating computing ideas effectively in speech and in writing;
- Build solutions using different technologies, architectures and life-cycle approaches in the context of different organizational structures.
Expected Learning Outcomes
- Know software costs structure and software engineering methods introduction
- Understand difference between software engineering and computer science
- Know software process models
- Be able to discuss the concepts of software products and software development processes
- Understand process iteration: incremental delivery and spiral development
- Know how to develop and write a software project proposal
- Understand the principles of object-oriented software construction
- Know requirements validation and the role of requirements reviews
- Be able to perform the analysis of system requirements and the production of system specifications
- Understand how to develop and write a Software Requirements Specification
- Know how to define CASE tools and software development environments
- Know the concepts of software products and software development processes
- Be able to suggest appropriate architecture style
- Understand specification in the software process: formal, sub-system, behavioral specification
- Know the importance of process visibility and software design techniques, Design process models Able to: design a software system, write document the implementation of a software system Understand: UML design process brief introduction
- Be able to design a software system, write document the implementation of a software system
- Understand the UML design process
- Know how to develop a software Project
- Be able to design process models
- Understand system design evolution and development
- Know the benefits of software reuse and some reuse problems
- Be able to evaluate Software maintenance and maintenance cost factors
- Understand software evolution processes and ways of software reuse implementation
- Know the document software testing
- Be able to develop and apply testing strategies for software applications
- Understand the planning of software inspections
- Know software testing guidelines and main tools and techniques
- Be able to write a test plan
- Understand the results of software testing, how to measure test results
- Know software cost estimation techniques, algorithmic cost modeling
- Know main tasks undertaken by risk managers, risk management planning and the planning process
- Understand factors that influence individual motivation
- Know the risk management process and objectives
- Be able to perform the qualitative and quantitive analysis, develop risk management planning and the planning process
- Understand the risk monitoring and control
- Know the software metrics
- Be able to provide Quality monitoring and control
- Understand quality management process and key quality management activities
- Know software configuration management process
- Be able to use CASE tools to support configuration management processes
- Understand configuration management documenting and measuring
Course Contents
- Software engineering fundamentals
- Software process models
- Project management activities
- Software requirements
- Requirements engineering processes
- System models and architecture
- System design
- Software development
- Software reuse and evolution
- Verification and validation
- Software Testing
- Managing people and cost estimation
- Software risk management
- Quality management, process improvement
- Configuration management
Interim Assessment
- Interim assessment (2 module)0.4 * Exam (E) + 0.24 * Practice Activities (PA) + 0.24 * Project (P) + 0.12 * Test (T)
Bibliography
Recommended Core Bibliography
- Bharat Bhushan Agarwal, & Sumit Prakash Tayal. (2016). Software Engineering. [N.p.]: Laxmi Publications Pvt Ltd. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1227282
- Dooley, J. (2017). Software Development, Design and Coding : With Patterns, Debugging, Unit Testing, and Refactoring (Vol. Second edition). [Berkeley, Californial?]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1641452
- Layton, M. (2018). Scrum For Dummies (Vol. Second edition). Hoboken, NJ: For Dummies. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1793717
- McWherter, J., & Gowell, S. (2012). Professional Mobile Application Development. Indianapolis, Ind: Wrox. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=476649
- Myers, G. J., Badgett, T., & Sandler, C. (2012). The Art of Software Testing (Vol. 3rd ed). Hoboken, N.J.: Wiley. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=396276
- Schmidt, R. (2013). Software Engineering : Architecture-driven Software Development. Waltham, MA: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=515418
Recommended Additional Bibliography
- Gharbi, M., Koschel, A., & Rausch, A. (2019). Software Architecture Fundamentals : A Study Guide for the Certified Professional for Software Architecture® – Foundation Level – ISAQB Compliant. Heidelberg: dpunkt.verlag. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=2036069
- Mitra, T. (2016). Practical Software Architecture : Moving From System Context to Deployment. New York: IBM Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1601527
- Otero, C. E. (2012). Software Engineering Design : Theory and Practice. Boca Raton: Auerbach Publications. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1728920
- Unhelkar, B. (2013). The Art of Agile Practice : A Composite Approach for Projects and Organizations. Boca Raton: Auerbach Publications. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=511717