Professional Documents
Culture Documents
Recommended Books:
1. Roger S. Pressman R., “Software Engineering, A Practitioner’s Approach”, McGraw Hill International.
2. Ian Sommerville , Software Engineering, Addison-Wesley Publishing Company.
3. Rajib Mall, “Fundamentals of Software Engineering”, PHI
4. Software Engineering by K.K. Aggarwal Er. Shweta Rajput
• S/W: in day today life.
• Many application areas: Engg.,architecture,e-commerce,science
• s/w becomes large,complex.(GUI,client-server architecture,distributed)
• Run on 2 or more processors, under different OS and on geographical distributed machines.
Program Documentation
Operating Procedures
• An Engg. approach consist of developing s/w which meets specifications efficiently, cost effectively and at the same time
they ensure quality.
• Engg. Approach means: well defined, managed, repeatable and predictable approach.
• Large projects will benefit by systematic approach.
• If we are successful once, then same approach, same methodology can also be used in another approach, in another project
and we will have very high probability of success.
• Quality, control,standards,planning and management are important in engineering approach.
1. Effort intensive( manpower, hardware, software, and the other support resources).
2. High cost involved
3. Long development time required
4. Understanding large and complex system requirements is difficult
The word ‘large’ represents 2 aspects:
(i) Large constraints in terms of security, etc. due to a large number of users.
(ii) Large number of functions to be implemented.
Partitioning the system suitably to reduce complexity
More complex and large projects(require more partitioning) can sometimes be broken down into small modules/functionalities which are then handled by
separate teams. It needs to be ensured that the partitions are non-overlapping and independent of each other.
5. Customers/Stakeholders are not clear about their needs(happen when they have a very basic idea about their needs)
6. Changing needs of users
7. Conflicting requirements
8. Changing technologies
9. High risk of failure and user acceptance
10. Performance
11. Maintainability: maintaining agility and efficiency
12. s/w projects may not always been successful.
13. Lack of Resources
14. Feasibility
15. Undefined system boundaries
There might be no defined set of implementation requirements. Customer may go on to include several unrelated and unnecessary functions besides the
important ones, resulting in an extremely large implementation cost which may exceed the decided budget.
16. Lack of adequate training Er. Shweta Rajput
17. Skill shortage
Reasons for s/w failures:
1. Schedule –slippage means s/w is not ready in time.
2. Cost over-runs(too costly to complete project, it may be abandoned).
3. Doesn’t solve user’s problem(s/w development completed but user does not find it useful. It’s failure).
4. Poor quality of s/w.
5. Poor Maintainability.
fix
• Developer simply build product that’s reworked as many times as necessary to satisfy client.
• Adhoc approach: not well defined.
• It’s 2 phase model:
Phase 1: is to write code.
Phase 2: is to fix it(fixing means error correction or addition of further functionality).
• Suitable for small programming exercises 100 or 200 LOC but not for large s/w.
• Code soon becomes unfixable and unenhanceable.
• Development cost: high as compared to cost of properly specified and carefully designed
product.
• Maintenance can be difficult without specification or design documents.
Er. Shweta Rajput
• Early programmers used build and fix style as there were no other
techniques.
Design
Implementation
(Coding)
unit testing,
Integration and
system testing
Operation and
maintenance
Er. Shweta Rajput
Phase 1: Requirements analysis and specification
Aim:
1. to understand exact requirements of customer and to document them properly.
2. To develop SRS(software requirement specification) document, User involvement required
to design efficient end product.
3. SRS document: act as contract b/w developer and customer.
written in natural language, contains description of “What system will do without describing
how it will be done?”
4. Techniques: Brainstorming, questionnaire, GD, Survey, Interview etc.
• Software design is a process to transform user requirements into some suitable form, which helps the programmer in software coding and
implementation.
• software design may be as simple as a flow chart or text describing a planned sequence of events(pseudocode/algorithm).
• uses design methods like UML(Unified Modeling Language), ER and DFD.
• output of software design process is design documentation, pseudo codes, detailed logic diagrams, process diagrams, and detailed description of all
functional or non-functional requirements.
• Software design : process of defining software methods, functions, objects, and the overall structure and interaction of your code so that the resulting
functionality will satisfy your users requirements.
• sequence of steps that enables the designer to describe all aspects of the software for building.
• Here, overall s/w architecture is defined and high level and detailed design work is performed and this work is documented in form of SDD(s/w design
document).
• Software design is a creative activity in which you identify software components and their relationships, based on a customer’s requirements.
• if errors get unnoticed till later phases, it becomes more difficult to correct them.
Er. Shweta Rajput
Phase 3: Implementation
• Here design is implemented.
• If SDD is complete, coding phase proceeds smoothly (as all info.
needed by s/w developer is contained in SDD).
Merits:
1. Useful when requirements are well understood.
2. Same type project: If an organization has experience in developing accounting system then building new
accounting system based on existing design could be easily managed with waterfall model.
Limitations:
3. It expects complete and accurate requirements early in the process which is unrealistic. It assume all
requirements can be clearly defined during analysis phase.
4. Linear model, real projects are rarely sequential.
5. Assume requirements are stable, don’t change with time.
6. Documentation-heavy as too much documentation is being produced as part of project.
7. Working s/w is not available until late in process, so delaying discovery of serious errors.
8. Not covering risk-assessment.
9. Not suitable for accommodating any change(phase sequence can’t be altered).
Er. Shweta Rajput
3. Prototyping model
• Disadvantage of waterfall model:
Working s/w is not available until late in process, so delaying discovery of serious errors.
• Here aim is to 1st develop working prototype of s/w instead of developing actual s/w.
• Working prototype is developed as per current available requirements.
• Prototype: has limited functional capabilities, low reliability and untested performance.
• Developers then use this prototype to remove uncertainties in requirements , to refine requirements and
prepare clear, final specification document.
• Since working prototype has been reviewed and evaluated by customer so resulting SRS will be correct.
• Prototype may be usable program but code for prototype is thrown away(or sometimes reworked) as it’s
not suitable as final s/w product.
• Experience gained from developing prototype helps in developing actual system.
• Development of prototype might involve extra cost but overall cost might turn out to be lower than that of
an equivalent system developed using any other model like waterfall.
Er. Shweta Rajput
Aim: to determine customer’s real needs.
Prototype should be developed as early as possible to speed up s/w development process.
• After finalization of SRS document, prototype is discarded and actual system is then
developed using waterfall approach.
• Produces maintainable and good quality s/w
Disadv:
Requires extensive participation and involvement of customer which is not always possible.
Quick Design
(Prototype)
Design
Implementation and
unit testing
Implementation
Integration and Operation
Design And
system testing (Install)
Unit testing
Release-2
In 1st quadrant, starting point, we define objectives, alternatives, what are constraints?
Then we evaluate those alternatives and clearly identify the risks.
Based on these risks in 3rd quadrant of cycle, work on implementation, build development and
then in 4th quadrant, we will plan subsequent cycles after customer feedback.
1. Planning: determination of objectives, alternatives and constraints.
2. Risk Analysis: Analyse alternatives and attempts to identify and resolve risks involved.
Risk Analysis includes identifying, estimating, and monitoring technical feasibility and management
risks, such as schedule slippage and cost overrun.
3. Development: product development and testing product.
4. Assessment: Customer evaluation.
• During 2nd phase, more refined prototype is built, requirements are documented and validated after refinements and
customer are involved in accessing new prototype.
Requirements Construction
User description Cut-Over
Planning
2. User description:
Joint team of developers and users are constituted to prepare, understand and review requirements.
Team may use automated tools to capture information from other users.
3. Construction:
It combines detailed design, coding and testing phase of waterfall model. Here we release product to
customer. It may use code generators, screen generators and other types of productivity tools.
4. Cut-Over:
It incorporates acceptance testing by users, installation of system and user training.
Er. Shweta Rajput
Advantages:
1. User involvement may increase acceptability of product.
2. Development time of product may be reduced due to use of
powerful development tools. It may use CASE tools and framework
to increase productivity.
3. Quick initial views about product are possible due to delivery of
rapid prototype.
4. Highly specialised and skilled developers are expected.
1. Requirements
2. Development team
3. Users
4. Project type and associated risks.
2. Change requirements
Prototype, Spiral