Software Engineering Chapter 1 Software and Software Engineering

  • Slides: 63
Download presentation
Software Engineering Chapter 1: Software and Software Engineering Eng. Sultan M. Al-Rushdan 1

Software Engineering Chapter 1: Software and Software Engineering Eng. Sultan M. Al-Rushdan 1

What is Software? A set of instruction, programs that enable the computer to perform

What is Software? A set of instruction, programs that enable the computer to perform specific task. (software is a binary code instruction that control the Hardware) 2

What is Software? Software is detailed instructions that control the operation of a computer

What is Software? Software is detailed instructions that control the operation of a computer system, Its functions are to: 1. manage the computer resources of the organization. 2. provide tools for human beings to take advantage of these resources. 3. act as an intermediary between organization and stored information. 3

Evolving Role of Software • Software take a dual role: it is product and

Evolving Role of Software • Software take a dual role: it is product and a tool for developing a product. • As a product it delivers the computing potential in computer hardware or network of computer • As a tool software act as a basis for control of computer, communication and the creation and control of other program. 4

Evolving Role of Software • Software transforms data to a more useful form. •

Evolving Role of Software • Software transforms data to a more useful form. • Manage business information to enhance competitiveness. • A gateway to internet. • Provide a means for acquiring information in all its forms. • Software is the engine that drives business decision making 5

Evolving Role of Software • Basis of modern scientific investigations and engineering problem solving.

Evolving Role of Software • Basis of modern scientific investigations and engineering problem solving. • Differentiate modern product and services. • It is embedded in system of all kinds: transportation, medical, telecommunication, military, industrial processes, entertainment, office products, etc. 6

Program Vs. Software • Software consists of computer program with all associated documents and

Program Vs. Software • Software consists of computer program with all associated documents and configuration data to make program operate correctly. • Software system usually consists of number of separate programs, configuration files, system documentation. 7

Program Vs. Software Programs Documentation Operating Procedures Software=Program + Documentation + Operating Procedures 8

Program Vs. Software Programs Documentation Operating Procedures Software=Program + Documentation + Operating Procedures 8

Program Vs. Software Consist of following: 1. Source Code 2. User manuals 3. Installation

Program Vs. Software Consist of following: 1. Source Code 2. User manuals 3. Installation manuals 4. Executable 5. Requirement analysis and design documents 9

Software Components Software is information that exist in two basic forms. 1. Non machine-executable

Software Components Software is information that exist in two basic forms. 1. Non machine-executable components. 2. Machine-executable components. Software components are created through the a series of translation that map customer requirements to executable code. 10

Levels of Software A. Hardware Logic 1. machine Micro Lo B. System Software 2.

Levels of Software A. Hardware Logic 1. machine Micro Lo B. System Software 2. 3. 4. 5. C. Application Software 6. Inquiry, File, Database software 7. Programming and Assembly Languages and Programs D. End User Software 8. 4 GL Languages and user Programs (SPSSM, gbase, SQL, etc) Supervisor or Executive Operating System Language Translator Utility Programs 11

Characteristics of Software 1. Software developed or engineered it is not manufactured. – Raw

Characteristics of Software 1. Software developed or engineered it is not manufactured. – Raw material does not exist. – Human element is extremely important – Development Productivity is highly uncertain(depending on skills) – Development tools, techniques, standard and procedure vary widely across and within organization. – Quality problems are elusive. 12

Characteristics of Software 2. Software development present a job-shop environment. – Each product is

Characteristics of Software 2. Software development present a job-shop environment. – Each product is custom build and hence unique. – It cannot be assembled from existing component. – All problems of job-shop(problems in design, estimating and scheduling) are present her. – Human skills are the most important element in software development. 13

Characteristics of Software 3. Time and effort for software development are hard to estimate

Characteristics of Software 3. Time and effort for software development are hard to estimate – Interesting work gets done at expense of dull work(i. e documentation gets the last priority) – Programmers tend to be optimistic, not realistic and their time estimation reflect their tendency – Programmers have trouble communicating. 14

Characteristics of Software 4. Software does not wear out. Hardware product reliability follows a

Characteristics of Software 4. Software does not wear out. Hardware product reliability follows a “bath tub curve” 15

Characteristics of Software becomes obsolete due to new operating environment, new user requirements, etc.

Characteristics of Software becomes obsolete due to new operating environment, new user requirements, etc. software can only retire not wear out. 16

Characteristics of Software – Software normally does not lose its functionality with use. –

Characteristics of Software – Software normally does not lose its functionality with use. – Software may lose its functionality with time as user requirements changes. – When defect encountered they are removed by rewriting the relevant code, not by replacing it. – When defects are removed, new defects may appear. 17

