Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / NewStats: 3,150,496 members, 7,808,836 topics. Date: Thursday, 25 April 2024 at 05:43 PM |
Nairaland Forum / Science/Technology / Programming / In Search Of "that" Software Development Methodology (7472 Views)
Difference Btw Software Development Approach And SW Devt Methodology / Web Vs Software Development (2) (3) (4)
(1) (2) (3) (4) (Reply) (Go Down)
Re: In Search Of "that" Software Development Methodology by delomos(m): 12:41pm On Mar 04, 2012 |
csharpjava:^^ don't forget I'm asking talking specifically about a SMALL WEB SOFTWARE COMPANY. That said, so a client is more interested in certification than a functionally working software? #1. Yes, one can spend some money and get certified and fall short with developing with time (just like all those folks that take certification classes, and can't function in the real world). Not to mention that agiling is just recently being mainstream (at least comparable to waterfall) #2. I don't know. Ghenghis:. #1. See my #1 point above #2. Code monkey is actually not a complement (or a synonym for a developer), it's used here in the context of: "if you put enough monkeys behind a type-writer, they'd write a Shakespeare, " Now, re-read my comment in that context. 3. Even in the world of web programming, it's hardly one it's starting from scratch (contrary to what @logica opined). In small companies (and most agile companies), the pattern is to have a project manager(defining the big picture and being the client liaison), few developers (who are the architects and implementors) and QAs (sometimes, the PM can double as this, depending on the flow). |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 1:02pm On Mar 04, 2012 |
delomos:Hmm, I get your point. The original waterfall model is great, but for science projects, Defense contracts etc. Business projects rarely have that level of requirements maturity. Hence the failure of "waterfall" to meet their requirements. There are many methodologies that work well though, beyond agile. Microsoft used Spiral quite successfully, delomos: The way you have procurement rules in the public sector , there are sometimes very strict rules on those who can bid for certain kinds of contracts. CMM used to be a criteria. Sometimes , it could be number of employees , >100,000. Also how to do you judge, a capability of another party ? Its generally through 3rd party certification ( 6 sigma, CMMI, etc , ) So certifications matter. And yes client needs to also look beyond certification sometimes (But its a good door opener) Those certs are not easy to achieve, they require so much discipline. I worked for a coy that had all the resources, but simply didn't have the discipline to achieve CMM certification. delomos:Yes i know you didn't use it as a complement. I felt you used it to signify that a lot of though was not required of code monkeys. I beg to differ , |
Re: In Search Of "that" Software Development Methodology by delomos(m): 4:16pm On Mar 04, 2012 |
Ghenghis:Do you mean to say? requirement specification complexities/acceptance? "Maturity?" I disagree. Ghenghis:^^ummm, finally explains why Windows 95, ME, and Vista sucks. To be fair though, Microsoft definitely put the business of software on the map ( to which some computing purist are still rather displeased) and mostly due to great marketing, super great marketing. (I'd recommend you watch the movie, 'Revolution OS', super great movie: http://video.google.com/videoplay?docid=7707585592627775409) Ghenghis:^^I'm starting to think, maybe that why much [computing] innovation is not coming from our side of the world. We're "trusting the men in white coats" too much. Yes, there is the question of a certification filtering out the feeble but does it really? Again, "working software over process(es)". It's almost very similar to reading to pass the test than to understand (that is prevalent in our educational system). If i propose to my new clients that: "I solved this, this and that problem for Client X, where is our portfolio". Is that a reasonable proposition than, we are blah, blah, blah certified ? Ghenghis:^^^why, ? super small footnote: it's a delight to finally see "men" talking in this section, thanks guys |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 6:32pm On Mar 04, 2012 |
delomos:Windows 95 suck ? Hmm that was the OS that defined what a desktop OS should be , ME and VISTA were bloatware (ME especially), Vista was just Window 7 beta. If you want to hear about software development, research windows 3.1 etc. Back then MS was making computers do things that chip makers hadn't dreamt of. MS were hacker back then, they really pushed the limits of x86. I'm not really an MS fan, but I'm sure there's no OS with as much appeal and backward compatibility as Windows (Note i'm not saying its the best, but it has the highest number of programs working on the planet). delomos:God forbid, but If a loved one were on a life support system or lets say space shuttle; who would you rather have develop the code the one with more processes than software or the code guru that can "develop an e-commerce site overnight". People talk about enterprise software all the time. Its not the size of the code that makes it enterprise class its the breadth of its adoption. When you develop a "simple" app to allow customers debit their account and credit another one : The number of things that can go wrong are so many, its sometimes mind boggling. When i write (or i'm supposed to write) code sometimes, I just sit and keep thinking. No matter how smart or good you are we all make mistakes, every line of code you write is a potential bug. So there no point rushing, Its a question of picking the one that'll have the smallest negative impact. |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 10:38pm On Mar 04, 2012 |
Ghenghis: Making sure there are no bugs in life, mission and business critical software like the one you've mentioned above requires yet another Software Development Methodology called the Vienna Development Methodology. You can follow this link to find out more about it: Vienna Development Method What I have learnt so far about VDM has made me to realise that the kind of software you want to develop will detemine the practices and processes you have to follow before you begin to write any code. |
Re: In Search Of "that" Software Development Methodology by delomos(m): 5:28am On Mar 05, 2012 |
Ghenghis:After you've watched that movie, in the previous post, rethink ^^this point. Microsoft actively worked (and still working) to kill the hacker-culture. Do you know the amount of pressure MS had before they could even open-source MVC.NET? Jezz , Ghenghis:^^ and if I may ask, is there any companies writing space shuttle or life support code in Nigeria? Please stay in context. Ghenghis:^^ I honestly don't get your point here, yes, no software can be bug-proof, you make compromises. But how do you know the one with the "smallest negative impact" when you're developing software for "enterprise" (what does that word even mean in this context). csharpjava:I see you're a fan of terminologies (perhaps archaic it seems), see this link (quite an interesting review of the book 'Design Patterns: Elements of Reusable Object-Oriented Software', the punch lines are in the comments): http://www.amazon.com/review/R1YW4R3VD4PBEJ/ref=cm_cr_dp_perm?ie=UTF8&ASIN=0201633612&nodeID=283155&tag=&linkCode= |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 6:57am On Mar 05, 2012 |
delomos:Yeah, my point is an organization needs process maturity amongst other things to be able consistently perform. Many customers (Nigeria included) look for organizations with huge reputations to deliver their critical systems(It doesn't have to be life critical, say time critical). delomos:Even the most innocuous looking code is susceptible to abuse, so a developer has the responsibility to weight the odds and decide. For instance, when would you use an Array instead of a Map ? You have to weight the consequences of using either in your current context. But you also consider contexts outside the current. Also Regarding enterprise: post a very short snippet of code(hope its java) here and we'll analyze that.(Got to get to work now ). delomos:Saw the Amazon dis of GOF patterns, the book is not the most explanatory but it brought patterns into the mainstream. Its easy for the poster to say that now, go back to 1994 when the book was written, it wasn't that much common place. Also patterns are not new code, its consistency in handling common problems. So its not meant to be innovative per se , That's my response to the Amazon poster, but I get your point about Vienna , |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 1:54pm On Mar 05, 2012 |
delomos:The fact the an organisation develops software for its clients is no guarantee that they are following the proper practices and processes of the software methodologies that are available, the only way they can show their clients and themselves that they are doing the right thing is through PCMM or CMMI certification. You cannot compare people who take IT certifications to this one, the people who take IT certifications are meant to have had 2 or more years experience in that area of certification, but because some people just take these IT certifications without experience in IT is the reason why you feel they are irrelevant. I also mentioned Vienna Development Methodology because if you write high integrity software for banks, life support machines, aeroplanes, rockets, cars and so on, then it is a must you must use one of the Formal Methods in software engineering of which the Vienna Development Methodology is one. Since this thread is about "Software Development Methodology", I find it impossible not to bring in those terminologies I have been using, as they are essential in order for an organisation to develop high quality software on time, without bugs and within bugget. Also in order for organisations to develop usable software they have to use one of the Non-Functional Usability Methodologies, one of which is Usage Centered Design. Design Patterns are a way to avoid developing software from scratch, developing application from scratch can be very expensive. Design patterns enable large-scale reuse of software architectures and also help to document systems. It is similar to a recipe, you will find it quicker to make a special meal from a recipe than for you to come up with a new way of making that meal from scratch. When you design your class diagrams you are making use of design patterns as you do not create all the classes from scratch, that is why you use inheritance and interfaces. Design parterns are not archaic, they are now being used in: Project management, Organisation structures, Requirements analysis, System design, General modelling approaches and Programming. If your client can afford it and you have all the skills and resources then you can follow the software tradition that the best way to serve the user/customer is by building each new system from scratch. |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 2:38pm On Mar 05, 2012 |
csharpjava: I don't really agree with all of this : Design patterns does not provide an alternative for development from scratch. Its not also not strictly an API or code base, though some vendors implement the pattern in there API. using class diagrams not not using design patterns. Software design Patterns are a common, identifiable set of recommended solutions to a set of commonly recurring software development challenges. Its the common ones that are implemented in code like Singleton, Observer, Proxy, Memento, Command (used by a lot of UI frameworks like struts or jsf), . Others you implement yourself : e.g. Factory, Strategy, Facade etc. |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 4:03pm On Mar 05, 2012 |
Ghenghis: I don't agree with you also. Design patterns are used in class diagrams. I have listed some of the benefits of design patterns. Benefits of Design Patterns • Design patterns enable large-scale reuse of software architectures and also help document systems • Patterns explicitly capture expert knowledge and design tradeoffs and make it more widely available • Patterns help improve developer communication • Pattern names form a common vocabulary |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 6:11pm On Mar 05, 2012 |
csharpjava: I wanted to look for a supporting references and voila wiki : http://en.wikipedia.org/wiki/Software_design_pattern A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. So patterns are formalized best practices that you must implement yourself in your application.[1] Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. http://www.vogella.de/articles/DesignPatterns/article.html A design pattern is not framework and is not directly deployed via code. And Finally : http://www.cincomsmalltalk.com/userblogs/ralph/blogView?showComments=true&entry=3338009673 He says that " Everyone already knows that Design Patterns means a library of C++ code templates". Yes, some people think that. They are wrong. A design patttern is not a library of code templates in any language. If you use Design Patterns by copying code from the book then you are stupid and missing the point. The point of the book is to teach you to think. If you learn how to think about code then you will program better. |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 7:39pm On Mar 05, 2012 |
Ghenghis: To get a better understanding of design patterns I would advice you to also visit this link Head First Design patterns - By Oreilly It appears people have different meaning of design patterns. Design Patterns support reuse of software architecture and design. If you don't implement a software design then what do you do with the design? Here is an Abstract of a paper on the IEEE website Abstract For more than a decade, patterns have influenced how software architects and developers create computing systems. Design-focused patterns provide a vocabulary for expressing architectural visions and clear, concise representative designs and detailed implementations. Presenting software pieces in terms of their constituent patterns also lets developers communicate more effectively, with greater conciseness and less ambiguity. Software patterns influence how developers design and implement computing systems. This paper examine the software patterns' past, present, and future trends, which can help developers improve their projects. Source: Software, IEEE |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 8:03pm On Mar 05, 2012 |
Hello @csharpjava I happen to have a hard copy of Head first Design patterns (Well read also , ). Yes you implement patterns, my point is that its not class diagrams or UML. Its also not code. From you reference csharpjava: Your reference says it all It provides a [size=14pt]vocabulary [/size] for [size=14pt]expressing architectural visions[/size] and clear, concise [size=14pt]representative[/size] designs and detailed implementations. [size=14pt]Presenting[/size] software pieces in terms of their constituent patterns also lets developers [size=14pt]communicate[/size] more effectively, with greater conciseness and less ambiguity. Software patterns[size=14pt] influence[/size] how developers design and implement computing systems. |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 9:13pm On Mar 05, 2012 |
Ghenghis: I never said Design Patterns were class diagrams, UML or code, what I said above was that you make use of Design Patterns when you design your class diagrams. csharpjava: |
Re: In Search Of "that" Software Development Methodology by Fayimora(m): 9:44pm On Mar 05, 2012 |
Can't even keep up with this thread , lost track! Don't even know what you guys are talking about again. . Carry on boys. . .lol |
Re: In Search Of "that" Software Development Methodology by delomos(m): 12:13am On Mar 06, 2012 |
Ghenghis: csharpjava: #1: Are you saying you can't design time-critical software using Agile? (since that the logic of the original argument). #2. Perhaps the more reason you should leave design patterns alone and WRITE CODE. In fact, novices who know about patterns are much more likely to write dysfunctional code (think it through and you'd understand why). #3. Not sure what that will achieve but here is a snippet of a recent code in the wild, sry it's not Java, I don't care much for the language (but hey, any developer what anyone's time should be able to "work-through" any piece of code and this is relatively simple, it's in C/bash): the full project is here, https://github.com/delomos/bash-deploy/
#4. In 1940, 1995, 1998, 2000, that was probably true. This is 2012, and I absolutely disagree. #5. Clearly you haven't understand design patterns well, there is a reason it's called "pattern". I might advice that you leave DPs alone for now and thoroughly understand object-orientation, then design patterns might make much more sense. Those aside, it's hard for me to take references from "Heads Firsts" serious, no offense but all those cartoons and humor, if you've gotten through their book, an interesting book might be: Object Oriented Thought Process (http://www.amazon.com/Object-Oriented-Thought-Process-Matt-Weisfeld/dp/0672330164), an agnostic view to understand OO to solve problems -- don't forget that OO itself is a pattern of patterns. |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 4:05am On Mar 06, 2012 |
#1Who said anything about time critical software and agile ? #2 ? #3 the point was to take a snippet of code and analyse the design considerations , #4 If you say so ? #5 Regarding the book, I've read several books on software design patterns and head first is actually one of the best I've read in that category. Look beyond the learning aids: they picked a software problem and showed how you refactor to patterns. It seems the whole thread is jumbled up. I rest my case. |
Re: In Search Of "that" Software Development Methodology by delomos(m): 4:31am On Mar 06, 2012 |
Ghenghis: #1: read a bit further down the thread or read the original thread (that this is an extension of: https://www.nairaland.com/nigeria/topic-878253.0.html) #2. Read that paragraph I quoted, and see my question in light of the argument. #3. Well, there is a snippet, let's analyse. #4. I have nothing against their approach to presenting development issues, I'm not just very visual in that way. You should consider reading that book I referenced though, really, really good read. #5. I don't think it is, there are just many concurrent argument going on, not for the faint of heart. |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 5:44am On Mar 06, 2012 |
@ delomos Going by the name you gave this thread "In Search Of "that" Software Development Methodology" I have this question for you. Say I have a bank and I come to you to write me a software to allow my customers to carry out internet banking , what software methodology will you use and why? |
Re: In Search Of "that" Software Development Methodology by delomos(m): 6:29am On Mar 06, 2012 |
csharpjava:^^ After understanding the requirements and expectations (generally consisting of interviewing the stake holders and would-be users), I will [most likely] follow a behavioral/test-driven development. And might this looks like a candidate for MVC/P. Testing is given priority considering the "things" at stake, and things might appear closer to the real world in MVC/Ps, but then, I'm assuming. |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 7:18am On Mar 06, 2012 |
delomos: From our knowledge of how transactions are carried by banks, I'm surprised that you would go for a behavioral/test-driven development, I take it that you mean Agile. |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 7:52am On Mar 06, 2012 |
In reality organizations usually use a single methodology, and it also means they usually bid for the same type of projects. Agile methodologies fits well for a banking environment because : 1. Lot of change due to business dynamism 2. Lots of undocumented applications and processes You definitely need iterative releases. I once developed an integration component for a Bank, it was built to their specifications, we had user acceptance tests , the works. Needless to say what happened when we went into production was another kettle of fish. Banks keep lots of junk, agile methods are definitely the viable option (At least iterative delivery and lots of customer involvement). |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 9:09am On Mar 06, 2012 |
Ghenghis: I want you to look at a situation where you have to develop the banks main system from scratch, which other components like the one you worked on can intergrate with? |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 9:39am On Mar 06, 2012 |
csharpjava: That very unlikely, are you talking about building a core banking system ? That's millions of dollars in software development, maybe less for a micro finance bank , Besides building the core does not absolve you of the responsibility to integrate. You'll almost always meet legacy systems. The bank must have been using something before you came on the scene, and they're not likely going to completely rip that out for your version 1.0_Final |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 10:08am On Mar 06, 2012 |
Ghenghis: Sorry I should have asked you the same question I asked delomos which was, say I have a bank and I come to you to write me a software to allow my customers to carry out internet banking, what software methodology will you use and why? |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 11:12am On Mar 06, 2012 |
csharpjava:I'm telling you I won't look/think for methodologies. I simply use what i typically use. And yes this is typical : [list] [li]Some form of test driven development would be nice (You'll always wish you did this if you start out not using it)[/li] [li]Iterative and quick releases is absolutely necessary (So no surprises at the end of the project)[/li] [li]Customer involvement (no surprises, stakeholder involvement)[/li] [/list] |
Re: In Search Of "that" Software Development Methodology by delomos(m): 4:59pm On Mar 06, 2012 |
csharpjava:^^ TDD/BDD == Agile BUT Agile != TDD/BDD Ghenghis:^^ It depends on the nature of the organization and company -- most times, the business development part of the organization are not even aware of what's "capable" in engineering, they just want to make a "sale." Ghenghis:^^ Sometimes using what you typically use might be a disaster in the long-run. My case in point: when I was working on "writing" my start-up, I would usually be thinking OO and banging out ERs but considering the nature of my problem domain, I had to step out of my zone and put many other options on the table. In this day and age, it's more important to see how others are [have] solved similar problem before attacking and these days that new paradigms are springing up by the hour, being an architect/plumber is becoming a core strength of an engineer (no pun). |
Re: In Search Of "that" Software Development Methodology by Ghenghis(m): 5:29pm On Mar 06, 2012 |
From my experience many companies end up with hybrid methodologies : what works for them . This is usually based on the size of the company, type of customers, sales cycle and other policies. delomos:Funny, because no one wants to turn down a sale or an opportunity. But the truth is every shop has its strengths. These strengths are built on years of experience and domain knowledge. Its hard to simply walk into a new domain and start delivering. If you have a model that works well in one domain, then you should apply it across other domains(I'm also assuming you're working in a domain you're familiar with) else no methodology will save you. The methodology you use shouldn't be new or something that'll evolve during the course of the project. It should be something you and your entire organization are familiar with. It starts from your proposal : how much of the clients involvement do you need ? How will you be paid ? Are there milestone payments ? What are the QA criteria, how will they be measured ? Where would development be done on /off site ? offsite implies less customer involvement, which is more risk. How is deployment handled ? Does the customer have a fixed launch date ? etc. delomos:In my experience its the opposite: the business side send you 20 RFP/requests off which you qualify 5 as something your organization is willing/capable of handling. Of the 5 you get between 0 & 3 depending on the kind of company. Sales guys think tech guys can do everything in a short time. |
Re: In Search Of "that" Software Development Methodology by delomos(m): 6:01pm On Mar 06, 2012 |
Ghenghis:I agree, mostly with this ^^ |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 11:47pm On Mar 06, 2012 |
delomos:TDD is an important agile requirements and agile design technique. "In other words, it’s one way to think through your requirements or design before your write your functional code (implying that TDD is both an important agile requirements and agile design technique)." Source:Agile Data @Ghenghis and delomos Going by the answers you've given above I will not allow you to develop an internet banking application for me. The reason being that such an application would required that it is complete before being released for my customers to use. A Waterfall or an Iterative Watefall methodology is what will be required for an internet banking Application. The techniques you have mentioned are used for small releases so it is not suitable for an internet banking application that is being developed for the first time. |
Re: In Search Of "that" Software Development Methodology by delomos(m): 12:03am On Mar 07, 2012 |
csharpjava:What you said earlier: "From our knowledge of how transactions are carried by banks, I'm surprised that you would go for a behavioral/test-driven development, I take it that you mean Agile." So I'd repeat, in light of this, TDD/BDD == Agile BUT Agile != TDD/BDD csharpjava: If you're designing an "academic" bank, your approach will work where most often you understand *all* the total requirement before you start building, in the real world, it doesn't work like so. And note the use of "stake holders" that doesn't have to be customers, often it's folks you're working with who are on you neck about the "status". |
Re: In Search Of "that" Software Development Methodology by csharpjava(m): 12:23am On Mar 07, 2012 |
delomos: No that is how it should work for an internet banking application that is being developed for the first time. This is because you cannot be developing small releases based on user stories. I will not want to wait for my customers to tell me that when they make a transfer, the money gets debited from their account but the recipient's account is not credited, then I will bring this new story to you and you will develop another small release for this new story. these are the kinds of factors to consider before selecting a methodology. |
If You Were Imprisoned In A Room For 3 Months, Had A Computer With Internet..... / Aspiring To Be Programmer: How To Cope / C Programming Assignment Help ?
(Go Up)
Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health religion celebs tv-movies music-radio literature webmasters programming techmarket Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 155 |