CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 1 Software and Software Engineering Discussion of the Software Product and Software Engineering CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Evolution • The role of software in the information age. • Information and knowledge are the focal point for power in the 21st century. • Software is being part of most daily activities. • Software is an integral part of many types of systems (medical, telecom, avionic, military, transportation, etc…). • Software is now a vast industry with significant economic power. • The “law of unintended consequences” and computer software. CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. The Dual Role of Software • Software is product that – delivers computing potential across networks of hardware. – transforms information - produces, manages, acquires, modifies, displays, or transmits information. • Software is vehicle for delivering a product (information) – – – – provides system functionality (e.g., payroll system) controls other software (e.g., an operating system) effects communications (e.g., networking software) helps build other software (e.g., software tools) CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Development • Computer-based systems are more complex than ever. • Require sophisticated software programs (complexity issue). • Shift from “lone programmer” to “software engineering team” However, some of the questions still being asked today are: – Why does it take long to finish a software project? – Why development cost is always high? – Why cannot all errors be found before the software is delivered to the customer? – Why it is difficult to measure progress during software development? These questions lead to developing Software Engineering Framework and practices. CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. What is a Software Product? • What is Computer Software? Computer programs (instructions) that execute to perform a specified task. A set of items or objects that form a “configuration” that includes programs, documents, and data. • Is software different than other things we build? CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Characteristics (1) • Software is engineered, but not manufactured – Both aim for high quality through good design – Engineering is a different approach than manufacturing • quality issue • cost issue CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Characteristics (2) • Software doesn’t wear out, but it deteriorates Failure rate Infant Mortality Wear Out Hardware Product Time CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Characteristics (3) Software Product CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Characteristics (3) • Software is more complex to maintain – Most software is custom built – Software has no spare parts – Immature component-based development (lack of standards) – Software reuse is evolving, but not a “natural/integral part “ of the development process (mostly interface components) CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Application (1) • Software applicability is very wide, leading to more SE challenges. • Generic categories of software applications: – Systems Software (services other programs) Operating systems, Compilers, Editors, Device drivers, Communication software, Search agents, etc… – Application Software (processes real-time events) Traffic control, Weather applications, Avionics, Control systems, etc.. CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Application (2) – Engineering/Scientific Software (process complex calculations - number crunching) Simulation, VR, Mineral exploration, molecular biology, space exploration, etc… – Embedded Software (controls devices - read-only) Consumer appliances, Household devices, Vehicles, etc… – Business (product-line) Software (process business information and databases - MIS systems) Payroll, Shipping, Accounting, Inventory, Banking, Financial transactions, Word-Processing, Multimedia, etc… CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Application (3) – Web Applications (supports web development) Webpage builders, Browsers, e-Commerce, B2B, etc… – PC Software (packaged software) Word processor, Database, Editors, Graphics software, etc,… – AI Software (implements non-numeric algorithms) Expert systems, Pattern recognition, Games, Robotics, etc… – Ubiquitous computing - Wireless networks and applications for small devices to communicate. CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. New Software Categories – Netsourcing - the Web as a computing engine. Applications for end-user to make use of the Web engine. (personal planning applications) – Open source - ”free” source code open to the computing community (a blessing, but also a potential curse!) – Other categories - non-numeric algorithms: Data mining, Grid computing, and Cognitive machines The challenge: Building applications that can accommodate future changes in technology, business, and end-user needs. (the law of unintended consequences) CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Legacy Systems • Developed decades ago and frequently modified. • Quality issues. • Why it must be changed? – software must be adapted to meet the needs of new computing environments or technology. – software must be enhanced to implement new business requirements. – software must be extended to make it interoperable with other more modern systems or databases. – software must be re-architected to make it viable within a network environment. CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Cost of Change 60-100x 1.5-6x 1x Definition Development After release CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Software Challenges • How do we ensure the quality of the software that we produce? • How do we meet growing demand and still maintain budget control? • How do we upgrade an aging "software plant”? • How do we avoid disastrous time delays? • How do we successfully institute new software technologies? CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. In summary… - Software has evolved to a large industry - The industry requires engineering practices - The practices are based on established processes - The processes form a framework for building high quality software systems… CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Something to Think About… • How does software differ from products produced by other engineering discipline? • Differentiate software characteristics from those of hardware. • What do we mean by software crisis? Many books authored on software failure. • Read Software Myths in the book and think of other new myths. CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Suggested Problems Try to work problems 1.1, 1.2, 1.3, 1.5, 1.6, 1.11, and 1.12, page 17. No submission is required for practice assignments. Work it for yourself! CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Last Slide End of chapter 1