Characteristics of Software 18

Characteristics of Software 18

Characteristics of Software 5. Testing Software is extremely difficult. 6. There are no objective

Characteristics of Software 5. Testing Software is extremely difficult. 6. There are no objective standard or measurement to evaluate the progress of software development. 7. User requirements usually not conceived enough. 8. Hardware has a physical model to use in evaluation, but software evaluation depend on judgment and intuition. 9. No boundary on complexity of software. 10. There a major differences between management of hardware project and software project. 19

Types of Software • There are many different types of software. Software can be

Types of Software • There are many different types of software. Software can be categorized to: – Custom Software – Generic Software – Embedded Software 20

Types of Software • Custom Software: Software that is developed to meet specific need

Types of Software • Custom Software: Software that is developed to meet specific need of a particular customer and tends to be little use to others. For example websites, air traffic control, software to manage specialize organization need 21

Types of Software • Generic Software: Software that is designed to be sold in

Types of Software • Generic Software: Software that is designed to be sold in open market, perform function that many people need, and run on a general purpose computers. Example( word processor, spreadsheets, compiler web browsers, operating systems, etc 22

Types of Software • Embedded Software: Software that is run on specific hardware devices.

Types of Software • Embedded Software: Software that is run on specific hardware devices. These devices are intended to be sold on open market. Examples: DVD players, Washing machine, Microwave oven, etc. 23

Types of Software Other categorization of software 1. System Software. 2. Real-time Software. 3.

Types of Software Other categorization of software 1. System Software. 2. Real-time Software. 3. Business Software. 4. Engineering and Scientific Software. 5. Embedded Software. 6. Personal Computer Software. 7. Web-based Software. 8. Artificial Intelligence Software 24

Software Myths 1. Software is easy to change. 2. Computer provide greater reliability than

Software Myths 1. Software is easy to change. 2. Computer provide greater reliability than the devices they replace. 3. Testing software can remove all Errors. 4. Reuse software increase safty. 5. Software can work right at first time. 25

Software Myths 6. Software can be designed thoroughly enough to avoid most integration Problems.

Software Myths 6. Software can be designed thoroughly enough to avoid most integration Problems. 7. Software with more features is better software. 8. Addition of more software engineers will makeup the delay. 9. Aim to develop working programs. 26

Software Crisis are a problems associated with software development categorized as crisis. Crisis means

Software Crisis are a problems associated with software development categorized as crisis. Crisis means turning point in the course of software development. Software crisis refer to period of time (1960 -1980) where a number of large software project failed because developer tries to scale up existing development techniques. 27

Software Crisis The reasons for software crisis. 1. Development team exceeding the budget. 2.

Software Crisis The reasons for software crisis. 1. Development team exceeding the budget. 2. Late delivery of software. 3. Poor quality. 4. User requirements not completely supported by software. 28

Software Crisis The reasons for software crisis. 5. Difficult maintenance. 6. Unreliable software. 7.

Software Crisis The reasons for software crisis. 5. Difficult maintenance. 6. Unreliable software. 7. Cannot be transferred to another machine easily. 8. Not always easy to use. 29

Software Crisis So developers and researchers realized that development of software is not easy

Software Crisis So developers and researchers realized that development of software is not easy and straightforward process. Instead it requires engineering principles Software crisis is the inability to develop software on time, on budget and with requirements 30

What is Software Engineering? Software engineering is an engineering discipline that concern with all

What is Software Engineering? Software engineering is an engineering discipline that concern with all aspect of software production from early stages of system specification to maintenance of system after it has gone to use. 31

What is Software Engineering? Two key feature of definition. 1. Engineering discipline: applying theories,

What is Software Engineering? Two key feature of definition. 1. Engineering discipline: applying theories, methods and tools to discover solutions within organizational and financial constraints. 2. All aspect of software production: concern not only with technical aspect of software but also with project management, development tools, methods and theories to support software production. 32

What is Software Engineering? Software engineering is a layered technology. 33

What is Software Engineering? Software engineering is a layered technology. 33

What is Software Engineering? Quality: Software engineering must rest on organizational commitment to quality

What is Software Engineering? Quality: Software engineering must rest on organizational commitment to quality which will lead to increasingly more mature approach. Process: is the key factor that hold technology together a enable rational development of computer software. Like management control, establish context for applying technical methods, production of work products(models, documents, data, reports, forms, etc), establish milestones, ensuring qualiy and probably management of change. 34

What is Software Engineering? Methods: provides technical info for building software which include requirement

What is Software Engineering? Methods: provides technical info for building software which include requirement analysis, design, program construction, testing and support. Tools: are automated and semi-automated for process and method, CASE(Computer Added Software Engineering) is a system to support software development, which contain database of analysis, design, construction and testing information) 35

