Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.

Slides:



Advertisements
Similar presentations
25 February 2009Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department.
Advertisements

Systems Analysis, Prototyping and Iteration Systems Analysis.
Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
Software Project Management
CS487 Software Engineering Omar Aldawud
SDLC Software Development Life Cycle. SDLC Acronym for system development life cycle. Acronym for system development life cycle. Is the process of developing.
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Chapter 2 – Software Processes
CS3500 Software Engineering Legacy Systems (1) Legacy systems are software (and sometimes hardware) systems that have been developed sometime in the past.
Software Process Models
Ch 3 System Development Environment
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
COMP 350: Object Oriented Analysis and Design Lecture 2
Objectives Explain the purpose and various phases of the traditional systems development life cycle (SDLC) Explain when to use an adaptive approach to.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
SDLC. Information Systems Development Terms SDLC - the development method used by most organizations today for large, complex systems Systems Analysts.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Introduction to Computer Technology
Chapter 1 The Systems Development Environment
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Computer Science: An Overview Tenth Edition by J. Glenn Brookshear Chapter.
7.1 The Software Engineering Discipline 7.2 The Software Life Cycle 報告者 : 林建任.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
CompSci 230 Software Design and Construction
Chapter 2 The process Process, Methods, and Tools
Understand Application Lifecycle Management
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Introduction to Interactive Media The Interactive Media Development Process.
Installation and Maintenance of Health IT Systems
Copyright © 2015 Pearson Education, Inc. Chapter 7: Software Engineering.
Software Life Cycle Models. Waterfall Model  The Waterfall Model is the earliest method of structured system development.  The original waterfall model.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Chapter 7 Software Engineering. © 2005 Pearson Addison-Wesley. All rights reserved 7-2 Chapter 7: Software Engineering 7.1 The Software Engineering Discipline.
1 Introduction to Software Engineering Lecture 1.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
Prototyping By: Michael McBee & Shere Stewart. Prototyping What is Prototyping? It is an iterative process involving analysts and users where a model.
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Software Prototyping Rapid software development to validate requirements.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Click to add text Systems Analysis, Prototyping and Iteration.
Chapter 7 Software Engineering © 2007 Pearson Addison-Wesley. All rights reserved.
Chapter 7: Software Engineering
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Software Development Life Cycle (SDLC)
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
Software Design and Development Development Methodoligies Computing Science.
Software Development Overview
Chapter 7: Software Engineering
Software Project Configuration Management
Chapter 7: Software Engineering
Object oriented system development life cycle
Software life cycle models
Chapter 7 Software Engineering.
Software Development Overview
Presentation transcript:

Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Aim ◦ Introduce software engineering  Purpose ◦ To understand the processes that have been developed by computer scientist and the computing industry to ensure that software is developed to a high standard. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Software Engineering is the branch of computer science that seeks principles to guide development of large, complex, software systems.  Software engineering also involves personnel and project management since its essentially a collaborative, team effort extending over many months. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Currently progressing at two levels: ◦ Practitioners work toward developing techniques for immediate application ◦ Theoreticians investigate underlying principles and theories which can underpin new, more stable techniques.  Why is this important? ◦ Software Reliability CSC102 INTRODUCTION TO COMPUTER SCIENCE

 We are dependent on software systems ◦ Economy, health care, government, law enforcement, transportation and defense.  Yet, the reliability of these systems remains uncertain.  Failures have resulted in: ◦ Organizations going bankrupt ◦ Disruption in telephone communication over large areas and so on  Therefore, research in software development is needed. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 CASE – Computer Aided Software Engineering –is the application of computer technology to support the development of computer application and simplify/streamline development ◦ CASE tools include software applications for: ◦ Project planning (Cost, scheduling, resourcing) ◦ Project management (monitoring progress) ◦ Prototyping and simulation (development of prototypes) ◦ User interface design (Development of GUIs) ◦ Programming (Writing and Debugging programs) CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Application software goes through a development phase like most other products e.g. washing machines  It then enters a use/maintenance cycle in which: ◦ Problems with software (bugs) are fixed but also ◦ The functionality of the software may be extended due to customer requirements changing. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 The purpose of requirement analysis is to: ◦ Define the functions (services) that the software must provide ◦ Define any constraints on the software such as security requirements ◦ Determine how users, and perhaps other systems, will interact with the software  Recorded in the software requirements specification document  Key person: the software analyst CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Design is concerned with establishing the internal structure of software that satisfies the requirements  The components of the software, and their interaction with each other and the user, are specified to a level of detail sufficient for a programmer to implement the components.  Diagramming and modelling are important in developing the design  The result is the design specification, which is handed off to the programmers to implement.  Key person: the software analyst

