Software Engineering For Beginners
General Information Lecturer, Patricia O’Byrne, office K115A. – –Or Times: –See noticeboard outside School of Computing office. Notes: on WEBCT See also ering ering
Reasons for Discipline How easy is it to: –Write a ‘Hello World’ program? –Write a 2-D sort program? –Write a game of ‘PONG’? –Write a game of ‘Space Invaders’? –Adapt the current ‘School of Computing’ home page? –Write a full suite of web pages to sell second-hand goods? –Write a full suite of applications to run a bank? Scale requires discipline
Experience so far Stored program concept. File I/O. User I/O. Mainly single program systems. Scale has not been a problem.
Stored Program Concept Data area Procedural area Input Output input Output Data Instructions Program
Software System A Software System is an interrelated set of elements that are viewed as a whole and designed to achieve a purpose. It comprises:- –software –hardware –documentation –method of operation –users and operators e.g.hotel reservations system, general ledger system, POS system, game engine, media players
Software Quality Characteristics Software correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Interoperability Reusability Functionality
Software Engineering Software engineering is the establishment and use of sound engineering principles in order to obtain economically quality software
Three Key Elements Methods –Technical ‘how to’s for building software Project management, requirement analysis, design of data structures and algorithm procedure, coding, testing and maintenance
Three Key Elements Tools –Provide support Procedures –Sequence in which methods are applied –Documents / deliverables produced –Controls and checks ensure quality –Milestones, to manage progress
Process Models and Methodologies Software engineering process is a set of steps that encompasses methods, tool and procedures Classic life cycle or waterfall model –A software engineering process –A systematic and sequential approach to software development –Oldest and most widely used software process model
Life Cycle Divides the development of a software system into stages or phases, –For each phase the life cycle specifies Activities involved in each phase Sequence in which the activities are ordered Deliverables produced for the phase At the end of each phase a phase review meeting is scheduled –To examine the deliverables from the phase –To decide whether or not to proceed to the next phase
Life Cycle Phases Planning Feasibility study Analysis Design Code and unit test
Planning and Feasibility Planning –Problem definition defines the problem area produces written statement of current problem and objectives of system Feasibility Study –investigates whether a practical solution to the problem exists –produces a feasibility study report
Analysis and Design Analysis (What do we do?) –Fact finding investigate business process and the current system –modelling the current and required systems –deliverables - requirements specification logical models of the required system Design (How do we do it?) high level system design detailed design of components (i.e.. algorithms)
Code and Unit Test Code –programming each component of the system –Unit test - independent testing of each component –producing user documentation System Test –integrating all components and testing them together –testing to ensure that the system meets its requirements
Implementation and Maintenance Implementation –Installing the system in the ‘live’ environment –Training the users Maintenance –Changing the live system Correcting defects reported by the users Implementing enhancements requested by the users –Mini life cycle in itself
Life Cycle Support Activities Phases in the Life Cycle are complimented by a number of support activities –Project Management –Quality Assurance –Configuration Management
Project Management Co-ordination and control of the people involved in the development Includes Budgeting Scheduling Monitoring progress Reporting status Corrective action
Quality Assurance Ensuring, verifying and maintaining the quality of the system to be delivered Includes –Performing reviews –Testing
Configuration Management Management of the documentation and code that is produced Include procedure for –Storage –Retrieval –Control of change
Simplified System Life Cycle Iterative process Client Requirements Specification of Requirements Technical Specification Working System Operational ‘Live’ System Analysis Design Code Install Test Validate Measure Meets
Advantages Advantages of a defined, agreed and documented approach –Consistent approach to software development is achieved –Improved communication between developers –Better control of progress by using each phase as a milestone or checkpoint
What sort of systems can we write? Anything you’ve already written Synchronous applications –Games, media players, event-driven graphic user interfaces Non-synchronous applications –Send an from within an application. –Handling messaging without holding up other applications. BIG applications!