Lec1-Intro To SE
Lec1-Intro To SE
What is Software?
Software is a set of instructions to acquire inputs and to
manipulate them to produce the desired output in terms of functions and performance as determined by the user of the software. It also include a set of documents, such as the software manual , meant for users to understand the software system.
Classes of Software
Software is classified into two classes:
Generic Software:
is designed for broad customer market whose requirements are very common, fairly stable and well understood by the software engineer.
Customized Software:
is developed for a customer where domain , environment and requirements are being unique to that customer and cannot be satisfied by generic products.
Maintainability
Dependability
Efficiency
Usability
Software - Characteristics
Software has a dual role. It is a product, but also a vehicle for delivering a product. Software is a logical rather than a physical system element. Software has characteristics that differ considerably from those of hardware. - Software is developed or engineered, it is not manufactured in the classical sense.
Types of Software
System Software- A collection of programs written to service other programs at system level. For example, compiler, operating systems.
Real-time Software- Programs that monitor/analyze/control real world events as they occur.
Business Software- Programs that access, analyze and process business information. Engineering and Scientific Software - Software using number crunching algorithms for different science and applications. System simulation, computer-aided design.
Types of Software
Embedded Software-: Embedded software resides in read-only memory and is used to control products and systems for the consumer and industrial markets. It has very limited and esoteric functions and control capability. Artificial Intelligence (AI) Software: Programs make use of AI techniques and methods to solve complex problems. Active areas are expert systems, pattern recognition, games
Types of Software
Internet Software : Programs that support internet accesses and applications. For example, search engine, browser, e-commerce software, authoring tools. Software Tools and CASE environment : Tools and programs that help the construction of application software and systems. For example, test tools, version control tools.
Software Engineering
A systematic approach to the analysis, design, implementation and maintenance of software. (The Free On-Line Dictionary of Computing) The systematic application of tools and techniques in the development of computer-based applications. (Sue Conger in The New Software Engineering) Software Engineering is about designing and developing highquality software. (Shari Lawrence Pfleeger in Software Engineering -- The Production of Quality Software)
[Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. The IEEE [IEE93] has developed a more comprehensive definition when it states:
Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).
Tools Methods
Process
A quality Focus
Software methods: Software engineering methods provide the technical how to for building software. Methods --> how to encompass a broad array of tasks: - requirements analysis, design, coding, testing, and maintenance Software engineering methods rely on a set of basic principles.
Software process: Software engineering process is the glue that holds: - technology together - enables rational and timely development of computer software. Software engineering process is a framework of a set of key process areas. It forms a basis for: - project management, budget and schedule control - applications of technical methods - product quality control
Software tools: - programs provide automated or semi-automated support for the process and methods. - programs support engineers to perform their tasks in a systematic and/or automatic manner.
Objectives:
Major Goals:
Programming
1. The process of translating a problem from its physical environment into a language that a computer can understand and obey. (Websters New World Dictionary of Computer Terms) 2. The art of debugging a blank sheet of paper. 3. A pastime similar to banging one's head against a wall, but with fewer opportunities for rewards. (2 and 3 from The New
Hackers Dictionary)
Computer Science
theory fundamentals
Software Engineering
the practicalities of developing delivering useful software
is concerned with
Computer science theories are currently insufficient to act as a complete underpinning for software engineering, BUT it is a
Software engineering is part of System engineering System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering System engineers are involved in system specification architectural design integration and deployment
Factories the system into different components Understand the relationship between various components Define relationship in terms of inputs, outputs and processes Understand the role of hardware and software Identify the key operational and functional requirements Model the system for analysis and development Discuss the system with the customer
Object Oriented System Analysis and Design ( OOSAD) In contrast , the OOSAD development approach recommended the analysis of domain and builds objects of model independent of the system under consideration. The object could represents a function , process or document evolved for the organization. Each object has attributes that describes the methods to perform and relationship to other objects.
In SSAD the focus is on the functions and the data structure designed for those functions. Functions , data and processing methods are closely coupled. In OOSAD , however , objects and processing methods are decoupled from the data. In SSAD , skill lies in decomposing the system whereas in OOSAD skill lies in modeling the organization and its business in the objects. SSAD and OOSAD are dissimilar in focus but similar in that both propose a problem solving methodology and a set of techniques and tools to assist the S/W engineer analyze , model ,design and develop the system.