Web Engineering is the application of systematic, disciplined and quantifiable approaches to development, operation, and maintenance of Web-based applications. Web Engineering is neither a clone, nor a subset of software engineering, although both involve programming and software development. The need for Web Engineering is felt according to perceptions of the developers and managers in the early stages of Web development.
Web Engineering is the application of systematic, disciplined and quantifiable approaches to development, operation, and maintenance of Web-based applications. Web Engineering is neither a clone, nor a subset of software engineering, although both involve programming and software development. The need for Web Engineering is felt according to perceptions of the developers and managers in the early stages of Web development.
Web Engineering is the application of systematic, disciplined and quantifiable approaches to development, operation, and maintenance of Web-based applications. Web Engineering is neither a clone, nor a subset of software engineering, although both involve programming and software development. The need for Web Engineering is felt according to perceptions of the developers and managers in the early stages of Web development.
1.1 Web Engineering. 1.2 Software Processes 1.3 Software Methodologies 1.4 Iterative and Incremental Software Development 1.5 Agile Methodologies
1.1 Web Engineering
Web Engineering is the application of systematic, disciplined and quantifiable approaches to development, operation, and maintenance of Web- based applications. It is both a pro-active approach and a growing collection of theoretical and empirical research in Web application development. Web engineering is multidisciplinary and encompasses contributions from diverse areas: systems analysis and design, software engineering, hypermedia/hypertext engineering, requirements engineering, human-computer interaction, user interface, information engineering, information indexing and retrieval, testing, modelling and simulation, project management, and graphic design and presentation. Web engineering is neither a clone, nor a subset of software engineering, although both involve programming and software development. While Web Engineering uses software engineering principles, it encompasses new approaches, methodologies, tools, techniques, and guidelines to meet the unique requirements of Web-based applications. (KT1)
Need for Web Engineering:
The need for Web Engineering is felt according to perceptions of the developers and managers In the early stages of Web development. 1. Web Developers Experience, New Technologies 2. Characteristics and Complexity of Web Applications 3. Multidisciplinary Nature of Web Development
1.2 Software Processes
Process is a framework for the tasks that are required to build high-quality software. A software process is a structured set of activities required to develop a software system. Real software processes are inter-leaved sequences of technical, collaborative and managerial activities with the overall goal of specifying, designing, implementing and testing a software system. Process Activities: Software specification - the functionality of the software and constraints on its operation must be defined. Software development the software to meet the specification must be produced. Software validation the software must be validated to ensure that it does what the customer wants. Software evolution the software must be evolved to meet the changing requirements of customers. Process Models: The process model is a description of a software process. Model is an abstraction (summary) of the actual process. Process model may include activities which are part of software process, software product and role of people involved in software engineering. Types of software process models: A workflow model. This shows the sequence of activities in the process along with their inputs, outputs and dependencies. The activities in this model represent human-actions. A dataflow model/ Activity model. This represents the process as a set of activities each of which carries out some data transformation. It shows how the input to the process is transformed to an output. A role/action model. This represents the role of the people involved in the software process and the activities for which they are responsible. General process models: 1. Build & Fix Model 2. Waterfall Model (Linear Sequential Model) 3. Evolutionary Models Prototyping Model Spiral Model 4. Incremental Models Iterative Model RAD Model 5. Unified Process Model (KT2)
1.3 Software Methodologies
Software development methodology (also known as a system development methodology, software development life cycle, software development process, software process) is a splitting of software development work into distinct phases (or stages) containing activities with the intent of better planning and management. It is often considered a subset of the systems development life cycle. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application. Common methodologies include waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, extreme programming and various types of agile methodology. Some people consider a lifecycle "model" a more general term for a category of methodologies and a software development "process" a more specific term to refer to a specific process chosen by a specific organization. For example, there are many specific software development processes that fit the spiral life-cycle model. 1.4 Iterative and Incremental Software Development Iterative and incremental software development is a method of software development that is modeled around a gradual increase in feature additions and a cyclical release and upgrade pattern. Iterative and incremental software development begins with planning and continues through iterative development cycles involving continuous user feedback and the incremental addition of features concluding with the deployment of completed software at the end of each cycle. It is one of the methodologies of Agile software development, rational unified process and extreme programming. Iterative and incremental development is a discipline for developing systems based on producing deliverables. In incremental development, different parts of the system are developed at various times or rates and are integrated based on their completion. In iterative development, teams plan to revisit parts of the system in order to revise and improve them. User feedback is consulted to modify the targets for successive deliverables. Iterative and incremental software development came about in response to flaws in the waterfall model, a sequential design process in which progress flows steadily downwards. It differs from the waterfall model because it is cyclical rather than unidirectional, offering a greater ability to incorporate changes into the application during the development cycle.
Iterative and incremental development can be grouped into the following phases:
Inception Phase: Deals with the scope of the project, requirements and risks at higher levels
Elaboration Phase: Delivers working architecture that moderates risks
identified in the inception phase and satisfies nonfunctional requirements
Construction Phase: Fills in architecture components incrementally with
production-ready code, which is produced through the analysis, implementation, design and testing of functional requirements
Transition Phase: Delivers the system to the production operating environment
1.5 Agile Methodologies
Agile Methodologies is a disciplined project management with frequent inspection and adaptation. That encourages teamwork, self-organization and accountability. Testers will need to have an understanding of agile as a whole, but will also need to learn how to adapt their current approach to work within agile efforts. Principles of agile: - Highest priority is to satisfy the customer through early and continuous delivery of valuable software. - Welcome changing requirements, even late in development. - Deliver working Software Frequently Business people and developers must work together daily through out the project. - The most efficient and effective method of conveying information to and within the development team is face to face conversation. - Working Progress is primary measure of progress Collaborative team work. - Simplicity the art of maximizing the amount of work not done is essential. - The reflection of team should become more effective, to tune and adjust their behavior accordingly. METHODOLOGIES - eXtreme Programming (XP) - Scrum - Evolutionary Project Management (Evo) - Unified Process (UP) - Crystal - Lean Development (LD) - Adaptive Software Development (ASD) - Dynamic System Development Method (DSDM) - Feature Driven Development (FDD)