1 Software Engineering/Courses Description Introduction to Software Engineering Prerequisite: (Computer Programming 2). This course introduces students to the problems and challenges that caused the birth of Software Engineering as a discipline, as well as to its scope and body of knowledge. Topics covered include: Software characteristics and problems, Software development processes, Domain and Software modeling, Software requirements analysis, Software design, Software construction, Software testing and evaluation, Software evolution, Software development tools and environments, Software project management, Software Engineering techniques in special application domains, Software and software process metrics, Software quality and Quality assurance, Ethics and professionalism. Engineering Foundations and Economics Prerequisite: (Introduction to Software Engineering). Empirical methods and experimental techniques (e.g. computer-related measuring techniques for CPU and memory usage). Statistical Analysis (including simple hypothesis testing, estimating, regression, correlation etc.). Systems development (e.g. security, safety, performance, effects of scaling, feature interaction, etc.) and Engineering Design (problem formulation, alternative solutions, feasibility etc.). Engineering economics for software including value considerations, system objectives, evaluating cost-effective solutions, and realizing system value. Object Oriented System Engineering Prerequisite: (Introduction to Software Engineering). Software design for a medium-size software product. Software requirement specification, Notation and design methodology. Design guidelines, Software evaluation at component level. Software design evaluation for reuse. Software Architecture Introduction to software design and architecture Client-Server, the Model- View-Controller, etc. -The Object-oriented and function-oriented pipelining Components technology - Application frameworks - Middleware architectures including COM, CORBA, and.net. Students participate in a group project on software design and architecture.
2 Software System Requirements Prerequisite: (Introduction to Software Engineering). Software development models, The requirements Engineering Process - Elicitation of requirements - Functional and non functional requirements - System services and constraints Quality of Requirements - Requirements traceability matrix - Metrics for non-functional requirements - Use case description - Use case and context diagrams Software Requirements Specification -IEEE Standard - Requirements for agile developments - Requirements for various systems: embedded systems, web-based systems, business systems, etc. Requirements management. Formal Methods Formal methods concepts, Formal specification languages. Executable and non-executable specifications. Pre and post assertions. Formal verification techniques in the context of software validation and testing. Using a common formal specification language, formulate the specification of a simple software system and demonstrate. Component-based Computing Fundamentals: The definition and nature of components, Components and interfaces, Interfaces as contracts and the benefits of components. Basic techniques: Component design and assembly, Relationship with the clientserver model and with patterns, Objects and object lifecycle services, Use of object brokers and Marshalling. Applications (including the use of mobile components). Architecture of component-based systems, Componentoriented design. Event handling: detection, notification, and response. Middleware: O.O. paradigm, Object request brokers, Transaction processing monitors, Workflow systems and State-of-the-art tools. Software Modeling and Analysis Modeling principles, pre & post conditions, a review of mathematical models and specification languages, properties of modeling languages; modeling of information, behavior, structure, domain, functions, and embedded systems; analysis fundamentals; requirements fundamentals, specification, elicitation, documentation, and validation
3 Software Design Design concepts: definition, fundamentals, context, principles, quality attributes. Design strategies: function-oriented, object-oriented, datastructure, and aspect-oriented design. Architectural design: styles, hardware issues, requirements traceability, domain-specific, architectural notations. HCI design principles, modes, navigation, coding and visual design, response time and feedback, design modalities, localization and internationalization, human computer interface design methods, and psychology of HCI. Detailed design and design tools and methods. Internship for SE Credit Hours: 0 Prerequisite: Must be approved by the department. During this course, the student registers a training session in a certified company or a governmental institute. The student should provide a fully described project in order to be completed in the graduation semester. A team as well as a supervisor must by determined. Specialized Systems Development Identify and discuss different specialized systems, discuss life cycle and software process in issues in the context of software systems designed for a specialized contest, select with appropriate justification approach that will result in the efficient and effective development and mainteneece4 of specialized software systems. Human Computer Interaction Tools and techniques for designing, implementation, deploying and evaluation of user interfaces and interactive systems; Dialogue Styles, Theories of interaction and component integration, Human-Computer Interaction frameworks.
4 Software Development Process, Quality Assurance, and Evolution Background on system development, development methods and life cycle of system, requirements and modeling the process, monitoring and managing projects. Studying the alternative approaches of development. Studying the CASE tools that used for development. Software verification and Validation Defining verification and validation, planning for verification and validation, studying all the details of testing: system testing, component test case, test automation. Introducing strategies of testing: black and white boxes. Implementation of testing: Alpha and Beta. Case study on validation systems such as critical system Software Development, Verification and Validation Software engineering process including: infrastructure, process modeling & specification, process measurement, analysis, improvement, and implementation. V&V terminology and foundations such as, objectives and constraints, planning the V&V effort, documenting V&V strategy, including tests and other artifacts, V&V involvement at different points in the lifecycle. Reviews: desk checks, walkthroughs, and inspections. Testing: unit testing, exception handling, white- and black-box testing, operational profit-based testing, system and acceptance testing, quality testing, regression testing, testing tools, and the deployment process. Software Testing Prerequisite: (Object Oriented System Engineering ). Fundamental of software testing to testing - Unit, functional, and acceptance testing - Black-box and white-box testing - Equivalence partitioning - Path testing Cyclomatic complexity - Integration testing System Testing: Regression testing; Interface testing; Stress testing; Incremental testing; Interaction and Usability testing... etc. - Object-oriented testing - Software testing tools - Alpha, beta, and user acceptance testing Testing in agile development environment - Automated testing- V- test model. Students participate in a group project on software testing.
5 Software Documentation and Development Introduction to the documentation activity during the software development process. Detailed documentation guidelines including: organizational policy and document templates. Introduction to IEEE Software Engineering Standards-based templates for documentation. Professional techniques for designing, producing, and packaging the documentation. Integrating userfriendly tutorials and on-line help menus within any documentation project. Hands-on experience in writing software documentations. Software Quality Assurance Quality concepts Software quality assurance - Software quality management - Quality planning and control Quality manual Product and process standards - Internal and external software quality attributes - Software reviews, walkthrough and inspection Statistical software quality assurance Software configuration management - Software reliability International Software quality models, e.g. ISO 9000 Quality standards and ISO , etc.. Software process improvement The Capability Maturity Model (CMM), Students participate in a group project on Software quality assurance. Software Engineering Prerequisite: Introduction to S.E software requirement, software design, and analysis, software testing, verification and verification, software life cycle, software process. Software Project: Management and Measurement Issues involved in software project management. Techniques to develop software project plans, supporting software quality plans and risk management plans. Topics also covered include project management issues: client management; management of technical teams, project planning, and scheduling, risk management, configuration management, quality assurance and accreditation, legal issues. Practical work for three hours weekly is also included.
6 Software Project Management Issues involved in software project management. Techniques to develop software project plans, supporting software quality plans and risk management plans. Topics also covered include project management issues: client management; management of technical teams, project planning, and scheduling, risk management, configuration management, quality assurance and accreditation, legal issues. Practical work for three hours weekly is also included. Social Issues and Professional Practice Group dynamics and psychology: working in teams/groups, interacting with stakeholders, dealing with uncertainty and ambiguity, dealing with multicultural environments. Communication skills specific to SE such as, reading, understanding and summarizing reading (e.g source code and documentation); writing assignments, reports, evaluations, justifications; team and group communication; professional skills. Accreditation, certification, and licensing. Codes of ethics and professional conduct. Social, legal, historical, and professional issues and concerns. The nature and role of professional societies. The nature and role of software engineering standards. The economics of impact software. Employment contracts. Software Maintenance Students will study the four types of maintenance: corrective, adaptive, perfective, and preventive maintenance; economic implications of maintenance; managerial issues related to system maintenance such as maintenance organizational structure; quality measurement, processes related to change requests and configuration management. Topics including: Website maintenance; role of CASE tools; reverse engineering, reengineering; code restructuring and amenability measures. Students will also learn different maintenance process models such as: Boehm, Osborne, Iterative enhancement and reuse-oriented modes.
7 Graduation Project for Software Engineering Prerequisite: (Practical Training). Students are required to develop graduation projects in one of the information technology fields. Students are required to strictly follow standards during the analysis, design and implementation of their projects. Comprehensive documentation of the project stages is to be submitted.