Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE."— Presentation transcript:

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

2  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

3  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

4  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

5  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

6  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

7  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

8

9  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

10  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

11 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

12  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

13  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

14  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

15  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

16  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

17  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

18  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

19  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

20  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

21  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

22  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

23  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

24  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

25  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


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

Similar presentations


Ads by Google