Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 1: Software and Software Engineering

Similar presentations


Presentation on theme: "Chapter 1: Software and Software Engineering"— Presentation transcript:

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

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

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

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

5 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

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

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

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

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

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

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

12 Characteristics of Software
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.

13 Characteristics of Software
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.

14 Characteristics of Software
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.

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

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

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

18 Characteristics of Software

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

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

21 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

22 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

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

24 Types of Software Other categorization of software System Software.
Real-time Software. Business Software. Engineering and Scientific Software. Embedded Software. Personal Computer Software. Web-based Software. Artificial Intelligence Software

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

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

27 Software Crisis 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 ( ) where a number of large software project failed because developer tries to scale up existing development techniques.

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

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

30 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

31 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.

32 What is Software Engineering?
Two key feature of definition. Engineering discipline: applying theories, methods and tools to discover solutions within organizational and financial constraints. 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.

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

34 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.

35 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)

36 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

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

38 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.

39 Computer Science Vs. Software Engineering
Computer Science is concerned with the 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

40 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.

41 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.

42 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.

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

44 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.

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

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

47 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.

48 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.

49 Cost of Software Engineering

50 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.

51 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.

52 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)

53 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.)

54 Software Process Software Process characteristics Understandability
Visibility Robustness Reliability Acceptability Maintainability Rapidity supportability

55 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.

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

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

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

59 Current Trends in Software Engineering
Software Engineering is a developing field, the directions in which software engineering is developing include: 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. Agile: Agile software development guides software development projects that evolve rapidly with changing expectations and competitive markets.

60 Current Trends in Software Engineering
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. Model-driven: develops textual and graphical models as primary design arifacts. 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.

61 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.

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

63 Chapter 1: END of chapter


Download ppt "Chapter 1: Software and Software Engineering"

Similar presentations


Ads by Google