Chapter 1 An Introduction to Software Engineering Hu Zhiwen, Ph.D, IEEE member Contact me: [email protected] Software Engineering (8th edition) (International Computer Science Series) by Ian Sommerville

Objectives To understand the notion of software engineering and why it is important To appreciate the technical (engineering), managerial, and psychological aspects of software engineering To understand the similarities and differences between software engineering and other engineering disciplines To know the major phases in a software development project To appreciate ethical dimensions in software engineering To be aware of the time frame and extent to which new developments impact software engineering practice Hu Zhiwen, 2006-10-28

2

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering Professional and ethical responsibility Looking ahead to the Future Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

3

Textbook

Hu Zhiwen, 2006-10-28

4

References Shari Lawrence Pfleeger, Software Engineering: Theory and Practice, Prentice Hall, 2nd edition, February 2001 Pressman, R.S. Software Engineering: A Practicioner's approach. 6th Edition. McGraw Hill. 2005. Van Vliet, H. Software Engineering: Principles and Practice. John Wiley. 2nd Edition. 2000. Frederick P. Brooks Jr., The Mythical Man-Month, AddisonWesley, 2nd edition, August 1995. Ghezzi, C., Jazayeri, M., Mandrioli, D. Fundamentals of Software Engineering. Prentice Hall, 2th Edition, 2003. Steinberg, D.H., Palmer, D.W. Extreme Software Engineering: A Hands-On Approach. Prentice Hall. 2004. Jalote, P. An Integrated approach to Software engineering. Springer Verlag. 1997. Hu Zhiwen, 2006-10-28

5

References

Hu Zhiwen, 2006-10-28

6

References

Hu Zhiwen, 2006-10-28

7

References

Hu Zhiwen, 2006-10-28

8

References

Hu Zhiwen, 2006-10-28

9

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering Professional and ethical responsibility Looking ahead to the Future Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

10

Hints Netsourcing Outsourcing applications that run on the Web. Since the browser provides universal access to Web content and applications, an application can run on a third-party Web server as easily as it can on an internal Web server (intranet). See outsourcing.

Outsourcing (外包) Contracting with outside consultants, software houses or service bureaus to perform systems analysis, programming and datacenter operations. Contrast with insourcing. Contracting with organizations outside your country for work that could otherwise be done by employees within your company. Contrast with insourcing. Hu Zhiwen, 2006-10-28

11

Hints (Cont’d) Insourcing Doing work with inhouse employees. Contrast with outsourcing. Creating jobs in your country by an organization that is foreign owned. Contrast with outsourcing.

Offshore Outsourcing The outsourcing of any operation, be it information technology, a business process, or manufacturing to a firm whose principal base of operation is outside the country. Terms such as near-shore outsourcing or close-shore outsourcing are also used to indicate that while still outside the country, there is a closer proximity between the customer organization’s primary operations and that of the provider. For example, for a U.S. company Canada might be considered near-shore while India is offshore. Hu Zhiwen, 2006-10-28

12

Hints (Cont’d) Open source Refers to software that is created by a development community rather than a single vendor. Typically programmed by volunteers from many organizations, the source code of open source software is free and available to anyone who would like to use it or modify it for their own purposes. This allows an organization to add a feature itself rather than hope that the vendor of a proprietary product will implement its suggestion in a subsequent release.

Hu Zhiwen, 2006-10-28

13

Hints (Cont’d) Pervasive Computing (普适计算) Pervasive computing is the trend towards increasingly ubiquitous (another name for the movement is ubiquitous computing), connected computing devices in the environment, a trend being brought about by a convergence of advanced electronic - and particularly, wireless technologies and the Internet. Pervasive computing devices are not personal computers as we tend to think of them, but very tiny - even invisible - devices, either mobile or embedded in almost any type of object imaginable, including cars, tools, appliances, clothing and various consumer goods - all communicating through increasingly interconnected networks. According to Dan Russell, director of the User Sciences and Experience Group at IBM's Almaden Research Center, by 2010 computing will have become so naturalized within the environment that people will not even realize that they are using computers. Russell and other researchers expect that in the future smart devices all around us will maintain current information about their locations, the contexts in which they are being used, and relevant data about the users.

