Examining the use of Software Engineering by Computer Science Researchers Andre Oboler School of Computer Science and Software Engineering, Monash University,

Slides:



Advertisements
Similar presentations
TFPAI Training: Technology Facilitators
Advertisements

Testing Relational Database
Accident and Incident Investigation
System Development Life Cycle (SDLC)
EEE 243B Applied Computer Programming Software engineering Life cycle and when to test.
Systems Development Environment
Sixteen Questions About Software Reuse William B. Frakes and Christopher J. Fox Communications of the ACM.
Sharif University of Technology Session # 2.  Contents  Structured analysis and design  Information system development  Systems Analysis and Design.
Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
Systems Analysis and Design in a Changing World, 6th Edition
SDLC Group 1 Hang Pham Jared Jelacich Hector Arreola.
INFO415 Approaches to System Development: Part 1
BA (Hons) Primary Education Year Three School Based Training Briefing
Gorilla Systems Engineering versus Guerilla Systems Engineering Keith A. Taggart, PhD James Willis Steve Dam, PhD Presented to the INCOSE SE DC Meeting,
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Computer Science Department Middle States Assessment Computer Science has 4 programs (minor, bachelor’s, master’s and doctorate) and therefore 4 different.
Why don’t we practice what we teach? Andre Oboler, David McG. Squire and Kevin B. Korb School of Computer Science and Software Engineering, Monash University,
CSCD 555 Research Methods for Computer Science
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
12 C H A P T E R Systems Investigation and Analysis and Analysis.
©Ian Sommerville 2000 Software Engineering, 6th edition Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing.
School of Computing and Mathematical Sciences
Fundamentals of Information Systems, Second Edition
CS 597 Your Ph.D. at USC The goal of a Ph.D. What it takes to achieve a great Ph.D. Courses Advisor How to read papers? How to keep up-to-date with research?
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
Why don’t we practice what we teach? Andre Oboler, David McG. Squire and Kevin B. Korb School of Computer Science and Software Engineering, Monash University,
Software Development Models: Waterfall and Spiral Sung Hee Park Department of Mathematics and Computer Science Virginia State University August 21, 2012.
CORE 1: PROJECT MANAGEMENT Understanding the Problem.
Chapter 2: Approaches to System Development
Software Development Life Cycle Decisions Project Management Disciplines Stacey Shearn September 8, 2005.
CompSci 230 Software Design and Construction
Introduction to SDLC: System Development Life Cycle Dr. Dania Bilal IS 582 Spring 2009.
I.S.P. Value Proposition Societal Transition Committee Saturday, October 19, 2002.
Simplicity First: Use of Tools in Undergraduate CS and IS Teaching By David Naugler and Ken Surendran Southeast Missouri State University Computer Science.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Teaching material for a course in Software Project Management & Software Engineering – part II.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
Systems Analysis and Design
Experiences with certification of reusable components in the GSN project in Ericsson, Norway Parastoo Mohagheghi and Reidar Conradi Dept. Computer and.
Lecture 4. Software Engineering Body of Knowledge SWEBOK  Articulating a body of knowledge is an essential step toward developing a profession because.
Systems Analysis and Design in a Changing World, Fourth Edition
Systems Analysis and Design in a Changing World, 6th Edition
Problem Solving Uxbridge High School Engineering Design Process AKA.
An Analysis of Three States Alignment Between Language Arts and Math Standards and Alternate Assessments Claudia Flowers Diane Browder* Lynn Ahlgrim-Delzell.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Sixteen Questions About Software Reuse William B. Frakes and Christopher J. Fox Communications of the ACM.
Title of your BIP Business Improvement Project presented to: SUIC & UPVD as partial fulfillment of the requirement for the degrees of MBA in Hotel and.
Action Research Purpose and Benefits Technology as a Learning Tool to Improve Student Achievement.
44222: Information Systems Development
Systems Analysis and Design in a Changing World, 6th Edition
By Ramesh Mannava.  Overview  Introduction  10 secure software engineering topics  Agile development with security development activities  Conclusion.
SYSTEM ANALYSIS AND DESIGN LAB NARZU TARANNUM(NAT)
Software Design and Development Development Methodoligies Computing Science.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Engineering cosc 4359 Spring 2017.
Software Development - Methodologies
Software Development.
Fundamentals of Information Systems, Sixth Edition
Systems Analysis and Design
CS701 SOFTWARE ENGINEERING
SYSTEMS ANALYSIS Chapter-2.
Rapid Prototyping.
An Overview of Software Processes
Final Research Question
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Systems Development An Overview of Systems Development
Logical Architecture & UML Package Diagrams
Presentation transcript:

Examining the use of Software Engineering by Computer Science Researchers Andre Oboler School of Computer Science and Software Engineering, Monash University, Melbourne, Australia

Outline 1.Introduction –Computer Science –Computer Science Research –Software Engineering 2.Software Engineering in the University –Teaching and Student Use –Staff and Postgraduate Student Use –Impact of current practice 3.A new system for research –RAISER / RESET a new SDLC to support the creation and development of research software.

Computer Science Problem solving with the aid of computers or the study of how this can be achieved Careers: Allows entry into any part of the IT industry Typical starting position is that of programmer Computer Science is NOT programming. Programming is only the primary tool.

Research Software Research software is software created using new research or to prove or demonstrate new research. As all graduates and academics in the department are supposed to be proficient programmers all non standard tools, programs and experiments are set up without assistance.

