ماجيستير هندسة البرمجيات
Helwan Logo



أحدث الاخبار

نبذة عن ماجيستير هندسة البرمجيات

 

 

JMSE Project Introduction

The mission of the JMSE programme is to provide a quality advanced software engineering education for preparing students in Palestine and Egypt to become entrepreneurs and leader to develop solutions that are innovative yet reliable so that they may help in developing the software industry in their country and/or for pursuit of a more advanced degree by providing them with the advanced concepts, knowledge, skills including global virtual teamwork skills, best practices, and the ability to continue to grow professionally in the global software engineering discipline.

The common framework provided by the JMSE programme offers opportunities for theexchange and sharing of knowledge and experiences between academic staff of theparticipating universities, and opportunities for enhancing the learning experiences of studentsthrough exposure to different teaching and learning environments.

Introduction

Software engineering is “the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software”(IEEE 1996). The joint master in Software Engineering (JMSE) is an advanced postgraduate program that provides students with a deep understanding of leading edge techniques for the analysis, design, and development of complex software systems.  Also, it prepares students for high quality careers in the software industry or undertaking research in the field of software engineering.

 

Vision

The vision of the JMSE programme is the lifelong success of students as professionals and leaders in software engineering in a global and interdisciplinary context with commitment to faith, ethical practice, and professional development for both a research and a professional career in the software industry.

 

Mission

The mission of the JMSE programme is to prepare software engineers and professional programmers for success and leadership in the conception, design, implementation and operation of software products representing real-world systems and to expand their knowledge and understanding of software engineering concepts, principles and development methodologies through an effective and efficient research, teaching and learning environment.

Objectives

The objectives of the JMSE programme are:

1.      To produce high quality education, that will compete effectively at the global level.

  1. To instil among students the ability to understand, analyze, and assess the value of software engineering codes of ethics, and demonstrate the ability to effectively communicate ideas and outcomes, both orally and in writing, in a logical manner.
  2. To improve students’ ability to work productively and effectively in teams including interdisciplinary teams, and demonstrate effective leadership skills.
  3. To prepare students for doctoral programs in software engineering by instilling the ability to carry out and evaluate theoretical and practical research in software engineering.

5.      To enable students pursue productive careers in software engineering that demonstrates technical leadership capabilities and/or project management expertise.

6.      To help students communicate and function effectively as members or leaders of project teams.  

7.      To ensure that students demonstrate the ability and inclination to maintain professional currency in the rapidly changing field of software engineering.

8.      To apply appropriate computer science fundamentals and software engineering practices in software development that demonstrate technical leadership capabilities and/or project management expertise.

9.      To create new opportunities for postgraduate research in Software Engineering.

10.  To collaborate with industry to develop ICT products, systems and services that address key needs.

 

 

Learning Outcomes

The programme’s basic learning outcomes can be split on several axes. Regarding understanding, the JSME’s outcomes lie in providing students with technical knowledge, skills and training on the key concepts required to design, build and test software and lead software development teams, make them have a deep appreciation for the role and importance of software processes and methodologies, provide them with the skills and attitudes to build well-specified software systems and manage software projects, as well as design, implement, test and deploy software systems.

 

Regarding the students’ cognitive skills, the programme expects students to be provided with the ability to plan, formulate, apply, analyze, develop, and evaluate appropriate software solutions, make them utilize their knowledge, abilities, talents, and skills to employ emerging technologies and approaches in solving software engineering problems, carry out and evaluate theoretical and practical research in software engineering, as well as assess the quality and security of software engineering processes and techniques.

 

Concerning the domain-specific skills, the JMSE programme will equip students with those skills in the area of software engineering that are needed by the relevant industries, develop software in global and virtual team settings, adopt a professional and ethical approach in engaging with software engineering activities, demonstrate technical leadership and/or project management skills, as well as apply emerging trends in software development to traditional computer science practices.

 

Last, with respect to the general (transferable) Skills, the programme prepares highly employable graduates for the regional software industry, enhance communication within software engineering teams, as well as make students participate productively in interdisciplinary and multicultural software engineering teams.

 

 

        ثالثاً: المقررات الدراسية و توصيف المقررات

 

النظام الكودى للمقررات