Hu Zhiwen, 2006-10-28

14

Hints (Cont’d) Legacy Applications Software Also called Legacy Systems, Legacy Software, and Legacy Applications. In information technology, legacy applications and data are those that have been inherited from languages, platforms, and techniques earlier than current technology. Most enterprises who use computers have legacy applications and databases that serve critical business needs. Typically, the challenge is to keep the legacy application running while converting it to newer, more efficient code that makes use of new technology and programmer skills. In the past, much programming has been written for specific manufacturers' operating systems. Currently, many companies are migrating their legacy applications to new programming languages and operating systems that follow open or standard programming interfaces. Theoretically, this will make it easier in the future to update applications without having to rewrite them entirely and will allow a company to use its applications on any manufacturer's operating system. Hu Zhiwen, 2006-10-28

15

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering Professional and ethical responsibility Looking ahead to the Future Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

16

Computers Types of Computers Personal Computer - a computer operated by one person at a time. AKA “Client” computers. Server – a computer whose resources and processors are shared by multiple users

Computer Components Hardware Physical components of a computer Examples: Mouse, keyboard, RAM, hard drives, processor, monitor

Software Instructions that get the computer to do something Operating Systems & Applications Examples: Windows 2000, Microsoft Excel, WordPerfect, Netscape, Internet Explorer Hu Zhiwen, 2006-10-28

17

Computer use is Pervasive

A modern reconstruction of the difference engine.

Hu Zhiwen, 2006-10-28

18

Computer use is Pervasive

Hu Zhiwen, 2006-10-28

19

The Computer as a Tool Much like the microscope does not define biology or the test tube does not define chemistry, the computer doesn't define Computer Science. The computer is a tool by which Computer Scientists accomplish their goals ––– to solve problems.

Hu Zhiwen, 2006-10-28

20

What is Computer Science? Computer Science NOT about coding or hardware or software! Computer Science is about PROBLEM SOLVING Computer Science is about DEVELOPING ALGORITHMS to solve complex problems Computers are merely tools for solving problems! The first computer programmer. Hu Zhiwen, 2006-10-28

21

Problem Solving Problem Solving Definition: An instructional approach that involves the use of the scientific method and advanced inquiry in solving carefully selected and designed problems. Students play an active role in determining and seeking the critical information needed to solve the problem. Problems often have multiple solutions and relate to the real world.

Algorithm Solutions

Hu Zhiwen, 2006-10-28

22

Software engineering The economies of ALL developed nations are dependent on software. More and more systems are software controlled Software engineering is concerned with theories, methods and tools for professional software development. Expenditure on software represents a significant fraction of GNP in all developed countries.

Hu Zhiwen, 2006-10-28

23

Software costs Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost. Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. Software engineering is concerned with costeffective software development.

Hu Zhiwen, 2006-10-28

24

Software costs

Relative distribution of hardware/software costs. (Source: B.W. Boehm, Software Engineering, IEEE Transactions on Computers, 1976 IEEE.)

Hu Zhiwen, 2006-10-28

25

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering What is software? What is software engineering? What is the difference between software engineering and computer science? What is the difference between software engineering and system engineering? What is a software process? What is a software process model? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering)? What are the attributes of good software? What are the key challenges facing software engineering?

Professional and ethical responsibility Looking ahead to the Future Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

26

What is software? Computer programs and associated documentation such as requirements, design models and user manuals. Software products may be developed for a particular customer or may be developed for a general market. Software products may be Generic - developed to be sold to a range of different customers e.g. PC software such as Excel or Word. Bespoke (custom) - developed for a single customer according to their specification.

New software can be created by developing new programs, configuring generic software systems or reusing existing software. Hu Zhiwen, 2006-10-28

27

Software’s Dual Role Software is a product Transforms information - produces, manages, acquires, modifies, displays, or transmits information Delivers computing potential of hardware and networks

