View
214
Download
1
Tags:
Embed Size (px)
Citation preview
Software Engineering
For Beginners
General Information• Lecturer, Patricia O’Byrne, office K115A.
– email [email protected]– Or– [email protected]
• Times:– See noticeboard outside School of Computing office.
• Notes: on WEBCT• See also
www.comp.dit.ie/dt228/2/software%engineering
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 CycleIterative process
Client Requirements
Specification of Requirements
Technical Specification
Working System
Operational ‘Live’ System
Analysis
Design
Code
InstallTest
Test Validate
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 e-mail from within an application.
– Handling messaging without holding up other applications.
• BIG applications!