Definitions of Software Engineering • It is the establishment and use of sound engineering

Definitions of Software Engineering • It is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and working efficiently on real machine. • The application of scientific principles to: – Systematic transformation of problem into working software solution. – The subsequent maintenance of that software after delivery until the end of its life 36

Conventional Engineering Vs. Software Engineering • Similarities: the steps of engineering design process that

Conventional Engineering Vs. Software Engineering • Similarities: the steps of engineering design process that are used in software engineering 1. Problem Formulation. 2. Problem Analysis. 3. Search foe Alternatives. 4. Decision. 5. Specifications. 6. Implementation. 37

Conventional Engineering Vs. Software Engineering • Differences: – In traditional engineering one moves from

Conventional Engineering Vs. Software Engineering • Differences: – In traditional engineering one moves from abstract design to concrete product, in software engineering one moves form abstract design to abstract code. – The problem domain of software engineering can almost be any thing. – Traditional engineering emphasizes mass production, software engineering emphasizes quality. – Product standardization helps reduce cost in traditional engineering, in software engineering this process is remote. 38

Computer Science Vs. Software Engineering • Computer Science is concerned with theories and methods

Computer Science Vs. Software Engineering • Computer Science is concerned with theories and methods that underlie software and computer system • Software engineering concern with practical problem of software production Knowledge of computer science is essential for software engineering 39

System Engineering Vs. Software Engineering • System Engineering concern with all aspect of development

System Engineering Vs. Software Engineering • System Engineering concern with all aspect of development and evolution of complex system which include hardware development, policy and process design, system deployment, and software engineering. 40

Generic View of Software Engineering • The work associated with Software Engineering can be

Generic View of Software Engineering • The work associated with Software Engineering can be categorized in to three phases regardless of application area, project size or complexity. – Definition phase. – Development phase. – Support phase. 41

Generic View of Software Engineering • Definition phase: focus on what where software engineer

Generic View of Software Engineering • Definition phase: focus on what where software engineer focus on – What information to process. – What function and performance are desired. – What system behavior can be expected. – What interfaces to be established. – What design constraints exist. – What validation criteria are required. 42

Generic View of Software Engineering • In difinition phase the key requirements of system

Generic View of Software Engineering • In difinition phase the key requirements of system and software identified, three major tasks will occur: – System or information engineering. – Software project planing. – Requirements analysis. 43

Generic View of Software Engineering • Development phase: focus on how – How data

Generic View of Software Engineering • Development phase: focus on how – How data are to be structured. – How functions are to be implemented. – how procedural details are to be implemented. – How interfaces are to be characterized. – How the design to be translated to programs. – How testing to be performed. 44

Generic View of Software Engineering • In Development phase three specific technical task should

Generic View of Software Engineering • In Development phase three specific technical task should always occur: – Software design. – Code generation. – Software testing. 45

Generic View of Software Engineering • Support Phase: focus on change associated with: –

Generic View of Software Engineering • Support Phase: focus on change associated with: – Error Correction. – Adaptation required as software environment evolved. – Due enhancement. 46

Generic View of Software Engineering • In Support Phase four types of changed are

Generic View of Software Engineering • In Support Phase four types of changed are encountered: – Correction of undiscovered defect. – Adaptation for new environment. – Enhancement for new features required by customer. – Prevention by making change to computer program to be more easily corrected, adapted and enhanced. 47

Cost of Software Engineering • Software development costs are difficult to estimate because distribution

Cost of Software Engineering • Software development costs are difficult to estimate because distribution of cost on activities depends on process used and software to develop. For example real time applications require more extensive validation than web based system. 48

Cost of Software Engineering 49

Cost of Software Engineering 49

Software Process • Software Process: is the set of activities and associated results that

Software Process • Software Process: is the set of activities and associated results that produce a software product. There are four process activities: – Software specification where customer and engineer define the software to be produced and its constraints. – Software development where the software is designed And produced. – Software validation where the software is tested to ensure it meets customer requirements. – Software evaluation where software is modified to adapt to change in customer and market requirements. 50

Software Process • Software Process can be categorized to: – Common process framework which

Software Process • Software Process can be categorized to: – Common process framework which are a small number of framework activities that are applicable to all software projects – Software Engineering Umbrella Activities which are used for quality assurance, configuration management and measurements. 51