Software is a vehicle for delivering a product Controls other programs (operating system) Effects communications (networking software) Helps build other software (software tools & environments Hu Zhiwen, 2006-10-28

28

Software Applications Software Application Types system software application software engineering/scientific software embedded software product-line software web applications AI software …

Hu Zhiwen, 2006-10-28

29

Hardware vs. Software Hardware Manufactured Wears out Built using components Relatively simple

Software Developed/engineered Deteriorates Custom built Complex

Hu Zhiwen, 2006-10-28

30

Manufacturing vs. Development Once a hardware product has been manufactured, it is difficult or impossible to modify. In contrast, software products are routinely modified and upgraded. In hardware, hiring more people allows you to accomplish more work, but the same does not necessarily hold true in software engineering. Unlike hardware, software costs are concentrated in design rather than production.

Hu Zhiwen, 2006-10-28

31

Wear vs. Deterioration Hardware wears out over time

Hu Zhiwen, 2006-10-28

32

Wear vs. Deterioration Software deteriorates over time

Hu Zhiwen, 2006-10-28

33

What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production. Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.

Hu Zhiwen, 2006-10-28

34

What’s the difference between SE and CS? Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. Computer science theories are still insufficient to act as a complete underpinning for software engineering (unlike e.g. physics and electrical engineering).

Hu Zhiwen, 2006-10-28

35

What’s the difference between SE and system engineering?

System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system. System engineers are involved in system specification, architectural design, integration and deployment.

Hu Zhiwen, 2006-10-28

36

What is a software process? A set of activities whose goal is the development or evolution of software. Generic activities in all software processes are: Specification - what the system should do and its development constraints Development - production of the software system Validation - checking that the software is what the customer wants Evolution - changing the software in response to changing demands.

Hu Zhiwen, 2006-10-28

37

What is a software process model? A simplified representation of a software process, presented from a specific perspective. Examples of process perspectives are Workflow perspective - sequence of activities; Data-flow perspective - information flow; Role/action perspective - who does what.

Generic process models Waterfall; Iterative development; Component-based software engineering.

Hu Zhiwen, 2006-10-28

38

What are the costs of SE? Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability. Distribution of costs depends on the development model that is used.

Hu Zhiwen, 2006-10-28

39

Activity cost distribution Waterfall model 0

25

Specification

Design

50 Development

75

100

Integration & testing

Iterative development 0 Specification

25

50

75

Iterative development

100

System testing

Component-based software engineering 0 Specification

25

50

Development

75

100

Integration & testing

Development & evolution costs for long-lifetime systems 0

10

System development

200

300

400

System evolution

Hu Zhiwen, 2006-10-28

40

Product development costs

0

Specification

25

Development

50

75

100

System testing

Hu Zhiwen, 2006-10-28

41

Component Based vs. Custom Built Hardware products typically employ many standardized design components. Most software continues to be custom built. The software industry does seem to be moving (slowly) toward component-based construction. Between 1998 and 2001, sales revenue will increase from about $1.1 billion to about $2.4 billion for componentware software and from about $2.2 billion to about $5.5 billion for related services, according to these estimates by the Gartner Group, a market research firm. -- Don Kiely. Are Components the Future of Software? Computer. pp10-11. February 1998.

Hu Zhiwen, 2006-10-28

42

What are software engineering methods? Structured approaches to software development which include system models, notations, rules, design advice and process guidance. Model descriptions Descriptions of graphical models which should be produced;

Rules Constraints applied to system models;

Recommendations Advice on good design practice;

Process guidance What activities to follow.

Hu Zhiwen, 2006-10-28

43

What is CASE? Software systems that are intended to provide automated support for software process activities. Computer-Aided Software Engineering (CASE) systems are often used for method support. Upper-CASE Tools to support the early process activities of requirements and design;

Lower-CASE Tools to support later activities such as programming, debugging and testing.

Hu Zhiwen, 2006-10-28

44

What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable. Maintainability Software must evolve to meet changing needs;

Dependability Software must be trustworthy;

Efficiency Software should not make wasteful use of system resources;

Acceptability Software must accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems. Hu Zhiwen, 2006-10-28

45

What are the key challenges facing SE? Heterogeneity, delivery and trust. Heterogeneity Developing techniques for building software that can cope with heterogeneous platforms and execution environments;

Delivery Developing techniques that lead to faster delivery of software;

Trust Developing techniques that demonstrate that software can be trusted by its users.

Hu Zhiwen, 2006-10-28

46

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering Professional and ethical responsibility Issues of professional responsibility Code of Ethics

Looking ahead to the Future Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

47

Professional and ethical responsibility Software engineering involves wider responsibilities than simply the application of technical skills. Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals. Ethical behaviour is more than simply upholding the law.

Hu Zhiwen, 2006-10-28

48

Issues of professional responsibility Confidentiality Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.

Competence Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwith their competence.

Hu Zhiwen, 2006-10-28

49

Issues of professional responsibility Intellectual property rights Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected.

Computer misuse Software engineers should not use their technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses).

