unit -2 software design process -anudeep

Software design is a process of problem solving and planning for a  software  solution. A software design may be platform-independent or platform-specific, depending on the availability of the technology called for by the design.

Software design can be considered as putting solution to the problem(s) in hand using the available capabilities. Hence the main difference between Software analysis and design is that the output of the analysis of a software problem will be smaller problems to solve and it should not deviate so much even if it is conducted by different team members or even by entirely different groups. But since design depends on the capabilities, we can have different designs for the same problem depending on the capabilities of the environment that will host the solution (whether it is some OS, web, mobile or even the new cloud computing paradigm). The solution will depend also on the used development environment (Whether you build a solution from scratch or using reliable frameworks or at least implement some suitable design patterns)

Software design plays an important role in developing software: it allows software engineers to produce various models that form a kind of blueprint of the solution to be implemented. We can analyze and evaluate these models to determine whether or not they will allow us to fulfill the various requirements. We can also examine and evaluate various alternative solutions and trade-offs. Finally, we can use the resulting models to plan the subsequent development activities, in addition to using them as input and the starting point of construction and testing.


software design consists of two activities that fit between software requirements analysis and software construction:

  • Software architectural design (sometimes called top-level design): describing software’s top-level structure and organization and identifying the various components
  • Software detailed design: describing each component sufficiently to allow for its construction.


A number of key issues must be dealt with when designing software. Some are quality concerns that all software must address – for example, performance. Another important issue is how to decompose, organize, and package software components




Acronym for FREE OPEN SOURCE SOFTWARE. (FOSS) programs are those that have licenses that allow users to freely run the program for any purpose, modify the program as they want, and also to freely distribute copies of either the original version or their own modified version.

The FOSS-Cloud is a Software, which enables you, to build your own Privat- or your Public-Cloud!

The FOSS-Cloud (FOSS-Cloud software and hardware) is an integrated and redundant server infrastructure to provide cloud services, Windows or Linux based SaaS-, Terminal Server-, Virtual Desktop Infrastructure (VDI) or virtual server environments. It makes virtual machines available, which can be accessed from internally as well as from the Internet. FOSS-Cloud covers all of the aspects of an Open Source IT environment. The FOSS-Cloud is the most advanced Open Source Cloud. There is a natural synergy between free open source software and cloud computing.FOSS-Cloud is a pure Open Source solution, it is licensed under the EUPL and is available on the sourceforge.net.


Its features are mainly

  • Full integration into existing Windows and Linux environments
  • Cloud for server- and desktop virtualization
  • Powerfull virtualization for Windows and Linux 32/64bit
  • Published Desktop
  • Persistent virtual machines including session transfer to other devices
  • Dynamic desktop with Golden Image to serve user groups
  • Application streaming
  • Published application support with RDS
  • Video streaming






EVERY  METHOD  we use is to prevent and find bugs leaves a residue of subtler bugs against which those methods are ineffectual.

TESTING alone will not gurantee to make software better complexity barrier states.software complexity grows to limit of our ability to manage that complexity

By  eliminating easy bugs you allowed another escalation of features &complexity,but this time you have subtler bugs to face ,just to retain reliability you had before.

If a failure occour during prelimnary testing &code is changed software may now work for testCase that is didn’t work previously.But its behaviour on pre-error test case is passedbefore can no longer be guaranteed.

Software bugs will almost exists in any software module with moderate size,not because programmes are careless or irresponsible but because complexity of software is generally intraceble and human have only limited ability to manage complexity.

SO by this we can conclude that SOFTWARE TESTING is process of executing a program or system

Intent of finding error.software is unlike other physical where input are received  and output are

Produced.SO detecting all different failure mode for software is generally infeasible.


unit -3 distributed development

A distributed development project is a research & development  project that is done across many business worksites or locations. It is a form of R&D where the project members may not see each other face to face, but they are all working collaboratively toward the outcome of the project. Often this is done through email, the Internet and other forms of quick long-distance communication.

Distributed Development is a methodology that leverages a common development environment to promote reuse of services, code, processes and technologies and industry best practices adoption for MHS Automated Information Systems (AIS).  To accomplish this, the PEO Joint Medical Information Office Distributed Development team is organizing a series of working group sessions to define System Development Life Cycle (SDLC) activities and underlying tasks and to develop standardized toolkits. The result of this effort will promote reuse throughout the enterprise, increase the speed to market, and reduce overall cost.

The overall approach is to work with all stakeholders as a team to

  • Develop an MHS team product
  • Involve wide participation by all interested organizations
  • Develop a shared solution

In Distributed Development, employees work from various locations and worksites. Through the use of email, the internet, and other communication devices, in this day and age, Distributed Development has become a very popular method of bringing people together on a range of projects. This method is different from outsourcing and subcontracting, where the company pays others to produce work for them. Rather in the Distributed Development model, team members are employees of the company that owns the project. If you want to see a clear cut case of success in Distributed Development, then take a look at the story of how Stack Overflow was created, and see how it affected the overall project. Distributed Development is also a well-known word around companies like Microsoft, whose reach is global and because of this, practical Distributed Development becomes essential to the survival of globally reaching projects.


Fake Rational process

This concept of Faking of rational process was first proposed by David  L Parnas and Paul C. Clements

The rational way of designing a software is impossible.One can try for rational way of developing software but to acheive it is impossible.There are reasons for inability to      develop a software using rational process.one cannot be a perfect with his requirements to develop a software.

The below given are the 2 ways of approaching to develop a software



rational process: here every phase of software development is done in an rational way i.e   every phase of software development is done in an systematic way.

ideal process:here  every phase of software development is done by deriving and duplicating some of the earlier designed softwares

To become a perfect in developing a software using a rational way , it is required to know what is to be developed,what are the requirements to develop,how to implement the the various phases of software development.

Undoubtedly rational way of developing the software is better  But practically  it  is  impossible to meet the above criteria.we can develop the software  idealy  but  not  in  rational way.duplicating of rational process is not impossible but difficult  but mere getting of perfect rational way of developing software  is highly impossible and striving to acheive rational way of software development is useless