Software Engineering Software engineering is the art and science of creating successful software - repeatably Careers: Allows entry into Software Development, typically on a large scale Typical starting position is that of programmer or software engineer Software Engineering is very new It has become a standard IT degree only in the last 5 years

Software Engineering The term “Software Engineering” was coined as the title of a NATO Science Committee sponsored conference in The conference aimed to find ways to combat the “software crisis”. A follow on conference in 1969 focuses on way to make software development more “Engineering like”. Much work has been done since then, but all of it focuses on software developed in and for industry.

Teaching and Student Use Since 1989 the computer science curriculum, as endorsed by the ACM Education Board has including “Software Methodology and Engineering” as one of its key requirements. The ACM, Association for Computing Machinery, was the world’s first computer society. Accreditation by the ACM is an important requirement for any computer science course.

Teaching and Student Use More recently a software engineering curriculum has been developed. Successful completion allows software engineering graduates to qualify as certified engineers. In 1998 two studies were conducted comparing student use of software engineering and industry use. Both the study by Robillard and Robillard and the study by Humphrey showed most time spent on student projects was spent programming. Minimum effort was put into planning and designing work. Humphrey added that unless students were directed to use software engineering… they didn’t.

Teaching and Student Use Software Engineering is taken seriously both by industry, and by teaching staff responsible for it. Unfortunately we found many staff who did not teach software engineering did not know the methodologies and tools taught to undergraduates. Our research investigated if this was an accurate impression and what the implications were, given that academic staff and postgraduates do their own coding.

Staff and Postgraduate Student Use Research confirmed the initial impression: a lack of software engineering usage by researchers. We discovered postgraduates were not using software engineering or were trying and giving up on it. Investigating these two situations lead us to ask why this was so. It was claimed that the nature of computer science research was not compatible with software engineering. Finally we examined the nature of computer science research and developed a compatible software engineering approach.

Past work no prior work on the costs/benefits of software engineering for research software This trend was started by Royce (1970) when he suggested that small projects used only by the developer need only use a 2 step analysis / coding approach (rather than his waterfall SDLC) This view that research is too small to warrant software engineering is still prevalent.

Methodology The research approach used will now be presented followed by some results, and finally the RAISER/RESET Software Development Life Cycle, our new approach to developing software in academia.

Approach Triangulation of: –statistical analysis of survey results –Interviews and discussion with experts –observations from case studies These methods investigated the use, costs and benefits of using Software Engineering in Computer Science Research

Survey Samples Taught Software Engineering: US 72% AUS 43% Training: Computer Science: US 62% AUS 69% Software Engineers: US 10% AUS 9%

Graphical Models Have you used Graphical models when developing software? US 68% (yes) AUS 74% (yes) Note the lower US response despite the higher number of US Software Engineering educators.

Flow Charts This is perhaps best known, and one of the coldest design methods. It is mostly obsolete. Both show low usage. The higher level of occasional usage in the US is considered a factor of the sample, and should not be taken to represent the US more generally. The Australian results are as one would expect, assuming most peop have moved on to newer methods.

Class Diagrams This is the most common design tool used in industry. It would be taught as part of any undergraduate computer science degree. The high number of academics who do not know what it is, and who chose not to use it is cause for concern.

Application of SDLCs in research SDLCs describe the systematic method used to develop software. The Spiral (3 rd from left) is the most common in Industry. Note the high level of unplanned work. Again the US sample population has an impact.

Problems with a lack of Software Engineering A lack leads to a waste of new research students’ time Follow on research is harder to achieve (some valuable research may be shelved) Authenticity of results is harder to verify Shortens the useful life of the project Shorter projects have fewer benefits

Why Software Engineering is not used Reason Percent that agree with this reason Never thought about it14% Don't know about them11% Cost of learning them is too high17% Not appropriate for my work 83% Cost of use is higher than pay off 46% Organisational Policy against spending time on them 3%

Considerations for an SDLC to meets the needs of research

“A system built as part of a Ph.D. project is intended to prove feasibility, and it would almost always be a mistake to spend the time and effort during initial development to build it to product-quality standards” (Brooks, 2002).

“The primary aim [of research] is to get a flaky prototype working sufficiently to get a few statistics out. There is absolutely zero [incentive] for producing a robust, flexible, extendable piece of software” (Allison, 2002).

“The major problem is that research projects tend to be opportunistic rather than planned” (Waite, 2002).

“The implication is that any SE approach for research software would have to be agile and evolutionary in nature” (Pressman, 2002).

On User Documentation for the CDMS Case Study “We're not sure how this will happen. We were sort of hoping it would happen by magic or be delivered by a stork” (Allison, 2002).

The RAISER / RESET idea Separate research activities from stabilization Limit the negative impact during research phases “Clean” up code so it is ready for the next researcher to continue working on While many researchers do not use software engineering, those that do use it predict they will use more in the future, this is potentially as harmful as the current lack of application.

The SDLC Model

Questions? NB: Future work will be undertaken in this area over the next three years, feedback is most welcome!

RAISER (for Research) Reactive Assisted Information Science Enabled Research Minimum overhead, maximum benefit now High level design –before coding Use header blocks Configuration Management Paired Programming –with other researchers

RESET (between Research) Research Enabled Software Engineering Techniques Clean up and restructure for later Design and Code reviews Restructure for: –improved modularity –ease of reuse Review API / User interface – Improve and document Create design documents Record current and future functionality

Implementation The in-house software development lab