Hu Zhiwen, 2006-10-28

50

ACM/IEEE Code of Ethics The professional societies in the US have cooperated to produce a code of ethical practice. Members of these organisations sign up to the code of practice when they join. The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession.

Hu Zhiwen, 2006-10-28

51

Code of ethics - preamble Preamble The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code. Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: Hu Zhiwen, 2006-10-28

52

Code of ethics - principles PUBLIC Software engineers shall act consistently with the public interest.

CLIENT AND EMPLOYER Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.

PRODUCT Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.

Hu Zhiwen, 2006-10-28

53

Code of ethics - principles JUDGMENT Software engineers shall maintain integrity and independence in their professional judgment.

MANAGEMENT Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.

PROFESSION Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.

Hu Zhiwen, 2006-10-28

54

Code of ethics - principles COLLEAGUES Software engineers shall be fair to and supportive of their colleagues.

SELF Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

Hu Zhiwen, 2006-10-28

55

Ethical dilemmas Disagreement in principle with the policies of senior management. Your employer acts in an unethical way and releases a safety-critical system without finishing the testing of the system. Participation in the development of military weapons systems or nuclear systems.

Hu Zhiwen, 2006-10-28

56

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering Professional and ethical responsibility Looking ahead to the Future Software Complexity Software Evolution The Softening of Hardware

Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

57

Software Complexity Zeroth Law. Change Equilibrium - Change is Unavoidable First Law. Complexity will be Conserved - Incrementally changes do not change inherent complexity Second Law. Software Complexity tends to Maximum Entropy - Aggressive refactoring tends to slow down that tendency. I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. If this is true, building software will always be hard. There is inherently no silver bullet. - Fred Brooks, “No Silver Bullet” http://www.computer.org/computer/homepage/misc/Brooks/ Hu Zhiwen, 2006-10-28

58

Building on the past – Looking to the Future

Hu Zhiwen, 2006-10-28

59

Software Evolution The Law of Continuing Change (1974): E-type systems must be continually adapted else they become progressively less satisfactory. The Law of Increasing Complexity (1974): As an Etype system evolves its complexity increases unless work is done to maintain or reduce it. The Law of Self Regulation (1974): The E-type system evolution process is self-regulating with distribution of product and process measures close to normal. The Law of Conservation of Organizational Stability (1980): The average effective global activity rate in an evolving E-type system is invariant over product lifetime. Hu Zhiwen, 2006-10-28

60

