Oman College of Management & Technology Department of Computer Science Baraka, Oman Tel. (968) 26893366 Fax (968) 26893068 Course Code : 503405 Course Name : Software Engineering Semester / Session : First 2015/2016 Credit Hours : 3 Hrs Course Prerequisites : 502301 Class sections and Lecturers: Section 1 : 13:30 – 14:30 Mon, Wed 206 Dr. Jai Arul Jose G. Instructors Office Hours: Email: g.jai.areul@omancollege.edu.om Office Hours: Sun-Thu: 08.00 AM - 03:00 PM Website: www.omancollege.edu.om/ Objectives: • The understanding of different software processes, differences among them as well as the best scenario(s) to select each one. • How to elicit requirements from a client and how to convert them into specifications, through revision, checking for correctness, completeness, etc. • Learn the design methodologies and process in the large, including principled choice of a software architecture, the use of modules and interfaces to enable separate development, and design patterns. • Understanding good software engineering practices, including requirements gathering and documentation, communications among the software project team and contracts. • Learn the various quality assurance or testing techniques, including unit testing, functional testing, integration and systems testing .Etc. Course Description: Software engineering is the branch of computer science that creates practical, organized, well-developed, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge, and developing software systems. This course covers the fundamentals of software engineering, including understanding system and software requirements ( how to collect, prioritize, inspect and analyze them), finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools (i.e. CASE tools). Skills • Creating a project plan, and requirement documents. • Creating and analyzing design models • Making engineering tradeoffs Experience • Working in a team • Putting software process into practice • Learn how to communicate with clients (in principles). Learning Outcomes After completing this course the student should be able to: • Define the Concepts and terminology of systems and software engineering. • Recognize the difference between the different approaches and techniques of software engineering. • Understand the principles and techniques underlying the process of planning and managing software projects. • Use the appropriate methods and tools for analyzing problems for which software is to be developed. • Recognize the importance of prototyping and modeling techniques and technologies in the process of software development. • Apply the appropriate software design methodologies, and models. • Apply one or more of the available CASE tools to some aspects of building information systems. • Understand the application of computing in a business context. • Solve a wide range of problems related to the analysis and design software. • Analysis and design of a system of small size. • Be able to design, write and debug computer programs in appropriate languages. • Plan and undertake a major individual project, prepare, deliver coherent and structured verbal and written technical report. • Be able to display an integrated approach to the development of communication skills, use IT skills and display mature computer literacy, strike the balance between self reliance and seeking help when necessary in new situations, and display personal responsibilities by working to multiple deadlines in complex activities. Week 1. 2. 3. 4. Subject Software Engineering and System Engineering • What is software? • What are the attributes of good software? • What is software engineering and why is it important? The Software Engineering Process • What is software engineering process? • Software Process Models 1. The Waterfall model. 2. Evolutionary development 3. Incremental development 4. Spiral development 5. Unified process model • Software Process Activities 1. Software Specification 2. Software Design 3. Software Implementation 4. Software Validation Notes 5. 6. 7. 8. 9. 10. 11. 12. 13. 5. Software evolution • CASE tools • Rapid development techniques Software Project Management • What is software project management? • Project Management activities • Proposals and feasibility studies • Project Planning • Project costing • Project Staffing • Project scheduling • Risk Management Software Requirements • What is software requirement? • User vs. System requirements • Functional vs. Non-functional requirements Requirements Engineering Processes • The Requirement Engineering Process • feasibility study • What is requirement engineering • Requirements elicitation and analysis • Stakeholders • Problems • A generic process model • Viewpoint-oriented elicitation • Scenarios • System modeling: what and why? System Models • Perspectives and types of system models • Context Models. • Behavioral Models • Data Models • Object Models Software Design • Introduction • _What is software design? • _The design process • _Specification and design • _Design description • _Design Quality Architectural Design • _What is the architectural design • _Advantages of architectural design • _Activities • _Architectural models • _Architectural design and non-functional requirements • _Phases of architectural design • _System Structuring models • _Control Models • _Modular Decomposition Models • _Domain Specific Models Distributed systems architectures First Exam Second Term Exam 14. 15. 16. • _Client-server architectures Object Oriented design • _Objects, Object classes and UML notations • An Object Oriented design process Software Testing • System Testing • Component testing • Test case design • Test automation Review Final Exam Teaching Resources • Main Textbook : Sommerville, Ian. Software Engineering 8th ed. Addison-Wesley, • Recommended Books 1. Software Engineering, a practitioner approach, by Pressman, 6th edition. 2. G.Booch, Object-Oriented Analysis and Design, Addison Wesley, 1998 3. Yourdon, Modern Structured Analysis, Yourdon press computing series, 1998 4. J.Rumbaugh OMT Insights: Perspective on modeling JOOP, textbook binding, 1997 5. E. Gamma, R. Helm, R. Johnson, and J.Valissides, design patterns, 1995 Marking Scheme 1st Exam 20% 2nd Exam 20% Practical exam 10% Final Exam 50% NOTES: Attendance to lectures is obligatory according to the University Rules. Assignments are required to be solved independently to assist students in gaining programming skills and helping them to prepare to the practical exam. Any given assignment must be worked out by the student himself. Cheating is a religious and ethical crime and any case of cheating will be treated according to the university rules