Software Engineering Software is a set of items

  • Slides: 14
Download presentation
Software Engineering Software is a set of items or objects that form a “configuration”

Software Engineering Software is a set of items or objects that form a “configuration” that includes • programs • documents • data. . . 1

/* * Microsoft marketing algorithm. */ #include /* Microsoft Network Connectivity library */ #include

/* * Microsoft marketing algorithm. */ #include /* Microsoft Network Connectivity library */ #include /* For the court of law */ #define say(x) lie(x) #define computeruser ALL_WHO_WANT_TO_BUY_OUR_BUGWARE #define next_year soon #define the_product_is_ready_to_ship another_beta_version source: http: //www. jokebuddha. com/Algorithm#ixzz 1 Z 86 A 7 k. DG Chapter 1 2

void main() { if (latest_window_version > one_month_old) { if (there_are_still_bugs) market(bugfix); if (sales_drop_below_certain_point) raise(RUMOURS_ABOUT_A_NEW_BUGLESS_VERSION);

void main() { if (latest_window_version > one_month_old) { if (there_are_still_bugs) market(bugfix); if (sales_drop_below_certain_point) raise(RUMOURS_ABOUT_A_NEW_BUGLESS_VERSION); } source: http: //www. jokebuddha. com/Algorithm#ixzz 1 Z 86 ROOa L Chapter 1 3

while(everyone_chats_about_new_version) { make_false_promise(it_will_be_multitasking); /* Standard Call, in lie. h */ if (rumours_grow_wilder) make_false_promise(it_will_be_plug_n_play); if

while(everyone_chats_about_new_version) { make_false_promise(it_will_be_multitasking); /* Standard Call, in lie. h */ if (rumours_grow_wilder) make_false_promise(it_will_be_plug_n_play); if (rumours_grow_even_wilder) { market_time=ripe; say("It will be ready in one month); order(programmers, stop_fixing_bugs_in_old_version); source: http: //www. jokebuddha. com/Algorithm#ixzz 1 Z 86 YGb. Es Chapter 1 4

Software Engineering — Introduction z What is Software Engineering (SE)? y. The process of

Software Engineering — Introduction z What is Software Engineering (SE)? y. The process of building a software product. z Some questions to put SE in perspective: y. What are the sizes of some typical software products? x. Maple. exe = 1. 3 Mbytes. -- System over 3. 8 Mbytes x. Netscape. exe = 1. 26 megabytes. x. Microsoft Office 97 > 180 megabytes. y. How many people would it take to build these in 1 year? 2? y. What would you do if a bug could cost lives and $2 billion? y. What would you do if a delay could cost $100’s of millions? Chapter 1 6

Software Engineering — Introduction z Some questions to put SE in perspective (con’t): y.

Software Engineering — Introduction z Some questions to put SE in perspective (con’t): y. What is the impact of distributing buggy software? y. Why do we have so many software upgrades? y. What is the impact of software upgrades? y. What are some of the ethical issues in software development? y. Why is it so difficult to measure software development progress? y. Why does it take so long to develop software? y. Why does software cost so much? y. Why do people continue to use buggy and/or obsolete software? Chapter 1 7

Some Software Characteristics z Software is engineered or developed, not manufactured in the traditional

Some Software Characteristics z Software is engineered or developed, not manufactured in the traditional sense. z Software does not wear out in the same sense as hardware. Chapter 1 8

Some Software Characteristics z In theory, software does not wear out at all. z

Some Software Characteristics z In theory, software does not wear out at all. z BUT, y. Hardware upgrades. y. Software upgrades. Chapter 1 9

Some Software Characteristics z Thus, reality is more like this. y. Most serious corporations

Some Software Characteristics z Thus, reality is more like this. y. Most serious corporations control and constrain changes z Most software is custom built, and customer never really knows what she/he wants. Chapter 1 10

Some General Approaches z Develop and use good engineering practices for building software. z

Some General Approaches z Develop and use good engineering practices for building software. z Make heavy use of reusable software components. z Use modern languages that support good software development practices, e. g. , Ada 95, Java. z Use 4 th generation languages. z But, almost everything is a two-edged sword. y. Consider long term tool maintenance. x. Right now, this is a major problem for NASA. Chapter 1 11

Types of Software Applications z Systems Software z Real-Time Software z Business Software z

Types of Software Applications z Systems Software z Real-Time Software z Business Software z Engineering Software z Embedded Software z Artificial Intelligence Software z Personal Computer Software Chapter 1 12

Software Myths z Myth: It’s in the software. So, we can easily change it.

Software Myths z Myth: It’s in the software. So, we can easily change it. y. Reality: Requirements changes are a major cause of software degradation. z Myth: We can solve schedule problems by adding more programmers. y. Reality: Maybe. It increases coordination efforts and may slow things down. z Myth: While we don’t have all requirements in writing yet, we know what we want and can start writing code. y. Reality: Incomplete up-front definition is the major cause of software project failures. Chapter 1 13

Software Myths z Myth: Writing code is the major part of creating a software

Software Myths z Myth: Writing code is the major part of creating a software product. y. Reality: Coding may be as little as 10% of the effort, and 50 - 70% may occur after delivery. Chapter 1 14

Software Myths z Myth: I can’t tell you how well we are doing until

Software Myths z Myth: I can’t tell you how well we are doing until I get parts of it running. y. Reality: Formal reviews of various types both can give good information and are critical to success in large projects. z Myth: The only deliverable that matters is working code. y. Reality: Documentation, test history, and program configuration are critical parts of the delivery. z Myth: I am a (super) programmer. Let me program it, and I will get it done. y. Reality: A sign of immaturity. A formula for failure. Software projects are done by teams, not individuals, and success requires much more than just coding. Chapter 1 15