Software Process • Common process framework – Communication(customer collaboration and requirement gathering) – Planning(establishes

Software Process • Common process framework – Communication(customer collaboration and requirement gathering) – Planning(establishes engineering work plan, describes technical risks, list resources requirements and define work schedule) – Modeling(creation of model to help developers and customers understand the requirements and software design) – Construction(code generation and testing) – Deployment(software delivered for customer feedback and evaluation) 52

Software Process • Software Engineering Umbrella Activities: – Software project tracking and control(allows team

Software Process • Software Engineering Umbrella Activities: – Software project tracking and control(allows team to assess progress and take corrective action) – Risk management(assess risks that may affect project outcome and quality) – Software Quality Assurance(activities required to maintain software quality) – Formal Technical Reviews(assess engineering work product to uncover and remove errors before they propagate to next activities. – Measurement(define and collect process, project and product measures) – Software Configuration management(manage effect of change) – Reusability management(define criteria for work product reuse and establish a mechanism to achieve components reuse) – Work product preparation and production(activities to create models, documents, logs, forms, lists, etc. ) 53

Software Process • Software Process characteristics 1. Understandability 2. Visibility 3. Robustness 4. Reliability

Software Process • Software Process characteristics 1. Understandability 2. Visibility 3. Robustness 4. Reliability 5. Acceptability 6. Maintainability 7. Rapidity 8. supportability 54

Software Process Model Is a simplified description of software process that is presented from

Software Process Model Is a simplified description of software process that is presented from a particular perspective. Some Examples are: – A workflow Model: which show the sequence of activities in the process along with their inputs, outputs and dependencies, the activities represent human actions – A dataflow or activity model: which represent the process as a set of activities each carries some data transformation. – A role/action model: this represent peoples involve in software process and activities for which they are responsible. 55

Software Process Model Most software process model are based on one of three general

Software Process Model Most software process model are based on one of three general models: 1. The waterfall approach: represent activities as separate phases. 2. Iterative development: interleave the activities. 3. Component-based software engineering: assume part of the system exist, it focus on integration these parts. 56

Ethics in Software Engineering The following highlights of the IEEE/ACM code of ethics. 1.

Ethics in Software Engineering The following highlights of the IEEE/ACM code of ethics. 1. act consistently with the public interest. 2. act in a manner that is in the best interests of their client and employer, consistent with the public interest. 3. Develop and maintain their products and related modifications meet the highest professional standards possible. 4. maintain integrity and independence in their professional judgment. 57

Ethics in Software Engineering The following highlights of the IEEE/ACM code of ethics. 5.

Ethics in Software Engineering The following highlights of the IEEE/ACM code of ethics. 5. promote an ethical approach to the management of software development and maintenance. 6. advance the integrity and reputation of the profession consistent with the public interest. 7. be fair to and supportive of their colleagues. 8. participate in lifelong learning. 58

Current Trends in Software Engineering is a developing field, the directions in which software

Current Trends in Software Engineering is a developing field, the directions in which software engineering is developing include: 1. Aspects: help software engineers deal with quality attributes by providing tools to add and remove boilerplate code from many areas in source code. Aspects describe how all objects or functions should behave in particular circumstances. For example, aspects can add debugging, logging, or locking control into all objects of particular types. 2. Agile: Agile software development guides software development projects that evolve rapidly with changing expectations and competitive markets. 59

Current Trends in Software Engineering 3. Experimental: Experimental software engineering is a branch of

Current Trends in Software Engineering 3. Experimental: Experimental software engineering is a branch of software engineering interested in devising experiments on software, in collecting data from the experiments, and in devising laws and theories from this data. 4. Model-driven: develops textual and graphical models as primary design arifacts. 5. Software product lines: Software product lines, aka product family engineering, is a systematic way to produce families of software systems, instead of creating a succession of completely individual products. This method emphasizes extensive, systematic, formal code reuse, to try to industrialize the software development process. 60

Software Quality • The concept of quality changes with respect to person perspective. –

Software Quality • The concept of quality changes with respect to person perspective. – Customer: solve problems at acceptable cost in terms of money paid and resources used. – User: easy to learn, efficient to use and help get the work done. – Developer: easy to design, easy to maintain, easy to reuse its parts. – Development manager: sells more and pleases customers while costing less to develop and maintain. 61

Software Quality Attributes of software quality: 1. Usability: includes easy to use and learn

Software Quality Attributes of software quality: 1. Usability: includes easy to use and learn by novices, efficiency of use by experts and handling errors. 2. Efficiency: it uses less CPU time, memory, desk space, network bandwidth and other resources 3. Reliability: has fewer failures 4. Maintainability: easy to change the software 5. Reusability: high reusability can reduce long term cost 62

Chapter 1: END OF CHAPTER 63

Chapter 1: END OF CHAPTER 63