CSC102 INTRODUCTION TO COMPUTER SCIENCE  Implementation involves writing programs developing databases that create the components of the system  Ensuring that the components interact with reach other according to the design  Development uses software development toolkit e.g. Microsoft visual studio  Key person: The programmer

 Traditionally, testing has been seen as a separate stage, referred to the program i.e. ◦ Testing if that each component is free from bugs ◦ Testing that the components interact with each other correctly ◦ Testing with the user to ensure that the software provides the functions required and that the user interface is “usable”  More recently, testing is seen as something that permeates every phase of software development CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Waterfall model – the development process flows in one direction, ◦ From requirement analysis ◦ To design ◦ To implementation ◦ To testing  Each stage is completed before the next stage is begun, with no going back to previous stages. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Incremental Model: The software system is constructed in increments  A first version of the final system is provided with the limited functionality and tested by the user  Subsequent versions extend this functionality to incorporate additional functions  Until the final, fully functional system has been produced CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Iterative Model – the software system is constructed iteratively  A first version of the final system is provided with all the required functionality  Subsequent versions are refinements of this system i.e. improvements on the existing functionality  In reality, the iterative model incorporates increments (extensions) and the incremental model incorporates iterations (refinements) CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Prototyping – incomplete versions of the final system are constructed and evaluated  Evolutionary prototyping – a functionality is added incrementally (associated incremental model)  Throwaway prototyping – the prototype is discarded in favour of a fresh implementation (associated with the iterative model)  Rapid prototyping – a simple version of the final system is created to demonstrate the final system to the user CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Open Source Development – a single author develops a piece of software and others extend/refine it e.g. linux operating system  The author posts the software (i.e. makes it freely available)- the source code and its documentation – on the internet  Can be downloaded and used by others who can also modify the software and report the modifications to the original author.  The original author can incorporate these changes in the subsequence releases CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Agile Development Methods – emphasizes implementation against requirements analysis and design  Proposes early and quick implementation, incremental development, informal requirements and design based on repeated daily cycles and with feedbacks from the users – closer user involvement right from the stsrat and throughout development  Emphasis development teams working in close proximity – same offices space, regular daily meetings  More flexible compared with waterfall model CSC102 INTRODUCTION TO COMPUTER SCIENCE

 It is a way of think about and developing systems  Break the system into bits (i.e. modules, components, parts) that served well defined functions  Ensure that there are well defined interfaces between the components i.e. well defined methods for connecting them together  Create the system by connecting the components together to create the system  Much of engineering is based on these principles. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Easier to manage the development process based on modular components than a single monolithic entity  Modules can be distributed between different programmers - each can work on their modules independently of other programmers, provide the interfaces are clearly defined – supports rapid development of systems  Modules can be re-used for other purposes  Maintenance is easier - modules can be refined or replaced independently of other modules. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 People are objects, they have properties, for example, names, addresses, age etc  People execute procedures, like go to work, eat breakfast etc  Leads to two world views: ◦ The world is made of objects, to which are associated procedures  In the first case, the modules are objects, in the second case the modules are procedures  Software can be constructed on the basis of either type of module – today, the object model is more popular CSC102 INTRODUCTION TO COMPUTER SCIENCE

 The are three important aspects of modularity: ◦ Coupling ◦ Cohesion ◦ Information Hiding  These are important for the design of any system CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Information hiding is related to coupling.  Goal: Ensure that information is local, rather than shared by other modules or accessible to other modules i.e. keep it local CSC102 INTRODUCTION TO COMPUTER SCIENCE Cohesion refers to the relation between the inner components of modules. Goal: Maximize the relatedness of the internal functions of a module i.e. maximize cohesion Coupling refers to the dependence between modules Goal: Minimize the dependence between modules i.e. minimize coupling

 In object oriented approaches, objects are modules (based on object world view)  And provide the basis for pre-fabricated components – a component can be single object or a small number of objects working together to provide some service  Software can then be built by the programmer by selecting and connecting together components from a standard library of components. CSC102 INTRODUCTION TO COMPUTER SCIENCE

 Quality Assurance – Comprise improvements of engineering procedures, training programmers, establishment of standards, and research on methodologies, to ensure the reliability of software  Software Testing – and important and large field of research concerned not just with finding and fixing bugs in software  The human-machine interface – creating usable software systems  Software Ownership and Liability – if software goes wrong, who is liable? CSC102 INTRODUCTION TO COMPUTER SCIENCE