A Case Study based Software Engineering Education using Open Source Tools Sowmya B J Srinidhi Hiriyannaiah K.G. Srinivasa Dept. of CSE Dept. of CSE Dept. of CSE M. S. Ramaiah Institute of Technology M.S. Ramaiah Institute of Technology M.S. Ramaiah Institute of Technology sowmyabj@msrit.edu srinidhih@msrit.edu kgsrinivas@msrit.edu ABSTRACT In requirement analysis phase, the requirements are gathered for Software engineering is a course for undergraduate computer the project based on the features and goals listed down for a science students that comprises of principles of engineering in a project. It may include functional requirements such as software development. In this course, students learn about typical authentication of a user login and non-functional requirements phases of software that involves requirement analysis, planning such as reliability, performance. During planning phase the and scheduling, design and coding, testing, deployment and overall estimate or listing the various tasks to be carried out management on different case studies. In this paper, we carries out the schedule of the project and resources are assigned investigated a practical approach for learning software to the tasks identified. In the system design phase, various engineering through open source tools for different phases of the modules are identified that defines the features and requirements software on different case studies they have chosen as their identified in the phase 1. The modules identified are developed problem statement. using suitable implementation language during development phase and tested with appropriate test cases either manually or automated during testing. There are some disadvantages with Keywords waterfall model compared to other software processes such as Software Engineering, Waterfall model, Open source tools for early frozen requirements, no feedback from the user and so on as Software Engineering. discussed in [1][2]. Compared to other models we have followed a waterfall model 1. INTRODUCTION approach with some modifications in the phase of requirements Software Engineering describes about various phases involved in analysis and the feedback. During requirement analysis phase a a software project such as requirements and analysis, design and SMART matrix approach was followed to frame the objectives coding, testing, deployment and maintenance. In this paper we and goals of a software project. For a feedback analysis in each discuss the lab process that was implemented to provide a phase a weekly status reports were designed that are discussed in conducive and a near software firm environment for students to the upcoming sections. provide a better understanding of Software engineering principles, different phases of the software and finally the principles of 3. COURSE OVERVIEW management through Open source tools. The paper is further The course of Software Engineering is conducted for organized as follows. Section 2 discusses about a brief undergraduate students for Computer Science and Engineering as introduction to the process model and Case Studies categories per ACM guidelines for Software Engineering education [7] in followed for the projects in the lab. Section 3 describes about the third year of their curriculum having 4 credits with lectures course overview, tasks carried out in each week and the tools and a practical lab. In the lab a team of 3 -4 students were formed used, section 4 discusses about survey conducted for the where each one will be playing a different role in each phase. In curriculum and its results based on the course outcomes of the this section we discuss the approach and the phases that we introduction of a practical way to teach software engineering with followed for our practical approach to teach Software Engineering tool. using Open source tools. The different Case studies based on the problem statements chosen by the students were identified as 2. PROCESS AND PHASES shown in the table 1. Software engineering consists of process models such as waterfall Table 1. Case Studies model, incremental process, prototyping model, spiral model, scrum model and several other models [1] [2]. Out of these Type Case Studies Example models, waterfall process model is one of the basic models that is A E-commerce e-banking, Online shopping & used for developing a typical software in a industry [1]. It consists applications Logistics of phases requirement analysis, planning and scheduling, design, B Social related Smart city, e-Voting, Remote health development, testing, deployment and maintenance. applications monitoring C Management Cab reservation, Hotel management application system, Just Dial application In the first week, a problem statement was designed and given to the students for applying Software Engineering techniques to it. 1st International Workshop on Case Method for Computing Education (CMCE 2015) 79 This problem statement was then formulated into SMART It represents various classes, its attributes and methods, (Specific, Measurable, Achievable, relevant and Time Bound) association between the classes for the actors considered matrix that helps in coming up with Goals and Objectives of the in the use cases. problem to be solved. Based on these goals and objectives, features are listed down for the software to be developed for the defined problem statement.  Sequence diagram It represents the dynamic behaviour of the system or Now based on the features, requirements elicitation is carried software with respect to the objects of the classes and its out to create the Software Requirement Specification (SRS) using the tool called OSRMT (Open Source Requirements Management functions. Tool) [8]. It provides a GUI interface for specifying the At the end of this phase, the team will be able to identify the requirements, add dependencies between them. Once the final modules that can be implemented. The modules can be identified requirements are ready, a report on the requirements can be based on the class diagrams and the sequence diagrams. exported using the tool. Based on the categories of projects as A software project involves risks such as personnel shortfalls, identified in table we have identified top requirements for each wrong software function implementation and so on. The next category as shown in the table 2. phase involved risk analysis and mitigation using risk management toolkit [12]. A risk matrix was prepared with XLS Table 2. Top requirements for the Case Studies sheet with common fields as shown in the table 3 with an example Case Study Top Requirements of risk Personnel shortfalls. Once the risks are listed down, the Classification priority and the rank of the risks is maintained with mitigation Type A User Info database, User Accounts, steps to control it. Session Allotment, SMS and e-mail alert, Easy to use User interface Table 3. Risk template Type B User Info database, User Accounts, Travel Risk Risk Probability Severity Risk mitigation Guide, Emergency Services, Smart no name of communication, Data Access manger, fast occurence Disaster force, Smart Health care, Type C User Info database, User Accounts, Area 1 Personnel 85% H Provide necessary and Time of booking, Queries ON shortfalls training on the required In the next phase, planning is carried out for the Case study using ProjLibre [9]. With the help of this tool, team of students implementation identifies the different type of activities and their dependencies language (C, that need to be carried out during the project and their roles in Java) each activity. At the end of this phase, a project plan or schedule generically called as Gantt chart is prepared. Various cost drivers such as application experience; required Implementation or Coding was carried out in the next phase. reliability and so on drive a software project. In this phase, effort During coding, we also followed unit testing approach where the estimation is carried out for the project based on COCOMO students carried out unit testing with JUnit framework [13]. model using tool available by University of Southern California Cyclomatic complexity of a module was calculated using the [10]. The selection of cost drivers is estimated based on the McCabe formula, V(G)=e-n+p by representing unit tested features, requirements and planning schedule as carried out in the modules as a graph G with n nodes and e edeges [14]. Depending previous phases. At the end of this phase, effort required for the on the range of the cyclomatic complexity, those modules were project is calculated in person months with number of resources further broken down if needed. Finally, during testing phase, we required at each phase. The next phase of the project for the case followed manual testing approach where test cases were designed study is Design where the features and requirements are now with a template as shown in the table. These test cases were run represented schematically using StarUML tool [11]. We against the features designed during the first phase and test report instructed the students to design the following representations for was generated. the project.  Use case diagram To keep track of their activities the team had to submit the Weekly Status Report as shown in the fig 1, which has the It represents the summary level scenario of all the information about their role and tasks accomplished, major features in a project. It consists of actors, preconditions decision that were part of the plan and the milestones achieved. involved in the scenario. The activities carried out in each week are summarized in the  Class diagram table 4 and tools used for each phase and tasks carried out as described above are shown in the table 5. Table 4. Activities in each week Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 1st International Workshop on Case Method for Computing Education (CMCE 2015) 80 Problem Features and Project Effort estimation Software Risk analysis Coding Cyclomatic Testing Statement, Requirements planning and using COCOMO Design and and Unit complexity Objectives, scheduling model mitigation Testing and Goals Table 5. Tools used for phases Tool Phase Tasks carried out OSRMT Requirements and It provides a GUI for providing the requirements in a list with dependencies between them. Analysis Project Libre Planning and A gantt chart is prepared using this tool, that gives the overall schedule and resource planning scheduling for the project COCOMO Effort estimation Using this tool, effort in terms of person months is estimated with staffing profile required for (online) each phase as shown in the fig. Star UML Design Different sequence and collaboration diagrams, use case diagrams are drawn based on the features and requirements enlisted using OSRMT. Risk matrix Risk analysis and A risk matrix of different risks and their probabilities, severity and mitigation steps to control chart mitigation the risk is prepared JUnit Unit Testing A unit test for each module is designed and executed. Fig 1.Weekly Status Reports 4. COURSE SURVEYS AND RESULTS In this course of Software Engineering, we conducted surveys by  A consistent SRS is prepared using the principles of designing course outcomes that can be satisfied by the students requirement management. after learning this course. The main aim of these surveys is to  Ability to plan, schedule and estimate the effort for improve the curriculum of Software Engineering course using the various activities in the project to accomplish its goals feedback from the students. The analysis and the results are as shown in the table 6 and table 7. Table 6 lists the course outcomes and objectives. and their results. Table 7 lists the survey questions formed and its  Design and identify the modules of the system for results. From these survey results and feedback from the students problem using different UML diagrams. we infer the following results.  Implement the specification and testing effectively. 1st International Workshop on Case Method for Computing Education (CMCE 2015) 81  Inculcate project management principles in a team and as an individual efficiently. Table 6. Course outcomes and results Sl.no Course Outcome Results of Survey 1 Identify a problem statement, trace the requirements and write unambiguous, correct and consistent SRS 2 Prepare a project plan and estimate effort required for the project 3 Identify, analyze and develop a risk management plan for the potential risks in the project 4 To create a specification of a software artifact intended to accomplish goals 1st International Workshop on Case Method for Computing Education (CMCE 2015) 82 5 To perform testing of the code using Junit testing and test cases Table 7. Survey and results Sl.no Survey questions Results 1 Use of Tools and practical approach to understand the Software principles and development process 2 Quality of Course Content 3 Course workload for the number of credits 1st International Workshop on Case Method for Computing Education (CMCE 2015) 83 4 Organization of Lectures and lessons for the course 5 Class sessions and lectures stimulate and helpful in understanding the course modules. Finally, in virtual labs they developed the test cases for 5. COMPARISON WITH VIRTUAL LABS the modules, but in our practical approach we have we generated The similar approach has been adopted in virtual lab developed the automated unit test cases using Junit Testframework and for teaching software engineering at IIT Kharagpur [15], The manual testing for the different modules. main difference with our approach and virtual labs is we are using exhaustive open source tools. We have aligned our complete theory course structure mapping to the tasks they perform during 6. CONCLUSION SDLC. The team based learning and role based learning are also Software engineering education plays a key role for the students exploited during this course delivery. to understand the principles of software development and its While calculating the metrics in planning phase ie, LOC, Effort, practices in software industry. The practical tool based approach Schedule and COST in virtual labs they have used the for Software engineering followed helps the students to COCOMO model, using the cost drivers they estimated the understand practically about the principles, phases and practices metrics in virtual labs. In our practical approach, we have about software development in real time environment. The estimated effort using COCOMO Model II tool and we have approach we have introduced in the course is in par with virtual estimated the schedule using Gnatt Chart and Pert Chart using the labs introduced in [15]. The mapping of categories of the ProjectLibre tool. In the next phase, designing their problem experiments followed in the virtual labs is same as the different statement using Use-case, Collaboration and Sequence diagram in tasks carried out in our approach as shown in the table 4. virtual labs, but we have designed our problem statement using Initially, the course was designed with only lectures based on the Use-case diagram, The class diagram to identify the classes and contents in the syllabus. Based on the students opinion to improve modules, identifying the aggregation and association. The the course content through a practical approach, the course was dynamic behavior using sequence diagram using StarUML tool. modified with new syllabi and lab. Since, the project was carried During the process of identifying the cyclomatic complexity we out in a team, the students learned about principles of have assigned them to implement the prime modules and to management by participating individually and collaborating with identify the cyclomatic complexity metrics for the implemented each other in the team. The proposed Case based approach for 1st International Workshop on Case Method for Computing Education (CMCE 2015) 84 Software Engineering made students aware of the course contents [7] ACM, IEEE. (2008). Computer science curriculum 2008, An and the principles and techniques of the course. interim revision of CS 2001. Retrieved March 14, 2012 from http://www.acm.org/education/curricula/ComputerScience2008.p 7. REFERENCES df [1] Jalote, P. (2008). A concise introduction to software [8] http://sourceforge.net/projects/osrmt/ engineering. Springer. [9] http://www.projectlibre.org/ [2] Pressman, R. S., & Jawadekar, W. S. (1987). Software [10] http://csse.usc.edu/tools/COCOMOII.php engineering. New York 1992. [11] http://staruml.io/ [3] Pankaj Jalote: A Concise Introduction to Software [12] http://www2.mitre.org/work/sepo/toolkits/risk/ToolsTechniques/R Engineering , Springer, 2008 (Chapters: 1-4, 6-8) iskNav.html [4] David Gustafson: Software Engineering, Schaum's [13] http://junit.org/ Outline Series, McGraw Hill, 2002 (Chapters: 6) [14] McCabe, T. J. (1976). A complexity measure. Software [5] Emilia Mendes, Nile Mosley: Web Engineering, Engineering, IEEE Transactions on, (4), 308-320. Springer, 2006 (Chapter: 1) [15] http://virtual-labs.ac.in/cse08/ [6] Roger S. Pressman: Software Engineering A Practitioner's Approach, 7th Edition, McGraw Hill, 2010 Appendix Course Title: Software Engineering Course Code: CS515 Credits (L:T:P): 3:0:0 Core/ Elective: Core Type of Course: Lecture Total Contact Hours: 42 hrs Prerequisites: Nil Course Objectives Objectives of the course are to: 1. Provide an understanding of the principles of software engineering in a broader system context and the notions of software engineering process and management. 2. Identify the processes, techniques and deliverables that are associated with requirement engineering including system requirement and system modeling 3. Analyze the various steps involved in the design process and the different design approaches which include function- oriented design and object-oriented design 4. Identify the importance of testing in assuring the quality of software with an understanding of managing risks during the progress of the project 5. Appreciate the need for web engineering The Software Problem & Processes: Cost, Schedule & Quality, Scale & Change, Software Processes: Process & Project, Component Software Processes, Software Development Process Models, Project Management Process Requirements Analysis & Project Planning: Requirements Analysis & Specification: Value of a Good SRS, Requirements Process, Requirements Specification, Functional Specification with Use Cases, Other Approaches for Analysis, Planning a Software Project: Effort Estimation, Project Schedule & Staffing, Quality Planning, Risk Management Planning, Project Monitoring Plan Design, Coding & Unit Testing: Design: Design Concepts, Function-oriented Design, Object-oriented Design, Detailed Design, Metrics, Coding & Unit Testing: Programming Principles & Guidelines, Incrementally Developing Code, Managing Evolving Code, Unit Testing, Code Inspection, Metrics Testing & Risk Management: Testing Concepts, Testing Process, Black-box Testing, White-box Testing, Metrics, Risk Analysis & Management: Introduction, Risk Identification, Risk Estimation, Risk Exposure, Risk Mitigation, Risk Management Plans Web Engineering: The Need for Web Engineering: Introduction, Web Applications vs Conventional Software, The Need for an Engineering Approach, Empirical Assessment, Conclusions 1st International Workshop on Case Method for Computing Education (CMCE 2015) 85 Textbooks 1. Pankaj Jalote: A Concise Introduction to Software Engineering , Springer, 2008 (Chapters: 1-4, 6-8) 2. David Gustafson: Software Engineering, Schaum's Outline Series, McGraw Hill, 2002 (Chapters: 6) 3. Emilia Mendes, Nile Mosley: Web Engineering, Springer, 2006 (Chapter: 1) Reference Books 1. Roger S. Pressman: Software Engineering A Practitioner's Approach, 7th Edition, McGraw Hill, 2010 Course Delivery The course will be delivered through task and role based team learning concepts Course Assessment and Evaluation When/ Where To Max Evidence Contribution to Course What (Frequency in the Whom Marks Collected Outcomes course) Internal Thrice (Average of Assessment CIE Assessment the best two will be 30 Blue Books 1, 2, 3, 4 & 5 Methods Direct Test computed) Students End of Course Standard SEE (Answering 100 Answer scripts 1,2,3,4 & 5 Examination 5 of 10 questions) Students Middle of the Feedback 1, 2, 3 - Assessment Feedback course forms Delivery of the course Indirect Method 1, 2, 3, 4 & 5 Students End of Course Effectiveness of Delivery End of the course - Questionnaire Survey of instructions & Assessment Methods Course Outcomes At the end of the course the students should be able to: 1. Demonstrate an understanding of the principles and techniques of Software Engineering 2. Understand the activities in project management, requirement engineering process and to identify the different types of system models 3. Apply the knowledge of design engineering in software development 4. Formulate different testing methods and tools 5. Recognize the need for web engineering Mapping Course Outcomes with Programme Outcomes Programme Outcomes Course Outcomes 1 2 3 4 5 6 7 8 9 10 11 12 1. Demonstrate an understanding of the principles and techniques of X X Software Engineering 2. Understand the activities in project management, requirement engineering process and to identify the different types of system X X X X X X X models 3. Apply the knowledge of design engineering in software X X development 4. Formulate different testing methods and tools X X X X X 5. Recognize the need for web engineering X X 1st International Workshop on Case Method for Computing Education (CMCE 2015) 86 Course Title: Software Engineering Lab Course Code: CSL515 Credits (L:T:P) 0:0:1 Core/ Elective: Core Type of Course: Practical sessions Total Contact Hours: 28 hrs Prerequisites: Nil Course Objectives Objectives of the course are to: 1. Study and apply principles of engineering to the design, development, and maintenance of software 2. Implement the processes, techniques and deliverables that are associated with requirement engineering including system requirement and system modeling 3. Apply the knowledge, skills and techniques of project management to execute projects effectively and efficiently 4. Provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation Course Contents 1. Introduction 2. Requirements Engineering 3. Project Management 4. Metrics 5. Risk Management 6. Analysis & Design 7. Testing 8. Quality Assurance Textbooks 1. Pankaj Jalote: A Concise Introduction to Software Engineering , Springer, 2008 2. David Gustafson: Software Engineering, Schaum's Outline Series, McGraw Hill, 2002 3. Emilia Mendes, Nile Mosley: Web Engineering, Springer, 2006 Reference Books 1. Roger S. Pressman: Software Engineering A Practitioner's Approach, 7th Edition, McGraw Hill, 2010 Course Delivery The course will be delivered through practical sessions in the laboratory. Course Assessment and Evaluation When/ Where To Max Evidence Contribution to Course What (Frequency in the Whom Marks Collected Outcomes course) Internal Lab test: Once Direct Assessment assessment 30 Data sheets 1, 2, 3 test Methods CIE Demonstration of Students Mini project techniques learnt: 20 Document 1,2, 3, 4, 5 Once Standard End of the course: SEE 100 Answer scripts 1,2, 3, 4, 5 Examination Once Students Middle of the Feedback 1, 2, 3 - Assessment Feedback course forms Delivery of the course Indirect Method 1, 2, 3, 4 & 5 Students End of Course Effectiveness of Delivery End of the course - Questionnaire Survey of instructions & Assessment Methods 1st International Workshop on Case Method for Computing Education (CMCE 2015) 87 Course Outcomes At the end of the course the students should be able to 1. Identify a problem statement, trace the requirements and write unambiguous, correct and consistent SRS 2. Prepare a project plan and estimate effort required for the project 3. Identify, analyze and develop a risk management plan for the potential risks in the project 4. To create a specification of a software artifact intended to accomplish goals 5. To perform exhaustive testing of the code Mapping Course Outcomes with Programme Outcomes Programme Outcomes Course Outcomes 1 2 3 4 5 6 7 8 9 10 11 12 1. Identify a problem statement, trace the requirements and write X X X X X X X unambiguous, correct and consistent SRS 2. Prepare a project plan and estimate effort required for the project X X X 3. Identify, analyze and develop a risk management plan for the X X potential risks in the project 4. To create a specification of a software artifact intended to X X X X X accomplish goals 5. To perform exhaustive testing of the code X X 1st International Workshop on Case Method for Computing Education (CMCE 2015) 88