Software Evolution (Cont’d) The Law of Conservation of Familiarity (1980): As an E-type system evolves all associated with it, developers, sales personnel, users, for example, must maintain mastery of its content and behavior to achieve satisfactory evolution. The Law of Continuing Growth (1980): The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime. The Law of Declining Quality (1996): The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes. The Feedback System Law (1996): E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base. Source: Lehman, M., et al, “Metrics and Laws of Software Evolution—The Nineties View,” Proceedings of the 4th International Software Metrics Symposium (METRICS '97), IEEE, 1997, can be downloaded from: http://www.ece.utexas.edu/~perry/work/papers/feast1.pdf

Hu Zhiwen, 2006-10-28

61

Software Evolution (Cont’d) "The 8 Laws of Software Evolution" Continuing Change - A system must be continually adapted else they become progressively less satisfactory in use. Increasing Complexity - As a system is evolved its complexity increases unless work is done to maintain or reduce it. Zeroth Law. Change Equilibrium - Change is Unavoidable First Law. Complexity will be Conserved - Incrementally changes do not change inherent complexity Second Law. Software Complexity tends to Maximum Entropy Aggressive refactoring tends to slow down that tendency.

Self Regulation - Global system evolution processes are self regulating. Conservation of Organizational Stability - Unless feedback mechanisms are appropriately adjusted, average effective global activity rate in an evolving system tends to remain constant over product lifetime. Hu Zhiwen, 2006-10-28

62

Software Evolution (Cont’d) Conservation of Familiarity - In general, the incremental growth and long term growth of systems tend to decline. Continuing Growth - The functional capability of systems must be continually increased to maintain user satisfaction over the system lifetime. Declining Quality - Unless rigorously adapted to take into account for changes in the operational environment, the quality of a system will appear to be declining. Feedback System - Evolution processes are multlevel, multi-loop, multi-agent feedback systems. Source: http://www.manageability.org/blog/stuff/the-8-laws-of-software-

evolution/view Hu Zhiwen, 2006-10-28

63

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering Professional and ethical responsibility Looking ahead to the Future Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

65

Key points Software engineering is an engineering discipline that is concerned with all aspects of software production. Software products consist of developed programs and associated documentation. Essential product attributes are maintainability, dependability, efficiency and usability. The software process consists of activities that are involved in developing software products. Basic activities are software specification, development, validation and evolution. Methods are organised ways of producing software. They include suggestions for the process to be followed, the notations to be used, rules governing the system descriptions which are produced and design guidelines. Hu Zhiwen, 2006-10-28

66

Key points CASE tools are software systems which are designed to support routine activities in the software process such as editing design diagrams, checking diagram consistency and keeping track of program tests which have been run. Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues. Professional societies publish codes of conduct which set out the standards of behaviour expected of their members.

Hu Zhiwen, 2006-10-28

67

Summary Overview Software is designed and built by software engineers. Software is used by virtually everyone in society. Software engineers have a moral obligation to build reliable software that does no harm to other people. Software engineers view "software" as being made up of the programs, documents, and data. Software users are only concerned with whether or not software products meet their expectations and make their tasks easier to complete.

Important Questions for Software Engineers Why does it take so long to get software finished? Why are development costs so high? Why can't we find all errors before we give the software to our customers? Why do we continue to have difficulty in measuring progress as software is being developed? Hu Zhiwen, 2006-10-28

68

Summary (cont’d) Software Software is both a product and a vehicle for delivering a product (information). Software is engineered not manufactured. Software does not wear out, but it does deteriorate. Currently, most software is still custom-built.

Software Application Types System software Application software Embedded software Engineering/Scientific software Product software Web Applications Artificial intelligence software Hu Zhiwen, 2006-10-28

69

Summary (cont’d) New Software Challenges Ubiquitous computing Creating software to allow machines of all sizes to communicate with each other across vast networks Netsourcing Architecting simple and sophisticated applications that benefit targeted end-user markets worldwide Open Source Distributing source code for computing applications so customers can make local modifications easily and reliably New economy Building applications that facilitate mass communication and mass product distribution using evolving concepts

Legacy software Many programs still provide a valuable business benefit, even though they are one or even two decades old. These programs must be maintained and this creates problems because their design is often not amenable to change. Hu Zhiwen, 2006-10-28

70

Summary (cont’d) Software Evolution Process by which programs change shape, adapt to the marketplace, and inherit characteristics from preexisting programs Law of continuing change Systems must be continually adapted or they become progressively unsatisfactory

Law of increasing complexity As system evolves its complexity increases unless work is done to reduce the complexity

Law of self-regulation System evolution is self-regulating with its process and product measures following near normal distributions

Hu Zhiwen, 2006-10-28

71

Summary (cont’d) Law of conservation of Organizational Stability Average effective global activity rate for an evolving systems is invariant over the product lifetime

Law of conservation of familiarity As system evolves all stakeholders must maintain their mastery of its content and behavior to achieve satisfactory evolution

Law of continuing growth Functional content of system must be continually increased to maintain user satisfaction over its lifetime

Law of declining quality System quality will appear to decline unless the system is rigorously maintained and adapted to environment changes

Feedback system law System evolution processes must be treated as multi-level, multi-loop, multi-agent feedback systems to achieve significant improvement Hu Zhiwen, 2006-10-28

72

Summary (cont’d) Software Myths Still believed by many managers and practitioners Insidious because they do have elements of truth Every practitioner and manager should understand the reality of the software business.

Software Creation Almost every software project is precipitated by a business need (e.g., correct a system defect, adapt system to changing environment, extend existing system, create new system) Many times an engineering effort will only succeed if the software created for the project succeeds The market will only accept a product that has the software embedded when it meets the customer's stated or unstated needs Hu Zhiwen, 2006-10-28

73

Today’s Agenda Textbook & Reference Book Hints Overview FAQs about software engineering Professional and ethical responsibility Looking ahead to the Future Summary Questions - Discussion Resources Hu Zhiwen, 2006-10-28

74

Questions - Discussion

Hu Zhiwen, 2006-10-28

75

Resources

Hu Zhiwen, 2006-10-28

76

KNOW YOUR SCORE --

Programming For the Future Copyright © 2006. These courseware materials are to be used in conjunction with Software Engineering (8th edition by Ian Sommerville) (International Computer Science Series) and are provided with permission by AddisonWesley, Inc. This presentation, slides, or hardcopy may NOT be used for short courses, industry seminars, or consulting purposes. The names of actual companies and products mentioned herein may be the trademarks of their respective owners. This presentation is for informational purposes only.

Chapter 1 An Introduction to Software Engineering

... Ph.D, IEEE member. Contact me: [email protected] ... Outsourcing (外包). Contracting with outside consultants, software houses or service bureaus to perform systems analysis, programming ... convergence of advanced electronic - and particularly, wireless - technologies and the Internet. Pervasive computing ...

2MB Sizes 6 Downloads 236 Views

Recommend Documents

Chapter 1. An Introduction to Device Drivers
May 1, 2006 - learn how to support computer peripherals under the Linux .... Chapter 17. .... In Chapter 9 and Chapter 10, however, we ask you to connect an inch of .... letting me review the first edition during our honeymoon, with a laptop.

Introduction to Software Engineering -
Page 1. Presentation. Page 2. link to the document:

Chapter 1 Introduction
This dissertation is mainly concerned with offline routing control in diverse IP networks. The notion "diverse. IP networks" refers to networks with different routing technologies such as the classical. Interior Gateway Protocols (IGPs)3, Multi-Proto

Chapter 1: Introduction
Computer-System Architecture. ▫ Operating-System Structure. ▫ Operating-System ... systems, video games. ○ Users. > People, machines, other computers ...

Introduction to Software 1.pdf
List and execute the following UNIX commands : (i) To see the users logged into the system. ... Main menu. Displaying Introduction to Software 1.pdf. Page 1 of 1.

Chapter 1 Introduction to phage biology and phage ...
genotype. This allows phage libraries to be subjected to a selection step (e.g. .... Figure 1 Life cycle of filamentous phage f1 (M13/fd). .... Thus, the infection process ..... In the cryo-EM structure of pIV (MR et al., unpublished data), there is

Chapter 1: Introduction to Emissions trading
Australia: Carbon Pollution Reduction Scheme (CPRS) negotiations stalled. ... Japan: Law on Global Warming unlikely to pass in 2011 given the recent ...

Chapter 7 An Introduction to Kernel Methods
it may be best to allow a higher number of false positives if this im- proved the true positive .... visualize this as a band or tube of size ¦( -) around the hypothesis function (x) and any points ..... as an important set of tools for machine lear

Chapter 7 An Introduction to Kernel Methods
successful application areas as illustrations: machine vision, handwritten character ... successful area of application including 3D face recognition, pedestrian.

2 CHAPTER 1 - INTRODUCTION TO THE INDEX.pdf
an entrepreneurial and open, ... products & services, creative ... extent of collaboration for ... Activity: Activity measures a firm's activities across the innovation lifecycle from .... Displaying 2 CHAPTER 1 - INTRODUCTION TO THE INDEX.pdf.