The document discusses software engineering paradigms, challenges and process models. It describes the basics of software development methodologies and two views of software development: traditional techniques and object-oriented methodologies. It also explains concepts like software processes, paradigms, process models including waterfall model and evolutionary development approach.
The document discusses software engineering paradigms, challenges and process models. It describes the basics of software development methodologies and two views of software development: traditional techniques and object-oriented methodologies. It also explains concepts like software processes, paradigms, process models including waterfall model and evolutionary development approach.
A software development methodology is a series of processes like System Analysis Modeling
Design
Implementation
Testing and Maintenance
that leads to the development of an application.
1/30/2024 Basics of software engineering 2
Two Orthogonal views of Software There are two orthogonal views of software development.
1) Traditional Technique – focuses on data and functions.
2) Object Oriented methodologies – focuses on objects that
combines data and functionality.
1/30/2024 Basics of software engineering 3
Object oriented systems development develop software by building objects that can be easily replaced, modified and reused. Objects has attribute (data) and methods (functions).
Object Oriented systems are
Easier to adapt to changes Easier to maintain Promote greater design and code reuse Creates modules of functionality
1/30/2024 Basics of software engineering 4
Software Process Software process is a set of activities that leads to the production of a software product. Increasingly, new software is developed by extending and modifying existing systems and by configuring (organizing) and integrating off-the- shelf software or system components. Software processes are complex and , like all intellectual(logical) and creative processes rely on people making decisions and judgments. Because of the need for judgment and creativity , attempts (challenge) to automate software processes have met with limited success. There is no ideal process that can fit to all types of software system development. Processes have evolved(developed) to exploit(use) the capabilities of the people in an organization and the specific characteristics of the system that are being developed.
1/30/2024 Basics of software engineering 5
What is paradigm/approach The following are some of the definitions: “model”, “example” or “pattern” “an example that serves as pattern or model” “a model of something which explains it(the thing to be explained) or shows how it can be produced” paradigms are models for solving class of problems (architectural, interaction, design and so on) “paradigm refers to a set of related concepts which are used by a person to perceive(see) the real world or a part of it”. From S/E and modeling point of view “a conceptual framework for a scientific discipline; a set of assumptions, methodologies, and objectives that determine a scientific investigation”. Sc.P
Basics of software engineering 6
The software process paradigms/models Software process model is an abstract representation of a software process. Each process models represents a process from a particular perspective , and thus provides only partial information about that process. The generic models are not definitive(best) descriptions of software process. Rather they are abstractions of the process that can be used to explain the different approaches to software development. We can think of them as a process frameworks(supporting structure) that may be extended and adapted to create more specific software engineering processes. 1/30/2024 Basics of software engineering 7 The Most Widely Used Generic Process Models Are The waterfall model: this takes the fundamental process activities of specification, development, validation and evolution and represents them as the separate process phase.
Evolutionary development: this approach interleaves the
activities of specification, development and validation. An initial system is rapidly developed from abstract specification Then refined(developed) with customer input to produce a system that satisfies the customer’s needs.
1/30/2024 Basics of software engineering 8
Component based software engineering: this approach is based on the existence of a significant number of reusable components. These system development process focuses on integrating these components into a system rather than developing them from the scratch.
These generic models are not mutually exclusive
(commonly ristrected)and are often used together , specially for large systems development.
1/30/2024 Basics of software engineering 9
The Waterfall Model It is so named because it can be graphically modeled (represented) as a cascade from establishing requirements, to design , to program implementation, to system test, to release to customer. The main stages of the model map to fundamental development activities. In principle the result of each phase is one or more documents that are approved and the following phase should not start until the previous phase finished.
1/30/2024 Basics of software engineering 10
1/30/2024 Basics of software engineering 11 But in practice these stages overlap and feed information to each other. The stages in waterfall includes Requirements definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance
1/30/2024 Basics of software engineering 12
Because of the cost of producing and approving documents, iterations are costly and involve significant rework. As a result premature(early) freezing of iterations occur. This method might work satisfactorily if design requirements could be perfectly addressed before flowing down to design, and if the design were perfect when program implementation began, and if the code were perfect before testing began, and if testing guaranteed that no bugs remained in the code before the users applied it, and of course if the users never changed their minds about requirements.
1/30/2024 Basics of software engineering 13
Pros and cons of the waterfall model Advantage Documentation is produced at each phase and that it fits with other engineering process models. Disadvantages Its inflexible partitioning of the project into distinct stages. Requires commitment (risponsiblity)during requirement elicitation.
1/30/2024 Basics of software engineering 14
1/30/2024 Basics of software engineering 15 Evolutionary approach • Evolutionary development is based on the idea of developing an initial implementation, exposing(explain) this to the user comment and refining it through many versions until an adequate system has been developed. • Specification , development and validation activities are interleaved rather than separate, with rapid feedback across activities. • As a result, these approach is often more effective than the waterfall approach in producing systems that meets the immediate needs of customers.
1/30/2024 Basics of software engineering 16
1/30/2024 Basics of software engineering 17 The two fundamental types of evolutionary development are Exploratory development The objective of Incremental/Exploratory development is to deliver a working system to end users. This means that you should normally start with the user requirements that are best understood and that have the highest priority. Lower priority and vague requirements are implemented when and if the users demand them. Throwaway prototyping The objective of throw away prototyping is to validate or derive the system requirements that are not well understood because you need to find out more about them. Requirements that are straight forward may never need to be prototyped. For large systems it is recommended to combine the best features of waterfall and evolutionary development approaches. 1/30/2024 Basics of software engineering 18 Pros and cons of evolutionary development approach Advantages Accelerated delivery of customer services: early increments of the system can deliver high priority functionality so that customers can get value from the system early in its development . Customers can see their requirements in practice and specify changes to be incorporated in the later releases of the system. User engagement with the system: users of the system have to be involved in the incremental development process because they have to provides feedback to the development team on delivered increments. Their involvement does not just mean that the system more likely to meet their requirements; It also means that the system end users have made a commitment to it and are likely to want to make it 1/30/2024 work. Basics of software engineering 19 Disadvantages Management problems: software management structures for large systems are set up to deal with a software process model that generates regular deliverables to assess progress. Contractual problems : the normal contractual model between the a customer and a software developer is based around a system specification. Validation problems Maintenance problem: continual change tends to corrupt the structure of any system. This means that anyone apart from the original developers may face difficulty to understand the system.
1/30/2024 Basics of software engineering 20
Component based approach component is an independent software unit that can be composed with other components to create a software system This reuse-oriented approach relies(depend on) on a large base of reusable software components and some integrating framework for these components. Sometimes these components are systems on their own right or commercial off the shelf systems that may provide specific functionality. CBSE is the process of defining, implementing and integrating or composing loosely joined independent components into systems. It is driven by determined increased size and complexity of systems Increased demand of more dependable software's The need of faster delivery. 1/30/2024 Basics of software engineering 21 Essentials of CBSE Independent components must exist Component standard that facilitate the integration of components Middleware that provides software support for component integration These generic reuse-oriented approach has the ff stages Requirement specification Component analysis Requirement modification System design with reuse Development and integration
1/30/2024 Basics of software engineering 22
1/30/2024 Basics of software engineering 23 Inherent(natural) Problems of CBSE Component trustworthiness Component certification Emergent property prediction Requirement trade-offs Advantages Reducing the amount of software to be developed and so reducing cost and risk. Faster delivery of the software Disadvantages Requirement compromise that leads to a system that do not meet the real needs of the users. Control over evolution of the system is lost. 1/30/2024 Basics of software engineering 24 Agile methods These method allows the development team to focus on the software itself rather than on its design and documentation . Agile methods universally relay on an iterative approach to software specification, development and delivery, and were designed primarily to support business application development where the system requirements usually changed rapidly during the development process. They are intended to deliver working software quickly to customers, who can then propose new and changed requirements to be included in later iterations of the system.
1/30/2024 Basics of software engineering 25
1/30/2024 Basics of software engineering 26 Principles of agile methods Customer involvement:- customers should be closely involved through the development process. their role is provide and prioritize new system requirements and to evaluate the iterations of the system. Incremental delivery:- the software is developed in increments with the customer specifying the requirements to be included in each increment. People not process:- the skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes. Embrace change:- expect(wait for) the system requirements to change, so design the system to accommodate( contain ) these changes . Maintain simplicity:- focus on simplicity in both the software being developed and in the development process. Wherever possible , actively 1/30/2024 work to eliminate complexity from the Basics of software engineering 27 Challenges of software engineering Heterogeneity: Developing techniques for building software that can cope (deal with)with heterogeneous platforms and execution environments; Delivery : Developing techniques that lead to faster delivery of software; Trust: Developing techniques that demonstrate that software can be trusted by its users.