260 likes | 478 Views
Introduction to Software Engineering. Why SE?. Software crisis manifested itself in several ways [1]: Project running over-time. Project running over-budget. Software was very inefficient. Software was low quality. Software often did not meet requirements.
E N D
Why SE? • Software crisis manifested itself in several ways [1]: • Project running over-time. • Project running over-budget. • Software was very inefficient. • Software was low quality. • Software often did not meet requirements. • Projects were unmanageable and code difficult to maintain. • Software was never delivered.
What is software? • Software is not just the programs but also associated documentation and configuration data [2]. • Software products may be developed for a particular customer or may be developed for a general market [2].
Types of Software Products • Generic products are produced by a development organisation and sold on the open market to any customer who is able to buy them. • Bespoke (or customised) products are developed specially for customers by a software contractor.
What is Software Engineering? • SE is an engineering discipline which is concerned with all aspects of software production from the early stages of system specification through to maintaining the system. • SE adopt a systematic and organised approach to their work as this is often the most effective way to produce high-quality software.
Key Phrases to Definition • ‘Engineering discipline’ Engineers apply theories, methods and tools to discover solutions even there are no applicable theories and methods. • ‘All aspects of software production’ are the activities such as: software project management and with the development of tools, methods and theories to support software production.
Software Quality • Software quality can be categorized in two groups: • Factors that can be directly measured e.g., errors/KLOC/unit-time • Factors that can be measured only indirectly e.g., usability or maintainability…
P R O D U C T R E V I S I O N P R O D U C T R E V I S I O N P R O D U C T T R A N S I T I O N P R O D U C T T R A N S I T I O N P R O D U C T O P E R A T I O N P R O D U C T O P E R A T I O N Software QualityAttributes • Portability (Will I be able to use it on another machine?) • Reusability (Will I be able reuse some of the software?) • Interoperability (Will I be able to interface it with another system?) -Maintainability (Can I fix it?) -Flexibility (Can I change it?) -Testability (Can I test it?) -Correctness (Does it do what I want?) -Reliability (Does it do it accurately all of the time?) -Efficiency (Will it run on my hardware as well as it can?) -Integrity (Is it secure?) -Usability (Is it designed for the user?)
What is the difference between Software Engineering and Computer Science? • Computer science is concerned with theory and fundamentals; • Software engineering is concerned with the practicalities of developing and delivering useful software. • Software engineers must often use ad hoc approaches to develop the software. • Elegant theories of computer science cannot always be applied to real, complex problems.
What is the difference between Software Engineering and System Engineering? • System Engineering is concerned with all aspects of computer-based systems development, including hardware, software and process engineering.
What is Software Process? • Software Process is a set of activities whose goal is the development or evolution of software.
Software Process Activities • Software Specification. The functionality of the software and constraints on its operation must be defined. • Software Development. The software to meet the specification must be produced. • Software Validation. The software must be validated to ensure that it does what the customer wants. • Software Evaluation. The software must evolve to meet changing customer needs.
What is CASE? • Computer-Aided Software Engineering • CASE are software systems which are intended to provide automated support for software process activities.
What is a Software Process Model? • A Software Process Model is a simplified description of a software process which is presented from a particular perspective.
Types of Software Process Model • A Workflow model This shows the sequence of activities in the process along with their inputs, outputs and dependencies. • A data-flow or activity model The process as a set of activities each of which carries out some data transformation. • A role/action model The roles of the people involved in the software process and the activities for which they are responsible.
Software Application • Application software is computer software designed to help the user to perform singular or multiple related specific tasks. • Examples include: • System software is a collection of programs written to service programs. E.g., compiler, editors, operating system components, drivers,…
Software Application • Real-time software. Software that monitors/analyzes/controls real world events as they occur is call real time. • Business software. Business information processing is the largest single software application area. • Engineering and Scientific Software. Software has been characterized by “number crunching” algorithms. E.g., Computer-Aided Design, system simulation and so on.
Software Application • Embedded Software. Intelligent products have become commonplace in nearly every consumer and industrial market. • Personal Computer Software. E.g., word processing, computer graphics, multimedia, and so on. • Web-based software. The web pages retrieved by a browser are software that incorporates executable instructions, e.g., HTML, Perl or Javeand so on.
Software Application • Artificial Intelligence Software. Software makes use of nonnumericalalgorithms to solve complex problems that are not amenable to computation or straightforward analysis. E.g., knowledge-based systems, pattern recognition (image and voice), artificial neural networks, and game playing are representative of applications.
Key Points • Software Engineering is an engineering discipline which is concerned with all aspects of software production. • Software products consist of developed programs and associated documentation. • The software process consists of activities which are involved in developing software products. Basic activities are software specification, development, validation and evolution.
Literatures • en.wikipedia.org • Ian Sommerville“Software Engineering 6th Edition” – 2000.