SOFTWARE ENGG •
Software Engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates.
• • •
Goals To increase the productivity and job satisfaction of software engineers To improve the quality of software products.
Software Engg, requires both technical skill and managerial control. Intellectual distance: The mapping between the model and the reality being modeled has been called the intellectual distance between the problem and a computerized solution to the problem.
SOFTWARE ENGG •
Software reliability is “the ability of a program to perform a required function under stated conditions for a stated period of time”.
• •
Qualities of a software product: Usefulness,clarity,reliability,efficiency and cost – effectiveness.
•
Planning the Development process:
• • •
The phased Life-cycle model Cost model Prototype life – cycle model
SOFTWARE ENGG •
Project structure
• • •
Project format Functional format Matrix format
• • • •
Programming team structures Democratic teams Chief programmer teams Hierarchial team structure
SOFTWARE ENGG • • • • •
Languages and processors for requirements specification: PSL/PSA RSL/REVS SADT SSA
• •
Coupling and Cohesion: To minimize the number and complexity of interconnections between modules.
• •
Dos of good coding style: Use a few standard, agreed – upon control constructs
SOFTWARE ENGG • • • • •
Use gotos in a disciplined way Introduce user – defined data types to model entities in the problem domain Hide data structures behind access functions Isolate machine dependencies in a few routines Use indentation, parantheses, black spaces, blank lines, and borders around comment blocks to enhance readability.
• •
Verification : “Are we building the product right?” Validation : “Are we building the right product?”
• •
Unit testing: Unit testing comprises the set of tests performed by an individual programmer
SOFTWARE ENGG •
Prior to integration of the unit into a larger system.
• •
System Testing Integration testing and acceptance testing:involves planning and execution of functional tests, performance tests and stress tests to verify that the implemented system satisfies its requirements. Acceptance testing involves planning and execution of various types of tests in order to demonstrate that the implemented software system satisfies the requirements stated in the requirements document. Why Prototype? Illustrate data formats, messages, reports, and interactive dialogues for the customer.m
•
• •
SOFTWARE ENGG • •
Explore technical issues in the proposed product. Developing a prototype is in situations where the phased model is inappropriate.
•
Phased Model is applicable when it is possible to write a reasonably complete set of specifications for a software product at the beginning of the life cycle.
•
The goals of verification and validation activities are to assess and improve the quality of the work products generated during development and modification of software.