Software Engineering Unit - I Software Engineering
Software Engineering Unit - I Software Engineering
UNIT - I
SOFTWARE ENGINEERING
Software Engineering: A Layered Technology – Software Process – Software Process Models –
The Prototyping. Requirement Engineering– Software prototyping - Elements of analysis model
– Data modeling – Functional modeling and information flow
UNIT -II
SOFTWARE DESIGN
Software design and Software engineering – The Design process – Design principles – Design
concepts – Effective modular design –Software Architecture
UNIT – III
SOFTWARE TESTING
Software testing fundamentals – Test Case Design - White box testing – Basis path testing –
Control structure testing – Black box testing. Unit testing – Validation testing – System testing.
UNIT – IV
UNIT – V
ESTIMATION
Estimation: What is Estimation? – When and Why? – Three phases of Estimation – Estimation
methodology – Formal models of Size Estimation. Design and Development phases: Reusability
- Technology choices – Standards – Portability -User interface issues – Testability - The Effect
of Internet on Project Management.
SOFTWARE ENGINEERING
UNIT – I
SOFTWARE
1. Software is instruction (Computer Programs ) that when executed provide desired function and
Performance.
Software Characteristics:
Software is a logical rather than a physical system element. Therefore, software has
characteristics that are considerably different than those of hardware:
Software Applications
System software:
System software is a collection of programs written to service other programs. Some system
software (e.g., compilers, editors, and file management utilities) process complex, but
determinate, information structures. Other systems applications (e.g., operating system
components, drivers, telecommunications processors) process largely indeterminate data.
In either case, the system software area is characterized by heavy interaction with computer
hardware; heavy usage by multiple users; concurrent operation that requires scheduling, resource
sharing, and sophisticated process management; complex data structures; and multiple external
interfaces.
Real-time software:
Software that monitors/analyzes/controls real-world events as they occur is called real time.
Elements of real-time software include a data gathering component that collects and formats
information from an external environment, an analysis component that transforms information as
required by the application, a control/output component that responds to the external
environment, and a monitoring component that coordinates all other components so that real-
time response (typically ranging from 1 millisecond to 1 second) can be maintained.
Business software:
Business information processing is the largest single software application area. Discrete
"systems" (e.g., payroll, accounts receivable/payable, inventory) have evolved into management
information system (MIS) software that accesses one or more large databases containing
business information. Applications in this area restructure existing data in a way that facilitates
business operations or management decision making. In addition to conventional data processing
application, business software applications also encompass interactive computing (e.g., pointof-
sale transaction processing).
Engineering and scientific software have been characterized by "number crunching" algorithms.
Applications range from astronomy to volcanology, from automotive stress analysis to space
shuttle orbital dynamics, and from molecular biology to automated manufacturing. However,
modern applications within the engineering/scientific area are moving away from conventional
numerical algorithms. Computer-aided design, system simulation, and other interactive
applications have begun to take on real-time and even system software
characteristics.
Embedded software:
Intelligent products have become commonplace in nearly every consumer and industrial market.
Embedded software resides in read-only memory and is used to control products and systems for
the consumer and industrial markets. Embedded software can perform very limited and esoteric
functions (e.g., keypad control for a microwave oven) or provide significant function and control
capability (e.g., digital functions in an automobile such as fuel control, dashboard displays, and
braking systems).
The personal computer software market has burgeoned over the past two decades. Word
processing, spreadsheets, computer graphics, multimedia, entertainment, database management,
personal and business financial applications, external network, and database access are only a
few of hundreds of applications.
Web-based software:
The Web pages retrieved by a browser are software that incorporates executable instructions
(e.g., CGI, HTML, Perl, or Java), and data (e.g., hypertext and a variety of visual and audio
formats). In essence, the network becomes a massive computer providing an almost unlimited
software resource that can be accessed by anyone with a modem.
Artificial intelligence software:
Artificial intelligence (AI) software makes use of nonnumerical algorithms to solve complex
problems that are not amenable to computation or straightforward analysis. Expert systems, also
called knowledge based systems, pattern recognition (image and voice), artificial neural
networks, theorem proving, and game playing are representative of applications within this
category.
[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:
Methods
Software engineering methods rely on a set of basic principles that govern each area of the
technology and include modeling activities and other descriptive techniques.
Tools
Software engineering tools provide automated or semi-automated support for the process and the
methods. When tools are integrated so that information created by one tool can be used by
another, a system for the support of software development, called computer-aided software
engineering, is established. CASE combines software, hardware, and a software engineering
database (a repository containing important information about analysis, design, program
construction, and testing) to create a software engineering environment analogous to CAD/CAE
(computer-aided design/engineering) for hardware.
A number of task sets—each a collection of software engineering work tasks, project milestones,
work products, and quality assurance points—enable the framework activities to be adapted to
the characteristics of the software project and the requirements of the project team. Finally,
umbrella activities—such as software quality assurance, software configuration management,
and measurement—overlay the process model. Umbrella activities are independent of any one
framework activity and occur throughout the process.
Incremental Process Model