Abstract A largely growing body of software development organizations implement process methodologies. Many of them are in the defense industry, which in the U.S. requires a rating based on 'process models' to obtain contracts. The international standard for describing the method of selecting, implementing and monitoring the life cycle for software is ISO 12207. A decades-long goal has been to find repeatable, predictable processes that improve productivity and quality. Some try to systematize or formalize the seemingly unruly task of writing software. Others apply project management techniques to writing software. Without project management, software projects can easily be delivered late or over budget. With large numbers of software projects not meeting their expectations in terms of functionality, cost, or delivery schedule, effective project management appears to be lacking. Organizations may create a Software Engineering Process Group (SEPG), which is the focal point for process improvement. Composed of line practitioners who have varied skills, the group is at the center of the collaborative effort of everyone in the organization who is involved with software engineering process improvement.
Table of Contents Introduction: 4 Part I 5 Waterfall model 5 Flow Diagram 5 Requirement Analysis 6 System Design 6 Code generation 6 Testing 6 Deployment 6 Maintenance 6 Advantages & Disadvantages 7 Factors 7 Agile Model (Crystal Model) 7 Crystal Methods 8 Commonality 8 Frequent delivery 8 Reflective improvement 9 Close or osmotic communication 9 Personal safety 9 Focus 9 Easy access to expert users 10 Technical environment with automated tests, configuration
Management, and frequent integration 10 Advantages & Disadvantages 10 Factors Web-Apps Model Client-side Server-side Advantages & Disadvantages 12 Factors 12 Note 13 Evaluation of software process model 13
11 11 11 11
Part II
14 Assignment Scenario 14 Selection & Explanation of Software Process Model 14 “WEB-APPS MODEL” 14 Server-side 14 Client-side 14 Reasons 14 Diagram 15 Conclusion 16
Introduction: A software development process is a structure imposed on the development of a software product. Synonyms include software life cycle and software process. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process. Process is a Series of predictable steps-a road map that helps create a timely and high quality entity.
Software Process is a framework for the tasks that are required to build high quality software Software Process Models: The strategy to adopt software engineering as a layered technology is referred to as Software Process Model. Software engineering Fields
Requirements analysis • Software design • Computer programming • Formal methods • Software testing • Software deployment • Software maintenance
Concepts
Data modeling • Enterprise architecture • Functional specification • Modeling language • Programming paradigm • Software • Software architecture • Software development methodology • Software development process • Software quality • Software quality assurance • Structured analysis
Orientations
Models
Software engineers
Related fields
Agile • Aspect-oriented • Object orientation • Ontology • Service orientation • SDLC Development models: Agile • Iterative model • RUP • Scrum • Spiral model • Waterfall model • XP • V-Model Other models: CMMI • Data model • Function model • IDEF • Information model • Metamodeling • Object model • View model • UML Kent Beck • Grady Booch • Fred Brooks • Barry Boehm • Ward Cunningham • OleJohan Dahl • Tom DeMarco • Edsger W. Dijkstra • Martin Fowler • C. A. R. Hoare • Watts Humphrey • Michael A. Jackson • Ivar Jacobson • Craig Larman • James Martin • Bertrand Meyer • David Parnas • Winston W. Royce • James Rumbaugh • Niklaus Wirth • Edward Yourdon Computer science • Computer engineering • Enterprise engineering • History • Management • Mathematics • Project management • Quality management • Software ergonomics • Systems engineering
Part I (A, B) 1. WATERFALL MODEL: Waterfall approach was first process model to be introduced and followed widely in software engineering to ensure success of project. This is also called as Classic Life Cycle Model or Linear Sequential Model or Waterfall Method. In waterfall model the phases are organized in a linear order. There are various variations of the waterfall model depending on the nature of activities and the flow of control between them. In a typical model, a project begins with feasibility analysis. On successfully demonstrating the feasibility of a project, the requirement analysis begins. The design starts after requirements analysis is complete, and coding begins after the design is complete. Once the programming is complete the code is integrated and testing is done. On successful completion of testing, the system is installed. After this, the regular operation and maintenance of the system takes place. In waterfall model, • • • • • •
The system can only move to the next phase when its previous phase is completed and perfected. Once you have completed a phase, its results are frozen. You can not go back and revise anything based on changing needs or fresh insights. Feedback loops exist between each phase. Each phase produces a document as its product. The output of each phase serves as input for the next phase of the model. Until the results of the current phase are complete and approved, you may not start on any work that properly belongs to the next phase.
FLOW DIAGRAM:
1. Requirement Analysis: All possible requirements of the system to be developed are captured in this phase. This is the most important step because it involves gathering information about what customer needs and defining, in the clearest possible terms, the development team visits the customer and studies their system requirements. Requirement Analysis is also know as feasibility study. The main purpose of requirement analysis phase is to find the need and to define the problem that needs to be solved.
2. System Design: In this phase, the whole software development process, the overall software structure and its outlay are defined. Analysis and Design are very important in the whole development cycle process. Any fault in the design phase could be very expensive to solve in the software development process. In this phase, the logical system of the product is developed.
3. Code generation: On receiving system design documents, the work is divided in units and actual coding is started. The system is first developed in small programs called units, which are integrated in the next phase. Typically, this step is performed by a development team consisting of programmers, interface designers and other specialists, using tools such as compilers, debuggers, interpreters.
4. Testing: As specified above, the system is first divided in units which are developed and tested for their functionalities. These units are integrated into a complete system during integration phase and tested to check if all units coordinate between each other and the system as a whole behaves as per specifications. After successfully testing the software, it is delivered to the customer.
5. Deployment: This step occurs once the product has been tested and certified as fit for use, and involves preparing the system or product for installation and use at customer site. Delivery may take place through internet or physical media.
6. Maintenance: This phase is virtually never ending phase. Generally, problems with the system developed (which are not found during the development life cycle) come up after its practical use starts, so the issues related to the system are solved after deployment
of the system. Not all the problems come in picture directly but they arise time to time and needs to be solved.
ADVANTAGES & DISADVANTAGES: Advantages • • • •
Model is simple and easy to explain to the user. Stages and activities are well defined. Helps to plan and schedule the project. Verification at each stage ensures early detection of errors.
Disadvantages • • • •
Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. The lifecycle can take so long that the original requirements may no longer be valid by the time the system is implemented. Estimating time and costs is difficult for each stage In this stage every phase requirements are freezed we can not do modifications.
FACTORS:
Security Risk management Flexibility Reliability Dependency Efficiency Integrity Availibility Consistency Transprency
(Mediam ) (Mediam) (Mediam) (Good) (High) (Poor) (Good) (Good) (Good)
2. AGILE MODEL (CRYSTAL MODEL): Crystal methods are a family of methodologies (the Crystal family) that were developed by Alistair Cockburn and sixteen other software engineers in 2001. The methods come from years of study and interviews of teams by Cockburn. Cockburn’s research showed that the teams he interviewed did not follow the formal methodologies yet they still delivered successful projects. The Crystal family is Cockburn’s way of cataloguing what they did that made the projects successful
Methodology, techniques and policies are differentiated between by Cockburn: • • •
Methodology - set of elements (e.g. practices, tools) Techniques - skill areas (e.g. developing use cases) Policies - dictate organizational musts
Crystal Methods: Crystal methods are focused on: • People • Interaction • Community • Skills • Talent • Communications Cockburn says that Process, while important, should be considered after the above as a secondary focus. The idea behind the Crystal Methods is that the teams involved in developing software would typically have varied skill and talent sets and so the Process element is not a major factor. Since teams can go about similar tasks in different ways, the Crystal family of methodologies are very tolerant to this which makes the Crystal family one of the easiest agile methodologies to apply.
Commonality: Between all the methods in the Crystal family, there are seven prevailing common properties. Cockburn found that the more of these properties that were in a project, the more likely it was to succeed. The seven properties are:
Frequent delivery Reflective improvement Close or osmotic communication Personal safety Focus Easy access to expert users Technical environment with automated tests, configuration management, and frequent integration.
Frequent delivery:
Frequent Delivery is the regular releasing of iterations of the software program. This idea comes from agile methodologies. Designers and developers decide what features to include in each release and they design and test for each release. Another point on this is that if the end users decide that the project does not do things the way they’d like it to be done, then steps can be taken to resolve this before it is too late.
Reflective improvement: Reflective improvement involves developers taking a break from regular development and trying to find ways to better their processes. Iterations help with this by providing feedback on whether or not the current process is working. With Crystal methods, the idea of teams holding “reflection workshop” meetings every couple of weeks is encouraged. These workshops help find processes that are and aren’t working well and help the team to modify them so that a strategy can be developed that works well for the team.
Close or osmotic communication: In Crystal Clear and the smaller of the Crystal methodologies, Osmotic Communication is used. Osmotic communication involves the team being together in a room and getting information to flow around it. With regards to larger teams (over 8 or so), where distraction can arise, Close Communication is used. The team must be in the same room for this to work. This is because if the developer has to break concentration to move somewhere else to ask a question then their thought process will probably be lost. By using this type of communication, information flows quickly throughout the team. Questions can be rapidly answered and all the team members know what is going on as well as having the ability to correct any misconceptions that may arise. Communication overhead is greatly reduced by using this type of communication. The need for email updates, extra documentation, etc is lowered. By having the team together, each member knows what the others are doing so they should be able to take over their team-mate's parts of the project if needed.
Personal safety: The people in the team must be able to trust each other and feel free to speak up about issues or whatever arises.
Focus: Focus in crystal refers to two things; firstly focusing on an individual task in a project for enough time that progress will be made and secondly, it refers to the direction of which the project is heading. Crystal defines two rules for dealing with issues that may interrupt focus. One is to set a two-hour period where the developer is to have no interruptions. The other
one is to assign a developer to a project for at least two days before being switched to another project. With the second meaning of focus, issues such as definition of goals are discussed. The definitions should be clear and the developers should know exactly what the goals of the project are. The project leader should prioritise the goals which will allow developers to focus on particular areas.
Easy access to expert users: This involves the developers working with a person of expertise in the project area so that the expert can answers any questions, suggest solutions to problems, etc. The expert user should be an actual/real-life user and not just a tester from the development team. The more involved the expert user is (in practical terms), the better since they would have more hands-on experience. The more time that the expert user can give will greatly help the overall project but this is not always feasible. There should be a minimum of a once a week, twohour meeting with the expert user, and the ability to make phone calls to the expert user too.
Technical environment with automated tests, configuration management, and frequent integration: The idea behind this is that there should be continuous integration and testing so that if any changes are made, then errors, breakages, etc can be spotted. Since this is done on a regular basis, problems are less likely to grow as they can be resolved earlier in the project.
ADVANTAGES & DISADVANTAGES: Advantages • •
It’s always cheaper and faster to communicate face-to-face. As feedback and communication become more efficient the need for intermediate work products is reduced . Team members not on the critical project path can spend their excess time improving the product or helping people who are on the critical path.
•
Disadvantages • • •
As methodologies become more formal teams become weighed down and have trouble adapting to project work vagaries. As projects grow in size, teams become larger and methodologies become heavier. As projects grow in criticality some degree of formality will need to be introduced in parts of the methodology.
FACTORS:
Security Risk management Flexibility Reliability Dependency Efficiency Integrity Availibility Consistency Transprency
(High ) (Good) (High) (V.Good) (Poor) (High) (High) (V.Good) (V.Good) (Good)
3. WEB-APPS MODEL: WebApps must be designed and implemented in a manner that accomodeates a variety of environmnets on both server-side and the client-side.
Server-side: The sever-side hosts the WebApp and all related system features that enable multiple multiple users to gain access to the WebApp via a network.
Client-side: The client-side provides a software environment e.g. browers that enables end-users to interact with the WebApp on the user’s desktop. • • • • • •
The WebApp can reside on a server that provides access via the internet, an intranet or an extranet. Server hardware and operating system enviornment must be specified.In addition interoperability considerations on the sever-side should be considered. If the WebApp must access a large database or interoperate with corporate applications that exist on the server side, appropiate interfaces, communication protocols and related collaborative information must be specified. Client server software provides the infrastructure that enables access to the WebApp from the user’s location. In general, browser software is used to deliver the webapp content and functionality that is downloaded from the server. Although standards do exist, each browser has its own peculiarities. For this reason, the WebApp must be thoroughly tested within every browser configuration that is specified as part of configuration model. In some cases, the configuration model is nothing more than a list of server-side and client-side attributes.
•
However , for more complex webApps, a variety of configuration complexities (e.g. distributing load among multiple servers, caching architectures, remote databases, multiple servers serving various objects on the same webapp) may have an impact on analysis and design.
ADVANTAGES & DISADVANTAGES: Advantages Its can manages the risk when ever it occours because if there is some problem it can use its backup to recover itself. This system s also reliabile at any time. Al the data that it can manuplate must have integrity. Software provides availibility of data at any time. Data that it holds should be consistent. Security is one of the big assuse of any thing, so it can use different types of protocols like PAP, CHAP etc or any other encryption technique over the network when send or receive data.
Disadvantages
Have a high cost to develop or purchase. System is not flexible . It should have server / client setup. It uses at enterprise level not for small level. It only uses multinational companies.
FACTORS:
Security Risk management Flexibility Reliability Dependency Efficiency Integrity Availibility Consistency Transprency
(High ) (V.Good) (Normal) (V.Good) (Poor) (High) (High) (High) (V.Good) (Good)
Note: There are many other software models which are not discussed at here but there names are mention as following
Linear Sequential model Prototyping model RAD (Rapid Application Development) model Incremental model CMMI Spiral model etc
(C) Evaluation of software process model (SPM) by using the specified criteria Factors and their Scorecard Models WATERFALL MODEL AGILE MODEL WEB-APPS MODEL
(Low)1 2 3 4 5(High)
Securi Risk Flexibility Reliability Efficiency Integrity management ty
Availibility
Consistency
3
4
3
2
2
2
2
3
5
3
5
4
5
5
4
4
5
4
3
5
4
5
5
4
Patr II: Assignment Scenario: There is an organization XYZ which have many branches in many countries and with in the country. They want to develop software which integrates all the branches via internet. Branches communicate with each other through this software which is a web based application. It has been decided by the owner of the organization that the entire project will be outsourced. Therefore, the XYZ organization Project Manager has asked software development companies to submit technical bids for the project. The technical bid must contain details of the software process model(s) and process model strategies that will be employed by the software development company. The software development company will be responsible for all aspects of the project.
Selection & Explaintion of Software Process Model: “WEB-APPS MODEL”: WebApps must be designed and implemented in a manner that accomodeates a variety of environmnets on both server-side and the client-side.
Server-side: The sever-side hosts the WebApp and all related system features that enable multiple multiple users to gain access to the WebApp via a network.
Client-side: The client-side provides a software environment e.g. browers that enables end-users to interact with the WebApp on the user’s desktop.
Reasons: We have select this software model because of the following points. It has a component, which consumes, produces or transforms data. It enables anonymous collaboration among parts It facilitate an intuitive way of designing interactive web applications via visually drawing flow of screens using VSCB This model have High level view, Clear Architecture and Clear responsibilities It allows make use of this approach by representing flow of screens as parts and connections. It allows visualization of the pattern of software, facilitate natural way of thinking and improves product architecture It demonstrate flexibility of Visual Component Based Development with VSCB
It prove the efficiency of the VSCB approach for design and development of the interactive applications It develop a prototype e-commerce web application using VSCB. It enhance the VSCB development platform with appropriate parts and tools. It is one of the best technology through which we have to make web application where cilent and server works This system approches security, transprency, accuracy, flexibility, and reliability in effeciant way at run time. Different tools and approches use to make such softwares like J2EE, J2SE, Netbeans, .NET Framework, Asp.net, PHP and many more.
Diagram:
More over we can use more technique to make such like this system which are
URL – Unified Resource Locator MVC – Model View Controller XML - Extensible Markup Language GUI – Graphical User Interface
Conclusion There are a variety of process models, each of which can be used successfully. Once a process model has been used to develop a system, documentation style, organisation and structure should either remain in the format of that process model, or all be converted to a different process model. This is particularly important where automated tools are used.