تكود المقررات بوضع الرمز الكودى للبرنامج وهو "هب" باللغة العربية و "SE" باللغة الانجليزية أولا. ويلي الرمز الكودي الرقم "600" الدال على أن مستوى المقرر لدرجة الماجستير. ثم يليها خانة رقم المقرر.

 

أ- المقررات الإجبارية:

 

عدد الساعات المعتمدة

اسم المقرر

كود المقرر

3

Research Methods in Software Engineering

 

3

 Software Requirements Engineering 

 

3

Software Management

 

3

Software Testing & Quality Assurance

 

3

 Software Design and Architecture

 

3

Software Construction

 

 

 

 

 

 

 

 

 

ب- المقررات الاختيارية:

 

 

عدد الساعات المعتمدة

اسم المقرر

كود المقرر

3

Secure Software Development

 

3

Software Maintenance and Evolution

 

3

Human Computer Interaction (HCI)

 

3

Global Software Engineering Team

 

3

Software Engineering in Mobile Computing

 

3

Software Engineering for Distributed Systems

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

توصيفالمقررات ببرنامج ماجستير  هندسة البرمجيات

 

Research Methods in Software Engineering

Students will be expected to already have a strong grasp of the key principles of software engineering and the common methods used in software practice.

This course will explore the role of empiricism in software engineering research, and will prepare students for advanced research in SE by examining how to plan, conduct and report on empirical investigations. The course will cover all of the principal methods applicable to SE: controlled experiment, case studies, surveys, archival analysis, qualitative and quantitative methods, action research and ethnographies, and will relate these methods to relevant meta-theories in the philosophy and sociology of science. The course will critically review published examples of work that used each of the principle methods, both from within SE and from other disciplines. The course will cover techniques applicable to each of the steps of a research project, including formulating research questions, theory building, data analysis, building evidence, assessing validity, and publishing.

 

Software Requirements Engineering

This course introduces students the principles, process and techniques for defining, eliciting,  analyzing , modeling, testing  and managing requirements for a large, complex, changing systems.Studying research literature in requirement engineering.

Topics covered include: requirements engineering process, requirements elicitation, Requirements analysis, Requirements documentation, Quality assurance for requirements, Requirements V & V, and Requirements management.

 

Software Engineering Management

This course introduces students to apply the concepts and basics of project management (planning, organizing, staffing, monitoring, and controlling) in the context of software projects. Also, it illustrates the benefits of process improvement and presents the Capability Maturity Model Integration (CMMI). Finally, the course offers a broad view of software management in an acquisition environment.

Topics covered include: basic project planning and scheduling, risk management, software costing, software size and quality metrics, quality management, the basics of human factors management (including individuals and groups), process improvement concept and the CMMI model, software acquisition management.

 

Software Testing & Quality Assurance

This course is designed to give the students a good understanding of the issues and techniques related to software testing and quality assurance.

Topics covered include test Lifecycle planning, test design & coverage analysis, complexity, levels of testing such as unit, integration, system, performance and stress testing methods of testing, verification and validation, quality assurance processes and techniques, software quality metrics and ISO/SEI CMM process evaluation.

 

Software Design and Architecture

The learning objectives of this course are to become familiar with: the notion of software architectures, different types of architectures, the role they play in software-intensive systems and in system development, architecture creation and evolution, architecture analysis, and documenting architecture. Concepts presented in lectures are complemented by assignments, class participation, projects, research term paper and self-study

 

Software Construction

This course will provide students with an in-depth study of software construction. Topics include, software construction fundamentals (minimizing complexity, anticipating change, constructing for verification and standards in construction), managing construction (construction models, construction planning and construction measurement) and practical considerations (construction design, construction languages, coding, construction testing, reuse, construction quality, configuration management, , automation, and integration).

Topics covered:Software Construction Fundamentals, Managing Construction, Construction Measurement, Construction Quality, Construction Design, Construction Languages ,Error Handling, Exception Handling, and Fault tolerance, Construction Testing, Collaborative construction, Construction Technologies, Software Construction Tools, Software Debugging and Refactoring

 

Secure Software Development

