CMPE 412 Software Engineering
E N D
Presentation Transcript
CMPE 412Software Engineering Asst.Prof.Dr.Duygu Çelik Ertuğrul Room: CMPE 206 Email: duygu.celik@emu.edu.tr
COMPUTER SOFTWARE • Software: A set of instructions that tell the computer what to do • Types of softwares: • Application software • System software, etc. (later!) • Software engineering:is the application ofengineering to the design, development,implementation, testingandmaintenanceof softwarein a systematic method.
INTRODUCTION • According to scientific discipline, methods and tools of SEhas been around for more than 35 years!!! • Programming languages started to appear in the 1950s andreleased major languagessuch as Fortran, ALGOL, and COBOL,etc. • After Computer Programs startedto solve more complicated problems, programmers understood that a disciplined approach was needed to develop complex programs.
Many programmers had to: • work in a team • agree on a common interface to exchange data btw modules. • Many programmers works together in a team structure while managing SW projects: • a hard task, because; • System analysis • Project Planning • Project Scheduling • Configuration Management All became very important issues!!!
CEs/SEs in the Turkish Informatics Sector are; • Mostly work as «team» • contains 3-7 members... • One Manager or one Team Leader • Others are programmers,specialists,etc. • You will also create your own SW Project Team (5-6 Stds., Details TBA)! • Generally, there is a division of work among programmers according to their specialities, eg.: • 1 User Interface • 1 DB • 2-3 Program Developer • 1 Business or Programming Analyzer etc...
Programmers are mostly graduates of 2 years or from other disciplines like Math, Physic etc... • This situation may change the future developments when more CE or SE graduate from universities. • Many text books have been written on SE. • Pressman’s book seems to be the most well known and successful • Published many versions since 1982. • Probably, this success based on programmingpractice and experience of the Roger Pressman. Every SE/CE needs to be in at least one big project to understand: • Problems • Observed difficulties • Software Process Planning • Team Working etc...
What is Computer Software? • Help bussiness decision making • Serves for scietific research & problem solving • Embedded in many modern systems: • Transportation (airplane flight control..) • Telecommunications (cellular phones, internet...) • Military (weapon control systems...) • Industrial Process Systems (factory control systems...) • Office Products (word proocessing...) • Entertainment (satellite or cable TV...)
What is Computer Software? • CS, or simply SW, is that part of a computer system, that contains software instructions, for: • Producing • Managing • Acquiring • Modifying • Displaying • Transmiting information...
1950-1965 • In early systems, SW was developed and used by the same person or company. • It was custom-designed for each application. • Same peoplewrote it, checked it, run it and fixed bugs of it. • program sturucture was not formal, and • perfomed according to one’s mind • few documentation.
1965-1975 • Multiuser system were developed • Introduced firstDB systems • Concepts of HCI were developed • Interactive use of computers required new&more complicated HWs and SWs. • Real-Time systems brought the concepts of «timeliness» • In this period, companies began to develop SW for widespread distribution to Hundreds/Thousands of users. • Called as «Product Software» • Grew program sizes 10-1000 times • But, all these programs had to be adapted to new HW when new computers were purchased. • These problems became enormous. • Many bespoke programs were almost «Unmaintainable»
1975-1985 Helped people to buy their PC for home usage • Distributed systems were introduced: • AI techniques • reduced HW costs • introduction of the PC • Computer Network & Further Telecommunication Networks made it possible to exchange data btw computers. • But, SW was still used: • mostly in Academic research • mostly in Industry • But rarely in Personal usage!!
1985-2003 4th era of CSs • In this period: • powerful desktop machines • complex OS • faster&larger computer NWs • Gained PopularityDecentralized client/server type of SW architectures... • WWW and Internet contributed to Global Information Systems & share information... • Object-oriented techniquesare replacing Conventional Programming design techniques • Multimedia techniques & Game programs have produced a new personal entertainment market for SW.
Faced Problems for All These Periods • HW is advancing very fast but SW development is not. • SW programs can not build fast enough to meet Business & Market needs. • Widespread use of computers has made the society increasingly dependent on reliable operating of SW. • Developed programs still don’t have high reliability & quality. • Bcz of poor design, we can not support & enhanceexistingprograms!!!
STUCK QUESTIONS • Early days of programming, it was viewed as an «ART». • There were few formal methods and good programmers. • Today, SW is largest cost item in a CS. • But, still many Qs about SW development that have been asked over and over by Managers!!!
Questions About Software Haven't Changed Over the Decades • 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 spend so much time and effort maintaining existing programs? • Why do we continue to have difficulty in measuring progressduring the software developing and maintaining? Still stick in managers’ mind!!!
Faced Problems with Written Programs Over the Decades • Problems with application programs written 10-20 years ago: • These are now UNMAINTANABLE! Rubbish! • Even the smallest modification can cause the whole system to fail. • Problems with many engineering programs written 10-20 years ago: • which produce Critical Data (i.e. nuclear reactor control, etc.) • while no one really understands their Internal Structure. • There are many embedded systems (i.e. air traffic control, etc.) • which show strange behaviors from time to time • which can not stop their service bczthere is nothing available to replace them. • All these systems require «reengineering». • Design again starting from scratch and, • Write modern programsby using formal SEmethods.
Earlier times, programs were mostly wrt in US & in Europe. • Now; China, Far East (S.Korea, Singapore, etc.), India, Eastern Europe (Poland, Hungary, Romania, etc.) • More professional programmers & less cost. • introduced the new concept called «Outsourcing» in SW development. • Some companies used the advantage for developing their SWs by hiring programmers from these new countries to write their big programming projects.
Software • Instructions: when executed, provide a desired function and performance. • Data Structures: enable instructions to manipulate information properly. • Documents: describe the operation and use of programs (i.e. user guides,SRS etc).
Software • Software is a logical rather than physical system element. • SW is developed, not manufactured! Bcz, HW is manufactured but SW is developed! • SW costs are concentrated in engineering: HUMAN FACTOR! • SW doesn’t wear out. During its life, SW undergoes some changes (MAINTENANCE!). • With these changes, some Defects may be happen and in turn may cause Failures! • When a HW part wear out, it is replaced by a spare (new) part (i.e. sound card) • However, there are no SW spare parts! • Therefore, maintanenceof SW is more complex than HW.
Most SW is custom-built, instead of being constructed from already existing components. • Logic circuits are designed with components off-the-shelf (i.e. NAND gates, Shift registers , etc.) • Unfortunetly, SEs don’t have off-the-shelf components to use. • Recently, OOP techniques has made it possible to reuse some modules in new programs.
SOFTWARE TYPES 1) System Software programs: • give service to other programs (i.e.compilers, editors, browsers, drivers, virus protection programs, etc.) • have heavy interaction with HW • give service to multiple users • have to handle resource sharing & scheduling issues. 2) Real-time Software programs: • Control/analysis of real world events as they occur • Collect & analyse data, an then make immediatedecisions, and produce appropriate outputs. • Have to give very fast responses (in terms of ms)
SOFTWARE TYPES 3) Bussiness Software • Largest application area for programs. • Recently, different programs written for the same company/institution; accounting, stock control, employee info. programs, etc. • These programs help administration in their decision making, • Also, they process & analyse large data very fast. • Point-of-sale transaction processing is also a well-known business application area.
SOFTWARE TYPES 4) Engineering & Scientific Software • Known as «Number Crunching» SW. • Computer-aided Design & Simulation programs are more widely used in Scientific Applications. 5) Embedded Software • put in «ROMs, Control Products & Systems» for military, consumer, industrial. • Some programs perform limited functions (i.e. key-pad control for a microwave oven). • Some programs perform complicated functions (i.e. Fuel control, brakes cotrol, etc ).
SOFTWARE TYPES 6) Personel Computer (PC) Software programs: • Word proccesing • Spreadsheet programs (Excell) • Multimedia games • Computer graphics • DB Mamangement • Fax/Modem 7) AI Software programs use nonnumeric algorithms for complex problem solving (e.g. Expert Systems, Knowledgebase Systems, Pattern Recognition, Speech Recognition, Neural NW apps, etc.)