The goal of the secure software development course is to provide the theory and practice of software security, focusing on common software security risks, and identification of potential threats and vulnerabilities at the early stage of the software development life cycle. It integrates software security risks analysis and management throughout the software development life cycle. The course covers a variety of software security principles as shown at the following table

Topics include: Requirements: abuse & misuse cases, security requirements, Planning: risk assessment, Design: secure design patterns, test planning, Design: architectural risk & threat modelling, Implementation: Secure Programming Best Practices, Implementation: defensive coding practices, Cryptography: authentication, public-key, symmetric key, SSH,  SSL, PGP, side-channel attacks, Common Web Application Vulnerabilities, Static Code Analysis and Runtime Analysis, Vulnerability Assessment Systems: CVSS, CWSS, Deployment & Distribution: patching, security managers and Course study, students Presentation

 

Software Maintenance and Evolution

This course focuses on state-of-the art methods, tools, and techniques for evolving software.It builds upon the key methods and techniques associated with constructing software to ensure the maintainability and evolution of software products. Key elements of software maintenance process, impact analysis, software reengineering/reverse engineering/design recovery, source code analysis are examined. Then topics on how to produce software systems with the measurable maintainability properties are covered from both theoretical and practical perspectives. Advanced topics in model-based engineering for evolvable products are also examined along with emerging technologies that are relevant to the sustainability of software.

Topics include: Maintenance and Reengineering, Analysis of Software Artifacts,Configuration and Change Management, Reusability, Object-orientation and reuse, Maintenance Process and Standards, Reengineering and Maintenance in software cycle, Reengineering and Reverse Engineering and Reengineering and Reverse Engineering III Dynamic Analysis

 

Human Computer Interaction

This course is concerned with designing interactions between human activities and the computational systems that support them, with constructing interfaces to afford those interactions, and with the study of major phenomena surrounding them.

Interaction between users and computational artifacts occurs at an interface which includes both software and hardware. Thus interface design impacts the software life-cycle in that it should occur early; the design and implementation of core functionality can influence the user interface for better or worse.

Because it deals with people as well as computational systems, as a knowledge area HCI demands the consideration of cultural, social, organizational, cognitive and perceptual issues.

Consequently it draws on a variety of disciplinary traditions, including psychology, ergonomics, computer science, graphic and product design, anthropology and engineering.

The course considers a variety of methods that can be applied to the design and evaluate interactive systems.  The emphasis of the course is on practical understanding and application of HCI concepts and methods.

Topics include: user-centred design and usability engineering, Frameworks for usability engineering, Problem analysis and Task analysis, Conceptual models, Cognitive models and Human perception, Participatory design, User Interface design, Visualization, Social computing, Interaction design

Low- and High-fidelity prototyping (sketching, storyboards, wireframe), Qualitative and Quantitative evaluation and Shared workspaces and groupware usability evaluation.

Global Software Engineering Team

The search for talents and experiences across national boundaries and the integration of groups thrown together by mergers and acquisitions are two of the many forces conspiring to fundamentally change the organizational context of software development. Hence Globally-distributed projects are rapidly becoming the norm for large software systems. This course covers a set of topics, strategies and tools that are essential to both professionals who will become participants and leaders in globally-distributed projects, as well as researchers interested in studying virtual teams, distributed organizations, and global software development. Students will work in distributed project teams and experience global software development environments.

 

Software Engineering in Mobile Computing

Introducing students to mobile applications development frameworks and tools and best practices of mobile software engineering. Performing a software development cycle for a mobile application. Studying research literature on mobile computing.

Topics include: Mobile applications basics (activities, fragments, services, UI, storage, touch, voice, location and security), Mobile development software engineering model, Mobile applications architecture best practices, Cross platform mobile development frameworks, Mobile User interface design best practices, Mobile applications testing and Basic web services/REST concepts and mobile applications

Software Engineering for Distributed Systems

Deeper understanding of software engineering topics in a distributed environment. They will be better equipped to design, develop, test, and analyze the performance of distributed applications.

Topics include: Characterization of Distributed Systems, Inter-process Communication, Distributed Software Architecture, Analysis and design of distributed software, Transactions and Concurrency Control, Time and Global States, Replication & Distributed data and Distributed system quality metrics and testing.



All Copyrights reserved for FCIH